Skip to content

feat(ui): implement Files tab with model file listing (#2428)#2538

Merged
fl0rianr merged 2 commits into
kpoin/ui-testingfrom
feat/gui3-slice2-storage-files
Jul 3, 2026
Merged

feat(ui): implement Files tab with model file listing (#2428)#2538
fl0rianr merged 2 commits into
kpoin/ui-testingfrom
feat/gui3-slice2-storage-files

Conversation

@kpoineal

@kpoineal kpoineal commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements the Files tab in the Model Detail Panel, completing Slice 2 of #2428.

What it does

  • Calls the new GET /api/v1/models/{id}/files endpoint (merged in feat: add model files endpoint #2437)
  • Displays an accessible table showing each model file's name, role, size (human-readable), and download status
  • Handles loading, empty, and error states gracefully
  • Storage meter was already wired - confirmed working end-to-end against a live lemond build from this branch

Changes (4 files)

File Change
src/api.ts Added ModelFileInfo, ModelFilesResponse interfaces + getModelFiles(id) method
src/components/ModelDetailPanel.tsx Replaced Files tab stub with real component (fetch, table, states)
src/styles/styles.css Dark-theme table/badge/status styles for the Files tab
tests/a11y.spec.ts 5 new tests (A180-A184): table semantics, content, empty, error, axe scan

Testing

  • Built lemond.exe from this branch and confirmed:
    • GET /api/v1/models/Qwen3.6-35B-A3B-GGUF/files returns files with roles (main, mmproj)
    • GET /api/v1/system-info returns model_storage with real disk stats
  • Playwright: 191 passed, 7 skipped, 3 pre-existing failures (unrelated to this PR)
  • TypeScript: tsc --noEmit clean

Accessibility

  • Semantic table with caption, scope=col headers
  • Status conveyed via text (not color-only): Downloaded / Not downloaded
  • aria-live=polite + aria-busy on loading state
  • Passes axe-core WCAG 2.1 AA scan (test A184)

Closes progress on #2428. @fl0rianr - ready for your review.

Wire the model-detail Files tab to GET /api/v1/models/{id}/files (PR #2437).
Renders backing files (name, role badge, human-readable size, download
status) in an accessible table with column headers and a caption, plus
loading/empty/error states. Adds getModelFiles() + ModelFilesResponse to
the API client, dark-theme CSS, and Playwright a11y tests A180-A184.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kpoineal kpoineal added this to the GUI3 milestone Jul 2, 2026
@kpoineal kpoineal added the squad:mattingly Assigned to ⚛️ Mattingly (UI / Frontend) label Jul 2, 2026
@github-actions github-actions Bot added enhancement New feature or request web ui labels Jul 2, 2026
@fl0rianr

fl0rianr commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

needs some corrections:
image

  • In this table "Size" should be above the displayed size, to much to the right atm
  • the rows of the table needs to be uniform in height

@fl0rianr fl0rianr left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see comment above

Addresses fl0rianr's review feedback on PR #2538:
- Size column now left-aligned so header sits directly above values
- Table rows have uniform 40px height

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@fl0rianr fl0rianr left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fl0rianr fl0rianr merged commit d3c80c0 into kpoin/ui-testing Jul 3, 2026
68 checks passed
@fl0rianr fl0rianr deleted the feat/gui3-slice2-storage-files branch July 3, 2026 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request squad:mattingly Assigned to ⚛️ Mattingly (UI / Frontend) web ui

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants