Commit graph Ratatoskr/src
Author SHA1 Message Date
64edacac4d Merge pull request 'scene: Dusk floor at the link bound with Day's pale-blue lift (held for Meta's preview)' (#56) from nibu/dusk-sky-floor into dev
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
Build pull request / Build pull request (pull_request) Successful in 4m29s
Docker check / docker-build (pull_request) Failing after 17s
NPM Lockfile Changes / lockfile_changes (pull_request) Failing after 1s
2026-11-10 17:03:35 +00:00
Void
3c868254e5 Category buttons expose aria-expanded
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m17s
RoomNavCategoryButton set open/closed only through its chevron. It now sets
aria-expanded from `closed` (absent when the section does not toggle); tested by
rendering to static markup.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:47:41 +00:00
Void
3c92696507 Room list: groups of unjoined project rooms wait behind one Browse entry
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m37s
A steward group with no joined or invited room collapses into "Browse N more rooms"
per tier, closed on every screen and remembered per device; a group the user is in
anything of, loose estate rooms, and joined rooms stay up front. splitGroups is the
pure rule, tested.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:15:47 +00:00
Void
9641cfb4f4 Merge nemesis/demo 9b9b495d (live) into dev
All checks were successful
Rat dev preview / Build dev preview (push) Successful in 3m49s
2026-11-10 14:11:11 +00:00
Eureka Self
9b9b495def nemesis: drop the pose status strip; the portraits already show each Mind's mood (Meta: redundant, wastes vertical space)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 14:09:58 +00:00
854b151d80 Merge pull request 'scene: terrain fine grain domain-warped so it stops reading as hatching' (#66) from nibu/terrain-hatching into dev
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 14:09:23 +00:00
Void
48d6d171da Sky-only tier label follows the overlay gate; tests pin the door's debug forwarding
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-10 14:09:00 +00:00
Void
814fa4b3ab Diagnostic overlays (?probe=1, ?tierlabel=1) only where allowed; footer band test knows the Safari prefix
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
debugOverlaysAllowed: a dev build, a VITE_PREVIEW_DEMO build, or
backgroundScene.debugOverlays in the client config. A production visitor adding the
query string gets neither the frame readout nor the tier label. footerBand.test pins
-webkit-backdrop-filter (live commit 0fe41efb) and that it blurs as the standard one.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:05:42 +00:00
Eureka Self
d2d6fbcc00 nemesis: lookbehind regexes degrade where the engine lacks lookbehind (Safari < 16.4 blanked at load); markdown rules share regex.ts patterns
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 14:04:34 +00:00
Void
556254f46b Merge nemesis/demo 0fe41efb into PR #65 2026-11-10 14:04:17 +00:00
Void
c657d68615 PR #65 steward ruling: user themes win over auto; focus ring; logo on light themes
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
skyThemeId('auto') is undefined again as on dev. sceneThemeId follows the resolved
sky for auto only while a scene is on and the person chose no theme (signed-out
pages pass none); useResolvedSkyState changes as the clock crosses so theme
classes re-render. Scene buttons and chips keep a focus-visible outline. The
white mark takes the dark filter through a LogoMark class on every themed <img>
under any prism-light theme (favicon and notification icons are files and keep
the white mark). Background picker is hidden without a backgroundScene config.
Ridge comment states what hasNoArea covers.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:03:21 +00:00
Nibu
384cd17dac scene: terrain fine grain domain-warped so its plane waves stop reading as hatching
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m30s
The fine albedo octave is three plane waves per projection (about 5 m periods): a regular lattice, resolved
(not aliased) at near-ground pixel size, so it reads as diagonal hatching. Switching the octave off in a SwiftShader
render removes it; coarse grain off does not. The octave's coordinates are now pushed by a slower sine each, in
terrainAlbedo.wavesWarped and the shader's warpq.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 14:00:44 +00:00
Void
9d3343bb31 nemesis/demo: tests follow the new numbers; Ridge retries a zero-size start
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 4m12s
skyTheme: auto resolves to the clock's theme; the plate pins now assert the
chromeless shell (only composer, call bar, call view and plain messages are
plates). terrainWorld: ceilings for the 512/768 grids; still grid 256 -> 320 so
its quads stay within two height texels at the nearest ground (the test is
unchanged). skyPlate.css: drop the void-import placeholders. Ridge: a scene
started with no area no longer throws on drawImage or returns null; it builds on
the first resize that gives it one.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 13:53:22 +00:00
Eureka Self
0fe41efb9b nemesis: Persona poses on by default; Safari 14 polyfills (Array.at/findLast, Object.hasOwn, structuredClone) and -webkit-backdrop-filter
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 13:51:26 +00:00
Eureka Self
c4689299ca nemesis: tab icon and notification icon are the night-sky tile (unread and highlight add a dot), not the white UI mark
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 13:46:51 +00:00
Eureka Self
fcabaee59e nemesis: chromeless buttons, chips and room list; plates only on the composer and plain messages
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 13:22:41 +00:00
Eureka Self
5712068902 nemesis: Meta's logo, chromeless plates and card, sky-led theme, denser terrain, scene style picker
- Logo: Meta's white matte (2026-11-09) as the UI mark; icons are the mark on a night-sky tile. Dark ink on Noonday Sky.
- Plates (title bars, lists, composer) and the sign-in card: blur with a light sky tint (PLATE_TINT 0.45), never opaque.
- auto sky picks the theme from the resolved sky: day light mode, night dark mode, dusk the dark-ink crossover.
- Terrain grid 768/2048 full, 512/1024 low, 256/1024 still.
- Temporary Background group (Terrain, Ridges) in the sky menu, also on the sign-in card.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 13:18:59 +00:00
320aeecc2c auth: footerBand test pins blur to 12px and the footer rule's exact property set
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 2m53s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 04:09:31 +00:00
b5e93510e8 auth: footerBand test: identOption for compile; kill blur(0), base-rule border, hard-stop survivors
Some checks failed
Build pull request / Build pull request (pull_request) Successful in 2m48s
NPM Lockfile Changes / lockfile_changes (pull_request) Failing after 1s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 03:58:04 +00:00
271729a5c0 auth: test the emitted footer rule; wrap its comment; correct the terrain luminance figure
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
NPM Lockfile Changes / lockfile_changes (pull_request) Has been cancelled
footerBand.test.ts reads the CSS vanilla-extract emits for styles.css.ts (so
@vanilla-extract/integration becomes a devDependency): one footer rule, the plate fill before
the color-mix fill, a mask faded on both axes, no border or radius. skyPlate.ts no longer
claims the darkest terrain is 0.0045 (that was Night's whole frame); it states the footer
region's minima per state and the measured link contrast.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 03:48:36 +00:00
2e6d4d042a auth: footer band review fixes: one block, no pill or border, color-mix fallback, sRGB test
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 2m45s
The first footer block had spliced into the sign-in card's rule (a Y-only mask duplicate that
overrode the side fade, a pill radius and border on the footer); the footer is now one rule.
The test mixes in encoded sRGB as Chrome does.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 03:31:52 +00:00
56bc40abe6 auth: fade the footer band at its sides too
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-10 03:21:47 +00:00
eb6efeee91 auth: footer tint 0.82; 0.75 measured 4.49 at Dusk on the drawn pixels
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 03:20:06 +00:00
ea238cf77d auth: a blurred, tinted, soft-edged band behind the sign-in footer line
The footer links sat on dark terrain in the sky's dark ink (contrast 1.0 to 2.9 at Dusk and
Day). The footer now carries the plate's ink over a backdrop-blur band tinted with the plate's
fill (FOOTER_TINT), faded at its edges; skyTheme.test.ts checks the ink over the darkest and
lightest scene behind it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 03:18:49 +00:00
Nibu
91e93e6887 scene: Dusk floor at the link bound with Day's pale-blue lift, so the dark link clears AA
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 2m54s
Dusk's floor moves from 0.317 to 0.4744 (the dark link's bound 0.4554 plus the 0.019
margin Day keeps over its text bound), and its lift from rose #eba0b9 (luma 0.463,
below the new floor) to Day's #e2f4ff. The ridge dusk stops are shaped into the same
band, since the unshaped twilight dipped to 0.336. skyBackdrop('dusk').darkest becomes
0.460352; Dusk text 4.60 -> 6.59, link 3.17 -> 4.54.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 02:53:58 +00:00
de504f8286 scene: say what the sweep's mid-build assertion means when it fails
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m9s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 02:24:13 +00:00
6a93664813 scene: sweep the mid-build test over microtask offsets 0..20
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m8s
The change is no longer pinned to 10-12 microtasks; the test requires at
least one offset to land on a build that is found stale and dropped, so a
shift in the awaits inside create/skyKey cannot make it vacuous.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 02:07:11 +00:00
098e45f122 scene: test a sky change landing 10-12 microtasks into a build
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 2m57s
The stale build must be disposed and must not become live: removing the
stale-build scene?.dispose() or the generation check now fails the test.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 01:56:34 +00:00
Void
61f434a32d scene: two quick sky changes build the last sky; the Night drift test is exact
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 2m44s
A rebuild read the sky choice before awaiting its key and acted on it after, so Day then Dusk in quick
succession left the Day scene live (the old test only counted disposals and passed with the Dusk scene never
built). A rebuild now stands down if the choice moved while it awaited; that change has its own rebuild.
The test asserts the last sky built is the last one chosen, is the live scene (a login reaches it), and that
every other scene was disposed.

