Skip to content

[41-sheets] G5 G3a G12 G20: professional drawers, outside-press menu, notes walk, no chrome over menus - #359

Open
AlexZ005 wants to merge 12 commits into
feat/41from
feat/41-sheets
Open

AlexZ005 wants to merge 12 commits into
feat/41from
feat/41-sheets

Conversation

@AlexZ005

Copy link
Copy Markdown
Collaborator

Roadmap 41 lane 41-sheets — G5, G3a, G12, G20 (professional drawers). Base: feat/40-int (+ merged feat/41-modals' z-scale).

G5 — every phone drawer drags like a phone sheet (fixed once in $lib/ui/sheetDrag.js)

Nested-scroll hand-off modelled on UISheetPresentationController / BottomSheetBehavior: the list scrolls; at its top a downward drag moves the sheet; a gesture that began as a scroll stays a scroll (no accidental close); pulling back up hands back to the list; release velocity from the last 100 ms, projected 200 ms (a hard flick closes from any height); detent / min-max snap points; iOS rubber band; sideways strips, sliders, canvases, node graphs keep their touches; no click after a drag. Wired through ui/Sheet, ui/SheetGrip and PhoneShell's framed sheets + dock — Objects, Explorer, Notes, Add, Inspector, Configure Scene, main menu, notifications, profile, More, Chat, AI, toolboxes, the note page.

G3a — an outside press closes the burger menu (desktop + phone)

Another control works in the same press; a press on the 3D view only dismisses.

G12 — notes

On a phone a note opens as a page of the Notes sheet (the drawer stays mounted, one shared height + grab bar). ‹ n/N › walk all notes in pin order from any entry (drawer, a pin in the scene, …); closing returns to where it was opened from.

G20 — nothing floats over an open menu

The selection strip hides over menus (main/profile menu, notifications, Connection, More, action sheets, character studio, dialogs) and rides above the tool sheets (now measured for notes, the note page and toolbox sheets too). On the 41-modals scale the bar + strip rise over the Add list (--z-portal) and the strip sits above a full sheet's scrim.

Proof (OPPO N6 folded 390×896 / unfolded 770×850 touch, desktop 1440×900; real CDP touches)

suite this branch feat/40-int
sheet-handoff (new) 97/0 63/34
drawer-layering (new, incl. elementFromPoint audit) 65/0 48/17
notes-phone-drillin (new, drawer + open-from-scene) 40/0 red (drawer closes, no walk)
phone-sheets · mobile-map · menu-mobile-scroll · dock-chrome-40 104/0 · 84/0 · 51/0 · 47/0
notes-v2 H11-D marker checks are timing flakes on both branches (instrumented rerun: all green on both)

Unit sheetSnap 14/14 · svelte-check 300/40 (= baseline) · check:tokens + check:zindex clean. Owed on device: the feel of the thresholds. Decisions: QUESTIONS-41-sheets.md; touch points for 41-int in STATUS-41-sheets.md.

🤖 Generated with Claude Code

AlexZ005 and others added 12 commits October 11, 2026 02:44
…ogo, What's new tops every button

- src/styles/ui.css: ONE ordered scale, lowest first: --z-canvas < --z-canvas-overlay < --z-chrome
  (FABs, Controls pill, side drawers) < --z-selection (phone strip) < --z-dock < --z-sheet <
  --z-window (40..44) < --z-phone-bar < --z-hud < --z-side-panel < --z-chrome-top (logo, undo/redo,
  Connect, notes/notifications/peers/profile) < --z-popover (main menu, profile, Add, search) <
  --z-toast-low < --z-modal < --z-onboarding (What's new, Welcome, tours) < --z-portal (selects,
  context menus, drag ghosts) < --z-toast. Old names stay as aliases (--z-drawer/-bottom/-viewport/
  -menu) so a branch written before the scale still resolves.
- every page-level hard-coded z-index moved onto it (80 sites: Users 996-999, Connect/PhoneShell
  300, Add/ObjectSearch 999/1000, ThemedSelect 9999, drag chips 1400, Sheet 60/61/42/43,
  PhoneShell 36-44, HUD 38/46, FABs z-30, Inspector z-50, ...); in-component stacking stays < 30.
- G3b: the logo is --z-chrome-top, so Settings and every app modal cover it (was --z-menu 1300 over
  --z-modal 1100); What's new is --z-onboarding at every width (no focusStack, no wn-sheet hack).
- G20 (scale half): the phone selection strip sits on --z-selection, under docks and sheets, and no
  longer rises with the bar over an open main/profile/Add menu.
- scripts/check-zindex.cjs + `npm run check:zindex` + a CI step: a page-level literal (>= 30)
  fails; `z-ok: <reason>` marks the numbers code reads back (windowFocus, docking).
- mobile-ui-fixes: the wn-sheet checks become "the changelog outranks the logo at every width".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e one sheet gesture

- sheetDrag `surfaces`: a touch on a sheet's BODY is watched (window capture, touch events);
  one owner per gesture on its first move past the slop: the list scrolls, at its top a
  downward drag moves the sheet, a body with nothing to scroll is the sheet both ways
- a gesture that began as a scroll stays a scroll (no accidental close); pulled down then
  back up past the start hands back to the list (iOS); a dragged touch never clicks its row
- sheetSnap: rubberBand (0.55 resistance past the max / a non-dismissible min),
  releaseVelocity (last 100 ms only), handoffMode, PROJECTION_MS: a hard flick closes
  from any height, a gentle one steps a detent / to the min
- touch-action without pan-y, canvases, node graphs, range inputs, [data-sheet-nodrag]
  and the grab bar itself keep their own touches
- wired once: ui/Sheet, ui/SheetGrip (auto: its fixed ancestor, only while the bar is
  shown), PhoneShell's framed sheets + the dock; every phone drawer inherits it
- the strip's measure list gains #notes-drawer and toolbox sheets (G20)
- suite sheet-handoff (every phone drawer, real CDP touches) + unit sheetSnap

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…loats over an open menu

- Sidebar: light dismiss — a pointerdown outside the menu (capture on window) closes it on
  desktop and phone; another control still works in the same press, a press on the 3D view
  only dismisses (no select / deselect / orbit); logo, tour card, export popup excluded
- phone.css: the selection strip hides while a MENU is open (main menu, profile menu,
  notification centre, Connection, More, an action sheet, the character studio, any dialog)
  — 40 F1 had raised it OVER the main and profile menus; tool sheets keep #32 b (above
  their top edge)
