Changelog

AlicePoll Updates

96 improvements across the session builder, design system, and My Sessions dashboard.

April 5, 2026

QR Modal Redesign, Instructor Answer Key & QR Auto-Join

QR Modal

1 update

Three action buttons unified in one row

Polish

The QR modal (both in My Sessions and Live Session) previously had Copy Link and Open as a pair of outline buttons, with Download QR as PNG as a separate full-width blue button below. All three are now in a single row with identical white/outlined styling. The modal is also wider (380 px) and the QR image is larger (220 px) for easier scanning.

Live Session

1 update

Instructor answer key shown in live view

Feature

A green 'Answer' banner now appears below the question text in the instructor live session view whenever a correct or model answer has been set. For Multiple Choice it shows the text of the correct option; for True / False it shows True or False; for Short Text it shows the model answer. Questions with no answer set are unaffected.

Student Join

1 update

QR scan skips code entry screen

Improvement

When a student opens a QR code URL (which contains ?code=XXXXXX in the link), the join page now immediately fires the join mutation and navigates straight into the session — no code entry screen is shown. Students who navigate to /join manually without a code in the URL still see the code entry screen as normal.

March 27, 2026

Image Attachments, Lightbox, AI Dedup & Card UX

Session Builder

9 updates

Photo attachments on questions

Feature

Questions can now have an image attached. The upload button lives in a three-dot overflow menu on each card (⋯ → Add image), keeping the card surface clean. Images are uploaded to S3 and the URL is stored in the question's mediaUrl field. The attachment is shown below the question text in a padded, rounded container that preserves the original aspect ratio with a max-height of 220 px — no cropping.

Three-dot overflow menu on question cards

Feature

Each question card now has a ⋯ menu in the top-right corner. It contains: Add image (when no photo is attached), Remove image (with a confirm dialog), and Delete question (with a confirm dialog). The inline 'Add image' button that previously appeared in the card footer has been removed.

Confirm dialogs for destructive card actions

Polish

Removing an image and deleting a question both now require confirmation via an AlertDialog before the action is carried out. This prevents accidental data loss — a user reported losing a question with a single misclick.

Full-screen image lightbox

Feature

Tapping a question photo in the session builder, professor live view, or student session expands it to a full-screen overlay with an 85% black backdrop. Clicking the backdrop or the X button in the top-right corner dismisses it. The lightbox is rendered via a React portal so it always sits above all other UI.

Image shown in session preview modal

Bug Fix

The session preview modal (launched from the topbar) now renders question photo attachments below the question text, using the same padded container and aspect-ratio-preserving style as the builder and live views.

AI generation avoids duplicating existing questions

Improvement

The current session's question texts are now sent to the AI generation endpoint as an 'existing questions' list. The system prompt instructs the model to avoid producing questions that are semantically similar or identical to those already in the session.

Onboarding banner persists dismissed state

Bug Fix

Dismissing the onboarding tutorial now writes a flag to localStorage. On subsequent page loads the banner stays hidden. Previously it reappeared on every refresh.

Session code badge: copy icon removed

Polish

The copy icon that appeared to the left of the session code text in the badge has been removed. The badge itself remains clickable (tap to copy), so the icon was redundant visual noise.

Image remove button: icon replaced with plain X

Polish

The ImageOff icon on the remove-photo button was unclear. It has been replaced with a plain X that matches the rest of the app's close/remove affordances.

March 27, 2026

Sessions UX, MC Polish & Media Groundwork

Sessions Dashboard

3 updates

Tap-to-copy session codes

Feature

Session code badges on both the active grid cards and past session list rows are now clickable. Tapping a code copies it to the clipboard and flashes the badge green with a 'Copied!' label for 1.8 seconds before returning to its normal state. No tooltip or extra button needed — the code itself is the copy target.

Move to Draft — reactivate past sessions

Feature

Past session rows now include a 'Move to Draft' button. Clicking it resets the session status back to draft, clears the launched and closed timestamps, and resets the current question index to 0. The session immediately reappears in the Active tab, ready to edit and re-launch. A dedicated tRPC reactivate procedure handles the server-side update and is covered by three Vitest tests.

Edit Session menu icon changed to pencil

Polish

The 'Edit Session' item in the per-card overflow menu was using a BookOpen icon, which didn't clearly communicate editing. It has been replaced with a Pencil icon, consistent with the edit affordance used elsewhere in the app.

Session Builder

3 updates

Toast confirmation after adding AI-generated questions

Polish

After clicking 'Add Questions to Session' in the AI panel, a green success toast now appears: 'N question(s) added to session' with the subtitle 'Source material kept — ready for another round.' It auto-dismisses after 3 seconds and correctly pluralizes for 1 vs. multiple questions.

A) B) C) D) prefixes stripped from Multiple Choice options

Bug Fix

AI-generated Multiple Choice options frequently included letter prefixes like 'A) ', 'B) ', 'A. ', or '(A) ' baked into the option text, duplicating the letter badge already shown in the UI. Prefixes are now stripped at three layers: when AI responses are parsed into the preview panel, when questions are added to the session, and in the MCOptionRow component on render — so existing saved questions are also cleaned up immediately without requiring a re-save.

mediaUrl field added to Question schema

Infrastructure

An optional mediaUrl field has been added to the Question interface and Zod validator in preparation for photo attachments on questions. No upload UI is shipped yet — this is groundwork for the upcoming media attachment feature.

March 26, 2026

Sidebar Cleanup & Changelog

Session Builder

1 update

Left sidebar question type buttons: boxes removed

Polish

The rounded-square tinted background boxes behind question type icons in the left sidebar were removed. The sidebar now shows plain icon + label buttons without any box treatment, reducing visual noise and matching the cleaner style used elsewhere in the app after the March 24 icon cleanup.

Changelog

1 update

March 24 changelog entry added

Documentation

A new entry was added to the Changelog page covering the March 24 session: AI panel post-generation flow (Option B), Start fresh button, width persistence bug fix, icon box removal, and purple button color fix.

March 25, 2026

Polling Preset & Question Type Polish

Session Builder

2 updates

Polling / Vote preset creates a Multiple Choice question

Feature

The 'Polling / Vote' quick preset in the sidebar now creates a Multiple Choice question with two blank option slots instead of a Short Text question. Professors can fill in the options immediately after the preset is applied. A presetSource field on the question marks it as polling-origin for future use.

Question type selector restricted for polling questions

Clarity

For questions created from the Polling / Vote preset, the type-switch dropdown is limited to Text and Multiple Choice only, preventing accidental conversion to incompatible types.

March 24, 2026

AI Panel Flow, Button Polish & Icon Cleanup

Session Builder

5 updates

AI panel post-generation flow (Option B)

Feature

After clicking 'Add Questions to Session,' the AI panel now returns to the pre-generation view instead of closing entirely. Source material (uploaded files, pasted text, and URLs) is preserved so professors can immediately run another round of generation from the same content. Learning objectives and generated results are cleared to signal a fresh generation round. This avoids the frustration of re-uploading lecture notes for a second pass.

'Start fresh' reset button in AI panel header

Feature

A 'Start fresh' button now appears in the AI panel header whenever any content is present (source material, objectives, or generated results). Clicking it clears everything — source material, URLs, files, objectives, question type selection, and count — returning the panel to a completely blank state. The button is styled as a subtle outlined pill so it doesn't compete with the primary Generate action.

AI panel width persistence bug fix

Bug Fix

The AI panel width was already being saved to localStorage, but a stale closure bug in the resize mouseup handler meant the initial width (before any drag) was being saved instead of the final dragged width. Fixed by using a functional state setter in the mouseup handler to read the latest width value at save time.

Removed colored icon boxes from question type badges

Polish

All rounded-square tinted background boxes behind question type icons have been removed across the app — the type picker dialog tiles, question card header badges, AI panel drag overlay, and the Generate with AI tile. Icons now render directly with their accent color against the card background, reducing visual noise and giving the UI a cleaner, flatter feel. The unused colorAlpha() helper function was also removed.

