Skip to content

feat(ui): add sortable column headers to the file list - #76

Merged
noidee-dev merged 1 commit into
NoiXdev:mainfrom
huelsmc:feat/file-list-sorting
Oct 15, 2026
Merged

noidee-dev merged 1 commit into
NoiXdev:mainfrom
huelsmc:feat/file-list-sorting

Conversation

@huelsmc

@huelsmc huelsmc commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

Summary

The file browser had no column headers, so a long listing could not be reordered. This adds a sticky header row (Name, Size, Last modified) where clicking a header sorts by that column.

Behaviour

  • Clicking the active column flips between ascending and descending; clicking a different column starts ascending. A chevron marks the active column, and aria-sort is set on the header cells.
  • The default is name, ascending. Names sort naturally and ignore case (file2 before file10).
  • Folders always stay above files. They have no size or date, so they keep name order when sorting by size or date.
  • Files without a date stay at the bottom when sorting by date, in either direction.
  • The header stays visible while scrolling and supports dark mode.
  • Folder action buttons now have their own right-hand column, so they no longer sit under "Last modified".
  • Header labels are translated in all six locales (en, de, fr, pl, nl, ro).

Note

Sorting is client-side and covers the pages loaded so far. In folders with more than 1,000 objects, the order updates when "Load more" fetches the next page.

Changes

  • src/renderer/lib/sortEntries.ts (new, with unit tests): pure sort logic and header toggle state.
  • src/renderer/components/files/FileBrowser.tsx: header row and sorted listing.
  • FileBrowser.test.tsx: header click and aria-sort tests.
  • src/renderer/i18n/locales/*.json: four new files.column* keys per locale.

Testing

  • npm run lint passes with no new warnings, npm run typecheck passes, and npm test passes (602 tests).
  • Checked manually in the dev build (npm start) against a real bucket.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RR6wV54o4jV23tysVcT8HK

Add a sticky header row (Name, Size, Last modified) to the file browser.
Clicking a header sorts by that column; clicking it again flips the
direction. Folders stay above files and keep name order, names sort
naturally and case-insensitively, and undated files stay last. Folder
actions move into their own column so they no longer sit under
"Last modified".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RR6wV54o4jV23tysVcT8HK
@noidee-dev
noidee-dev merged commit 9e43c79 into NoiXdev:main Oct 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants