Skip to content

Design: Search Close reads apart from Clear (#294) - #298

Merged
skyswordw merged 2 commits into
mainfrom
claude/294-search-close-design
Nov 6, 2026
Merged

skyswordw merged 2 commits into
mainfrom
claude/294-search-close-design

Conversation

@skyswordw

@skyswordw skyswordw commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Integrated validation

Merged into main in sequence #295–#300. Final main commit 7c5393672d028f31bc76f83911a02e1407a53cf7 has the same file tree as tested integration commit 8fb4dda. Full local validation passed 687 tests in 102 suites with zero failures/skips, 0/1,261 missing zh-Hans strings, unchanged generated plists and clean diff checks. Bounded native CUA/AX draft creation and Search Clear/Close checks passed, including independent ZIP byte verification; this is not VoiceOver testing. See the review comment for scope and remaining native checks. Final main CI and the integrated #300 snapshot run supersede cancelled intermediate reruns.

Refs #294 (parent #286). Functional foundation: #295.

What changed

#295 added a working Close Search control, but with a query the field showed two × glyphs side by side (Clear's filled circle and Close's plain ×), and Close was drawn heavier than Clear.

  • Clear belongs to the text: the system field's filled circle, shown only while there's a query. It still clears and keeps Search open with the keyboard.
  • Close belongs to the capsule: it sits past a hairline (the same 1 × 16 pt separator as the navigation capsule) at the field's trailing end. It's in the same place whether the field is empty or has a query, so it never moves and never reads as a second Clear.
  • Both use one quiet icon style: secondary, like the magnifying glass, turning primary on hover (no hover animation, as with the system field), with an 18 × 22 pt hit area instead of the bare glyph. The trailing inset shrinks to 6 pt so the field's text width barely changes.
  • Motion: no new animation. A pointer Close shrinks the field with the existing 0.18 s SearchWidthMotion; Esc and Reduce Motion close at once, as before.
  • New demo scene search-open (Search opened by ⌘F, nothing typed). DESIGN.md › Title bar describes the two controls.

No behaviour change. Close/Clear/focus semantics, the background-only refocus gesture, the IME Escape guard, the explicit Search name and accessibility labels from #295 are untouched. No new strings.

Screenshots

Light Dark
Before (#295), with a query
After, with a query
After, open and empty

Checks

  • Full suite: 685 tests in 102 suites passed locally.
  • scripts/check-localizations.sh zh-Hans: 0 of 1,232 strings missing.
  • Snapshots: search and search-open, light/dark; a narrow window keeps the text room.
  • Not verified natively: pointer hover/press feedback, a clicked Close's collapse in the running app, Pinyin/Kana composition, and Increase Contrast. These are not VoiceOver results (Accessibility: AX label recursion crashes archive activation and Browser failure states #93).

Ownership: Claude Code owns this treatment and placement. Codex / Grok Bot keep the close/clear/focus semantics and race tests from #295. #294 stays open for its functional owner.

🤖 Generated with Claude Code

Clear stays the system field's filled circle inside the text, shown only with
a query. Close sits past a hairline at the capsule's trailing end in every
state, so it never moves and never reads as a second Clear. Both share a quiet
icon style (secondary until hovered, 18 x 22 pt hit area, no hover animation).
Close/Clear/focus behaviour from #295 is unchanged.

Adds the `search-open` demo scene (Search opened by Command-F, nothing typed).

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

@skyswordw skyswordw left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Functional review completed with no blocking findings. Clear/Close remain separate controls with distinct names and glyphs; the background-only focus gesture, existing IME Escape guard and focus cancellation remain intact. README merge resolution preserves both this PR’s search-open scene and #297’s draft scenes.

In the integrated ad-hoc app, Command-F opened Search, a no-result query filtered the list, Clear kept Search focused, and Close on a nonempty query restored files and allowed arrow-key selection. The Search snapshot was also inspected. Full suite: 687 passed, no skips/failures; localization complete. Actual Pinyin/Kana composition remains a bounded follow-up in #38, not a claimed test. Claude Code owns control treatment/motion; Codex owns functional semantics.

@skyswordw
skyswordw changed the base branch from claude/293-draft-design-f53903 to main November 6, 2026 00:46
@skyswordw
skyswordw merged commit 626b94f into main Nov 6, 2026
0 of 3 checks passed
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