mirror of
https://github.com/AgentSeal/codeburn.git
synced 2026-08-27 01:14:02 +00:00
Closes #918. The renderer's keydown handler required event.metaKey and explicitly rejected event.ctrlKey, so every shortcut was dead outside macOS: on Windows and Linux metaKey is the Super key, which the OS shell takes. Navigation (1-8), Settings (,) and Refresh (R) all did nothing. The sidebar and footer hints also hardcoded the Cmd glyph, so a Windows user was shown chords that could not fire. Add app/renderer/lib/platform.ts as the single source of truth for platform-aware shortcuts, reading the platform the preload already exposes (window.codeburn.platform) with a user-agent fallback for the non-Electron cases. isModifierChord accepts Cmd-without-Ctrl on darwin and Ctrl-without-Cmd elsewhere; altKey stays rejected on both, because AltGr on European Windows layouts arrives as Ctrl+Alt and must not hijack a typed character. Every visible shortcut label now resolves through shortcutLabel() at render time, so the sidebar shows Ctrl+1 where macOS shows the Cmd glyph. The mac chord condition is unchanged: the old guard admitted metaKey && !altKey && !ctrlKey && !shiftKey, and the new one admits exactly the same set on darwin. The Electron application menu is deliberately left alone. It ships no reload/forceReload role and no CmdOrCtrl+R accelerator, which is what leaves Ctrl+R free for the renderer to handle on Windows. Also corrects the Settings navigation hint, which read 1-7 while the sidebar has eight numbered destinations. Tests cover both platforms for labels and dispatch, including the negatives: Meta on win32, Ctrl on darwin, and the Ctrl+Alt AltGr shape. |
||
|---|---|---|
| .. | ||
| AboutModal.test.tsx | ||
| AboutModal.tsx | ||
| ActivityHeatmap.test.tsx | ||
| ActivityHeatmap.tsx | ||
| CliErrorPanel.tsx | ||
| ConnectAffordance.tsx | ||
| Dropdown.tsx | ||
| EmptyState.tsx | ||
| ErrorBoundary.test.tsx | ||
| ErrorBoundary.tsx | ||
| FlameMark.tsx | ||
| Hint.tsx | ||
| ListRow.tsx | ||
| Onboarding.test.tsx | ||
| Onboarding.tsx | ||
| Panel.tsx | ||
| ProviderLogo.test.tsx | ||
| ProviderLogo.tsx | ||
| ProviderPop.tsx | ||
| RangeCalendar.tsx | ||
| Sankey.tsx | ||
| SegTabs.tsx | ||
| Sidebar.test.tsx | ||
| Sidebar.tsx | ||
| Skeleton.test.tsx | ||
| Skeleton.tsx | ||
| Splash.test.tsx | ||
| Splash.tsx | ||
| StackedBars.test.tsx | ||
| StackedBars.tsx | ||
| StaleBanner.test.tsx | ||
| StaleBanner.tsx | ||
| Stat.tsx | ||
| ToastHost.test.tsx | ||
| ToastHost.tsx | ||
| TopBar.tsx | ||
| UpdateBanner.test.tsx | ||
| UpdateBanner.tsx | ||
| Window.tsx | ||