Skip to content

Add vim-style keyboard navigation to the Forensic Timeline#33

Merged
hasamba merged 2 commits into
masterfrom
claude/vim-keyboard-navigation-33edee
Jul 10, 2026
Merged

Add vim-style keyboard navigation to the Forensic Timeline#33
hasamba merged 2 commits into
masterfrom
claude/vim-keyboard-navigation-33edee

Conversation

@hasamba

@hasamba hasamba commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds vim-style keyboard shortcuts to the Forensic Timeline: j/k move a focused-row highlight through the current page of events, f stars/unstars the focused event, i prefills the manual IOC form from its dstIp/srcIp/asset, p pins/unpins its finding (only when exactly one is cited), n opens a comment on it, ? shows a shortcut cheat sheet, and Esc closes the cheat sheet, cancels the i field, or clears focus.
  • All shortcuts are ignored while typing in any input/textarea/select or with a modifier key held, and are toggleable via a new Settings → General checkbox (default on).
  • Fixes an Esc-can't-cancel gap in the i flow: since the global handler skips INPUT targets by design, a field-scoped Escape handler was added on the IOC value input (mirroring the existing #globalSearch pattern).

Test plan

  • Ran the dev server against the fairhaven-rdp-gt ground-truth benchmark case (18,573 events) and drove every shortcut via the browser: j/k focus movement + clamping, f star toggle + focus restore after re-render, i field prefill + type selection, n comment modal scoping, p pin/no-op behavior, ?/Esc cheat sheet, Esc-cancel of the i field (both auto-opened and already-open cases), input-guard blocking shortcuts while typing, and the Settings toggle disabling/re-enabling the listener.
  • Confirmed no regressions to the existing / global-search shortcut.
  • Manual smoke test in a real browser session (automated testing above used scripted keyboard events against the live dev server).

hasamba added 2 commits July 10, 2026 11:44
j/k moves a focused-row highlight through the current page of timeline
rows; f stars/unstars it; i prefills the manual IOC form from its
dstIp/srcIp/asset; p pins/unpins its finding when exactly one is cited;
n opens a comment on it; ? shows a shortcut cheat sheet; Esc closes the
cheat sheet or clears focus. All ignored while typing in any field or
with a modifier held, and toggleable in Settings -> General (default on).
…t sheet

The global shortcut handler skips INPUT targets by design, so Esc did
nothing once focus landed in the prefilled IOC value field after
pressing i — there was no way to back out. Add a field-scoped Escape
handler (matching the existing #globalSearch pattern) that clears the
value, blurs it, and re-collapses the manual-add form if the i
shortcut is what opened it (left alone if the analyst had it open
already via the section's own + toggle).
@hasamba hasamba merged commit 52c284b into master Jul 10, 2026
2 checks passed
@hasamba hasamba deleted the claude/vim-keyboard-navigation-33edee branch July 10, 2026 11:21
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