Generate Questions and URL Add buttons changed to purple

Polish

The 'Generate Questions' button and the 'Add' URL button in the AI panel were rendering in a washed-out light blue tint (oklch 0.96 lightness). Both are now solid violet (oklch 0.52 0.22 290), consistent with the rest of the app's primary action color.

March 23, 2026

Collapsible Sidebar & Panel Polish

Session Builder

3 updates

Manus-style collapsible left sidebar

Feature

The left sidebar now supports a collapsed icon-only mode, matching the Manus panel pattern. A PanelLeftClose / PanelLeftOpen toggle button at the top switches between the full 280px expanded view (with labels, descriptions, and the AI banner) and a compact 56px strip showing icon-only buttons for all actions. Thin dividers separate the AI, question types, and preset sections in the collapsed strip. The transition animates smoothly at 0.2s. Collapsed state persists in localStorage across page reloads.

AI panel collapsed state persisted in localStorage

Polish

The open/closed state of the right-side AI panel is now saved to localStorage alongside its width. Reopening the session builder restores the panel to whichever state it was last left in, so professors who prefer a wider canvas don't have to re-collapse the panel on every visit.

Collapsed sidebar AI button background fixed

Bug Fix

In the collapsed icon strip, the AI (Sparkles) button was rendering with a large violet-to-crimson gradient fill that was visually inconsistent with the plain outlined style of all other icon buttons. The button now uses the same 1.5px border, var(--card) background, and var(--violet) icon color as the question-type and preset buttons, giving the strip a uniform appearance.

March 22, 2026

Dark Mode & Design System

Design System

3 updates

SavedButton extracted as a shared component

Design System

The Save Draft / Saved toggle is now a reusable <SavedButton> component in client/src/components/SavedButton.tsx. It encapsulates the canonical design: outlined border, green CheckCircle2 icon, green text in the saved state, and a standard Save icon with neutral styling in the dirty state. Both Home.tsx (session builder) and Settings.tsx now import and use this component instead of maintaining separate inline implementations.

DiscardButton extracted as a shared component

Design System

A companion <DiscardButton> component has been added in client/src/components/DiscardButton.tsx. Canonical design: outlined border, muted foreground text, RotateCcw icon. Settings.tsx uses it in both the sticky header and the unsaved-changes banner, replacing two separate inline <button> elements.

Saved state button design standardized across the app

Polish

Prior to this change, the Saved button had two divergent designs: Settings.tsx used a filled green background with white text, while Home.tsx used a hardcoded bg-white that broke in dark mode. Both have been normalized to the canonical outlined design and now delegate to the shared SavedButton component.

Accessibility

1 update

Full dark mode accessibility audit across all pages

Accessibility

A systematic scan of every page (Home, Sessions, Settings, LiveSession, DesignSystem) identified all remaining hardcoded oklch and hex color values that did not adapt to dark mode. All instances were replaced with CSS variables. A new --destructive-border token was added to both light and dark themes. Key fixes include: status badges, tab underlines, progress dots, True/False and Multiple Choice answer badges, the Launch button gradient, the LiveSession header background, and toggle buttons.

Session Builder

2 updates

Resizable AI panel (Manus-style edge drag)

Feature

The right-side AI panel is now resizable by dragging its left edge — no visible handle, just a 8px hover zone that changes the cursor to col-resize. Width is constrained between 240px and 600px and persisted in localStorage so it survives page reloads. CSS transitions are disabled during active drag for smooth interaction.

SavedButton dirty state: icon removed

Polish

The floppy disc Save icon was removed from the SavedButton dirty state. The button now shows text only ("Save Draft" or "Save Changes") with no icon, giving it a cleaner, more modern appearance. The saved state retains its green CheckCircle2 icon for confirmation feedback.

Bug Fixes

1 update

Session not found — graceful fallback to new session

Bug Fix

Navigating to /session/:id with a stale or deleted session ID previously caused a silent crash with a console error. The session builder now catches the "Session not found" error from the tRPC query, shows a toast notification, clears the stale ID from state, and resets the URL to /session so the user lands on a clean blank builder.

