# ElizaOS Developer Update - July 10, 2025

## 1. Core Framework

The ElizaOS core framework has undergone significant changes in the transition from v1.x to v2, with several compatibility issues identified and addressed this week:

### Runtime Architecture
- Fixed critical Bootstrap Plugin compatibility issues in v2, specifically addressing the missing `runtime.startRun()` method [PR #5490]
- Improved runtime provider management with better documentation of `composeState()` functionality for controlling registered providers [PR #5483]
- Restructured client distribution from CLI to server package for better separation of concerns [PR #5483]
- Added support for custom evaluator implementation with guidance to create evaluators that utilize LLM decision-making capabilities [PR #5489]

### Data Management
- Fixed PGLITE database hoisting issue that caused databases to be incorrectly placed in parent `.eliza` directories [PR #5485]
- Implemented improved SPA routing to resolve client-side navigation issues, particularly for globally installed CLI users [PR #5479]
- Added proper type handling for agent bio fields to support both string and array formats for backward compatibility [PR #5387]

## 2. New Features

### Forms Plugin
We're excited to introduce the new Forms Plugin, enabling structured data collection across ElizaOS:

```typescript
// Creating a form with the forms plugin
import { createForm } from '@elizaos/plugin-forms';

const myForm = await createForm({
  id: 'user-profile',
  title: 'User Profile',
  fields: [
    {
      id: 'name',
      label: 'Full Name',
      type: 'text',
      required: true,
      validation: z.string().min(2).max(100)
    },
    {
      id: 'interests',
      label: 'Your Interests',
      type: 'array',
      placeholder: 'Add an interest'
    }
  ]
});

// Form can then be accessed by id
const formValues = await getFormValues('user-profile');
```

The Forms plugin features robust validation, transaction safety, and comprehensive test coverage [PR #5487, #5488, #5489].

### Image Generation
Agents can now generate images directly from conversational context:

```typescript
// Available in agent pipeline
const imageUrl = await generateImageAction({
  prompt: "A futuristic city with flying cars",
  size: "1024x1024"
});

// Returns a URL to the generated image
```

This supports various AI model providers through the standard ModelType.IMAGE interface [PR #5446].

### UI Enhancements
- Redesigned Agent Cards with horizontal layout and improved visual hierarchy [PR #5344]
- Updated sidebar with consistent headers and new button placements [PR #5373]
- Implemented new chat interaction model with embedded "Add" button inside inputs [PR #5493]
- Applied smooth progressive reveal with capped animation for long text outputs [PR #5495]

## 3. Bug Fixes

### Windows Compatibility
A critical issue with plugin loading on Windows has been resolved:

```
Error: Failed to load plugin @elizaos/plugin-openai and @elizaos/plugin-bootstrap
```

The fix addresses path normalization and localhost resolution issues, ensuring plugins load correctly in Windows environments [PR #5437]. Key improvements include:

- Proper handling of file path separators in plugin resolution
- Improved module resolution strategy for global CLI installations
- Fix for Windows-specific plugin paths in PnP environments

### API Client Fixes
- Fixed unwrapped server responses in BaseApiClient that were causing "Unknown error" messages [PR #5343]
- Resolved "stream is not readable" errors by removing duplicate express.json middleware [PR #5458]
- Eliminated duplicate model logging by merging into a single adapter.log call [PR #5453]

### DM Channel Issues
- Refactored DM channel creation logic to fetch live message count instead of relying on stale state [PR #5411]
- Prevented duplicate new chat creation on page refreshes by clearing forceNew state [PR #5455]

## 4. API Changes

### Environment Variables
Several new environment variables have been added:

- `LOG_TIMESTAMPS`: Controls whether timestamps are displayed in logs (default: true) [PR #5430]
- `ELIZA_UI_ENABLE`: Toggles Web UI availability in production (default: true) [PR #5304]

Boolean environment variables now use explicit conversion:

```typescript
// Before
if (process.env.SOME_FEATURE) {
  // Could be true for "false" string
}

// After
if (!!process.env.SOME_FEATURE) {
  // Only true for truthy values
}
```

### CLI Commands
- `elizaos dev` can now be used as an alternative to `bun run dev` for starting development servers [PR #5448]
- CLI create commands have better helper text and warning messages [PR #5454]
- Removed `--dir` flag from create command for simplified interface [PR #5443]

## 5. Social Media Integrations

### Twitter/X Integration
- Updated Twitter plugin documentation with proper v1.1 API authentication guidance [PR #5408]
- Fixed database serialization issues in the Twitter plugin where objects were being inserted as "[object Object]" instead of proper JSON
- Community has expressed concern about the Twitter/X account suspension impacting project momentum

Proper Twitter authentication now requires:

```
TWITTER_API_KEY=your_api_key
TWITTER_API_SECRET_KEY=your_api_secret_key
TWITTER_ACCESS_TOKEN=your_access_token
TWITTER_ACCESS_TOKEN_SECRET=your_access_token_secret
```

### Telegram Bot Configuration
To make Telegram bots respond only when mentioned:

```typescript
// In your character file
export default {
  platforms: {
    telegram: {
      shouldRespondOnlyToMentions: true
    }
  }
}
```

Additionally, configuring privacy settings through BotFather is recommended for restricting bot interactions to slash commands.

## 6. Model Provider Updates

### Google Generative AI
Fixed installation issues with the Google Generative AI plugin during project creation [PR #5503]:

```
// Previous error
Error: Cannot find module '@elizaos/plugin-google'
```

The system now correctly installs `@elizaos/plugin-google-ai` when Google Generative AI is selected.

### Local AI Support
A Windows-specific issue with plugin-local-ai failing to load has been identified and a fix is in progress [Issue #5499].

## 7. Breaking Changes

### V1 to V2 Migration Issues
Several important V1 to V2 migration issues have been identified:

1. **Bootstrap Plugin Incompatibility**: 
   - The `runtime.startRun()` method doesn't exist in V2
   - Solutions in progress to provide backward compatibility [PR #5490]

2. **API Mismatch**:
   - V1 CLI and V2 runtime have incompatible APIs
   - Work underway to provide clear migration paths

3. **Provider Availability**:
   - Custom providers may have availability timing issues
   - Implementation of retry mechanism in progress [PR #5490]

To help developers identify available runtime providers, use this debugging snippet:

```typescript
import { logger } from '@elizaos/core';

// List all available runtime providers
logger.info('Available providers:', 
  Object.keys(runtime.providerRegistry.providers));
```

For developers importing local plugins during development, use:

```bash
elizaos dev
```

This will automatically load plugins bootstrapped from the CLI with `--type plugin`.

---

Note: The V2 release is an open-source framework without direct token integration. Future plans include a hosted platform for agents, a payment layer with fee mechanisms, and an API service wrapper system.