Skip to content

fix: settle the owner's open calls and keep hover popups reachable - #75

Merged
j3w1 merged 7 commits into
mainfrom
orca/owner-calls
Oct 15, 2026
Merged

j3w1 merged 7 commits into
mainfrom
orca/owner-calls

Conversation

@j3w1

@j3w1 j3w1 commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Settles the owner calls left open by #74, and makes hover popups reachable.

Owner decisions

  • D-039: code and terminal backgrounds keep two scopes. surface.code and surface.terminal (pure black) are what a static code block or a terminal pane sits on. code.bg and terminal.bg (#0c0909) fill the inside of an editor and a terminal grid; terminal.bg equals ANSI 0. Values are unchanged, so port artifacts change only in their token digests.
  • D-040: focus.ring-contrast. This new composite role is the 1px dashed control ring in interaction.focus.ring-container. Twelve components wrote it out longhand: four for controls on a fill, eight for invalid fields beside the danger border. They now use the role. Computed outlines are unchanged in all three profiles, and every port classifies the role.
  • loading-indicator: the worded label is always visible.
  • D-031: its CI rules move to docs/ci.md. The decision keeps the choice, reason and status, and AGENTS.md links the new page.

Also: the progress spec no longer suggests a track that fails 3:1 (action.primary.bg on surface.canvas is about 2:1). The menu-button, toolbar-button and toast action looks stay as declared. The code-editor naming was already settled.

Hover popups

The token inspector and the package tooltip hid as soon as the pointer left the trigger. So a pointer could not reach a long, scrolling inspector, or cross to a tooltip wider than its trigger. They now follow spec/foundations.md (hover popups) and WCAG 1.4.13:

  • Reaching it: the popup stays while the pointer crosses to it.
  • Closing: it closes 300 ms after the pointer leaves both the trigger and the popup.
  • Placement: once the pointer is on the inspector, it stops following. It moves again on scroll and resize, beside the pointer or anchored to its token, always inside the 8px gutter.
  • Keyboard focus wins: pointer movement never closes, replaces or cancels an inspector whose token or content holds focus. Focus that moves to the page background closes it.
  • Hex preview: the passive preview (D-014) behaves as before. It now measures its width correctly near the right edge, so it keeps its 8px gutter.

Browser tests in tests/browser/hover-popups.spec.js cover each path. Each test was shown failing on the commit before its fix:

  • the inspector and tooltip crossings, on a0376173;
  • the review-found load, swatch, focus and other-token cases, on the intermediate commits.

Checks

  • Local whole suite on d2360af (npm run test:all steps, browser part at 6 workers): validate, check, npm test, pinned build, test:dist, ui:consumers, test:ui on Chromium and Firefox, the browser matrix (553 passed, 0 failed) and the verification report, check and test all pass.
  • Independent Codex reviewers:
    • code and spec reviews of the change, then five rounds of delta reviews of the corrections they asked for, ending in a pass on 604c614; short re-reviews of the follow-up commit below;
    • policy reviews (Never rules, decision entries, hex gates, execution evidence, whole suite) running alongside CI; merge waits for them.
  • Owner choices: D-039, D-040 (name focus.ring-contrast), the loading label, docs/ci.md, and G3 merge remotely.

Hosted CI on 604c614 caught a hidden coupling: tests/orca-install.test.js, which runs only with PowerShell, tampers with the export by replacing the text "Terminal background.", and D-039's new description had removed it. terminal.bg's description starts with that sentence again (d2360af). The test still depends on prose, so it should target a stable value when its owner next edits it.

Not run

  • WebKit, ui:report and ui:publish-evidence locally: this host lacks WebKit's system libraries. The full-matrix workflow dispatch covers them.
  • No manual keyboard or screen-reader pass was recorded. The keyboard tests are automated Chromium.
  • 105 unit tests skip without PowerShell and the Windows toolchain.

🤖 Generated with Claude Code

j3w1 and others added 7 commits October 15, 2026 00:42
The owner chose to keep both code and terminal background pairs and scope
them (D-039, values unchanged), to name the bright dashed ring once as
focus.ring-contrast (D-040) for the twelve components that wrote it out, to
keep a loading indicator's label always visible, and to move D-031's CI rules
to docs/ci.md. The progress spec no longer suggests a track that fails 3:1.

The token inspector and the tooltip hid as soon as the pointer left their
trigger, so a pointer could not reach a long, scrolling inspector or cross to
a tooltip wider than its trigger. Both now keep the popup while the pointer
crosses to it and close 300 ms after it leaves both (WCAG 1.4.13); the
inspector stops following the pointer once the pointer is on it. New browser
tests fail on a037617 and pass here.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The code review found three regressions in the hover fix. A leave during the
first data load now cancels the open, so a late response cannot show a stale
panel. The hex preview closes the inspector properly, so returning to the
same token reopens it. Pointer movement never hides a panel that holds
keyboard focus. Each has a browser regression test.

The spec review found three text defects. The tooltip's web guidance now
states the 300 ms close delay. D-039 names the ports that map each background
instead of claiming every port does. Only the reachable kind of hover popup
waits before closing, so D-014's passive preview is unaffected.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The delta reviews found that a pointer leaving during the first data load
cancelled a pending keyboard open, and that hovering a hex swatch hid an
inspector holding focus, contradicting the new spec text. Pointer handling
now leaves the inspector alone while its token or its content holds focus;
the spec and changelog say so. Two browser tests cover both paths.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The second code review found that hovering another token replaced a panel
holding keyboard focus, dropping focus to the page, and cancelled a focused
token's pending open. While a token or its panel holds focus, hovering other
tokens now leaves the panel alone. Focus that leaves for the page background
closes a panel the pointer is not on. A browser test covers each path.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Review found three more gaps against the hover popup rules. Focus leaving
for the page background while the inspector data loads now cancels the
pending open. The panel moves again on scroll and resize, beside the pointer
or anchored to its token, and its width never exceeds the viewport minus
the gutter. The other-token test now hovers a token the panel does not
cover. Browser tests cover each path.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The delta reviews found the scroll and resize repositioning incomplete: a
keyboard-anchored panel could follow its token out of the viewport, and a
panel under the pointer was not moved on resize. Anchored placement now
clamps to the 8px gutter, and a hovered panel is clamped where it is.

A fixed popup left near the right edge shrank to the space left, so its
measured width was wrong after a resize. Placement now measures popups at
their natural size; the hex preview, which shares the pointer placement,
keeps its 8px gutter the same way. Browser tests cover the token scrolling
away, the viewport narrowing and the hovered resize.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The hosted checks found tests/orca-install.test.js tampering with the
release export by replacing the text "Terminal background.". D-039's new
description removed that text, so the tamper changed nothing and the test
failed. terminal.bg is the terminal background ports map, so its
description now starts with that sentence again. The test runs only where
PowerShell is installed, so the local suite skipped it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@j3w1
j3w1 merged commit b4d0e4a into main Oct 15, 2026
36 checks passed
@j3w1
j3w1 deleted the orca/owner-calls branch October 15, 2026 11:54
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