Files desk cut 1: folders by album title path, share into the current folder #147

Merged
void merged 2 commits from void/files-desk-view into dev 2026-11-13 21:46:38 +00:00
Member

Cut 1 of docs/commons-files-desk.md under A (#142, decided). Folders are albums whose title is a /-separated path; no wire change.

  • albums/albumFolders.ts: pure listFolder (sub-folders with counts, direct albums by leaf, newest first), titleIn (folder prefix for a share), folderOf, splitPath (empty segments drop, ./.. are ordinary names).
  • AlbumView: folder rows, breadcrumb back, leaf names; opening an album and going back returns to its folder. ShareSet takes folder and sends the root as folder/title.
  • Tests (10 new, 100 in the dir pass): whole-segment prefix match, an album and a folder of the same name coexist, prototype-ish names, all-slash titles, and a consumer-side round trip: sendShareSet into uploads/meta read back through buildAlbums + listFolder. Mutating the prefix match or the same-name rule fails a test.
  • Not covered: AlbumView's folder state is not rendered in a test (it needs the live client); tsc shows only the existing matrix-js-sdk type errors of the shared node_modules.

Not in this cut: Commons row (the room is a typed Space child, a second row would duplicate it), pagination, versions via org.gamecult.publish.replaces, add-to-album, per-error messages. Nothing deployed.

🤖 Generated with Claude Code

Cut 1 of `docs/commons-files-desk.md` under A (#142, decided). Folders are albums whose title is a `/`-separated path; no wire change. - `albums/albumFolders.ts`: pure `listFolder` (sub-folders with counts, direct albums by leaf, newest first), `titleIn` (folder prefix for a share), `folderOf`, `splitPath` (empty segments drop, `.`/`..` are ordinary names). - `AlbumView`: folder rows, breadcrumb back, leaf names; opening an album and going back returns to its folder. `ShareSet` takes `folder` and sends the root as `folder/title`. - Tests (10 new, 100 in the dir pass): whole-segment prefix match, an album and a folder of the same name coexist, prototype-ish names, all-slash titles, and a consumer-side round trip: `sendShareSet` into `uploads/meta` read back through `buildAlbums` + `listFolder`. Mutating the prefix match or the same-name rule fails a test. - Not covered: AlbumView's folder state is not rendered in a test (it needs the live client); `tsc` shows only the existing matrix-js-sdk type errors of the shared node_modules. Not in this cut: Commons row (the room is a typed Space child, a second row would duplicate it), pagination, versions via `org.gamecult.publish.replaces`, add-to-album, per-error messages. Nothing deployed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Files desk cut 1 under Matrix authority: folders by album title path, share into the current folder
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
53a724ae27
Albums titled a/b/c group into folders in AlbumView; ShareSet prefixes the
current folder onto the album title it sends. No wire change.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Soul fixes: a folder that empties keeps its Back row, blank titles get a label
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 4m1s
b8eed50bd7
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
void changed title from Draft: Files desk cut 1: folders by album title path, share into the current folder to Files desk cut 1: folders by album title path, share into the current folder 2026-11-13 21:46:35 +00:00
Author
Member

Soul pass (separate context) held on hiding/duplication/read-back; two defects fixed in b8eed50b (empty folder keeps its Back row; blank titles labelled). Named, not fixed: a plain root title containing / is now normalised on send (AC / DC -> AC/DC), so "no wire change" means no new event shape, not byte-identical titles; ShareSet prop wiring (folder -> titleIn) has no component test.

Soul pass (separate context) held on hiding/duplication/read-back; two defects fixed in b8eed50b (empty folder keeps its Back row; blank titles labelled). Named, not fixed: a plain root title containing `/` is now normalised on send (`AC / DC` -> `AC/DC`), so "no wire change" means no new event shape, not byte-identical titles; ShareSet prop wiring (`folder` -> `titleIn`) has no component test.
void merged commit bb6155709a into dev 2026-11-13 21:46:38 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Ratatoskr!147
No description provided.