Repository navigation
Conversation
…enu taps (F2) - F1: $lib/ui/sheetDrag (the shared drag/flick/keyboard gesture) + sheetSnap.settleSheet (free-height rest rule: snap to min/max, swipe down to the end closes) + ui/SheetGrip (the sticky grab bar). Wired into the shell's framed sheets, ui/Sheet, the Inspector / Configure Scene, the main menu, the profile menu, every phone context menu (Add), the notes sheet, toolboxes, Customize character and the dock (grab bar drawn by PhoneShell; swipe-away minimizes the dock). Heights remembered under each sheet's existing key. - phoneSheetMax / --ps-sheet-max: no sheet rises into the top bar or pushes the selection strip under it; the bar + strip rise over every open sheet so Play is never covered (cover-play-and-handle). The notification centre's desktop click-catcher stands down on the phone. - F2: the profile menu inherited pointer-events:none from the top-right corner chrome on the phone, so Customize character / Profile settings never got the tap. On the phone it is a plain sheet above the bar (no top layer), tappable. - e2e phone-sheets (104, real touch events, F2 counterfactual); mobile-map and mobile-ui-fixes assert the new above-the-bar contract; vitest sheetSnap +4. - svelte-check 300/40 (baseline ratcheted from 300/41). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…n, toolbar strip (40 F3) - $lib/ui/touchHold: touch hold opens an Explorer item's menu (the phone action sheet); the browser's touch contextmenu / native dragstart are swallowed on Explorer items only. File cards: hold-and-lift = menu, hold-then-move = the existing touch pick-up. - the inline rename field's ::selection uses --accent-fill / --on-accent. - docked Explorer toolbar is a ui/ScrollStrip on the phone shell (#explorer-dock-strip). - e2e explorer-phone: 20 PASS / 8 FAIL — remaining failures are TEST sequencing (the folder menu has no "Open" row and Escape does not close the action sheet, so the later sections run with a menu open), see the STATUS handover. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…on, toolbar strip (40 F3) - finishes the wip commit: e2e explorer-phone 28/28 (real CDP touch, dark + light). - an action sheet closes on a tap on its backdrop (a phone has no Escape); the folder menu's rows are Share folder / Properties / ... (no "Open"). - counterfactuals: no folder onhold -> the folder-sheet check reds; touchHold's swallow removed -> a touch contextmenu opens a second menu before the hold (menus 1). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- cause (measured with an instrumented ResizeObserver): ui/ScrollStrip watched every child and never stopped watching a REMOVED one. The docked Explorer's header measures itself inside a resize pass, finds it is narrow and unmounts its storage chip (a strip child) in that pass; a detached node's 0x0 notification cannot be delivered in the same pass, so the browser raised "loop completed with undelivered notifications" and the crash toast showed it (the user's phone had Explorer + Animation docked: feedback-1.31/resizeobserver.jpg). - the strip un-watches a child in its MutationObserver, which runs at the same microtask checkpoint as the removal, before the next gather. Every ScrollStrip inherits it. - e2e resize-observer-loop (14): 350x716 touch, dark + light, Explorer + Animation (Graph) docked, tab switches, a real-touch dock resize; desktop open + resize. Counterfactual: the old ScrollStrip reds 6 checks (1 loop error + the toast, per theme). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ct (40 F3) - section 5 asserted the docked header TRUNCATES the project chip at 520px; at <= 640px the phone shell is up and F3 made that toolbar a sideways strip on purpose (the name was cut to "Unt..." on a phone). The truncation contract moves to 660px (narrow, not phone) unchanged, and 520px asserts the strip: search keeps its width, the name shows whole, a scroll brings the chip fully into view, the page does not overflow. 71/71. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Collaborator
Author
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.
Roadmap 40 rows F1-F5 (phone sheets, profile menu, Explorer on the phone, ResizeObserver loop).
phone-sheets104 (real touch)#avatar-dropdowninheritedpointer-events:nonefrom.top-right-chromephone-sheetsF2 + counterfactual$lib/ui/touchHold)explorer-phone28 (CDP touch, dark + light); counterfactuals: no folder hold / no contextmenu swallow each go redui/ScrollStripkept watching REMOVED children; the docked Explorer header unmounts its storage chip inside a resize passresize-observer-loop14; the old strip reds 6 (incl. the exact toast)Contract change:
explorer-header-panelssection 5 — at <= 640px (phone shell) the docked Explorer toolbar scrolls instead of truncating the project chip (F3); truncation is still asserted at 660px.Regression (all green): phone-sheets 104, explorer-phone 28, mobile-map 84, mobile-ui-fixes 28, mobile-editors 40, toolbar-position 63, menu-mobile-scroll 51, mobile-hud 12, explorer-header-panels 71, explorer-views 113, resize-observer-loop 14. svelte-check 300/40 (baseline), check:tokens clean.
Evidence (before/after shots 390x844 + 1440x900, dark + light; docs-fragment.md; summary.md):
/home/deck/.code/lanes-30/after-40/40-sheets/.OWED on device: sheet swipe feel, long-press timing (450 ms), the iOS callout (Chromium ignores
-webkit-touch-callout).Merge note:
src/components/ui/ScrollStrip.svelteis a shared primitive — union with 40-docks if both touch it.🤖 Generated with Claude Code