diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-07 09:45:04 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-07 09:45:04 +0300 |
| commit | 730c4e6419e24807d5f1e0a79931b3e0a78bd60b (patch) | |
| tree | b7a436d5b160a6927a96999eacc144f7b408f868 | |
| parent | c2e0a0b772582a81513d1c97ebba121dac555984 (diff) | |
h1 fix browser auth theme shortcuts QA
| -rw-r--r-- | docs/keyboard-shortcuts.md | 5 | ||||
| -rwxr-xr-x | start.sh | 2 | ||||
| -rw-r--r-- | web/index.html | 8 | ||||
| -rw-r--r-- | web/js/api.js | 7 | ||||
| -rw-r--r-- | web/js/app.js | 4 | ||||
| -rw-r--r-- | web/js/keyboard.js | 12 |
6 files changed, 19 insertions, 19 deletions
diff --git a/docs/keyboard-shortcuts.md b/docs/keyboard-shortcuts.md index cbf0cca..7e46209 100644 --- a/docs/keyboard-shortcuts.md +++ b/docs/keyboard-shortcuts.md @@ -15,8 +15,7 @@ Global shortcuts are registered in `web/js/keyboard.js`. They are **disabled** w | `f` | Toggle fullscreen on the player wrapper | | `Esc` | Exit fullscreen, or deselect current item | | `r` | Toggle shuffle on the current filtered result set | -| `s` | Toggle sets sidebar | -| `S` | Generate a share link for the selected media | +| `s` | Generate a share link for the selected media | | `/` | Focus the quick search bar (debounced) | | `n` | Open notes modal for the selected media | | `i` | Show / hide media info | @@ -31,4 +30,4 @@ Global shortcuts are registered in `web/js/keyboard.js`. They are **disabled** w Search syntax: plain text searches file name. Modifiers: `min:30`, `max:55`, `tag:a,b`, `like:1`, `type:video`, `sort:random`, `minsize:10`, `maxsize:500`. -My Shares modal: `↑` / `↓` or `k` / `j` navigate, `Enter` copies, `Delete` revokes, `Esc` closes.
\ No newline at end of file +My Shares modal: `↑` / `↓` or `k` / `j` navigate, `Enter` copies, `Delete` revokes, `Esc` closes. @@ -96,7 +96,7 @@ echo "Ready. Open ${BASEURL} in your browser." echo "Login: test / test123" echo "" echo "Quick tips:" -echo " s -- show/hide sets sidebar" +echo " s -- share selected media" echo " t -- show/hide toolbar" echo " / -- search" echo " ? -- help" diff --git a/web/index.html b/web/index.html index f44da8e..15c41ec 100644 --- a/web/index.html +++ b/web/index.html @@ -20,7 +20,10 @@ <span class="scan-dot" aria-hidden="true"></span> <span id="scan-indicator-text">Scanning</span> </div> + <button id="sidebar-toggle" class="icon-btn" title="Sets" aria-label="Toggle sets sidebar">☰</button> + <button id="shuffle-toggle" class="icon-btn" title="Shuffle (r)" aria-label="Toggle shuffle">🔀</button> <button id="help-toggle" class="icon-btn" title="Help (?)">?</button> + <button id="theme-toggle" class="icon-btn" title="Toggle theme" aria-label="Toggle theme"></button> <button id="admin-toggle" class="icon-btn hidden" title="Admin panel">⚙</button> <button id="logout-btn" class="btn btn-ghost btn-sm">Log out</button> </header> @@ -58,7 +61,7 @@ <!-- Empty state hint: shown when no set is selected --> <div id="empty-hint" class="empty-hint"> <p>Welcome to Player</p> - <p class="text-muted text-sm">Press <kbd>s</kbd> to browse sets, <kbd>/</kbd> to search, or <kbd>?</kbd> for help.</p> + <p class="text-muted text-sm">Use the sets button to browse, <kbd>/</kbd> to search, or <kbd>?</kbd> for help.</p> </div> <!-- Breadcrumb bar for folder navigation --> @@ -144,8 +147,7 @@ <div class="help-row"><span><kbd>q</kbd></span><span>Stop playback and close player</span></div> <div class="help-row"><span><kbd>Backspace</kbd></span><span>Go up one folder</span></div> <div class="help-row"><span><kbd>r</kbd></span><span>Toggle shuffle</span></div> - <div class="help-row"><span><kbd>s</kbd></span><span>Toggle sets sidebar</span></div> - <div class="help-row"><span><kbd>S</kbd></span><span>Share selected media</span></div> + <div class="help-row"><span><kbd>s</kbd></span><span>Share selected media</span></div> <div class="help-row"><span><kbd>+</kbd> <kbd>−</kbd></span><span>Zoom in / out (image viewer)</span></div> <div class="help-row"><span><kbd>Shift+S</kbd></span><span>Toggle slideshow (images)</span></div> <div class="help-row"><span><kbd>c</kbd></span><span>Toggle crop mode (fullscreen)</span></div> diff --git a/web/js/api.js b/web/js/api.js index 28954a1..66fac59 100644 --- a/web/js/api.js +++ b/web/js/api.js @@ -17,11 +17,16 @@ async function api(path, options = {}) { if (res.status === 204) return null; if (res.status === 401) { + let msg = 'Unauthorized'; + try { + const j = await res.json(); + if (j.error) msg = j.error; + } catch {} const p = location.pathname; if (!p.includes('login') && !p.includes('bootstrap')) { location.href = '/login.html'; } - throw new Error('Unauthorized'); + throw new Error(msg); } if (!res.ok) { let msg = res.statusText; diff --git a/web/js/app.js b/web/js/app.js index ee515af..b673d91 100644 --- a/web/js/app.js +++ b/web/js/app.js @@ -310,6 +310,10 @@ function keyboardHandlers() { } function initChrome() { + document.getElementById('sidebar-toggle')?.addEventListener('click', () => { + toggleSidebar(); + }); + document.getElementById('menu-close')?.addEventListener('click', () => { document.getElementById('sidebar')?.classList.remove('open'); document.querySelector('.page')?.classList.remove('has-sidebar'); diff --git a/web/js/keyboard.js b/web/js/keyboard.js index 53ee3d0..49fa358 100644 --- a/web/js/keyboard.js +++ b/web/js/keyboard.js @@ -95,16 +95,6 @@ export function initKeyboard(handlers) { e.target.blur(); handlers.escape?.(e); } - if (e.key === 'ArrowDown' || e.key === 'j') { - e.target.blur(); - e.preventDefault(); - document.getElementById('media-grid')?.focus(); - handlers.navDown?.(e); - } - if (e.key === '?') { - e.preventDefault(); - handlers.searchHelp?.(e); - } return; } @@ -172,7 +162,7 @@ export function initKeyboard(handlers) { handlers.share?.(e); } } else { - handlers.sidebar?.(e); + handlers.share?.(e); } return; } |