- suite drawer-layering: strip states per menu / tool sheet + an elementFromPoint audit of
  every open drawer with the sim transport, FPS meter and note markers on; G3a on desktop,
  unfolded and folded

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- AnnotationPopover: on the phone the card no longer closes the Notes drawer; it covers it
  at the same height (shared notesSheetH, one grab bar), so closing it (x or a swipe down)
  returns to the list as it was (scroll, collapsed groups)
- previous / next in the note's label group with n/N (annotationsHandler.noteGroupWalk,
  the drawer's own wrapping walk), on the phone and the desktop card
- phoneShell.notesSheetH: the notes sheet height, still under `notesSheetH`
- suite notes-phone-drillin

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…g notes

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…en-from-scene e2e

- annotationsHandler.noteWalk (global pin order, wrapping) replaces the per-group walk in the
  card: drawer, a pin tapped in the scene, an object's menu — previous / next go through every
  note with n/N of all; closing returns to where the card was opened from (the list, or the
  scene with no drawer opened)
- notes-phone-drillin: the all-notes walk + wrap both ways, and the open-from-scene path
  (phone: tap a pin marker, desktop: click one) with close returning to the scene

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
phone.css: took 41-modals' 40 F1 block (the strip no longer rises over the menus; --z-selection
under every sheet) — 41-sheets' G20 hide-over-menus block stays as it was.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…setAnnotation stores it)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…for the all-notes walk)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… from every entry

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…desktop pages; press inside on a menu label

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…he Add list (portal); the strip rides above a full sheet's scrim

phone-sheets went red after the merge: menus moved to --z-portal while the bar's Add-list
raise stayed at --z-popover + 2 (Play covered), and the strip at --z-selection sat under the
Add list's backdrop and under a full-height framed sheet's scrim (#32 b: it must stay usable
over the tool sheets; over menus it is hidden by 41 G20).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant