From 3de4cba402042bead7c65ffd034c96f4c295618c Mon Sep 17 00:00:00 2001 From: Jonathan Sykes Date: Thu, 8 Oct 2026 12:04:56 +0800 Subject: [PATCH 1/4] Align toolbar controls and provide full touch targets --- frontend/car-mode.css | 1 - frontend/styles.css | 26 +++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/frontend/car-mode.css b/frontend/car-mode.css index 8d869cf..9f0c2a2 100644 --- a/frontend/car-mode.css +++ b/frontend/car-mode.css @@ -4,4 +4,3 @@ .car-controls button { min-height: 110px; font: 650 clamp(22px, 3vw, 36px)/1.2 system-ui; background: #fff; color: #050607; border: 3px solid #fff; border-radius: 16px; } .car-exit { align-self: flex-start; min-height: 52px; padding: 12px 20px; background: #070809; color: #fff; border: 2px solid #fff; border-radius: 8px; } .car-mode button:focus-visible { outline: 4px solid #61caff; outline-offset: 4px; } -.voice-search { flex-shrink: 0; min-width: 44px; min-height: 44px; } diff --git a/frontend/styles.css b/frontend/styles.css index 7ef6f7e..16872d5 100755 --- a/frontend/styles.css +++ b/frontend/styles.css @@ -273,7 +273,7 @@ body::after { background: linear-gradient(180deg, rgba(16,16,19,0.7), transparent); backdrop-filter: blur(8px); } -.search-form { flex: 1; display: flex; gap: 10px; max-width: 760px; position: relative; } +.search-form { flex: 1; display: flex; align-items: center; gap: 10px; max-width: 760px; position: relative; } /* Recent-searches dropdown — device-local, kept in localStorage (RecentSearches in app.js) */ .search-recent { @@ -4257,6 +4257,30 @@ body.landscape-fs .player-stage { touch-action: none; } /* fullscreen (real or t .search-form { min-width: 0; } .search-form #searchInput { flex: 1 1 auto; min-width: 0; } +/* Eager toolbar geometry: these buttons exist before Car mode is loaded. */ +.topbar :is(#voiceSearchBtn, #carModeBtn, #updateIconBtn) { + flex: none; + width: 44px; height: 44px; min-width: 44px; min-height: 44px; + padding: 0; + align-items: center; justify-content: center; + display: inline-flex; +} +.topbar #updateIconBtn.hidden { display: none; } +.topbar :is(#voiceSearchBtn, #carModeBtn) svg { width: 22px; height: 22px; flex: none; } +.topbar :is(#voiceSearchBtn, #carModeBtn):hover { transform: none; } +@media (max-width: 430px) { + html[data-layout] .topbar, html[data-layout] #searchForm { gap: 4px; } + html[data-layout] #searchForm .search-btn { flex: none; padding-inline: 8px; } + html[data-layout="f7-swipe"] #searchInput { padding-right: 6px; } +} +@media (max-width: 860px) { + html[data-layout="bento-hub"] .topbar { + padding-top: calc(12px + env(safe-area-inset-top, 0px)); + padding-left: max(12px, env(safe-area-inset-left, 0px)); + padding-right: max(12px, env(safe-area-inset-right, 0px)); + } +} + /* iPhone/iPad: no double-tap page zoom (scrolling unaffected) */ html.ios-nozoom, html.ios-nozoom body { touch-action: manipulation; } From 66bbda51c7436219496b0f71f91925c9fa0f3d28 Mon Sep 17 00:00:00 2001 From: Jonathan Sykes Date: Fri, 9 Oct 2026 09:11:30 +0800 Subject: [PATCH 2/4] Keep saved thumbnails inside their grid column --- frontend/saved-page.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/frontend/saved-page.css b/frontend/saved-page.css index 6e6f430..139ece1 100644 --- a/frontend/saved-page.css +++ b/frontend/saved-page.css @@ -2,9 +2,10 @@ .saved-storage-text { min-width:0; color:var(--text-2); font-size:14px; font-variant-numeric:tabular-nums; } .saved-clear { flex:none; min-height:44px; padding:0 10px; border:0; background:transparent; color:var(--accent); font:inherit; cursor:pointer; } html[data-layout] .card.saved-card { display:grid; grid-template-columns:72px minmax(0,1fr) 96px; align-items:center; gap:12px; min-height:88px; } -html[data-layout] .saved-card .thumb { grid-column:1; grid-row:1; width:72px; } +html[data-layout] #cards .saved-card .thumb { grid-column:1; grid-row:1; width:100%; min-width:0; max-width:100%; flex:none; overflow:hidden; } +html[data-layout] #cards .saved-card .thumb img { width:100%; max-width:100%; height:100%; object-fit:cover; } html[data-layout] .saved-card .card-info { grid-column:2; grid-row:1; min-width:0; } -html[data-layout] .saved-card .card-title { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; overflow-wrap:anywhere; } +html[data-layout] .saved-card .card-title { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; overflow-wrap:anywhere; text-overflow:ellipsis; } html[data-layout] .saved-file-actions { grid-column:3; grid-row:1; display:flex; align-items:center; gap:8px; } .saved-file-action { width:44px; height:44px; min-width:44px; padding:10px; border:1px solid var(--line); border-radius:var(--radius-sm,8px); background:var(--bg-2); color:var(--text-2); cursor:pointer; } .saved-file-action svg { display:block; width:22px; height:22px; } @@ -13,4 +14,4 @@ html[data-layout] .saved-file-actions { grid-column:3; grid-row:1; display:flex; .saved-file-action.danger:hover, .saved-clear:hover { color:var(--accent); } .saved-file-action:focus-visible, .saved-clear:focus-visible { outline:2px solid var(--accent); outline-offset:3px; } .saved-file-action:disabled, .saved-clear:disabled { opacity:.5; cursor:wait; } -@media(min-width:900px) { html[data-layout] .card.saved-card { grid-template-columns:88px minmax(0,1fr) 96px; } html[data-layout] .saved-card .thumb { width:88px; } } +@media(min-width:900px) { html[data-layout] .card.saved-card { grid-template-columns:88px minmax(0,1fr) 96px; } } From 2001e77cee9c0e42a5ed1ab62e50a413333da961 Mon Sep 17 00:00:00 2001 From: Jonathan Sykes Date: Fri, 9 Oct 2026 14:28:23 +0800 Subject: [PATCH 3/4] Use theme-aware SVGs for download and offline actions --- frontend/admin.html | 9 +++++--- frontend/app.js | 30 ++++++++++++------------- frontend/download-actions.js | 37 ++++++++++++++++++++++++++++++- frontend/downloads-page.js | 6 +---- frontend/downloads.js | 2 +- frontend/glass-controls.js | 4 ++-- frontend/glass-controls.test.js | 2 +- frontend/index.html | 14 ++++++------ frontend/saved-page.js | 4 ++-- frontend/share-external.js | 10 ++++----- frontend/shell-core.js | 5 +++-- frontend/styles.css | 39 +++++++++++++++++++++++++++------ frontend/views-core.js | 22 +++++++++---------- 13 files changed, 122 insertions(+), 62 deletions(-) diff --git a/frontend/admin.html b/frontend/admin.html index 5c7eba0..d2dd8ac 100644 --- a/frontend/admin.html +++ b/frontend/admin.html @@ -312,7 +312,9 @@ main { padding-top: 16px; } } @media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } } - + .media-shape { display:none; } .media-shape-classic { display:inline; } +.media-icon { width:18px; height:18px; vertical-align:middle; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; } + @@ -407,7 +409,7 @@ - + @@ -508,7 +510,7 @@

Recent edits

- ⤓ Export all (JSON)
+ Export all (JSON)
@@ -569,6 +571,7 @@ +