From cfd5bba65cc3f11c747c219d86b90ddcf5bf376f Mon Sep 17 00:00:00 2001 From: soubarnak Date: Fri, 6 Nov 2026 09:41:36 +0530 Subject: [PATCH] fix(web): close AC1 gap on faq, faster-whisper and parakeet pages Extend the AC1 honesty tests to the faq install answer and the faster-whisper/parakeet install commands, and add fork-status plus upstream-install-script disclosure on all three surfaces. Fixes #24 --- web/src/app/faq/page.tsx | 2 +- web/src/app/faster-whisper/page.tsx | 5 ++++ web/src/app/parakeet/page.tsx | 5 ++++ .../lib/__tests__/voculinux-rebrand.test.ts | 30 +++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/web/src/app/faq/page.tsx b/web/src/app/faq/page.tsx index 1d3c3b6..b3100bf 100644 --- a/web/src/app/faq/page.tsx +++ b/web/src/app/faq/page.tsx @@ -22,7 +22,7 @@ const faqCategories = [ questions: [ { q: "How do I install Voculinux?", - a: "Run the one-liner installer: curl -fsSL https://raw.githubusercontent.com/VocaHQ/vocalinux/main/install.sh | bash. The installer handles dependencies and configuration. You can also download an AppImage from GitHub Releases if you prefer a no-root portable binary (host xdotool/wtype/ydotool still required for text injection), or grab a .deb, .rpm, Snap, or Flatpak package for your distro.", + a: "Run the one-liner installer: curl -fsSL https://raw.githubusercontent.com/VocaHQ/vocalinux/main/install.sh | bash. Fork status: this fetches the upstream install script, so it installs Vocalinux (upstream), not Voculinux; fork release artefacts are not published yet. The installer handles dependencies and configuration. You can also download an AppImage from upstream GitHub Releases if you prefer a no-root portable binary (host xdotool/wtype/ydotool still required for text injection), or grab a .deb, .rpm, Snap, or Flatpak package for your distro.", }, { q: "Which Linux distributions are supported?", diff --git a/web/src/app/faster-whisper/page.tsx b/web/src/app/faster-whisper/page.tsx index febfabf..9f8c448 100644 --- a/web/src/app/faster-whisper/page.tsx +++ b/web/src/app/faster-whisper/page.tsx @@ -308,6 +308,11 @@ export default function FasterWhisperPage() { ))} +

+ Fork status: these commands fetch the upstream install script, so they + install Vocalinux (upstream), not Voculinux. Fork release artefacts + are not published yet. +

    {setupSteps.map((step, index) => (
  1. ))} +

    + Fork status: these commands fetch the upstream install script, so they + install Vocalinux (upstream), not Voculinux. Fork release artefacts + are not published yet. +

      {setupSteps.map((step, index) => (
    1. { const distro = readPage("install", "[distro]", "page.tsx"); const nixos = readPage("install", "nixos", "page.tsx"); const flatpak = readPage("flatpak", "page.tsx"); + const faq = readPage("faq", "page.tsx"); + const fasterWhisper = readPage("faster-whisper", "page.tsx"); + const parakeet = readPage("parakeet", "page.tsx"); it("does not promise packaged artefacts with every release", () => { for (const [name, source] of [ @@ -62,6 +65,33 @@ describe("fork install honesty (ticket #24, AC1)", () => { expect(`nixos: ${nixos}`).not.toContain("use the signed xbps repository"); }); + it("discloses fork status on the faq install answer", () => { + expect(`faq discloses fork status: ${faq}`).toContain("Fork status:"); + expect(`faq marks upstream script: ${faq}`).toMatch( + /upstream install script|upstream Vocalinux|upstream GitHub Releases/, + ); + expect(`faq states artefacts unpublished: ${faq}`).toMatch( + /not published yet|not yet published|once published/, + ); + }); + + it("labels the upstream install script on engine option pages", () => { + for (const [name, source] of [ + ["faster-whisper", fasterWhisper], + ["parakeet", parakeet], + ] as const) { + expect(`${name} discloses fork status: ${source}`).toContain( + "Fork status:", + ); + expect(`${name} marks upstream script: ${source}`).toMatch( + /upstream install script/, + ); + expect(`${name} states artefacts unpublished: ${source}`).toMatch( + /not published yet|not yet published|once published/, + ); + } + }); + it("labels upstream release links as upstream until fork releases land", () => { for (const [name, source] of [ ["home", home],