summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-07 09:45:04 +0300
committerPaul Buetow <paul@buetow.org>2026-05-07 09:45:04 +0300
commit730c4e6419e24807d5f1e0a79931b3e0a78bd60b (patch)
treeb7a436d5b160a6927a96999eacc144f7b408f868
parentc2e0a0b772582a81513d1c97ebba121dac555984 (diff)
h1 fix browser auth theme shortcuts QA
-rw-r--r--docs/keyboard-shortcuts.md5
-rwxr-xr-xstart.sh2
-rw-r--r--web/index.html8
-rw-r--r--web/js/api.js7
-rw-r--r--web/js/app.js4
-rw-r--r--web/js/keyboard.js12
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.
diff --git a/start.sh b/start.sh
index 82a3513..5a70392 100755
--- a/start.sh
+++ b/start.sh
@@ -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;
}