Albums slice 1: read-only album view for the file zone #70

Merged
void merged 5 commits from void/albums-slice-1-r2 into dev 2026-11-11 00:25:37 +00:00
Member

Read-only album view for the file zone (docs/file-zone.md): one room, one thread per Mind. No Matrix writes.

  • buildAlbums (pure) turns thread roots and media replies into albums; isFileZone detects the zone by create type org.gamecult.file_zone or fileZoneRooms in config.
  • A zone room shows the album list instead of its timeline; opening an album lists files through the existing image/video/audio components (bearer-authenticated media). Audio skips the chat Attachment frame. Chromeless, one column on phones.
  • Timeline stays one tap away (and back); an event deep link opens the timeline. The zone sends the read receipt.
  • Preview demo seeds one zone with two albums.

Fixes from Soul: own-key kind lookup (Map), m.replace titles, calmer fetch (retry 1, 6 in flight, 30 s refresh, failed refetch keeps data), encrypted-zone message, alias subscription. Tests added for the surviving mutants (event type, event_id, create-type prefix).

Limits: one page per endpoint (100 albums, 100 files each); play/volume controls still use the stock Chip/IconButton; rendering not checked in a browser. Not merged, not deployed; for Libby to read.

🤖 Generated with Claude Code

Read-only album view for the file zone (docs/file-zone.md): one room, one thread per Mind. No Matrix writes. - `buildAlbums` (pure) turns thread roots and media replies into albums; `isFileZone` detects the zone by create type `org.gamecult.file_zone` or `fileZoneRooms` in config. - A zone room shows the album list instead of its timeline; opening an album lists files through the existing image/video/audio components (bearer-authenticated media). Audio skips the chat Attachment frame. Chromeless, one column on phones. - Timeline stays one tap away (and back); an event deep link opens the timeline. The zone sends the read receipt. - Preview demo seeds one zone with two albums. Fixes from Soul: own-key kind lookup (Map), m.replace titles, calmer fetch (retry 1, 6 in flight, 30 s refresh, failed refetch keeps data), encrypted-zone message, alias subscription. Tests added for the surviving mutants (event type, event_id, create-type prefix). Limits: one page per endpoint (100 albums, 100 files each); play/volume controls still use the stock Chip/IconButton; rendering not checked in a browser. Not merged, not deployed; for Libby to read. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
useAlbums reads one page of /threads and each root's m.thread relations; AlbumView
lists albums and their files through RenderMessageContent. RoomView shows it in
place of the timeline and composer when isFileZone holds.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The pretend server answers /threads, m.thread relations and media downloads
(generated WAV and PNG bytes, no binaries in the repo).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Albums: Soul fixes (read receipt, timeline toggle, own-key kinds, edits, calmer fetch)
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
fa9801a4d6
- A zone sends the read receipt the timeline would; the unread badge clears.
- Timeline stays one tap away (and back); an event deep link opens the timeline.
- Kinds come from a Map, so "constructor"/"__proto__" are not files.
- Album titles follow m.replace edits.
- Fetch: retry once, at most 6 relation reads in flight, refresh every 30 s, a failed
  refetch keeps the loaded albums.
- Encrypted zone says so instead of "No albums yet".
- Audio renders without the chat Attachment frame and type badge.
- useIsFileZone follows alias changes.
- Tests kill the surviving mutants: event type, event_id, create-type prefix.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Albums: event link beats an earlier albums choice; buildAlbums tolerates bad input
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m44s
e2954968c2
- zoneView: an eventId always shows the timeline; the back-to-albums button is hidden then.
- buildAlbums: null/non-object inputs and replies are skipped, non-numeric timestamps
  count as 0, an empty-body root is titled "Untitled album", m.replace events are never
  files or albums.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
void force-pushed void/albums-slice-1-r2 from e2954968c2
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m44s
to dc1ea7af27
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m41s
2026-11-10 23:17:00 +00:00
Compare
void merged commit b6da92a081 into dev 2026-11-11 00:25:37 +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!70
No description provided.