Add a lock toggle to the shot table toolbar that freezes the
checkbox, thumbnail, and shot name columns. When locked, the table
splits into a fixed left pane and a horizontally scrollable right
pane so the scrollbar spans only the movable columns. Constrain the
table to fill the viewport height so the scrollbar stays at the
screen bottom, and add min-w-0 to the layout to keep horizontal
overflow inside the table instead of the page.
Also fix the asset Task Status filter to render task type groups by
using the object-aware TaskStatusBadge.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Remove wrapper padding from ProjectAssetsView so toolbar sits flush
under the header, matching the shot page
- Add px-4 to AssetsDataTable root div to match ShotsDataTable margin
- Move thumbnail toggle from left filter group to right action area as
an icon-only button, matching the shot toolbar's right-side pattern
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Pass episode_id filter to backend API instead of client-side filtering,
reducing payload size when an episode is selected
- Skip getShot refetch in ShotDetailPanel when initialShot prop is provided
- Fix redundant DB query in list_shots: read project.custom_task_statuses
directly from the already-fetched project object
- Add missing indexes on Task.shot_id, Task.assigned_user_id,
Task.deleted_at and Episode.project_id; add add_perf_indexes.py
migration script to apply them to existing databases
- Center login page layout
- Update CLAUDE.md and AGENTS.md with correct venv path
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>