Skip to content

Feel: sign off 74 rows of the command bar, split view, Peek, Mini Window and picture-in-picture - #28

Merged
siyabendoezdemir merged 3 commits into
mainfrom
lead/signoff-1
Oct 11, 2026
Merged

siyabendoezdemir merged 3 commits into
mainfrom
lead/signoff-1

Conversation

@siyabendoezdemir

@siyabendoezdemir siyabendoezdemir commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

What this does

The first "feels right" sign-off (D48, D79). 74 rows of the command bar, split view, Peek, the Mini Window and picture-in-picture get "feel": true in docs/feature-status.json, and FEATURES.md is regenerated. With pages merged, that's 472 in scope, 276 built (77 partial), 356 tested and 74 feel right.

It also adds the five capture scenarios the sign-off recorded (scripts/capture/scenarios/cb.mjs, sv.mjs, pk.mjs, mw.mjs, md.mjs) and two options to scripts/capture/record.mjs: --fps (default 30) and --port (default 3380).

No app code changes.

How the rows were judged (D79)

  • FL rows were measured again on main at 62f6fd6, at low load (load average 1.6–5.5), three rounds, with the feel specs for these areas. Gate numbers at load 10–18 don't count against a row.
  • One 60 fps screen recording per area, read frame by frame: a per-frame change count, and contact sheets of every frame around each step.
  • A yes row's behaviour stands on its lane's review, fix checks and tests. The clip is checked for what the spec says about motion and feel.

Signed off

  • Command bar (22): CB-01 to CB-04, CB-06 to CB-12, CB-14 to CB-21, CB-23, FL-16, FL-17.
    • FL-16: entrance 133–150 ms (spec 120–160), first-frame scale 0.977 (≈0.97), no overshoot; Escape gone in 102 ms (100–120).
    • FL-17: median 13 ms, worst 20.7 ms (≤50).
  • Split view (19): SV-01, SV-04, SV-05, SV-06, SV-09, SV-11 to SV-21, SV-23, SV-24, SV-25.
    • The divider tracks the pointer with no lag. The flip is within 2 px in 267–283 ms (≈300).
  • Peek (13): PK-01 to PK-05, PK-07 to PK-10, PK-12, PK-13, PK-15, PK-16.
    • Dim 18 % (10–20).
    • PK-07's expand: within 2 px in 200–233 ms; the edges meet at 250–283 ms. The spec says 220–260; 283 is within D79's two frames of recorder quantization.
  • Mini Window (12): MW-01, MW-02, MW-03, MW-05 to MW-11, MW-13, MW-14.
    • A 21-character address typed into a new blank Mini Window lands whole.
  • Picture-in-picture (8): MD-03 to MD-06, MD-08, MD-09, MD-10, MD-12.
    • The player glides to the corner, settled by about 150 ms, and keeps playing in step.

Held, with numbers (to the feel-fix lane, D80)

  1. PK-06, FL-19. Peek resizes its page view on every frame, so the page re-lays out while the card grows. Frame max 50–83 ms; within 2 px at 317–350 ms (280–320). The close shows no real fade.
  2. SV-02, SV-03, SV-07. Filling a new pane with an open tab shows that tab alone across the page area for 117–167 ms before the split re-forms.
  3. SV-26, FL-18.
    • A closed pane vanishes at once.
    • The drop zone takes 3 frames to draw (≤2) and 2 to move (1).
    • Create settles within 0.5 px only at 467–483 ms (≤350).
  4. CB-22, FL-29. The first ⌘T after a launch takes 21–42 ms; later opens take 2.6–7.7 ms.
  5. MW-04, MW-15.
    • A link from another app flashes the lookup bar for one update.
    • Exits show an empty window for 3–5 frames.
  6. MD-01, MD-07, MD-16. Going back from picture-in-picture shows the page in its player layout for 2–3 frames.
  7. FL-04, FL-05. A hover tint flashes on the old sidebar row after a command-bar switch. This one waits for the sidebar's sign-off.

These aren't signed:

  • Partial rows: CB-05, CB-13, SV-08, SV-22, SV-26 (also held), PK-11, MW-12, MD-02, MD-11, MD-13, MD-14, FL-18 and FL-29.
  • MD-15: not built.
  • FL-28 and FL-32: they wait for their other areas and a drag clip.

Unverified on Linux (D79 (6))

Xvfb can't show these, so this sign-off doesn't judge them:

  • Frame pacing: the software compositor puts a resized web view on screen only every 2–4 frames.
  • Window fades: there's no compositing manager.
  • "Always on top": there's no window manager.
  • Vibrancy, trackpad gestures and haptics.

Merge gate (D42, D81, local)

Both runs were on the VPS (Linux, under Xvfb), with the lead's gate script:

npm run build && npm run typecheck && npm run lint && ./node_modules/.bin/vitest run
xvfb-run -a -s "-screen 0 1440x900x24" ./node_modules/.bin/playwright test --workers 1 --retries 0 --reporter=line
  • r1, the full suite on the sign-off commit e59840a (on main 62f6fd6), 14:17–14:55 UTC:

    • build, typecheck and lint: exit 0;
    • unit: 92 files, 959/959 passed;
    • e2e: 691 passed, 2 skipped, 0 failed. Exit 0, 38.0 min, load 11.9 → 8.4.
  • Then main merged in, after pages (PR Pages: dialogs, error and crash screens, other apps, full screen, print, view source, save, swipe and History as a page #27): 2e21a55.

    • docs/feature-status.json is main's rows, pages' notes included, plus the 74 marks; a script checked that nothing else differs.
    • FEATURES.md is regenerated: 276 built (77 partial), 356 tested, 74 feel right.
  • r2 on 2e21a55 (D81), 14:49–14:50 UTC: build, typecheck and lint exit 0; unit 100 files, 1029/1029 passed.

  • r3 on this head, 492c21e (D81), after the review's fixes to the capture scripts, 15:06 UTC:

    • build, typecheck and lint: exit 0;
    • unit: 100 files, 1029/1029 passed.

    E2E isn't run again. Against main (bf3fc40), this head changes nothing outside docs/, FEATURES.md and scripts/capture/: git diff --stat bf3fc40 492c21e -- . ':(exclude)docs' ':(exclude)FEATURES.md' ':(exclude)scripts/capture' is empty. The app and the e2e tests don't read those paths, and main's tree passed pages' full gate on 6a99a04 (760 passed, 0 failed).

  • Unverified (macOS only): the two skipped tests, nav.spec's macOS-only keys. The sign-off's own Linux limits are listed above.

Review

  • Review (reviews/lead-signoff-1.md, on 2e21a55): APPROVE WITH FIXES, 2 must-fix and 6 follow-ups.
    • Must-fix 1, this body: the totals and PK-07's numbers. Both are fixed above.
    • Must-fix 2, sv.mjs: step 1 now runs split.add (⌃⇧=), and step 2 (Add Split Below) is labelled SV-03. Fixed in 492c21e; the scenario was run again end to end, exit 0.
    • Follow-ups done:
      • gap 2 is 117–167 ms (7 frames, not 6);
      • the [mark] wording;
      • md's resize runs from a task of its own;
      • --port looks at most 9 ports up;
      • SV-26, FL-28 and FL-32 are in the lists;
      • D81's list of readers is corrected.
  • Fix check (reviews/lead-signoff-1-fixcheck.md): APPROVE, no must-fix, on 492c21e. It checked this body's totals and PK-07 line, sv.mjs (the reviewer ran sv again: exit 0, nothing left behind) and the six follow-ups.
  • Bugbot couldn't run on this PR (its usage limit).

🤖 Generated with Claude Code


Note

Low Risk
Documentation and offline capture scripts only; no product code paths, auth, or data handling touched.

Overview
Records the first “feels right” lead sign-off (D48): 74 spec rows across command bar, split view, Peek, Mini Window, and picture-in-picture (plus related FL-16/17 motion) now have "feel": true in docs/feature-status.json, and FEATURES.md is updated so the totals show 74 feel right and those rows show ✅ in the Feels right column.

Adds five scripted screen-capture scenarios under scripts/capture/scenarios/ (cb, sv, pk, mw, md) that drive Orbit via Playwright for parity clips used in the sign-off. scripts/capture/record.mjs gains --fps (default 30, for frame-by-frame motion review) and --port (fixture server base port, with a small retry range).

No application/runtime code changes—status metadata and capture tooling only.

Reviewed by Cursor Bugbot for commit 492c21e. Bugbot is set up for automated code reviews on this repo. Configure here.

…dow and picture-in-picture (D48, D79)

The lead's first "feels right" sign-off. Each row was checked against feel.md: the feel specs
re-measured at low load (load 1.6-5.5, three rounds) and one 60 fps screen recording per area,
read frame by frame. The record, with the rows held back and their numbers, is
reviews/feel-signoff-1.md in the project's context folder.

- docs/feature-status.json: "feel": true on 74 built rows (CB 20 and FL-16, FL-17; SV 19;
  PK 13; MW 12; MD 8). FEATURES.md regenerated: 74 feel right.
- scripts/capture/scenarios: cb, sv, pk, mw and md, each printing a [mark] line per step so
  frames around it can be cut from the clip.
- scripts/capture/record.mjs: --fps (60 to judge motion frame by frame) and --port (where
  the fixture server starts looking), so a capture stays in its own port range.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Oct 11, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: c54b9d7a-14ee-4779-bc40-498945916052)

docs/feature-status.json takes main's rows, pages' notes included, with the 74 "feel" marks put back. FEATURES.md is regenerated: 472 spec'd, 276 built (77 partial), 356 tested, 74 feel right.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Oct 11, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: 02558e25-4425-4f81-a333-11a8c8457b28)

… from; md resizes from its own task; --port walks 9 ports

PR #28's review: step 1 of the sv scenario runs ⌃⇧='s action (split.add) and step 2, Add Split Below, is SV-03. A [mark] time counts from the scenario's start, 0.7 s after the recording's. md's window resize runs from a task of its own, as record.mjs's does. The fixture server looks at most 9 ports above --port.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Oct 11, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: 39a4f0ea-47e8-45b3-88fd-4c77710eccd9)

@siyabendoezdemir
siyabendoezdemir merged commit 1f81f83 into main Oct 11, 2026
1 check passed
siyabendoezdemir added a commit that referenced this pull request Oct 11, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
siyabendoezdemir added a commit that referenced this pull request Oct 11, 2026
Data and capture scripts only. docs/feature-status.json merged per feature: no feature changed on
both sides; the 74 "feel": true marks are kept. FEATURES.md regenerated.

Co-Authored-By: Claude Opus 5.5 <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