registrationEntry accepts an https url, or http when the host is localhost, *.localhost, 127.0.0.1 or ::1. A test pins both sides, including a look-alike host. The two tests that pass config.json as a ClientConfig now cast it, so tsc is clean for them.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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>
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>
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>
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>
Publishing belongs to gamecult-ops scripts/publish-mind-preview.sh (one fixed slug per project).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Erase keeps record id, kind and time only; an unsalted hash confirms a
guessed text. Credential is the OIDC access token Bifrost issues to chat,
claims check open. Receiver store is a CultCache file with backup purge
owed before deploy. Receiver must not reuse CurrentBifrostActor.DisplayName;
no guest exists until Bifrost PR #9.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The proposal owns the schema: feedback_listing, feedback_answer (text-free),
feedback_close_request, feedback_hide. Bifrost holds answer text and does
the erase; delivery is by mouth and the Persona admits the record.
Question key, option labels and askedAt follow the proposal. Client plan
kept: typed interface mirroring those shapes, fixtures first.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Folds Kiko's spec with Heimdall's draft rulings on guests, erase and
hiding. Design only; no code.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
#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>
Replaces the 32 sender clips with AquaSynth 21e83ec's staged render; manifest and neutral
fallback are byte-identical to the old ones. The manifest test now pins every clip by sha256
prefix. Unheard.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sender names over the terrain step to the state's ink: same OKLCH hue and chroma, darker by day and dusk, lighter at night, until 4.5:1 on the lightest measured terrain patch (capped at OKLCH L 0.9 at night). Sidebar labels get a darker dusk ink on phones. An explicit theme still wins. The unread divider keeps only its green line.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Replaces Cinny's stock wording (Invalid Username or Password., Failed to find
homeserver., Failed to connect..., the dead-end registration-disabled text) with
plain messages in one module, authMessages.ts, used by the login form, the auth
layout, the login page and the register page.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Hook code is #36 (b3eb9d01) verbatim plus the switch. Clips and manifest are AquaSynth PR #22 out/, Nibu on proposal 1. Nobody has heard v3.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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>
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>