The NIGHT_SKY_LIGHTEST drift test compared with a 1e-6 tolerance, so 0.081641 passed; it is now exact equality.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 01:34:07 +00:00
Void
2c271c6ded sky: Midnight Sky's link is fitted to clear AA on the lightest Night sky
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m16s
The dark theme's link was #609385 (luminance 0.2505), 2.28:1 on the lightest Night sky (0.081642). It is now
brightened in its own hue until its luminance is at least AA * (0.081642 + 0.05) - 0.05 = 0.5424: #8ad1bd (0.5468,
hue 163 degrees as before), 4.53:1 on the lightest Night sky, 5.43:1 on the darkest, 11.28:1 on the sign-in card
(was 5.68). Only the link changes in baked.ts; the user colours are unchanged. NIGHT_SKY_LIGHTEST is the Night backdrop
constant, and a test fails if the two drift. Dusk is untouched.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 01:13:29 +00:00
Void
7bc28f9256 scene: a rebuild is for a different drawn sky; a URL-steered night sky stays within the Night backdrop
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Rebuild key: the sky options the scene is built from (terrainSkyFor / ridgeSkyFor), not the pair of choice and
resolved state, so picking Day while the clock says day, or Auto to the state it resolves to, no longer tears down
and rebuilds the scene. A URL steers only 'auto', so there the options differ and it still rebuilds.

