Files desk: name loose files the album list cannot show; pin the old publisher wire shape #161
Loading…
Reference in a new issue
No description provided.
Delete branch "void/files-desk-loose-files"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up
ratatoskr:follow_up:chat-s7629-7629, item 2. Reads Eureka's #commons publisher as gamecult-ops #121 describes the old shape: loose files (no album thread), flatorg.gamecult.publish.{replaces,sha256,name}keys, noinfo.sha256.What the client did with that, by reading it:
/threads, so a Commons holding only loose files said "No albums yet." This PR names them:looseFilesover the room's live timeline (file events with no thread root and nom.threadrelation) and one line under the list:2 files were posted outside an album and are not listed here: a.md, b.md. They are in the Timeline.It is the live timeline only, so it counts what has synced, not the whole history.replaces: not silent, already degrades.versions.tsreads only the nestedorg.gamecult.publish.replaces, so old-shape versions all show unfolded; nothing is hidden. I did not add a reader for the flat key: #121 deletes that shape and the Commons room does not exist yet, so a second reader would be a compatibility layer for events that were never posted.info.sha256: already tolerated. The file lists; it has no "fetched for" readers (a receipt needs the hash to verify).Tests pin all three from the publisher-shaped events through
buildAlbums/looseFiles/looseNote: loose found; roots, thread replies (by SDK root and by relation), edits and redactions not loose; singular, plural and overflow note text; flat key folds nothing; nested key folds; no hash, no readers, no crash. Mutation: dropping them.threadrelation check fails a test. 156 album tests pass.Untested: the note in a rendered AlbumView (no DOM renderer for it); the live timeline's coverage of old history.
🤖 Generated with Claude Code
Soul pass: READY, lows folded in (gating now
looseNoteFor, tested; redaction refreshes the note). Known limits, not fixed: the note counts only the live timeline window (a zone view paginates nothing, so loose files older than what has synced are not counted, and the count is a floor); the timeline is mapped on every AlbumView render (fine at hundreds of events, unmeasured beyond); no rendered-component test of the note.