
sparkmentor
Prompt chips (templates, quick actions, and suggestions) now intelligently populate the message composer and automatically focus the input field, placing the caret at the end of the text. This was achieved by introducing a new useFillComposer hook and updating the UI components, allowing students to edit their prompts seamlessly before sending. This change significantly improves the chat workflow by removing the need to manually hunt for the text field after selecting a suggestion. 
The voice service was erroneously including enableAffectiveDialog and proactivity options in the Gemini Live API session configuration, which are currently only supported in the v1alpha API. Since the application uses the GA API, these options caused the session setup to fail immediately. Removing these configurations ensures stable voice session initialization. 
Restored the invisible 'Apply Adjustment' button in the admin credit-adjustment dialog by defining missing 'moss' color tokens in globals.css. This change ensures proper rendering for the button, Paid badges, user-detail elements, and headings, while also adding required font fallbacks and improving client-side validation.
This update introduces significant improvements to the live voice interaction experience, including the ability to switch languages and voices mid-call, which triggers a seamless backend reconnection to ensure correct configuration. We've also restored the voice picker, added robust accessibility features like aria-live updates, and implemented better resilience, including a WebGL fallback for the avatar and clearer error states for mic permissions. These changes make the voice tutor more interactive, reliable, and accessible for all users. 
This update introduces a suite of UX refinements to the voice and avatar chat experience, including a clear "Thinking" state, real-time credit runway tracking with low-balance alerts, and a more robust auto-reconnect mechanism for session resilience. Mobile usability is significantly improved with a new collapsible bottom sheet layout, and friction during avatar selection has been reduced via prefetching and streamlined connection flows. 
Replaced the fragmented Avatar and Voice controls with a unified segmented control in the composer for a smoother UX. I also resolved a critical bug where the voice tutor would stop playing audio after ~15 seconds of idle silence due to a stuck VAD latch. These changes include a new watchdog mechanism and adjusted Gemini realtime configuration to ensure reliable, long-running audio sessions. 
We have consolidated the voice interaction into a single in-page panel, removing the modal dialog and significantly improving performance. By switching to direct DOM updates for the audio visualizer instead of re-rendering via React state 60 times per second, we eliminated a major framerate bottleneck. We also addressed session lifecycle issues by reusing AudioContexts to avoid browser limits, ensuring more reliable voice calls. 
We've addressed a few persistent issues in the voice chat experience. This update fixes a 'Closed AudioContext' error by refining call lifecycle management, stops UI layout shifts by moving the live-caption overlay to an absolute position, and enforces strict language settings in the voice tutor to prevent model drift. These changes ensure a much smoother and more reliable interaction for all users. 
Resolved several issues with 3D avatar rendering, including models disappearing after long sessions and state-locking on start/stop. The implementation now ensures a persistent WebGL canvas by uncoupling it from call state, significantly improving reliability. Additionally, we've streamlined the avatar interaction flow by moving the voice entry point to the split panel and refining the idle/resume behavior. 
Updated the project configuration to integrate a new registry for @magicui, streamlining component management. Additionally, added shadcn as a devDependency and updated the lockfile to ensure environment consistency. A new HeroVideoDialog component has also been added to the UI library to support interactive video previews.
We have upgraded the chat interface to play source material videos directly within a modal dialog, eliminating the need to jump to a new browser tab. Additionally, if a student explicitly requests to watch a video, the system now promotes the relevant media to its own dedicated block above the documents and pages for better visibility. This improves content discovery and keeps the learning workflow uninterrupted. 
We've refactored deriveSourceMaterialsQuery to use Gemini Flash-lite instead of OpenAI's gpt-5-nano. This change yields a significant performance boost, reducing latency from 1.9s down to 0.7-1.0s, while also centralizing our chat infrastructure on a single provider and enabling automatic model-retirement fallbacks. 
Resolved an issue where source materials were failing to load due to gpt-5-nano reasoning timeouts by reducing reasoning effort and extending the processing window. Additionally, adjusted chit-chat thresholds to better align with tutor prompt requirements and introduced a new health check endpoint to validate YouTube API keys during deployment. These changes ensure more reliable content retrieval and faster identification of configuration issues. 
Chat responses now automatically feature a 'Source materials' section containing relevant YouTube videos, internal library documents, and web-grounded results. After streaming, a nano model generates a search query that triggers parallel lookups, which are then persisted as SSE frames to ensure they survive page reloads. This update adds robust handling including Redis caching, YouTube API rate limiting, and deep-linking into our library documentation. 
This update introduces a major UI cleanup by replacing fragmented card-based designs across eight screens with a consistent, flat row-based list component. Additionally, it resolves critical production bugs in the billing flow where cached credit data was causing subscription and region drift, while also fixing an issue where dashboard layouts were forcing unwanted horizontal scrolling. 
This update introduces a comprehensive mobile-specific layout pass, optimizing the dashboard, chat lists, and library views for smaller screens without impacting the desktop experience. Additionally, the bottom navigation bar is now fully customizable, allowing users to reorder and pin their preferred destinations via a new settings interface. 
We have integrated a new web research mode for Gemini, allowing the model to perform live Google searches and provide grounded answers with evidence-backed sources. To support this, we ensured grounding metadata is persisted across chat reloads and adheres to required compliance markup. Simultaneously, we overhauled the chat frontend to eliminate pervasive performance stuttering by memoizing Markdown components and removing unnecessary re-renders during streaming. 
We have refactored the text model configuration to use gemini-3.7-flash for student-facing content and gemini-3.5-flash-lite for internal judgment tasks. By moving classification and routing to the lite tier, we've achieved a significant reduction in time-to-first-token—dropping from a 2802ms mean to 943ms—without any loss in accuracy. This transition removes dependencies on volatile preview models, ensuring a more stable and performant production environment. 
We have finalized the mobile title bar rollout by updating both integration detail pages and the note editor to use the unified MobilePageHeader component. This change centralizes back controls and ensures a stable UI layout by preventing title shifts during data loading states. This improvement brings a consistent navigation experience across our primary app surfaces. 
We have completed a comprehensive responsive UI pass, moving from a desktop-centric header to a native-feel mobile experience. Key updates include the transition to tab-based navigation with a 'More' drawer for secondary routes, the implementation of iOS-style large title headers that collapse on scroll, and a shift to card-based layouts for complex data tables on mobile devices. We also established mobile foundations like CSS safe-area handling, viewport height optimizations, and the removal of browser-default behaviors like tap highlights to ensure a professional, app-like feel. 
