Stacked features 7: dependency check + extra debounce search input#418
Conversation
793d8d0 to
0699d2b
Compare
|
CI note: run This test does not exercise the session-find debounce changed here. I deliberately did not relax the threshold. GitHub does not allow contributors to rerun the failed job ( |
0699d2b to
659f8c6
Compare
The debounce hid all find state for its 120ms window: highlights and the
count blanked on every pause, Enter was silently swallowed, and a click
into the list could get focus yanked back when the count settled.
Chrome-style instead: the previous query's matches stay visible, counted,
and navigable until the new projection lands; the count dims while
pending ('No matches' still waits for the settle so it never flashes
mid-typing). The find bar reclaims focus only when it sits on the bar's
own controls, so focus moved into the message list stays there. The
debounce interval gets a name.
Two e2e tests pin the semantics: a MutationObserver asserts the status
text never blanks across a retype (immune to debounce timing), and the
focus test covers both the reclaim-after-button and the stay-in-list
paths via the mod+arrow hotkey.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
659f8c6 to
0eec002
Compare
|
Thanks for this whole series — seven PRs from typecheck baseline to package size, each one moving the needle on developer experience. The typecheck gate, the native-ABI split, and the search rework are things we'll feel every day. Great work, and looking forward to your next contribution. |
…rboytm#426) The July 2026 optimization stack (paperboytm#412-paperboytm#418) shipped, which turns its 441-line plan into a completed one — and completed plans rot: the doc went stale twice during the stack's own lifetime (feature-flag removals, find semantics). Git history and the PR descriptions now carry the full rationale and verification notes permanently. Keep what stays useful: - The verification matrix moves to CONTRIBUTING as a living 'Verifying changes' section, including the packaged-app checklist and the never-remove-assets-on-grep-alone rule. - The roadmap shrinks to a ~50-line record: what shipped per PR, decisions of record with their data basis, and known follow-ups. Also refresh two stale CONTRIBUTING sections: native-ABI handling is automatic since paperboytm#415 (manual rebuilds are the fallback), and 'no linter config yet' predates oxlint (paperboytm#413). Co-authored-by: Chen <99816898+donteatfriedrice@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Stack position
Part 7 of 7. Depends on #417 and completes the stack.
Why
Future dependency upgrades need smaller risk boundaries, and session-local find still reparsed every loaded Markdown message on each keystroke in long sessions.
What changed
Dependency maintenance
Session-local find
Verification
pnpm install --frozen-lockfile, 9-package typecheck, type-aware lint, and all unit tests passed.sp statuspassed after the final Node ABI restore.Review follow-up (maintainer)
The debounce originally hid all find state for its 120 ms window, which made Enter a silent no-op, flashed highlights on every pause, and could yank focus back from the message list. The follow-up commit keeps the previous query's matches visible (dimmed) and navigable until the new projection lands — only "No matches" waits for the settle — and scopes the find bar's focus reclaim to its own controls. Two e2e tests pin the semantics: a MutationObserver asserts the status text never blanks across a retype (immune to debounce timing), and a focus test covers both reclaim-after-button and stay-in-list paths.
Review notes
The debounce is deliberately scoped to the current session's in-memory find. It does not change the cross-session SQLite/FTS search implemented in #416.