design: Constellation direction + phase A prototype (The Stage)#64
Merged
Conversation
Formalize the next visual chapter after Living Light: works and people as points of light (dots), rooms as constellations of real presence. The document specifies the concept, three principles (light is presence, one hero effect per surface, darkness as the stage floor), per-surface specs (The Stage, the Sky of rooms, the Theater, Into orbit, one loading vocabulary), the motion grammar, the technical constraints (single-file Bulletin build, OGL over three.js, aura engine as the single color source, e2e stability), and the A/B/C phasing. Ticket 19 tracks the build phases under the design track rules. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add the Listen view's hero effect from the Constellation direction: a stage rail where covers sit on a shallow arc (elevation/tilt/scale derived from distance to rail center, computed via one rAF pass on scroll/resize), an aura-colored lamp cone that travels to the hovered/focused track while the rest of the rail dims, and a holographic glare sweep reserved for tracks the wallet has genuinely unlocked. The selected (or first) track opens the show with the lamp already lit. Honesty rule holds: lamp color is the track's real aura, the glare keys off catalogAccessByTrackId, the chip shows the real access label. CSS + rAF only, no WebGL, no new dependencies. prefers-reduced-motion gets a static state (flat rail, no lamp travel, aura outline on the lit work). The stage uses its own stage-* testids so the e2e-load-bearing track-card selectors stay unique; the catalogue grid below is untouched as the library view. Verified: tsc clean, lint 0 errors, build, fmt:check, 72 unit tests, 10/10 Playwright e2e, plus visual check via seeded dev server screenshots. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
✅ Deploy Preview for muzinga ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Add the Rooms view's hero effect from the Constellation direction: open rooms as dot-spheres in the navy sky. Each sphere has the current track's cover as its core and its real aura as a halo, laid out on a deterministic golden-angle spiral (roomId-hashed jitter so the sky never looks mechanical while staying stable). One light petal orbits per genuinely connected presence (visual cap 10, true count always printed on the label); the halo breathes only when the host's broadcast playerState.playing is true; rooms with no track loaded are embers; playbackMode 'preview' shows an honest amber tag. Joining is entering the halo: the sphere grows and its light floods for 420 ms before onJoinRoom fires (immediate under reduced motion). DOM + CSS only, no OGL: at realistic room counts (tens of points) the dependency and single-file Bulletin bundle weight were not justified; the decision is recorded in the design doc with OGL kept as the escape hatch. On mobile and prefers-reduced-motion the sky is hidden and the existing card grid below remains the complete experience. The e2e room-join flow never touches the rooms list, and the sky uses its own sky-* testids. Verified: tsc clean, lint 0 errors, build, fmt:check, 72 unit tests, 10/10 Playwright e2e, plus live two-page visual checks (host creates a room via the seeded dev server + signaling; viewer screenshots the sky, hover state, and the join flood). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add the four cross-surface micro-moments from the Constellation direction, all keyed off real state (no status-string matching for triggers): - Dot birth (components/DotBirth.tsx): the single loading vocabulary. Scattered particles converge into a lit sphere, three sizes, colored by the ambient aura variables. Wired to the catalog's genuine loading state in ListenView; terminal states (empty registry, failures) stay plain text. - Unlock ritual (PlayerView): when the selected track's real access flips from needed to granted (access-map transition tracked per track id), a ring of aura light travels the cover once (1.3s). Paying an artist is the product's most important moment; it gets the most care. - Reaction petals: the room reaction emojis now rise inside aura-tinted petals (CSS-only change to .room-reaction; markup untouched). - Into orbit (ArtistConsole + ReleasesTab): when a new release id appears in the artist's on-chain catalog while the console is open (structural id diff; the first observation only seeds the known set, so nothing animates on mount), its card plays a one-shot arrival glow. Reduced motion gets static dignity everywhere: particles hidden with a static core, near-instant ritual, fade-only reactions, no arrival motion. No new dependencies, no WebGL. Verified: tsc clean, lint 0 errors, build, fmt:check, 72 unit tests, 10/10 Playwright e2e, plus a mid-flight screenshot of the unlock ritual (ring crossing the cover) on the seeded classic-unlock flow. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
design: Constellation phase C - micro-moments
design: Constellation phase B - The Sky of rooms
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Constellation design track: direction + Phase A prototype (The Stage)
Two commits: the design direction document, then the Phase A prototype.
The direction (
docs/design/dotify-constellation-ux.md)The next visual chapter after Living Light, built on what the code already has
(the aura engine derives a deterministic light per work and paints the field):
works and people as dots (spheres of light), rooms as constellations of
real presence, the catalog as a calm navy sky. Three rules govern every
effect: light is presence (never decoration; every animated pixel maps to real
data), one hero effect per surface, and darkness is the stage floor. Explicit
anti-goal: decorative spinning-galaxy crypto aesthetics. Phasing: A (The Stage,
Listen), B (The Sky of rooms), C (micro-moments: dot-birth loader, unlock
ritual, reaction petals, studio orbit). Ticket
19-constellation-design-track.mdtracks the phases under the design-track rules.
Phase A prototype (this PR's second commit)
ListenViewgains The Stage: a rail where covers sit on a shallow arc(elevation/tilt/scale from distance to rail center, one rAF pass on
scroll/resize), an aura-colored lamp cone that travels to the
hovered/focused track while the rest dims to theater darkness, and a
holographic glare that only sweeps tracks the wallet has genuinely
unlocked. The selected (or first) track opens the show with the lamp lit.
auraForTrack),glare keys off the real
catalogAccessByTrackId, the chip shows the realaccess label.
single-file Bulletin build is unaffected.
prefers-reduced-motiongets a dignified static state: flat rail, no lamptravel, aura outline on the lit work.
stage-*testids; the e2e-load-bearingtrack-cardselectors stay unique on the untouched catalogue grid below (the library
view).
docs/index.htmlintentionally not updated: tokens and palette areunchanged; the GitHub Pages alignment happens when the direction ships
product-wide (noted in ticket 19).
Verification
tsc clean, lint 0 errors (3 pre-existing warnings), build, fmt:check, 72 unit
tests, 10/10 Playwright e2e, plus a visual check on a seeded dev server
(screenshots of the lamp/arc/dimming behavior).
🤖 Generated with Claude Code