# ElizaOS Developer Update - Week of June 15-21, 2025

## Core Framework

### Server Package Separation
We've completed the major architectural refactoring to split server functionality into a dedicated `@elizaos/server` package ([#5122](https://github.com/elizaos/eliza/pull/5122)). This change:
- Maintains backward compatibility with existing CLI integrations
- Enables independent usage of server components
- Improves separation of concerns between CLI and server logic

### Character Validation Improvements
Implemented a robust Zod-based validation system for character files ([#5167](https://github.com/elizaos/eliza/pull/5167)), providing:
- Type-safe character parsing and validation
- Improved error messages for malformed character files
- Consistent handling of character loading across CLI and server

### Project Loading Refactor
Consolidated character loading logic to eliminate duplication between CLI and server ([#5169](https://github.com/elizaos/eliza/pull/5169)), resulting in:
- More reliable project loading
- Consistent behavior between development and production
- Streamlined codebase with less redundancy

### CLI Command Consolidation
Streamlined the agent management interface by merging `elizaos stop` into `elizaos agent stop --all` ([#5175](https://github.com/elizaos/eliza/pull/5175)), providing a more consistent user experience.

## New Features

### Enhanced Testing Support
Added comprehensive test coverage across core packages ([#5125](https://github.com/elizaos/eliza/pull/5125), [#5136](https://github.com/elizaos/eliza/pull/5136)):

```typescript
// Example of new test suite structure
import { describe, test, expect, beforeEach } from 'bun:test';
import { AgentRuntime } from '../src/runtime';

describe('AgentRuntime', () => {
  let runtime: AgentRuntime;
  
  beforeEach(() => {
    // Setup code with mocked dependencies
    runtime = new AgentRuntime({
      // Test configuration
    });
  });
  
  test('initialize() loads plugins correctly', async () => {
    // Test implementation
    expect(runtime.pluginManager.plugins.length).toBeGreaterThan(0);
  });
});
```

### Cascade Delete for Agents
Added proper cascade deletion for agents to maintain database integrity ([#5171](https://github.com/elizaos/eliza/pull/5171)):

```typescript
// Example of cascade delete implementation
async deleteAgentById(agentId: UUID): Promise<void> {
  // First, delete all related participants
  await this.db.delete('participants')
    .where(eq(participants.entityId, agentId))
    .execute();
    
  // Then, delete all related memories
  await this.db.delete('memories')
    .where(eq(memories.agentId, agentId))
    .execute();
    
  // Finally, delete the agent itself
  await this.db.delete('agents')
    .where(eq(agents.id, agentId))
    .execute();
}
```

### Chat UI Enhancements
Added GUI chat title functionality and improved media content handling ([#5179](https://github.com/elizaos/eliza/pull/5179), [#5165](https://github.com/elizaos/eliza/pull/5165)), providing:
- Better title management for chat sessions
- Improved color contrast for media content
- Enhanced formatting and padding adjustments

## Bug Fixes

### Windows Compatibility
Fixed multiple issues affecting Windows development environments ([#5156](https://github.com/elizaos/eliza/pull/5156)):
- Project loading now functions correctly on Windows machines
- File path handling properly accounts for Windows-style paths
- Environment variables are correctly loaded across platforms

### UI Responsiveness
Resolved issues with the GUI getting stuck in "agent is thinking" state ([#5151](https://github.com/elizaos/eliza/pull/5151)):
- Fixed proper signaling of agent response completion
- Enhanced socket handling for response status updates
- Added safeguards against UI becoming unresponsive

### Message Filtering
Fixed message filtering to properly scope messages to the current chat/channel ([#5149](https://github.com/elizaos/eliza/pull/5149)):
- Messages now correctly filtered by channelId
- Fixed cross-chat message leakage
- Improved state management for multi-chat environments

## API Changes

### Comprehensive API Documentation
Enhanced API documentation with detailed descriptions and examples ([#5134](https://github.com/elizaos/eliza/pull/5134)):
- Added descriptive comments to all API routes
- Improved Postman collection with 90+ endpoints ([#5120](https://github.com/elizaos/eliza/pull/5120))
- Enhanced type definitions for better IDE support

### Content API Updates
Added target parameter to Content type to improve message targeting ([#5026](https://github.com/elizaos/eliza/pull/5026)):

```typescript
// New Content type with optional target
interface Content {
  text: string;
  thought?: string;
  actions?: string[];
  target?: string; // New field for targeting specific recipients
  media?: Media[];
  // other properties...
}
```

## Social Media Integrations

### Twitter API Changes
Twitter plugin now requires API keys instead of username/password authentication ([#5055](https://github.com/elizaos/eliza/pull/5055)):
- Free tier is sufficient if replies to bots are disabled
- Updated environment variables to use standard Twitter API naming
- Removed deprecated Twitter scraper component

### Discord Integration
Fixed Discord message reference handling to support thread creation ([#5148](https://github.com/elizaos/eliza/pull/5148)):
- Improved callback handling for Discord message actions
- Enhanced message targeting for Discord channels
- Fixed evaluator removal from message handler prompt

## Model Provider Updates

### New Ollama Integration
Added Ollama as a fourth AI provider option in the `elizaos create` command ([#5160](https://github.com/elizaos/eliza/pull/5160)):
- Full integration with model selection interface
- Support for local model configurations
- Environment variable templates for easy setup

### Model Context Handling
Fixed VRAM limitations issue with local LLM settings:
- Optimized context size configuration for limited hardware
- Added fallback options for memory-constrained environments
- Improved error messages for context size limitations

## Breaking Changes

### V1 to V2 Migration Notice
The upcoming ElizaOS v2 will contain significant architectural changes:
- Plugin specifications now integrated into core ([#4851](https://github.com/elizaos/eliza/pull/4851))
- Message server completely refactored as standalone system ([#4864](https://github.com/elizaos/eliza/pull/4864))
- Core types split into granular files for better maintainability ([#4999](https://github.com/elizaos/eliza/pull/4999), [#5020](https://github.com/elizaos/eliza/pull/5020))

When migrating from v1 to v2:
1. Update your plugin imports to use the new granular type system
2. Use the new IMessageService for handling message references
3. Leverage runtime.getServicesByType() for service discovery

For complete API changes, please refer to our [migration guide](https://eliza.how/docs/migration/v1-to-v2).