You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat: add command palette, focus trap, keymap, and shortcut help
- Implemented a command palette for quick navigation and actions, accessible via Cmd/Ctrl+K.
- Created a focus trap utility to manage keyboard focus within modal dialogs.
- Developed a keymap module to handle global keyboard shortcuts and typing target detection.
- Added a shortcut help overlay that displays global keyboard shortcuts, triggered by '?'.
* fix(security): set Secure attribute on active-box cookie when TLS
CodeQL on PR #70 flagged the new gearbox_active_box cookie for not
setting Secure: true (findings #584, #585). The cookie is HttpOnly +
SameSite=Lax but should also be Secure in HTTPS deployments.
Make Secure conditional via a new requestIsTLS(r) helper:
- r.TLS != nil — request served directly over HTTPS
- X-Forwarded-Proto: https — TLS terminated by an upstream proxy
(the homelab's HAProxy front-end is the typical case)
Plain http://localhost dev still works (cookie is set without Secure
when neither signal is present); production behind HAProxy now writes
a Secure cookie.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: address Copilot review findings on PR #70
- handler.go: /bx clears the active-box cookie whenever the cookie is
present, not only when it resolves to an enabled box. Otherwise a
stale cookie (referencing a deleted/disabled box) survives and the
first-login auto-select stays blocked because hasCookieSet remains
true.
- base.templ: encodeGearsJSON now filters out disabled gears server-
side, matching its own comment. Reduces payload and keeps the
command palette catalog free of empty entries.
- bx/pages.templ: drop the duplicate <link rel=stylesheet> for
datagrid.css — layouts.Base already includes it globally. Add
aria-label="Filter boxes view" to #bx-view-filter so screen readers
announce it unambiguously.
- shortcut-help.js: SHORTCUTS entries gain an explicit `join` field
("+" for chord, "then" for sequence, "/" for either-of). The old
separator logic always emitted a single space regardless of
intent — chords like Cmd+K rendered as "Cmd K". Also extend the Esc-
overlay-exemption check to cover the narrow-viewport Filters sheet
(.filters-open on #header-page-content) and the sidebar's right-
click context menu — pressing Esc to close those used to fall
through to history.back().
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments