New features:
- Review Code button sends generated code back to AI for review
- Web search grounding via SearXNG (toggle in toolbar, enriches prompts)
- Responsive preview with device size selector (Full/Desktop/Tablet/Mobile)
- /api/search proxy route
Fixes:
- Model selector text color now white on dark theme
- Post-coding button text overflow (shorter labels + min-w-0)
- Duplicate activateArtifact button suppressed when action row shows
Major changes:
- Plan-first workflow: AI generates structured plan before code, with
plan review card (Modify Plan / Start Coding / Skip to Code)
- Post-coding UX: Preview + Request Modifications buttons after code gen
- OpenRouter integration: 4th AI provider with 20+ model support
- Enhanced prompt engine: 9 strategies, 11+ intent patterns, modular
- PLAN MODE system prompt block in all 4 services
- Fixed stale React closure in approveAndGenerate with isApproval flag
- Fixed canvas auto-opening during plan phase with wasIdle gate
- Updated README, CHANGELOG, .env.example, version bump to 1.3.0
- Add comprehensive changelog section following Keep a Changelog format
- Document v1.2.0 changes: SEO agent fixes and z.ai API validation
- Add previous versions (v1.1.0, v1.0.0) for historical context
- Include semantic versioning reference
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Implemented computed 'currentPreviewData' and 'currentShowCanvas'
- Uses local state during streaming (isProcessing=true) for immediate feedback
- Uses tab state (activeTab) when idle for persistence and isolation
- Updated LiveCanvas and UI to use these computed values
- Ensures new tabs usually show their own streaming content immediately
Tab Preview Isolation:
- LiveCanvas now uses activeTab.previewData directly
- All canvas UI elements use activeTab state
- Each tab shows its own preview, not shared state
Change Log Removal:
- Strip change log text from preview data before rendering
- Pattern matches [/type:lang] Change Log: and **Change Log:**
- Change log stays in chat, never rendered in canvas
- Guards against false positives (app content > 500 chars)
Tab Isolation:
- Canvas visibility now uses activeTab.showCanvas directly (not local state)
- Chat panel width also uses tab state for proper isolation
- New tabs explicitly have showCanvas: false, previewData: null
Change Log Fix:
- Updated all AI prompts to emphasize change log OUTSIDE [/PREVIEW]
- Added example format showing change log after closing tag
- Change log now appears in chat stream, not rendered in canvas