commit fe77950f12b11534632d16e7529bf1efc3ff0026
parent 3dbc29034b3ae782ff432963925e35e8bfde1003
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Mon, 27 Apr 2026 23:29:20 -0400
feat(editor): hide system paths from dashboard, collapse on settings
The dashboard no longer prints the transcripts dir, and the resolved-paths
table on the settings page is wrapped in a closed <details> so a casual
screen-share doesn't leak local directory names. The summary toggles open
to reveal the same path/env-var view as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat:
3 files changed, 44 insertions(+), 26 deletions(-)
diff --git a/editor/app/page.tsx b/editor/app/page.tsx
@@ -85,10 +85,6 @@ export default async function Dashboard() {
</table>
</section>
)}
-
- <p className="text-sm text-zinc-500">
- Transcripts dir: <code className="text-xs">{paths.transcriptsDir}</code>
- </p>
</div>
);
}
diff --git a/editor/app/settings/page.tsx b/editor/app/settings/page.tsx
@@ -37,30 +37,32 @@ export default function SettingsPage() {
</section>
<section className="flex flex-col gap-3 border-t border-zinc-200 dark:border-zinc-800 pt-6">
- <div>
- <h2 className="text-lg font-semibold">Resolved paths</h2>
- <p className="text-sm text-zinc-500">
+ <details data-testid="system-paths">
+ <summary className="cursor-pointer text-lg font-semibold">
+ System paths
+ </summary>
+ <p className="text-sm text-zinc-500 mt-2">
Read-only view of <code>getPaths()</code>. Set the matching env
- vars (TRANSCRIPTS_DIR, EXPORT_PUBLIC_DIR, YTDLP_BIN, WHISPER_BIN,
- WHISPER_MODEL, PARALLEL_TRANSCRIBE_LIMIT) before launching to
- override.
+ vars (TRANSCRIPTS_DIR, SETTINGS_FILE, EXPORT_PUBLIC_DIR, YTDLP_BIN,
+ WHISPER_BIN, WHISPER_MODEL, PARALLEL_TRANSCRIBE_LIMIT) before
+ launching to override.
</p>
- </div>
- <table className="text-sm">
- <tbody>
- {pathRows.map(([key, value]) => (
- <tr
- key={key}
- className="border-b border-zinc-200 dark:border-zinc-800"
- >
- <th className="text-left font-medium py-2 pr-4 align-top">
- {key}
- </th>
- <td className="py-2 font-mono text-xs break-all">{value}</td>
- </tr>
- ))}
- </tbody>
- </table>
+ <table className="text-sm mt-3" data-testid="system-paths-table">
+ <tbody>
+ {pathRows.map(([key, value]) => (
+ <tr
+ key={key}
+ className="border-b border-zinc-200 dark:border-zinc-800"
+ >
+ <th className="text-left font-medium py-2 pr-4 align-top">
+ {key}
+ </th>
+ <td className="py-2 font-mono text-xs break-all">{value}</td>
+ </tr>
+ ))}
+ </tbody>
+ </table>
+ </details>
</section>
</div>
);
diff --git a/editor/cypress/e2e/dashboard-paths.cy.ts b/editor/cypress/e2e/dashboard-paths.cy.ts
@@ -0,0 +1,20 @@
+describe("Dashboard hides system paths", () => {
+ it("does not display 'transcripts dir' or the actual path on the dashboard", () => {
+ cy.resetData("empty");
+ cy.task("resolvePath", "test-transcripts").then((abs) => {
+ cy.visit("/");
+ cy.get("body").should("not.contain.text", "transcripts dir");
+ cy.get("body").should("not.contain.text", "Transcripts dir");
+ cy.get("body").should("not.contain.text", abs as string);
+ });
+ });
+
+ it("hides system paths under a closed details on settings, reveals on click", () => {
+ cy.resetData("empty");
+ cy.visit("/settings");
+ cy.findByTestId("system-paths").should("not.have.attr", "open");
+ cy.findByTestId("system-paths").find("summary").click();
+ cy.findByTestId("system-paths").should("have.attr", "open");
+ cy.findByText("transcriptsDir").should("be.visible");
+ });
+});