Rituals: house-style views over ritual events, with user lenses #177
Labels
No labels
build-dist
priority
P1
priority
P2
priority
P3
priority
P4
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Toilville/toilville-design#177
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Revised 2026-10-04. The first version of this issue asked for one design per screen. The direction has changed: you design how each ritual event and entity looks in the house style, the API serves those designs as data, and people can swap in their own version (a "lens") for the things they look at most, like wishes and parlays.
How it fits together
available_commandsblock_specs, one per type and variantIn practice this means:
StreamEventcontract (rituals-api-spec PR #6) sendsblock_start/block_delta/block_endplus status, tier, rubric-gate and error events. The run issue is about how those look, not a new contract.The work, in order
Wishes are the pilot because they have the most event plumbing already. Parlays come next, then runs.
Views (per event/entity type)
StreamEventtype looksShared building blocks the views use
Customisation
Decided (ville, 2026-10-05; closed 2026-10-13. Where this differs from #189, #189's final decision governs.)
Block types.
code,diffandprogressare new block types.confirmis a composition of existing blocks, and it must keep CEREMONY intent and critical importance where they apply, so a renderer sees a confirmation and not just a section, a toggle and actions.Framework: Grammar / Voice / Personality.
What every view spec should include
Block composition; the fields it binds to (from the event schema); empty, loading, error and locked states; a visible way out of every waiting state; a compact layout; the CLI rendering; and token names only, no raw values.
Engineering track (not for you, just linked)
Toilville/rituals-api-spec#15 · Toilville/ritual-engine#832 · Toilville/ritual-engine#834 · Toilville/ritual-engine#835 · Toilville/ritual-engine#836 · toilville/toilville_rituals#496 · Toilville/forge-api#8
Related: #93 (design canon scope). Audit page: https://claude.ai/artifact/C3ANoqoEbXSR1NaywjMfx9
Rituals: design the interaction pattern library the Forge will serve as ForgeBlocksto Rituals: house-style views over ritual events, with user lensesReframed today. Instead of one design per screen, you'll design the house-style view for each ritual event/entity type (wishes first, then parlays, then runs), which the API serves and users can fork into a lens. #180, #181, #183 and #185 have new titles and bodies; #189 (lens guardrails) is new. The other pattern issues (#178, #179, #182, #184, #186, #187, #188) are unchanged and now act as shared building blocks for the views.
Hey @ville 👋 Following up on the reframe above. Before you get into the individual wish and parlay views, I'd love your thinking on the framework underneath them. Once views come from the API and people can fork them into lenses, the UDG stops being a set of tokens we apply by hand. It becomes the rules for what a view is allowed to do. I want those rules to leave room for personality, heroes and new modalities without giving up accessibility.
What we already have to build on
MEDIA_HERO,CEREMONY,ACTION_PRIMARY,STATUS_INDICATOR…) and an importance level (critical, high, normal, low). Renderers barely use either today.compactdensity flag; per-mode accents (Observatory → Federation); a parameterised ambient shader layer in Flutter.A starting idea to push back on: three layers of expression
CEREMONYfeels compared with aSTATUS_INDICATOR. This is what makes something read as Toilville on every surface.If the dials are named and bounded, we get "just enough personality". A lens can feel very different without anyone writing raw colours or hiding a consent gate.
Heroes
I'd like heroes to be a real slot in the shapes, not a one-off.
MEDIA_HEROexists as an intent, but nothing defines what a hero is for. Some uses: a wish's "why", a ritual's identity at the top of a run, a parlay's decision at stake, a mode's atmosphere. Questions:Modalities
Every view should degrade well across visual, compact, keyboard-only, screen reader, voice (the Swift side already has voice and spatial renderers registered but unused) and the plain-text CLI. Using semantic intent and importance as the contract, with visuals as one way to render it, seems like the lever. A
CEREMONYshould feel equally deliberate as a sheet, a spoken confirmation or a terminal prompt.What I'm hoping you'll weigh in on
None of this blocks the wish views. A rough sketch or a few notes here or on #189 would be plenty to steer the engineering.
Framework: agreed on Grammar / Voice / Personality.
Personality controls (initial set):
Modes: each mode is a designed Personality preset (accent, density, corners, motion, atmosphere), not an accent colour only. Do not infer a mode's personality from its current accent. A lens adjusts the preset within Grammar. Two resets: to the mode defaults, and to the house style.
Hero: an optional semantic slot, used only where a view has something that deserves primary emphasis. It can be typographic, visual, ambient or data-driven. It is never the only place for important information. Decoration collapses in compact, high-contrast and reduced-motion renderings. CLI, voice and screen reader keep the meaning. Which of the six shapes get a hero slot is open until I review the shapes.
Sealed (#189): the proposed baseline stands (consent gates, safety ceremonies and overrides, tier locks, lineage proof, destructive-action confirmations). It is extensible. If the Wish, Parlay or Run work shows another element a lens must not hide or weaken, add it.
Modalities: semantic equivalence, not visual equivalence. Every renderer keeps meaning, importance, action hierarchy and sealed requirements. A CEREMONY stays deliberate and consequential as a spoken prompt or a terminal prompt.
Block types:
code,diffandprogressare new block types.confirmis a composition of existing blocks. It must keep CEREMONY intent and critical importance where they apply, so a renderer sees a confirmation and not only a section, a toggle and actions.The framework decisions are complete. Closing this umbrella.
code,diffandprogressare new;confirmis a composition), and the hero principle.@peterswimm please update the "Decided" section to match.
Updated the "Decided" section to match your closing comment: modes are access states that own Accent and the Atmosphere baseline, the lens Personality is Density, Corners, Motion and Atmosphere (lower only), the two resets are Reset personality and Reset view, and #189 governs where the two differ. Closing as you said. The engineering follow-up is toilville/toilville_rituals#542.