Set imagePreview to the question's image_path in handleEdit so the
current image displays in the Sheet form.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rewrite QuestionBankView from inline-styled JSX to TypeScript with
Tailwind CSS, shadcn/ui components, and @tanstack/react-virtual.
Adds slide-out Sheet form, sortable column headers, custom checkboxes,
hover action icons, sticky bulk action bar, and empty state.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add @dnd-kit/modifiers restrictToParentElement so dragged questions
stay clamped inside the queue container.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Display the answer field instead of question_content for non-text
questions (image/audio/video) in both the pool and queue panels.
Add @tanstack/react-virtual to virtualize the question pool list
for smooth scrolling with large question banks. Search also matches
against the answer field.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the linear scrolling game creation form with a two-column
layout: left panel for browsing/searching the question pool with
collapsible categories, right panel for the game queue with
drag-and-drop reordering via @dnd-kit/sortable. Add shadcn Dialog
for template picker, search/filter bar, random question panel,
progress indicators, and sticky create button. Convert to TypeScript.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Install Tailwind v4 with @tailwindcss/vite plugin, TypeScript, and
shadcn/ui (button + sheet components). Convert shared layout files
(App, AdminNavbar, AuthContext, ProtectedRoute, useSocket, api) from
JSX/JS to TSX/TS with type annotations. Rebuild AdminNavbar using
shadcn Button and Sheet components with Tailwind classes, replacing
custom CSS. Page components remain as JSX for incremental migration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Set render_as_batch=True in Alembic env.py so autogenerated
migrations use batch mode for SQLite compatibility
- Add SQLite + Alembic section to CLAUDE.md with rules for
avoiding circular dependency and idempotency issues
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Check for existing columns/tables before adding to avoid duplicate
column errors when production DB state is ahead of Alembic history.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Split batch_alter_table operations to avoid circular dependency
errors caused by the current_turn_team_id foreign key during
SQLite table recreation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Questions now have a created_by field linking to the user who created them.
Users only see questions they own or that have been shared with them.
Includes share dialog, user search, bulk sharing, and export/import
respects ownership.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Improve mobile experience for admin interface with responsive layouts
that stack on smaller screens, hamburger menu navigation, and force
light mode across the app.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add search, category, and type filters to questions API
- Add clickable sortable table headers with sort indicators
- Add filter controls UI with clear filters button
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>