Skip to content

Stacked features 7: dependency check + extra debounce search input#418

Merged
graydawnc merged 3 commits into
paperboytm:mainfrom
AmagiDDmxh:feat/dependency-maintenance
Jul 15, 2026
Merged

Stacked features 7: dependency check + extra debounce search input#418
graydawnc merged 3 commits into
paperboytm:mainfrom
AmagiDDmxh:feat/dependency-maintenance

Conversation

@AmagiDDmxh

@AmagiDDmxh AmagiDDmxh commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

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

  • Added weekly Dependabot updates at the pnpm workspace root.
  • Grouped patch/minor updates into four explicit lanes: tooling, Electron/native, ACP, and renderer/framework.
  • Excluded every high-risk runtime family from the broad tooling group.
  • Left major and security updates ungrouped so Electron, ACP, React/Vite, Shiki, Void, and i18next remain independently reviewable.
  • Did not perform the Electron 34-to-43 upgrade, unprofiled module splitting, or speculative React memoization.

Session-local find

  • Kept the controlled find input synchronous.
  • Added a 120 ms trailing debounce before the expensive Markdown-to-visible-text projection.
  • Cleared stale highlights/counts while a new query is pending.
  • Disabled previous/next navigation until the debounced result is current.

Verification

  • Dependabot YAML parsed successfully and its four groups passed a semantic overlap check.
  • Every high-risk pattern owned by a narrow group is excluded from the tooling catch-all.
  • pnpm install --frozen-lockfile, 9-package typecheck, type-aware lint, and all unit tests passed.
  • App unit tests after the debounce change: 488/488.
  • Focused Electron E2E for search and session detail: 22/22, including rendered-Markdown matching, keyboard navigation, and a 1,500-message deep-find fixture.
  • Complete serial Electron E2E: 166 passed, 2 retry-passed flaky tests, and 1 fixture-dependent skip.
  • CLI build, deep strict macOS codesign verification, and sp status passed 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.

@AmagiDDmxh AmagiDDmxh changed the title Stacked features 7: dependency check Stacked features 7: dependency check + extra debounce search input Jul 12, 2026
@AmagiDDmxh
AmagiDDmxh marked this pull request as draft July 13, 2026 20:48
@AmagiDDmxh
AmagiDDmxh force-pushed the feat/dependency-maintenance branch 2 times, most recently from 793d8d0 to 0699d2b Compare July 14, 2026 16:04
@AmagiDDmxh

Copy link
Copy Markdown
Contributor Author

CI note: run 29348126384 passed the Ubuntu unit job and Ubuntu E2E. On macOS, 165 of 166 E2E tests passed. The sole failure was the existing startup-no-beachball cold-launch threshold: p99 event-loop lag was 643.3 ms and 610.8 ms on its retry, against the 600 ms limit.

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 (Must have admin rights to Repository), so a maintainer rerun would be the appropriate confirmation.

@AmagiDDmxh
AmagiDDmxh force-pushed the feat/dependency-maintenance branch from 0699d2b to 659f8c6 Compare July 15, 2026 04:59
@AmagiDDmxh
AmagiDDmxh marked this pull request as ready for review July 15, 2026 05:00
AmagiDDmxh and others added 3 commits July 15, 2026 19:19
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>
@graydawnc
graydawnc force-pushed the feat/dependency-maintenance branch from 659f8c6 to 0eec002 Compare July 15, 2026 11:36
@graydawnc
graydawnc added this pull request to the merge queue Jul 15, 2026
Merged via the queue into paperboytm:main with commit 7300a89 Jul 15, 2026
3 checks passed
@graydawnc

Copy link
Copy Markdown
Collaborator

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.

bet4it pushed a commit to bet4it/spool that referenced this pull request Jul 16, 2026
…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>
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.

2 participants