Developer
3dc1b31fc3
feat(frontend): slice 7b — Media on TanStack Table (server pagination)
...
Web UI rework. Completes the DataGrid migration (7a + 7b):
- pages/Media.tsx off @mui/x-data-grid + @mui/material onto DataTable:
15 locked columns (title/series/season/episode/type/year/runtime_min/
size/bitrate/hdr/video/resolution/date_added/library/path);
enablePagination + manualPagination + rowCount from queryResult.total;
page state (pageIndex/pageSize) -> offset/limit into useMediaQuery;
onRowClick -> navigate('/files?path=...') preserved; stable path-derived
getRowId so selection survives server paging; column-visibility toggle.
Hard rule honored: NO sorting, NO resizing (visibility-only).
- Migrate Media shell (Select/Input/Progress/Card/grid/Typography/Tabs).
- Media component tests (column set + row-click nav).
- Harness fix: polyfill ResizeObserver in test/setup.ts — jsdom lacks it
and Radix primitives (Select/ScrollArea/etc.) reference it; was causing
cross-test failures once Media pulled shadcn Select into the pool.
Gate: build + lint + test green (23 files / 64 tests).
2026-06-17 18:33:59 +00:00
Developer
e8b0f1144b
feat(frontend): slice 7a — DataTable wrapper + FileBrowser (TanStack Table)
...
Web UI rework. Highest-risk slice, part 1 of 2:
- New components/ui/data-table.tsx: generic TanStack Table wrapper on the
shadcn Table primitive. Controlled rowSelection/columnVisibility/
pagination, optional selection column (stopPropagation on cell click),
row-click, column-visibility dropdown, manual-pagination support.
Hard rule honored: NO getSortedRowModel, NO column resizing/sizing.
- Migrate pages/FileBrowser.impl.tsx off @mui/x-data-grid + @mui/material
onto DataTable: 5 columns (type/name/ext/size/modified), row-click ->
ffprobe preview preserved, column-visibility toggle, no pagination.
- DataTable + FileBrowser component tests (RED->GREEN).
Gate: build + lint + test green (22 files / 58 tests).
2026-06-17 18:02:47 +00:00
Developer
04f2e59c92
feat(frontend): slice 6b — Users compose dialog + 9 icons (finish Users)
...
Web UI rework. Completes the Users migration (6a directory + 6b compose):
- Compose dialog off @mui: shadcn Dialog family + Input (subject) +
Textarea (html body) + Separator + Label; IconButton -> Button ghost
- 9 @mui/icons-material -> lucide-react: Close->X, AttachFile->Paperclip,
FormatBold->Bold, FormatItalic->Italic, Link->Link,
FormatListBulleted->List, MailOutlined->Mail, Send->Send,
DeleteOutlined->Trash2
- Rich-text compose parity: markup insertion, attachments (FormData),
queue-status polling, send via useSendUserMessage
- UsersPage.impl.tsx now has ZERO @mui imports
Gate: build + lint + test green (20 files / 46 tests).
2026-06-17 16:18:49 +00:00
Developer
1e23c07a20
feat(frontend): slice 6a — Users directory surface + drawer (shadcn)
...
Web UI rework. Slice 6a (force-split; 6b = compose dialog next):
- UsersPage.impl.tsx directory surface off @mui: shadcn Table family +
Checkbox + Badge (status: success=chart-2/destructive/secondary) +
Avatar + Tooltip + Progress + Alert/Button/Stack/Typography
- MUI Drawer -> shadcn Sheet side="right" for user detail drawer
(buildUserDrawerModel rendering preserved)
- Selection-across-pagination + search/filter parity preserved
- Compose-dialog MUI subset (Dialog/TextField/Divider/IconButton +
9 icons) intentionally LEFT for slice 6b
Gate: build + lint + test green.
2026-06-17 14:36:07 +00:00
Developer
b6da7df7f9
feat(frontend): slice 5 — migrate Settings + Actions to shadcn/Tailwind
...
Web UI rework. Form-heavy pair (controlled useState parity, no form lib):
- pages/Settings.tsx off @mui: monitoring-machine CRUD, SSH-key mgmt,
SSH test/validation feedback, danger-zone reset (ConfirmDialog), tabs
- pages/Actions.tsx off @mui: saved-task editor, machine selection,
run history, tabs
- Both reuse migrated shared components (SectionCard/SelectionRailCard/
TabbedCard/HoverEditButton/ConfirmDialog/DialogFooter) as before
- Behavioral tests added (mocked hooks; no live SSH)
Gate: build + lint + test green (19 files / 39 tests).
2026-06-17 13:47:57 +00:00
Developer
c721f0dece
feat(frontend): slice 4 — migrate Dashboard + Applications to shadcn/Tailwind
...
Web UI rework.
- Migrate pages/Dashboard.tsx off @mui (shortcut CRUD dialogs, machine
switcher, BackupDashboardWidget mount; shortcuts reuse ConfirmDialog/
DialogFooter from slice 2)
- Migrate pages/Applications.tsx shell off @mui (tabs + library counts);
keeps <Media/> child intact (Media.tsx still MUI, deferred to slice 7
with its DataGrid)
- Behavioral tests for both pages
Gate: build + lint + test green.
2026-06-17 13:15:51 +00:00