Theming

4 updates

Dark mode with Manus-matching palette

Feature

A full dark mode has been added to the app. The .dark CSS variables use a warm near-black background (oklch(0.13 0.01 264)) with elevated card surfaces (oklch(0.17 0.01 264)), matching the Manus dark mode aesthetic. Pure black is avoided throughout — all surfaces use warm-tinted dark values.

Sun / moon theme toggle in the bottom nav

Feature

A Sun / Moon icon button has been added to the right side of the bottom navigation bar. Clicking it switches between light and dark mode. The preference is persisted in localStorage and restored on next visit.

Hardcoded colors replaced with CSS variables across all pages

Polish

All major pages (session builder, sessions dashboard, settings, join, live session, student session, results, changelog) have had their hardcoded oklch and hex color values replaced with semantic CSS variables (--background, --card, --border, --foreground, --muted-foreground, --indigo-light, --violet-light, --green-light, --blue-light). Accent colors on buttons and interactive elements remain as-is since they are intentional brand colors. Dark-mode overrides for all tinted surface tokens are defined in index.css.

Row wrapper gradient updated for dark mode

Polish

The three-column background gradient in the session builder (which paints the left sidebar, canvas, and right AI panel backgrounds all the way to the page bottom) now uses var(--card) and var(--background) instead of hardcoded white and light-gray values, so it renders correctly in both light and dark mode.

March 21, 2026

Settings, Layout Fixes & Question Card Polish

Settings

4 updates

Professor Settings page

Feature

A full /settings route has been added with six sections: Session Defaults, Student Experience, Live Mode, Export & Data, Account, and System/Admin. Settings are persisted per-user in a new professorSettings database table (32 columns). A sticky Save / Discard banner appears whenever there are unsaved changes, matching the unsaved-changes pattern in the session builder.

Two-column desktop layout with tab bar on mobile

Polish

The Settings page uses a fixed left navigation column (section links with icons) and a right content panel on desktop. On mobile the layout collapses to a horizontal scrollable tab bar at the top, keeping all six sections reachable without a sidebar.

Settings accessible from Sessions dashboard

Navigation

A gear icon button has been added to the Sessions dashboard header, linking directly to /settings. Settings also appears in the bottom navigation bar.

tRPC settings router with get and save procedures

Feature

A dedicated settings tRPC router exposes settings.get (returns saved settings or defaults) and settings.save (upserts the full settings object). Both procedures use a demo key in unauthenticated mode and the user's ID when logged in, so settings persist correctly in both contexts.

Session Builder Layout

2 updates

Sidebar column backgrounds extend to page bottom

Polish

The left sidebar and right AI panel previously showed a gap at the bottom of the page when the canvas grew taller than the viewport. The row wrapper now carries a linear-gradient background that paints white for both sidebar columns and the page background color for the canvas area, extending all the way to the page bottom regardless of content height.

Divider line added to the left of the AI panel

Polish

The canvas <main> element now has a permanent borderRight so a divider line always appears on the left edge of the AI panel when it opens, matching the style of the divider on the right edge of the left sidebar.

Question Cards

5 updates

Type dropdown X position hardcoded to −6px

Polish

A temporary dev slider was added to the session builder canvas to tune the horizontal position of the type dropdown button interactively. After testing, −6px was selected as the final value. The slider has been removed and the offset is now baked in permanently.

Icon-to-label gap in type dropdown widened

Polish

The gap between the question type icon and the label text inside the dropdown button was increased from 4px to 8px, giving the two elements more breathing room and improving readability.

Standalone type icon removed from question cards

Clarity

Each question card previously showed a standalone icon bubble alongside the type-switch dropdown, resulting in the icon appearing twice. The standalone bubble has been removed; the dropdown button (which already shows the icon and label together) is now the only type indicator on the card.

Type dropdown shifted 4px left

Polish

After removing the standalone icon, the content area was shifted 4px to the left so the type dropdown aligns more naturally with the drag handle and question text.

