Rituals: lens guardrails (what users can and can't change about a view) #189
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#189
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?
Part of #177.
What it's for: people can replace the house-style view of a wish, parlay or run with their own version, called a lens. Lenses are stored per person (
actor:<id>,userprovenance) and could later be shared through the federation. This issue sets the limits.Questions for you
Acceptance criteria
@ville your framework reply on #177 answers part of this issue. I've ticked the sealed-list criterion.
Settled:
Still open here:
@ville, here's a proposal for the parts of this issue that are still open, so you have something concrete to mark up. Every step below is an existing UDG token, so a control moves along a scale you've already designed and never invents a value. Change anything.
1. Limits for each control
accentObservatory…accentFederation)accentConsent,accentWarning,accentError,accentSuccessoraccentTrust. Adding an accent to the palette means a new token plus contrast tests in both themes, as today.compactflag, moving one step down the space scale (space4→space3). spacious moves one step up (space4→space5,space6→space8).labelSm(12px) for any text orbodySm(14px) for body text, belowtouchTargetMin(44px) for anything tappable, or belowspace1between interactive items. Text size is never a density control.radiusSm(4px). soft moves one step up (radiusSm→radiusMd,radiusMd→radiusLg).radiusLgon a surface.radiusFullstays reserved for pills, chips and avatars.instant. expressive usesemphasizedDecel/emphasizedAccelfor entering and leaving, and turns on the ambient animation phases.deliberate(500ms). Speed a ceremony up belowdeliberateother than all the way to zero. Override OS reduced motion, which always wins.Engineering note on atmosphere: the ambient layer (
AmbientLayerState) has no strength setting today. It's driven only by state, mode and tier. The subtle step needs a small addition there, and I'll file it once you're happy with the steps.2. Mode presets for you to fill in
You said not to infer a mode's personality from its accent, so the only column filled in is the accent each mode already uses. Every other cell is yours.
accentObservatoryaccentWorkshopaccentPilgrimageaccentSanctumaccentFederation3. Editing a lens
Proposal: a Customise this view mode inside the view itself rather than a separate editor, so people change the thing they're looking at.
One question for you: do the control settings belong to the person (one personality across every view in a mode), while block arrangement belongs to each view type (wish row, wish detail and so on)? That's my suggestion. The alternative is everything per view, which is more flexible and much harder to keep coherent.
4. The "you're on a lens" indicator
Proposal: a small
Lens: <name>chip in the view's header, usinglabelSm. Tapping it opens Customise and the two resets.lens: <name>.--jsonleaves that line out, but the payload already carriesprovenance.What would close this issue
Revision to my #177 direction: the ownership model for modes and lenses.
A mode is a capability, access and trust state. It is not a Personality preset. A change in AI or network access does not change Density, Corner softness or general Motion.
Who owns what:
Accent
Atmosphere
Resets (these replace "Reset to mode defaults")
Unchanged:
Lens: <name>chip in the view header, only when a personal lens is active. It never shows for the house style or a normal mode state. It opens Customise and the resets.lens: <name>.--jsonrelies onprovenance.Open: the exact limits for Density, Corners, Motion and Atmosphere, and the Atmosphere baseline for each mode. The mode preset table in the proposal is withdrawn.
@peterswimm
Limits for the Personality controls and the Atmosphere baselines. This closes "Token-override limits".
Density (lens): compact · default · spacious = space3 12 · space4 16 · space5 20.
Text never gets smaller. The floors in the proposal stand: 12 px label text, 14 px body text, 44 px targets, and at least space1 between interactive items.
Corners (lens): sharp · default · soft.
Motion (lens): still · default · expressive.
Atmosphere: three semantic levels, plain · subtle · ambient.
Engineering follow-up: radiusNone, a radius token at 20, the new easing token, and a baseline per mode in every view (today atmosphere shows only on the splash and mode-selection screens).
@peterswimm
Final decisions for #189. This closes "Token-override limits" and "Lens editing and reset flow, and the indicator". Where it differs from the earlier proposal or from #177, this comment governs.
Ownership
Accent
Density
Corners
Motion
Atmosphere
Editing, resets, indicator
Lens: <name>chip in the view header, only when a personal lens is active. It opens Customise and the resets. The CLI printslens: <name>.--jsonrelies onprovenance.Superseded: the mode preset table; the Accent control; "ambient is today's full layer"; "falls to subtle under reduced motion"; "expressive turns on the ambient animation phases"; emphasizedDecel and emphasizedAccel for expressive; "a sealed block shows a lock"; "Reset to mode defaults"; "one personality across every view in a mode"; the earlier corner rules; and the earlier note that "text never gets smaller".
Implementation/follow-up work does not block this design decision: save/discard and naming flow, narrow-width panel layout, CLI/voice editing, required token additions, applying mode baselines in views, and the final ambient visual treatment.
@peterswimm
Thanks, this is everything. I've ticked both remaining criteria against your final comment. The follow-up work you listed is filed: toilville/toilville_rituals#542 covers radiusNone, the 20 radius token (the name is yours to pick in the DTCG), the expressive easing pair, the Density rhythm and the per-mode Atmosphere baselines. The lens editor (Customise panel, resets, chip) stays with toilville/toilville_rituals#496, which now matches the ownership model. Closing.