Skip to content

fix(transcript,hotkeys): bound transcript line width, surface silent hotkey registration failures - #87

Merged
alpha5611331 merged 3 commits into
mainfrom
fix/transcript-layout-and-hotkey-registration
Aug 7, 2026
Merged

fix(transcript,hotkeys): bound transcript line width, surface silent hotkey registration failures#87
alpha5611331 merged 3 commits into
mainfrom
fix/transcript-layout-and-hotkey-registration

Conversation

@alpha5611331

@alpha5611331 alpha5611331 commented Aug 7, 2026

Copy link
Copy Markdown
Member

Summary

  • Transcript dock rows now give the speaker label a fixed-width, truncated column (ellipsis, full name on hover) and cap the row at a readable max width (max-w-3xl, centered) instead of stretching edge-to-edge in a maximized/ultra-wide window. Transcript text itself still wraps normally within that bound - only the speaker column truncates, so no words are lost.
  • registerGlobalHotkeys() now checks the return value of every globalShortcut.register() call and logs a warning when one fails. Electron returns false (no throw) when another application has already claimed an accelerator system-wide - previously this failed completely silently. Reproduced manually as Ctrl+Shift+L (scroll live suggestions to end) not registering while its J/K neighbors did; L is a much more commonly claimed global combo elsewhere on a system.

Closes #85
Closes #86

Test plan

  • pnpm exec tsc -p tsconfig.electron.json --noEmit - clean
  • pnpm exec tsc -p tsconfig.app.json --noEmit - clean
  • pnpm run lint - clean
  • pnpm run build - renderer builds successfully
  • pnpm run test:main - full suite passes, including stealth-surface.test.mjs which parses the compiled hotkeys.js output and pins that hotkey:toggle-transcript is still registered
  • CI (Lint / type check / tests) green on the latest commit
  • Manual GUI verification - not performed; the app requires a live backend (localhost:8080) and login flow to reach the transcript/suggestion panels, and there's no Playwright/E2E harness in this repo. Worth a manual pass to visually confirm the transcript row layout and the Ctrl+Shift+L warning log on a machine where the combo is contested.

🤖 Generated with Claude Code

alpha5611331 and others added 3 commits August 7, 2026 14:34
…hotkey registration failures

Transcript dock rows inlined the speaker label into the text paragraph with
no max width, so a maximized/ultra-wide window let a single utterance
stretch edge-to-edge, and variable-length speaker names shifted where the
text started on every row. Give the speaker its own fixed-width truncated
column, cap the row at a readable max width, and truncate long text on one
line (full text on hover) instead of wrapping, keeping the wide-short-dock
density goal from 6d03a00 intact.

Separately, none of the 25 globalShortcut.register() calls in hotkeys.ts
checked their return value. Electron returns false rather than throwing
when another application has already claimed an accelerator system-wide,
so a binding can silently go dead. Reproduced as Ctrl+Shift+L (scroll live
suggestions to end) not working during manual testing while its J/K
neighbors did - L is a far more commonly claimed global combo. All
registrations now go through a helper that logs a warning on failure.

Fixes #85, fixes #86

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
max-w-3xl bounded row width but left it hugging the dock's left edge;
mx-auto centers it so the readable-width column sits in the middle of
the full-width dock instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Single-line ellipsis on the transcript text itself was cutting off
utterances the candidate needs to actually read back. Truncation
belongs on the fixed-width speaker column only; the text wraps as
before within the max-w-3xl bound.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@alpha5611331
alpha5611331 merged commit 2a27696 into main Aug 7, 2026
1 check passed
@alpha5611331
alpha5611331 deleted the fix/transcript-layout-and-hotkey-registration branch August 7, 2026 21:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant