- Added updateTabById function to store for updating specific tabs by ID
- Capture tab ID at request start (requestTabId)
- All streaming updates now go to the captured tab ID, not activeTabId
- Switching tabs during streaming no longer pollutes other tabs
- Local UI state only updates if still on the same tab
- Complete isolation: each tab's history/preview/agent is independent
- Fixed bug where new tabs were showing content from previous tabs
- Reset ALL local state when switching tabs:
- currentAgent, previewData, showCanvas, viewMode
- assistStep, aiPlan, input, isProcessing
- Each tab now operates in complete isolation
- Tab state properly syncs from store on switch
- Implemented multi-tab support for AI Assist (like Gemini/ChatGPT)
- Added Tab Bar UI with New Chat (+) and Close Tab (x) buttons
- Synced chat history, agent, and preview data per tab
- Added BuildingArtifact loading animation during code generation
- Prevented broken code display during streaming with high-fidelity checklist
- Updated isPreviewRenderable to detect and skip backend code (Node.js/Express)
- Enhanced all AI provider prompts for React support and backend simulation
- Updated SEO Agent to generate ADHD-friendly, modern HTML5 dashboard reports
- Fixed LiveCanvas try/catch error handling for graceful error displays
- 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 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