- Enhanced LiveCanvas with Babel Standalone and React/ReactDOM CDNs
- Implemented automatic import resolution and root mounting for React components
- Updated parseStreamingContent to identify React code as renderable 'app' artifacts
- Updated UI to automatically switch to Preview mode for React artifacts
- Updated all AI provider prompts to officially support and encourage React rendering
- Improved parseStreamingContent to be cực kỳ robust against malformed/bracket-heavy tags
- Added history transformation to send context in standard Markdown blocks instead of internal tags
- This prevents the AI from becoming 'tag-confused' and improves surgical edit reliability
- Refined partial tag hiding for smoother streaming UX
- Updated system prompts for all services to enforce 'ITERATIVE MODIFICATIONS' behavior
- Instructed AI to maintain design structure and only apply requested changes
- Added 'Change Log' requirement for text responses
- Modified AIAssist.tsx to preserve raw code in history for AI context
- Updated UI rendering to hide code tags while keeping them in context
- Added 'Applying surgical edits...' status feedback
- Refined regex to hide partial [AGENT] and [PREVIEW] tags during streaming
- Added 'Neural Link Thinking' indicator for initial response phase
- Added dynamic status badges (e.g., 'Generating web artifact...') during stream
- Improved robustness of streaming content parser
- Added 'Same as source' to translations in EN, RU, HE
- Updated 'Number of Slides' dropdown to include 'Same as source' (value 0)
- Updated Qwen, Ollama, and Z.AI services to handle 0 slide count by instructing AI to match source structure
- Replaced qwen-coder-plus (which failed with 400) with qwen2.5-coder-32b-instruct
- Updated available models list with qwen2.5-coder series
- Corrected store defaults
- Fixed generateAIAssistStream to call Qwen API directly
- Uses getEffectiveEndpoint() and getRequestHeaders() for proper auth
- Added better error logging for debugging
- Fixed listModels to use getAvailableModels()
- This fixes the 'Stream request failed' error
- Added text-slate-100 dark:text-slate-100 to input for visible text on dark bg
- Updated Qwen models to use valid names: qwen-coder-plus, qwen-turbo, etc
- Set qwen-coder-plus as default model for best coding assistance
- Removed intermediate /api/ai-assist call that caused 404 with basePath
- AI Assist now calls modelAdapter.generateAIAssistStream directly
- This fixes the HTTP 404 error on the live site
- Created lib/safeJsonFetch.ts helper to safely parse JSON responses
- Updated AIAssist.tsx to use safeJsonFetch with proper Content-Type header
- Improved app/api/ai-assist/route.ts with requestId tracking and safe body parsing
- All API responses now return JSON with proper error messages
- Replaced flashy styling with simple two-column card layout
- Added collapsible sections for Keywords, Ad Copy, Campaigns, Implementation
- Consistent typography and spacing with other generators
- Removed all gradients, glassmorphism, and excess animations
- Added robust JSON extraction logic to handle AI responses with markdown formatting.
- Overhauled Google Ads Gen UI with glassmorphism and premium aesthetics.
- Harmonized main content styling with the sidebar design ecosystem.
- Added GoogleAdsGenerator component with comprehensive keyword research and ad copy generation.
- Updated Sidebar and Home page for navigation.
- Added necessary UI components (Badge, Tabs) and dependencies.
- Added custom animations for progress indicators.