Star Rating and File Upload removed from type-switch dropdown

Clarity

The type-switch dropdown on each question card now only lists Short Text, Multiple Choice, and True / False — the three types with compatible response structures. Star Rating and File Upload can still be added from the sidebar but are no longer offered as switch targets, preventing data-loss confusion when changing types.

March 20, 2026

Product & Design Improvements

Question Builder

16 updates

Launch Session gated until questions exist

Validation

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.

"+ Add Manually" opens a question type picker

UX Flow

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 answer options editor

Feature

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 use placeholder text, not pre-filled values

Polish

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.

Correct answer selection is required

Validation

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.

"(min. 2)" label spacing tightened

Polish

The minimum options hint was visually detached from its heading. Spacing has been corrected so the label sits immediately next to "Answer options".

Dashed border removed from session name

Polish

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.

Question count badges removed from preset buttons

Clarity

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.

Back navigation with unsaved-changes guard

Feature

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.

Save Draft button reflects dirty state

Polish

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.

Active onboarding step ring pulses

Animation

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.

True / False question type

Feature

A fifth question type — True / False — has been added with a ToggleLeft icon and green color. The Add Question modal shows a correct-answer selector (True or False buttons). The question card displays both answer pills. AI generation supports True / False with a correct answer badge shown in the preview.

Suggested question templates in the Add Question modal

Feature

Each question type now has 4–6 curated example questions. A "Show common questions" toggle button reveals a dropdown list — clicking any suggestion populates the text field instantly and closes the list. Hidden by default to keep the modal clean.

Model answer field on Short Text questions

Feature

Short Text question cards now show an editable model answer box below the question text. The Add Question modal includes an optional Model Answer textarea. AI-generated Short Text questions carry their model answer through when added to the session. The answer renders in an indigo-tinted box matching the AI preview style.

Edit session loads saved state into the builder

Feature

Tapping Edit on a session card in My Sessions now loads that session's saved code, name, and questions into the builder instead of opening a blank session. New Session navigation sets a flag that clears the old session state on mount so there is no bleed-through.

"Add another question" button uses Plus icon

Polish

The icon on the "Add another question" row at the bottom of the question list was changed from ChevronRight to Plus, which more clearly communicates the action.

Design System

8 updates

Primary color renamed from Crimson to Indigo

Tokens

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.

Usage rules updated: Crimson is Launch-only

Documentation

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.

Background color corrected to #F9FAFC

Tokens

The Background color token has been updated to the correct oklch value for #F9FAFC. A typo in the previous token value was also corrected.

Design System password remembered after first entry

UX Flow

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.

True / False added to question type reference

Documentation

The Design System now documents True / False as the fifth question type alongside Short Text, Multiple Choice, File Upload, and Star Rating.

Missing color tokens added

Tokens

The --green, --green-light, --green-border, --amber, --amber-light, --amber-border, and --destructive-light tokens were missing from index.css, causing color swatches to render incorrectly. All tokens are now defined and the swatches render correctly.

Null state pattern updated with concrete examples

Documentation

The null state pattern in the Design System now shows two concrete examples — the session builder empty state and the My Sessions empty state — with full-opacity emojis and real copy, replacing the generic placeholder.

Changelog tag badges use Geist Mono

Polish

Tag badges (Validation, UX Flow, Feature, Polish, etc.) in the Changelog now use Geist Mono, matching the monospace font used for session codes throughout the app.

My Sessions Dashboard

2 updates

New My Sessions dashboard

Feature

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.

My Sessions added to bottom navigation

Navigation

The My Sessions dashboard is now accessible from the bottom navigation bar alongside Session Builder, Join Session, and Design System.

AI Panel

13 updates

AI panel converted to a fixed right-side drawer

Feature

The AI generation panel was redesigned from an inline flex column into a fixed right-side drawer that slides in over the canvas. It features a backdrop blur, a Sparkles tab handle on the left edge for toggling, and a dedicated scrollable body so the Generate/Add buttons always stay anchored at the bottom regardless of content length.

