fix: WCAG AAA contrast compliance, speed menu z-index, custom app icon

- Fix all text colors to meet WCAG 2.2 AAA 7:1 contrast ratios against
  dark backgrounds (--textMuted, --textDim, hover states across playlist,
  player, panels, tooltips)
- Fix speed menu rendering behind seek bar by correcting z-index stacking
  context (.controls z-index:10, .miniCtl z-index:3, .seek z-index:2)
- Replace default Tauri icons with custom TutorialVault icon across all
  required sizes (32-512px PNGs, ICO, ICNS, Windows Square logos)
- Update README: Fraunces → Bricolage Grotesque font reference
- Add collapsible dock pane persistence and keyboard-adjustable dividers
This commit is contained in:
Your Name
2026-02-19 18:23:38 +02:00
parent 4cd5d796f1
commit 4e21662e5f
29 changed files with 147 additions and 52 deletions

View File

@@ -155,6 +155,12 @@ export function initPlayer(): void {
if (d > 0) seek.value = String(Math.round((t / d) * 1000));
updateSeekFill();
updateTimeReadout();
// Update active row's mini progress bar in real time
const activeRow = document.querySelector('.row.active');
if (activeRow && d > 0) {
const bar = activeRow.querySelector('.rowProgress') as HTMLElement;
if (bar) bar.style.width = clamp((t / d) * 100, 0, 100) + '%';
}
}
cb.updateInfoPanel?.();
});
@@ -434,8 +440,8 @@ export function cycleSpeed(delta: number): void {
cb.updateInfoPanel?.();
cb.notify?.(`Speed: ${r}x`);
setSuppressTick(true);
if (library) { api.setFolderRate(r).catch(() => {}); }
setSuppressTick(false);
if (library) { api.setFolderRate(r).catch(() => {}).finally(() => setSuppressTick(false)); }
else { setSuppressTick(false); }
}
/** Load a video by index and handle the onloadedmetadata callback. */
@@ -530,7 +536,7 @@ export function buildSpeedMenu(active: number): void {
left.appendChild(dot); left.appendChild(txt);
row.appendChild(left);
row.onclick = async () => {
row.onclick = () => {
closeSpeedMenu();
const r = clamp(Number(s), 0.25, 3);
player.playbackRate = r;
@@ -540,8 +546,8 @@ export function buildSpeedMenu(active: number): void {
buildSpeedMenu(r);
cb.updateInfoPanel?.();
setSuppressTick(true);
if (library) { try { await api.setFolderRate(r); } catch (_) {} }
setSuppressTick(false);
if (library) { api.setFolderRate(r).catch(() => {}).finally(() => setSuppressTick(false)); }
else { setSuppressTick(false); }
};
speedMenu.appendChild(row);
}