20 improvements across the session builder, design system, and My Sessions dashboard.
The Launch Session button is now disabled until at least one question has been added. It greys out with a tooltip and transitions smoothly back to active once a question is present.
Tapping "+ Add Manually" now opens a full overlay showing all four question types in a 2×2 grid — each with an icon and a one-line description — instead of silently defaulting to Short Text.
Multiple Choice questions now include a dedicated answer options editor with a minimum of two options. Each option has a lettered badge, keyboard shortcuts (Enter to advance, Backspace to remove), and inline validation before saving.
Option fields no longer pre-fill with "Option A" or "Option B". They start empty and display placeholder text, so you can type straight away without clearing anything first.
Marking the correct answer is now required before a Multiple Choice question can be saved. Letter circles toggle green with a checkmark. The hint updates from amber (nothing selected) to green (answer marked), and the Add Question button stays disabled until the requirement is met.
The minimum options hint was visually detached from its heading. Spacing has been corrected so the label sits immediately next to "Answer options".
The dashed box around "Untitled Session" in the topbar has been removed. The session name now renders as clean muted text. A pencil icon still appears on hover to indicate it is editable.
The "3Q" and "1Q" count badges on sidebar preset buttons have been removed. They created confusion alongside the Q1, Q2 labels on question cards. Presets are now label-only.
A back arrow has been added to the session builder topbar. If there are unsaved changes (questions added or session renamed), a dialog appears with three choices: Keep editing, Save draft and leave, or Leave anyway. If nothing has been added, navigation proceeds without a prompt.
The Save Draft button now highlights in indigo when there are unsaved changes and shows "Saved" in muted grey when the session is clean — giving a clear visual signal of the current save state.
The ring around the active step in the onboarding tracker now breathes in and out with a soft indigo pulse every 1.8 seconds. The animation stops automatically when the step is completed and the circle transitions to green.
All primary color tokens have been renamed to --indigo, --indigo-hover, and --indigo-light with proper indigo values. Crimson is now reserved exclusively for the Launch Session button and documented as such.
All swatch documentation and usage rules in the Design System have been updated to make clear that Crimson must not be used anywhere except the Launch Session button.
The Background color token has been updated to the correct oklch value for #F9FAFC. A typo in the previous token value was also corrected.
Once the correct password is entered, the unlock state is persisted in localStorage. The password gate is skipped on all subsequent visits, so you only need to enter it once per browser.
A /sessions route has been built that appears immediately after tapping Launch Session. It shows all saved sessions as cards with status badges (Draft, Live, Closed), question type icons, relative timestamps, context-aware action buttons, a search bar, filter tabs, a per-card overflow menu, and a friendly empty state with a New Session CTA.
The My Sessions dashboard is now accessible from the bottom navigation bar alongside Session Builder, Join Session, and Design System.
The AI drawer tab handle has been redesigned from a rectangular button into a smooth SVG shape with concave bezier curves on the top and bottom corners, flowing organically into the drawer edge. The fill now uses the same diagonal purple-to-pink gradient as the AI banner in the sidebar, and deepens when the drawer is open.
All AI-generated questions now arrive pre-checked in the review panel. Previously they defaulted to unselected, requiring an extra click before adding them to the session.
The generation endpoint now extracts the JSON array by bracket-matching rather than relying on the model returning a perfectly clean response. Trailing commas before ] or } are automatically removed, preventing occasional parse failures when the model adds extra text or formatting around the JSON.
Session Builder · Changelog