Curved tab handle with gradient

Polish

The AI drawer tab handle was 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 uses the same diagonal purple-to-pink gradient as the AI banner in the sidebar, and deepens when the drawer is open.

Tab handle positioned below the topbar

Polish

The drawer tab was moved from the vertical centre of the screen to top: 80px, placing it just below the 64px topbar. This keeps it visually anchored to the content area rather than floating in the middle of the page.

Tab handle open/close wired correctly

Reliability

The tab's onClick was previously only wired for closing. It now correctly opens the drawer when closed and closes it when open, so the tab is a reliable toggle in both directions.

Real AI generation via server-side API

Feature

Generation now calls a dedicated /api/generate-questions backend route that uses the server-side API key via the invokeLLM helper. The system prompt enforces knowledge-atom extraction — every question must reference specific names, terms, numbers, or claims from the source text rather than writing generic questions. Question types are distributed evenly across the requested count.

URL as source material

Feature

A URL input row sits between the file drop zone and the paste textarea. Entering a URL and pressing Enter or clicking Fetch sends it to the server, which strips navigation and footer noise with cheerio and returns up to 12,000 characters of readable text. The extracted content is appended to the source material field.

URL chips replace inline text injection

UX Flow

Fetched URLs are now stored as removable pill chips in the AI panel rather than dumping their text into the textarea. At generation time the server fetches each chip URL and merges the extracted text with any pasted content before calling the LLM. The Generate button activates when at least one URL chip is present, even if the textarea is empty.

Duplicate URL warning

Validation

Adding a URL that is already in the source chips list now shows a warning toast: "Already added — This URL is already in your source list." The input is cleared and no duplicate chip is created.

Generated questions start selected by default

UX Flow

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.

Auto-height textareas on generated question cards

Polish

Question text, Multiple Choice options, and model answers in the AI preview panel now use auto-height textareas so long content is never clipped. Cards expand to fit their content rather than truncating.

Robust JSON parsing for AI responses

Reliability

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.

Learning Objectives

Feature

A new Learning Objectives section sits between the source material and question types in the AI panel. Professors can add one or more objectives as numbered green chips (Enter or Add button to confirm, × to remove). Objectives persist in localStorage across panel close and reopen. When objectives are present, they are injected into the generation prompt so the AI steers every question toward assessing a specific objective. The Generate button shows the active count: "Generate (2 objectives)".

AI-suggested learning objectives

Feature

A Suggest button in the Learning Objectives header calls a new /api/suggest-objectives endpoint that reads the source material and returns 3–5 Bloom's-aligned draft objectives. Suggestions appear as purple preview chips with individual "+ Add" and dismiss (×) controls. The button is disabled until source material is present and shows a spinner while loading.

Question Builder (Canvas)

5 updates

Sidebar and AI panel extend full height

Polish

The left sidebar and AI drawer now use sticky positioning (top: 64px, height: calc(100vh − 64px)) so they always extend to the bottom of the viewport while the canvas scrolls naturally. Previously both panels were clipped to the initial viewport height when the question list grew long.

Cmd/Ctrl+S saves the draft

Feature

Pressing Cmd+S (Mac) or Ctrl+S (Windows/Linux) anywhere in the session builder now triggers Save Draft instantly, without needing to reach for the button in the topbar.

Question type switcher is now a dropdown

UX Flow

The horizontal type-switcher pills that appeared inline on each canvas card have been replaced with a compact dropdown button showing the current type, its icon, and a chevron. Clicking opens a menu listing all five question types; the active type is highlighted with a checkmark. Selecting a different type triggers the same AI-powered transform as before.

Inline edit textarea auto-resizes

Polish

Clicking into a question card to edit it now opens a textarea that immediately expands to show the full question text. The textarea also grows as you type, so long questions are never clipped or hidden behind a scroll.

Session name always editable

UX Flow

The session name in the topbar is now a plain always-visible input field. Hovering reveals a subtle underline and a pencil icon to signal that it is editable. Previously the name required a two-step click-to-edit interaction.

AlicePoll · Changelog