diff --git a/scripts/capture-quietware-screenshots.mjs b/scripts/capture-quietware-screenshots.mjs index a2c378c..535ef72 100644 --- a/scripts/capture-quietware-screenshots.mjs +++ b/scripts/capture-quietware-screenshots.mjs @@ -83,5 +83,25 @@ try { console.error(`root route skipped: ${e.message}`); } +// Files page — SPA navigation via the sidebar item. +try { + console.log("\n=== files page (best effort) ==="); + await page.evaluate(() => { + const items = Array.from(document.querySelectorAll('button, a, [role="button"], li')); + const target = items.find(el => (el.textContent || "").trim().toLowerCase() === "files"); + if (target) target.click(); + }); + await page.waitForTimeout(1500); + for (const mode of MODES.slice(1, 3)) { + await setMode(mode); + await page.waitForTimeout(400); + const file = `${OUT}/files__${mode.id}.png`; + await page.screenshot({ path: file, fullPage: false }); + console.log(` files ${mode.id}`); + } +} catch (e) { + console.error(`files page skipped: ${e.message}`); +} + await browser.close(); console.log(`\nWrote screenshots to ${OUT}/`); diff --git a/src/lib/pages/FilesPage.svelte b/src/lib/pages/FilesPage.svelte index abcc61a..75aef89 100644 --- a/src/lib/pages/FilesPage.svelte +++ b/src/lib/pages/FilesPage.svelte @@ -11,6 +11,8 @@ import LumotiaNotice from "$lib/ui/LumotiaNotice.svelte"; import LumotiaProgress from "$lib/ui/LumotiaProgress.svelte"; import LumotiaMenu from "$lib/ui/LumotiaMenu.svelte"; + // v0.3 Phase 5d — quietware layout for Files page. + import LumotiaPageSkeleton from "$lib/ui/LumotiaPageSkeleton.svelte"; import { exportTranscript } from "$lib/utils/export.js"; import { hasTauriRuntime } from "$lib/utils/runtime"; import { toasts } from "$lib/stores/toasts.svelte.js"; @@ -30,7 +32,25 @@ let unlistenEnter = null; let unlistenLeave = null; + // v0.3 Phase 5d — quietware layout switch. MutationObserver on + // mirrors the SettingsPage / DictationPage + // pattern. Without quietware the existing v0.2 layout renders. + let isQuietware = $state(false); + let quietwareObserver: MutationObserver | null = null; + onMount(async () => { + if (typeof document !== "undefined") { + const sync = () => { + isQuietware = document.documentElement.dataset.design === "quietware"; + }; + sync(); + quietwareObserver = new MutationObserver(sync); + quietwareObserver.observe(document.documentElement, { + attributes: true, + attributeFilter: ["data-design"], + }); + } + unlistenDrop = await listen("tauri://drag-drop", async (event) => { isDragOver = false; if (event.payload?.paths?.length > 0) { @@ -45,6 +65,8 @@ if (unlistenDrop) unlistenDrop(); if (unlistenEnter) unlistenEnter(); if (unlistenLeave) unlistenLeave(); + quietwareObserver?.disconnect(); + quietwareObserver = null; }); async function handleBrowse() { @@ -175,7 +197,117 @@ } -
Transcribe audio files locally.
+Transcribing
+ {#if fileName} +{fileName}
+ {/if} +{progressText}
+ {/if} +