Commit graph Ratatoskr/src
Author SHA1 Message Date
Void
6ba5647ea8 File receipts read 'fetched for <Mind>', never 'read by'
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m32s
The receipt means the mouth fetched and stored the file for the Mind, not that it is in her sandbox or was read.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-12 01:58:39 +00:00
Void
1c5331da4d File zone: one room subscription for every 'read by' row
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m30s
receiptStore.ts holds one Timeline/Redaction/TimelineReset listener set per room while any row is mounted and a snapshot of the receipt events; useFileReaders derives each row's readers from it with readersOf (same rules). 200 rows register one listener per event, not 200.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 22:41:35 +00:00
Void
da2445044d File zone: the readers hook rescans on redaction and reset; replies guard is one local; reader order by time
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m26s
Soul findings 1, 2 (doc), 4 and the merge order.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 22:34:39 +00:00
Void
00890b2108 File zone: 'read by' finds receipts anywhere in the room, in the album listing and on the timeline row
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
readersOf (fileReceipt.ts) is the one reader: a receipt is a thread reply or a plain room event, matched by content.event_id; the sender must be @<mind>:<this homeserver>, the hash the file event's, an m.reference present must name the same event, one entry per Mind. The timeline file message draws it too.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 22:33:36 +00:00
Void
3971c72de7 File zone tests: no shadowed helper name
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m42s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 21:28:49 +00:00
Void
08ecacd438 File zone: a receipt counts only from @<mind>:<this homeserver>; doc says what info holds when media fails to load
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Soul: a federated @void:evil.example passed the localpart check.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 21:28:30 +00:00
Void
c34e536132 File zone: a receipt counts only from a Mind's own sender and with the file's hash; info.sha256
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Heimdall's two rules (#minds): trust the Matrix sender, never a field inside; read means the receipt hash equals the file event's.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 21:27:24 +00:00
Void
af328bdb90 File zone: Mind contract; plaintext sha256 in info on send; 'read by <Mind>' from org.gamecult.file_received
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 21:26:36 +00:00
a7c95ce6ec Merge pull request 'Navigator: Browse open state per screen class' (#101) from void/browse-key-screen-class into dev
All checks were successful
Rat dev preview / Build dev preview (push) Successful in 4m46s
2026-11-11 21:05:24 +00:00
b7828fef0f Merge pull request 'Desk: fork card contract at CultLib 3a51bbab (raised_at, counts, nullable answerer)' (#100) from void/fork-raised-at into dev
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-11 21:05:23 +00:00
Void
65d54d4bf4 Navigator: the Browse open state is kept per screen class, like every other section
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m42s
Libby's read of #67: Browse had no phone/wide split, so opening it on one screen class opened it on the other. The store keeps its name and localStorage key (a rename would drop saved state); the comment says what a key means.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 20:55:27 +00:00
Void
79fae54a0a Desk: age parses strict RFC3339 only; a served count outside the contract shows no count line
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 4m0s
Soul found Date.parse accepting '2026-11-06', 'Nov 6 2026', '0' and 2026-02-30, and decider_count 0/65 or a missing/negative answerer_count rendering as served.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 20:53:36 +00:00
23765855a9 Merge pull request 'scene: a throwing ray-march createScene goes to onCompileFail' (#85) from nibu/scene-throw-compile-fail into dev
All checks were successful
Rat dev preview / Build dev preview (push) Successful in 4m51s
2026-11-11 20:52:39 +00:00
24a38e4d76 Merge pull request 'Ridge: shade faces by depth below the crest; hold the ridge inside the label band (Nibu)' (#99) from void/nibu-ridge-face-volume into dev
All checks were successful
Rat dev preview / Build dev preview (push) Successful in 4m31s
2026-11-11 18:31:12 +00:00
Void
9e02536e02 Desk: card contract at CultLib 3a51bbab: decider_count, answerer_count, nullable answerer; the counts show when the ids are withheld
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m30s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 18:23:14 +00:00
Void
57f0ef8df2 Desk: raised_at on the ForkCard (required key, instant or nil); the card shows its age only when there is one
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 18:12:02 +00:00
Nibu
48d9c56dc7 Ridge: shade the faces by depth below the crest, and hold the ridge inside the sky state's label band
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m35s
Volume: the foot of each face darkens (scaled by the layer's contrast, before the mist lifts it toward the haze), the sun
catches the top, and the crest rim gets a soft glow under its 2 px lip. Baked per pixel; nothing per frame.

Legibility, with no plate: the state's luminance band (skyBand.ts, the one the sky is shaped into) now also shapes the
layers, as a shift of linear light in the bake. Day and dusk add the zenith colour so the darkest ridge pixel is on the
text floor; night scales to the ceiling. The face keeps its whole luminance gradient. Rows of full-opacity label over a ridge
measure 2.4-2.6 before and 6.7-7.1 after at day and dusk (360 px, real label colour against the real pixels under it).

Tests: 'foot is hazier' becomes two tests (the foot is clearly darker; the valley mist still pulls it toward the haze),
plus the band tests and ridgeSkyFor carrying the state band.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 17:49:46 +00:00
Void
a3b09efb00 Unread room icons rest at 0.6, the dot and label weight carry unread
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m30s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 17:39:58 +00:00
Void
ec48dbf2ed Navigator: no label plate (Meta); icon weights and the solid unread dot stay
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m14s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 17:23:13 +00:00
Void
d226ca45fb Media row: a joined file-zone room (by type or fileZoneRooms) is the row; alias or carried id only finds an unjoined one
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 17:12:57 +00:00
Void
1195b0bffc Navigator ink: chevrons 0.9, room icons 0.26, solid unread dot, label plate over the scene
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 17:12:06 +00:00
Void
c9d16f6259 Navigator: a Media row after Desk in every Mind foldout, from the #<mind>-files alias or a carried room id
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m35s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 17:00:29 +00:00
Void
d803cd1cf4 Navigator: quieter room icons, Join as a text action, calmer unread badge
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m55s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 16:50:32 +00:00
Void
a90223437e Navigator: pin each Mind's Desk and media pages at the top of its foldout
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 16:43:19 +00:00
Void
568d6fd4ab Navigator: one gutter column for chevron, room icon and avatar; one constant step per nesting level
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m37s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 16:12:02 +00:00
Void
90250ca076 Default homeserver is chat.gamecult.org: gamecult.org serves no .well-known/matrix/client, so discovery 404s
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m10s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 15:42:15 +00:00
Void
7c97b79956 Classifier outputs only the shared pose set
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m30s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 12:18:31 +00:00
1be9e76012 Bubble pose follows message sentiment when the event carries no pose label
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 12:09:46 +00:00
f8115609b2 Register entry: https only, http only for a local host (#87)
All checks were successful
Rat dev preview / Build dev preview (push) Successful in 3m45s
Build pull request / Build pull request (pull_request) Successful in 3m29s
2026-11-11 01:31:35 +00:00
450a7e91ff auth: Register entry beside Sign in, behind a config switch (off) (#68)
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-11 01:30:40 +00:00
94c976632e Default homeserver is gamecult.org (#86)
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-11 01:30:16 +00:00
b6da92a081 Albums slice 1: read-only album view for the file zone (#70)
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-11 00:25:37 +00:00
7045532187 Poses nest into the chat bubble corner (desktop and phone) (#72)
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 23:26:53 +00:00
ac7a958f5c Enforce the one join path in lint; a drive that asserts nothing fails (#64)
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 23:16:59 +00:00
Nibu
05948689b4 Scene: a throwing ray-march createScene goes to onCompileFail
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m11s
create() called the ray-march createScene after the try, so a throw while
building it escaped onCompileFail and the CSS ground was never kept. The call
now sits inside the try with the other styles.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 22:00:45 +00:00
3def499b0f desk: served row order, one open count (#84)
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 21:13:24 +00:00
8e0e3b8986 desk: read the gamecult.fork.* contract as served (#83)
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 21:08:12 +00:00
c286c4adc4 Bound the reply preview on phone width (#82)
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 20:33:49 +00:00
1fe3e2c92f Merge pull request 'scene: ridge heightfields, slope shading, endless world-x drift' (#81) from nibu/ridge-heightfield into dev
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 19:05:27 +00:00
Nibu
d172c4eda3 scene: ridge chunk jobs own their scratch canvas; tests for the endless drift and the ridged core
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 4m6s
Soul pass fixes. The shared scratch canvas was resized when a job was created
but read in a deferred task, so chunks of layers with a different blur pad got
a faded right edge. Each job now makes its own scratch when it first runs and
drops it when done. A chunk is baked, put and scatter-filled in column bands,
the blur is one draw; allocation is a task of its own. rotate no longer needs a
forward reference (startDrift takes the finish callback).

Tests: the fake animation can finish, so the rotation is tested at scene level
(world columns per chunk, slot repositioning, restart, recycled chunk id, one
chunk of drift distance, per-job scratch width at the moment of each blur).
The ridged core has direct tests for the fold, the warp, the previous-octave
weighting, the lacunarity and contrast by distance. README sun statement
matches sunDirection.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 18:56:52 +00:00
Nibu
9391e4753f scene: ridge heightfields with slope shading and endless world-x drift
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Each ridge layer is a function of world-x (ridged multifractal value noise,
domain-warped, one function and a parameter row per layer) instead of a
periodic strip. World-x is baked in 1.2-viewport chunks on demand: the first
view bakes one chunk per layer, the rest are baked in ~6 ms tasks, and the
compositor slides a track that is recycled each chunk. A slow yaw/pitch sway
rides on top. ridgeBake.ts shades each column from the crest slope against
the sun with a lit rim, a light-to-haze face gradient and erosion streaks,
reusing the existing aerial perspective as the depth treatment.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 18:31:56 +00:00
313d070dd4 Merge pull request 'desk: read-only Mind desk, slice 1' (#77) from void/desk-slice-1 into dev
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 18:29:38 +00:00
Void
0f82576d9f desk: booth portrait is a plain image; options_hash recomputed against the CultLib vectors
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 4m9s
PoseAvatar renders a span, not a button, when it has no onClick. The desk recomputes each card's options_hash (RFC 8785 after NFC, SHA-256; 15 CultLib vectors) and withdraws a card that differs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 18:26:03 +00:00
Void
8dea8717ea desk: read-only Mind desk slice 1 (typed projections, buildDesk, deskMood, DeskView, navigator entry, demo forks)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 18:26:03 +00:00
Void
0351f1f6e8 Skip auth-metadata validation when the homeserver returned none
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m30s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 18:26:01 +00:00
Void
de6f1849ea Phone: 44 px hit areas for sender names, room topic and sign-in links, no layout shift
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 18:26:01 +00:00
Void
06d530d061 Phone: light ink for the training notice over the dark ridge (day, dusk)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 18:26:01 +00:00
Void
5bb78b21cf preview demo: drop a stored login for a real homeserver before the app reads it
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m53s
Every preview shares the origin minds.gamecult.org and so one localStorage. A login another
preview left (cinny_hs_base_url of a real homeserver) made the demo connect to that server, which
the guard refuses, so SpecVersions showed 'Unable to connect to the homeserver'. installDemo now
drops any stored session whose base is not the demo origin, and the service worker is registered
after that so it is never handed the dropped session. Replaces the foreign-session banner text.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 18:22:43 +00:00
66c4c6373b Merge pull request 'scene: skyLabelInk moves out of sceneShell.css.ts (dev did not build)' (#76) from void/scene-css-function-export into dev
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 18:02:26 +00:00
Void
14ea0dbab0 scene: skyLabelInk leaves sceneShell.css.ts (vanilla-extract refuses a function export; vite build failed on dev)
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 4m4s
#74 exported a function from a .css.ts file. vitest's plugin tolerates it, vite build's compile does not
("Invalid exports"), so dev did not build. The helper and its custom-property name move to skyLabelInk.ts;
a test compiles the three .css.ts files that use it the build's way and fails on the old arrangement.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 18:00:41 +00:00