Night: the band ceiling 0.085 let a sky the page URL steers (?sun=, ?sky=) show up to 0.0890, lighter than the
Night constant 0.081705 the text was checked against. The ceiling is now 0.077394, the luma at which one 8-bit
step up reads the baked night's own lightest, and the constant (0.081642) covers the steered case; a test pins it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 01:09:46 +00:00
a6364af8e3 Merge pull request 'trainingNotice: say whose ruling the wording is (comment only)' (#53) from void/training-notice-comment into dev
Some checks failed
Rat dev preview / Build dev preview (push) Has been cancelled
2026-11-10 00:30:26 +00:00
Nibu
d03ec36107 Merge origin/dev into nibu/sky-contrast
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 12m22s
Docker check / docker-build (pull_request) Failing after 10s
Conflicts: skyState.ts (kept #54's constants, re-derived), skyForState.test.ts (kept #54's tests, added #48's independent golden-section cross-check and the 1e-6 tight drift test on the screen reading).
terrainDrawn carries #48's finer search (5e-7 degrees) on the screen reading; the reading is now one 8-bit step each way (smooth), not a rounded value, so it can be searched.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 23:50:28 +00:00
Void
e1ebf7ec91 trainingNotice: cite Meta's 2026-11-09 scope; neither exception is implemented
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 33s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 23:49:09 +00:00
Void
80d3ae1c9b trainingNotice: rewrap comment to the print width
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-09 23:48:16 +00:00
Void
c13e90539f trainingNotice: correct the comment per review
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Both render sites named (registration, and rooms whose notice event has scope train). The rule is
an acknowledgment that Minds read and learn from what is said, not consent to training; the
wording is Meta's to settle. Drops the unsourced ruling date and the claim about existing members.
Comment only.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 23:48:07 +00:00
Nibu
577d795189 scene: auto never picks a theme; URL steers auto; quantised bounds; listener-window fix; DST
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 26s
- skyThemeId('auto') is undefined again (auto must not override a signed-in theme); the resolved state stays readable by getResolvedSkyState and subscribe.
- In auto, ?sun= ?az= ?sky= reach the terrain again, shaped into the band of the clock-resolved state; an explicit state beats the URL.
- The sky-change notice is no longer swallowed by a listener arriving or leaving between the clock crossing and the tick.
- BACKDROPS bound what the 8-bit screen shows with the dither at its worst; shaping floor 0.317, night ceiling 0.085.
- The clock uses standard time, so daylight saving does not move the sun.
- A Terrain GL fake test pins uBand and uLift for each state.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 23:29:02 +00:00
Nibu
eafa3eda79 scene: Day sky bound was 1.2e-6 low; refine to 1e-6 degrees and check both directions
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 44s
Day lightest 0.92805 -> 0.928052 (true terrain peak 0.92805117...). The compass
refinement now halves to 5e-7 degrees; the drift test checks the constant against
the refined computation and an independent golden-section sweep, exact to
[extreme, extreme + 1e-6).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 23:28:55 +00:00
Nibu
4177bdcccb scene: bound the terrain sky over what its frozen camera reaches (0 to 16 degrees), ridge stays whole-range
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-09 23:19:35 +00:00
Nibu
5d3db9e1f2 scene: shape each sky state's drawn sky into a luminance band its text ink clears
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
Day and dusk: floor 0.30 (dark ink needs 0.2983). Night: ceiling 0.0931 for the light ink; the baked night sky is kept.
One shaping function (skyBand.shapeToBand) with a GLSL twin lifts the terrain sky toward a tint (hue kept) or scales it down.
The ridge dusk becomes lavender, rose and orange. 'auto' resolves from the clock (sun.js elevation) to day, dusk or night;
subscribers hear the resolved sky; skyBackdrop('auto') is the resolved state's band. Link ink is not in the band (Void's wiring).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 23:18:08 +00:00
Void
0c6d4476be trainingNotice: say whose ruling the wording is
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
The comment said the wording awaits Meta's legal read. The notice, its wording and the
registration acknowledgement are Meta's ruling of 2026-11-06; the comment now says so.
Comment only.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 23:15:13 +00:00
Nibu
8a05668d84 scene: terrain backdrop range found by refinement, not a grid
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
terrainDrawn finds the sun glow peak and the darkest patch with a compass
search from the best coarse samples; constants regenerated (Day 0.237309-0.92805,
Dusk 0.016727-0.967912). The drift test sweeps its own grid (golden-angle spiral
plus a 0.05 degree patch around the sun).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:41:27 +00:00
Nibu
111fa02994 Merge dev into nibu/sky-bundle 2026-11-09 22:38:24 +00:00
Nibu
0d26b71862 scene: keep the terrain sky and baked tables out of the main chunk
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
skyBackdrop reads constants (the union of the ridge and terrain skies, rounded
outward) instead of computing it, and the door imports skyForState lazily with
the scenes. A test fails when the constants drift from the computed union.
Main entry chunk vs dev: +0.4 KB gzip, down from +51.5 KB.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:37:06 +00:00
Void
76daf7cdca Re-pin the bare-sky ratios on skyBackdrop's union ranges
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
#47 makes skyBackdrop the union of the skies the scenes draw: day 0.238-0.919, dusk
0.017-0.965, night 0.058-0.077. Only night text still clears 4.5:1 on bare sky (5.05);
day falls to 3.71 text / 2.56 link. Everything outside a bubble stays on the plate.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:32:56 +00:00
Void
5862bbdba2 Plate the composer, members drawer, call view and call status bar
They join the shared plate rule under the scene. The composer's own half-strength
blurred fill goes (its text fell below 4.5:1 in dusk and some auto themes); the
plate has the checked ink. skyTheme.test.ts pins which regions are on the plate.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:32:20 +00:00
Void
ce16609c76 Plate every region of bare-sky text under the scene with one rule
skyPlate.css.ts joins the room and page headers, the room list, list pages, the
typing and Following bars, non-bubble messages and the room intro to the sign-in
card's opaque --sky-bubble plate, with the plate's ink and link tokens, at all
widths. The estate title bar's own plate goes: the shared header rule covers it.
skyTheme.test.ts pins the link ratios on bare sky as well (day 5.25, night 2.36).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:32:20 +00:00
Void
3be90875ec Sky control: menu semantics, plates under bare-sky text, pinned colours
The menu is role=menu with menuitemradio items (aria-checked), the button carries
aria-expanded, focus goes to the checked item on open and back to the button on
close. Over the scene the estate title bar and any non-bubble message sit on the
sign-in card's plate (--sky-bubble) instead of bare sky. skyTheme.test.ts pins the
ink colours and WCAG ratios of the picked themes, measured with the ink clamped
into the sky range as skyState.test.ts does; the pass/fail set is unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:32:20 +00:00
Void
c180385476 Sky-state control in the estate title bar; the state picks the theme
One button beside Find a room opens Auto / Day / Dusk / Night (fits a 320 px bar).
Day and Dusk take Noonday Sky's dark ink, Night Midnight Sky's light ink, Auto
keeps the theme the page would have had; signed-out pages follow the state too.
skyTheme.test.ts checks contrast from the baked tokens: day and night ink clear
AA on bare sky, every container carries its text, links clear AA on the surface,
and dusk text on bare sky does not, so it stays on surfaces.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:32:20 +00:00
Nibu
edc6a9a8f1 scene: catch a state change during the first build; skyBackdrop is the union of what the scenes draw
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
index.ts compares the current state with the built one after subscribing and
rebuilds if they differ. skyBackdrop unions the ridge sky and the terrain sky
(skyColour sampled over the sphere, from chooseSky(terrainSkyFor(state))), so
terrain dusk's sun glow and terrain day's darker zenith are inside the range.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 22:31:00 +00:00