Merge feature/24 into integration/spec16
This commit is contained in:
@@ -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?",
|
||||
|
||||
@@ -308,6 +308,11 @@ export default function FasterWhisperPage() {
|
||||
</code>
|
||||
))}
|
||||
</div>
|
||||
<p className="mb-4 text-sm text-muted-foreground">
|
||||
Fork status: these commands fetch the upstream install script, so they
|
||||
install Vocalinux (upstream), not Voculinux. Fork release artefacts
|
||||
are not published yet.
|
||||
</p>
|
||||
<ol className="space-y-4">
|
||||
{setupSteps.map((step, index) => (
|
||||
<li
|
||||
|
||||
@@ -204,6 +204,11 @@ export default function FlatpakPage() {
|
||||
<Download className="h-5 w-5 text-primary" aria-hidden="true" />
|
||||
Install from the VocaHQ remote
|
||||
</h2>
|
||||
<p className="mb-6 text-sm text-muted-foreground">
|
||||
Fork status: the fork Flatpak remote below is not published yet —
|
||||
these commands resolve once the first fork release lands. The install
|
||||
script installs upstream Vocalinux today.
|
||||
</p>
|
||||
<ol className="space-y-6">
|
||||
<li className="rounded-[12px] border border-border bg-background p-5">
|
||||
<h3 className="font-semibold">1. {installSteps[0].name}</h3>
|
||||
|
||||
@@ -51,19 +51,19 @@ bash /tmp/vl.sh`;
|
||||
|
||||
const DEB_OPTION: InstallOption = {
|
||||
label: "Native .deb package",
|
||||
note: "Download the .deb for your CPU from GitHub Releases (arm64 files are attached too). It is a thin package: Python and GTK come from the distro, whisper.cpp runs on the CPU, and there is no auto-update. On Wayland, add yourself to the input group (sudo usermod -aG input $USER, then log out and back in) or the default hotkey stays off.",
|
||||
note: "Fork status: the fork .deb is not published yet. Download the .deb for your CPU from upstream GitHub Releases in the meantime (arm64 files are attached too). It is a thin package: Python and GTK come from the distro, whisper.cpp runs on the CPU, and there is no auto-update. On Wayland, add yourself to the input group (sudo usermod -aG input $USER, then log out and back in) or the default hotkey stays off.",
|
||||
command: "sudo apt install ./voculinux_*_amd64.deb",
|
||||
};
|
||||
|
||||
const RPM_OPTION: InstallOption = {
|
||||
label: "Native .rpm package",
|
||||
note: "Download the .rpm for your CPU from GitHub Releases (aarch64 files are attached too). It is a thin package: Python and GTK come from Fedora, whisper.cpp runs on the CPU, and there is no auto-update or COPR yet. On Wayland, add yourself to the input group (sudo usermod -aG input $USER, then log out and back in) or the default hotkey stays off.",
|
||||
note: "Fork status: the fork .rpm is not published yet. Download the .rpm for your CPU from upstream GitHub Releases in the meantime (aarch64 files are attached too). It is a thin package: Python and GTK come from Fedora, whisper.cpp runs on the CPU, and there is no auto-update or COPR yet. On Wayland, add yourself to the input group (sudo usermod -aG input $USER, then log out and back in) or the default hotkey stays off.",
|
||||
command: "sudo dnf install ./voculinux-*.x86_64.rpm",
|
||||
};
|
||||
|
||||
const FLATPAK_OPTION: InstallOption = {
|
||||
label: "Flatpak from the VocaHQ remote",
|
||||
note: "Not on Flathub. The self-hosted vocahq remote updates with flatpak update and ships whisper.cpp only.",
|
||||
note: "Fork status: the fork Flatpak remote is not published yet. Not on Flathub. The self-hosted vocahq remote updates with flatpak update and ships whisper.cpp only once published.",
|
||||
command:
|
||||
"flatpak install https://vocahq.github.io/voculinux-flatpak/com.voculinux.Voculinux.flatpakref",
|
||||
};
|
||||
@@ -185,7 +185,7 @@ const distroConfig: Record<DistroSlug, DistroConfig> = {
|
||||
otherInstallOptions: [
|
||||
{
|
||||
label: "AUR packages",
|
||||
note: "voculinux builds the canonical release sdist against Arch dependencies. voculinux-bin installs the prebuilt release AppImage. voculinux-git is a community package that tracks main. The three conflict, so install only one.",
|
||||
note: "Fork status: fork AUR packages are not published yet. Once published, voculinux builds the canonical release sdist against Arch dependencies. voculinux-bin installs the prebuilt release AppImage. voculinux-git is a community package that tracks main. The three conflict, so install only one.",
|
||||
command: `yay -S voculinux # canonical release sdist, built against Arch dependencies
|
||||
yay -S voculinux-git # community package; tracks main`,
|
||||
},
|
||||
@@ -223,7 +223,7 @@ yay -S voculinux-git # community package; tracks main`,
|
||||
FLATPAK_OPTION,
|
||||
{
|
||||
label: "AppImage",
|
||||
note: "Download the x86_64 or aarch64 AppImage from GitHub Releases. It starts on Tumbleweed and uses Vulkan through the host driver, but still needs host text-injection tools (xdotool on X11; wtype, ydotool or clipboard tools on Wayland).",
|
||||
note: "Download the x86_64 or aarch64 AppImage from upstream GitHub Releases until fork releases land. It starts on Tumbleweed and uses Vulkan through the host driver, but still needs host text-injection tools (xdotool on X11; wtype, ydotool or clipboard tools on Wayland).",
|
||||
command: `chmod +x Voculinux-*-x86_64.AppImage # or aarch64
|
||||
./Voculinux-*-x86_64.AppImage`,
|
||||
},
|
||||
@@ -535,9 +535,9 @@ export default async function DistroInstallPage({
|
||||
</code>
|
||||
</div>
|
||||
<p className="mt-4 text-sm text-muted-foreground">
|
||||
Fork status: this command fetches the upstream install script, so
|
||||
it installs Vocalinux (upstream), not Voculinux. Fork release
|
||||
artefacts are not published yet.
|
||||
Fork status: this command fetches the upstream install script, so it
|
||||
installs Vocalinux (upstream), not Voculinux. Fork release artefacts
|
||||
are not published yet.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -217,12 +217,12 @@ export default function NixosInstallPage() {
|
||||
</h1>
|
||||
<p className="mb-4 max-w-4xl text-lg text-muted-foreground">
|
||||
Voculinux does not yet publish its own Nix flake. The flake below is
|
||||
the upstream Vocalinux flake: it builds the app against nixpkgs,
|
||||
ships a NixOS module and a Home Manager module, and wires every
|
||||
the upstream Vocalinux flake: it builds the app against nixpkgs, ships
|
||||
a NixOS module and a Home Manager module, and wires every
|
||||
text-injection and clipboard tool onto the wrapped binary’s
|
||||
PATH. Its snippets install Vocalinux (upstream), not Voculinux. For
|
||||
Voculinux on Void Linux, use the signed xbps repository or the
|
||||
install script.
|
||||
Voculinux on Void Linux, use the install script today; a signed xbps
|
||||
repository will ship with fork releases once published.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -37,7 +37,8 @@ const distroGuides = [
|
||||
{
|
||||
name: "Debian",
|
||||
href: "/install/debian/",
|
||||
description: "Debian 12+ with the install script or the native .deb package.",
|
||||
description:
|
||||
"Debian 12+ with the install script or the native .deb package.",
|
||||
icon: Terminal,
|
||||
},
|
||||
{
|
||||
@@ -49,7 +50,8 @@ const distroGuides = [
|
||||
{
|
||||
name: "Linux Mint",
|
||||
href: "/install/linux-mint/",
|
||||
description: "Voice dictation on Linux Mint releases built on Ubuntu 24.04.",
|
||||
description:
|
||||
"Voice dictation on Linux Mint releases built on Ubuntu 24.04.",
|
||||
icon: Laptop,
|
||||
},
|
||||
{
|
||||
@@ -88,7 +90,8 @@ export default function InstallGuidesPage() {
|
||||
<h1>Install Voice Dictation on Linux</h1>
|
||||
<p className="subpage-lede">
|
||||
Pick your distro guide and follow a proven setup flow for offline
|
||||
speech-to-text on Linux. Every guide is written for real desktop usage.
|
||||
speech-to-text on Linux. Every guide is written for real desktop
|
||||
usage.
|
||||
</p>
|
||||
|
||||
<div className="mt-8">
|
||||
@@ -99,12 +102,13 @@ export default function InstallGuidesPage() {
|
||||
/>
|
||||
</div>
|
||||
<p className="mt-4 text-sm text-muted-foreground">
|
||||
Then launch <code>voculinux</code>.
|
||||
Then launch <code>vocalinux</code> — the upstream binary the script
|
||||
installs today. Fork releases will ship <code>voculinux</code>.
|
||||
</p>
|
||||
<p className="mt-4 text-sm text-muted-foreground">
|
||||
Fork status: this command fetches the upstream install script, so
|
||||
it installs Vocalinux (upstream), not Voculinux. Fork release
|
||||
artefacts are not published yet.
|
||||
Fork status: this command fetches the upstream install script, so it
|
||||
installs Vocalinux (upstream), not Voculinux. Fork release artefacts
|
||||
are not published yet.
|
||||
</p>
|
||||
<div className="install-alts">
|
||||
<a
|
||||
@@ -115,7 +119,7 @@ export default function InstallGuidesPage() {
|
||||
<p className="install-alt-kicker">No installer</p>
|
||||
<h2>AppImage</h2>
|
||||
<p>
|
||||
x86_64 or aarch64 from GitHub Releases. No root. Host
|
||||
x86_64 or aarch64 from upstream GitHub Releases. No root. Host
|
||||
text-injection tools are still required.
|
||||
</p>
|
||||
</a>
|
||||
@@ -127,18 +131,15 @@ export default function InstallGuidesPage() {
|
||||
<p className="install-alt-kicker">New</p>
|
||||
<h2>Native packages</h2>
|
||||
<p>
|
||||
.deb for Debian 12+ and Ubuntu 24.04+. .rpm for Fedora.
|
||||
x86_64 and aarch64 on every release.
|
||||
.deb for Debian 12+ and Ubuntu 24.04+. .rpm for Fedora. x86_64 and
|
||||
aarch64 on every fork release once published.
|
||||
</p>
|
||||
</a>
|
||||
<a
|
||||
className="install-alt"
|
||||
href="/flatpak/"
|
||||
>
|
||||
<a className="install-alt" href="/flatpak/">
|
||||
<p className="install-alt-kicker">Auto-updates</p>
|
||||
<h2>Flatpak</h2>
|
||||
<p>
|
||||
Install once from the Flatpak remote and{" "}
|
||||
Install once from the fork Flatpak remote once published and{" "}
|
||||
<code>flatpak update</code> carries each stable release. Or
|
||||
sideload the .flatpak bundle.
|
||||
</p>
|
||||
@@ -151,8 +152,9 @@ export default function InstallGuidesPage() {
|
||||
<p className="install-alt-kicker">Snap Store</p>
|
||||
<h2>Snap</h2>
|
||||
<p>
|
||||
<code>snap install voculinux --edge</code>. amd64 only for
|
||||
now; a .snap is attached to every release too.
|
||||
<code>snap install voculinux --edge</code>, once the fork Snap is
|
||||
published (not published yet). amd64 only; a .snap will be
|
||||
attached to fork releases too.
|
||||
</p>
|
||||
</a>
|
||||
<a
|
||||
@@ -163,8 +165,8 @@ export default function InstallGuidesPage() {
|
||||
<p className="install-alt-kicker">Arch</p>
|
||||
<h2>AUR</h2>
|
||||
<p>
|
||||
<code>yay -S voculinux</code>, or voculinux-bin for the
|
||||
prebuilt package.
|
||||
<code>yay -S voculinux</code>, or voculinux-bin for the prebuilt
|
||||
package. Fork packages are not published yet.
|
||||
</p>
|
||||
</a>
|
||||
<a
|
||||
@@ -175,11 +177,16 @@ export default function InstallGuidesPage() {
|
||||
<p className="install-alt-kicker">From source</p>
|
||||
<h2>Build it yourself</h2>
|
||||
<p>
|
||||
Clone the repo and run <code>./install.sh</code>. The install
|
||||
guide has the full source path.
|
||||
Clone the repo and run <code>./install.sh</code>. The upstream
|
||||
install guide has the full source path.
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
<p className="mt-4 text-sm text-muted-foreground">
|
||||
Fork status: packaged artefacts (AppImage, .deb/.rpm, Flatpak, Snap,
|
||||
AUR) are not published yet — the cards above link upstream artefacts
|
||||
or reserved fork names until the first fork release lands.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mt-12 grid gap-4 md:grid-cols-3">
|
||||
@@ -191,7 +198,7 @@ export default function InstallGuidesPage() {
|
||||
href={guide.href}
|
||||
className="subpage-card group p-5"
|
||||
>
|
||||
<div className="mb-3 inline-flex rounded-[10px] bg-primary/10 p-2.5">
|
||||
<div className="bg-primary/10 mb-3 inline-flex rounded-[10px] p-2.5">
|
||||
<Icon className="h-5 w-5 text-primary" />
|
||||
</div>
|
||||
<h2 className="mb-2 text-xl font-semibold">{guide.name}</h2>
|
||||
@@ -212,13 +219,18 @@ export default function InstallGuidesPage() {
|
||||
<ul className="space-y-3 text-muted-foreground">
|
||||
<li>
|
||||
Launch with{" "}
|
||||
<code className="rounded bg-muted px-1.5 py-0.5 font-mono text-sm text-foreground">
|
||||
vocalinux
|
||||
</code>{" "}
|
||||
(the upstream binary; fork releases will use{" "}
|
||||
<code className="rounded bg-muted px-1.5 py-0.5 font-mono text-sm text-foreground">
|
||||
voculinux
|
||||
</code>
|
||||
.
|
||||
).
|
||||
</li>
|
||||
<li>
|
||||
Hold Right Alt (Option) to dictate, or switch to toggle mode in Settings.
|
||||
Hold Right Alt (Option) to dictate, or switch to toggle mode in
|
||||
Settings.
|
||||
</li>
|
||||
<li>
|
||||
Choose whisper.cpp for speed, Whisper for maximum model
|
||||
|
||||
+56
-45
@@ -292,8 +292,8 @@ export default function HomePage() {
|
||||
<em>In any app.</em>
|
||||
</h1>
|
||||
<p className="hero-lede">
|
||||
Hold Right Alt. Text lands in the focused window. Local engines
|
||||
by default.
|
||||
Hold Right Alt. Text lands in the focused window. Local engines by
|
||||
default.
|
||||
</p>
|
||||
<div className="hero-cta">
|
||||
<div className="hero-actions">
|
||||
@@ -480,9 +480,9 @@ export default function HomePage() {
|
||||
<p className="story-label">model / path</p>
|
||||
<h3>Choose where the model runs.</h3>
|
||||
<p>
|
||||
On-device mode is the default: download a speech-to-text
|
||||
model and process here. If you want shared compute, point
|
||||
Remote API at a server you run.
|
||||
On-device mode is the default: download a speech-to-text model
|
||||
and process here. If you want shared compute, point Remote API
|
||||
at a server you run.
|
||||
</p>
|
||||
</div>
|
||||
<div
|
||||
@@ -626,7 +626,8 @@ export default function HomePage() {
|
||||
/>
|
||||
<figcaption>
|
||||
<strong>Engine and model controls</strong>
|
||||
Pick whisper.cpp, Faster Whisper, Whisper, VOSK, Parakeet, or a Remote API you trust.
|
||||
Pick whisper.cpp, Faster Whisper, Whisper, VOSK, Parakeet, or a
|
||||
Remote API you trust.
|
||||
</figcaption>
|
||||
</figure>
|
||||
<figure className="shot shot-frame">
|
||||
@@ -720,19 +721,15 @@ export default function HomePage() {
|
||||
<article className="boundary">
|
||||
<h3>What you can inspect</h3>
|
||||
<p>
|
||||
The application is open source under AGPL-3.0. Settings, engines,
|
||||
and the injection path are in the repository.
|
||||
The application is open source under AGPL-3.0. Settings,
|
||||
engines, and the injection path are in the repository.
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section
|
||||
className="band"
|
||||
id="install"
|
||||
aria-labelledby="install-title"
|
||||
>
|
||||
<section className="band" id="install" aria-labelledby="install-title">
|
||||
<div className="shell min-w-0">
|
||||
<div className="section-head">
|
||||
<h2 className="section-title" id="install-title">
|
||||
@@ -741,8 +738,8 @@ export default function HomePage() {
|
||||
<p className="section-lede">
|
||||
The interactive installer detects hardware, lets you pick an
|
||||
engine, and wires the desktop app. Ubuntu, Fedora, Debian, Arch,
|
||||
and openSUSE. Native .deb, .rpm, Snap, and Flatpak packages
|
||||
ship with every release.
|
||||
and openSUSE. Native .deb, .rpm, Snap, and Flatpak packages are
|
||||
planned for every fork release.
|
||||
</p>
|
||||
</div>
|
||||
<TerminalBlock
|
||||
@@ -750,11 +747,14 @@ export default function HomePage() {
|
||||
displayCommand={interactiveInstallDisplayCommand}
|
||||
label="install.sh --interactive"
|
||||
/>
|
||||
<p className="section-lede">Then launch <code>voculinux</code>.</p>
|
||||
<p className="section-lede">
|
||||
Then launch <code>vocalinux</code> — the upstream binary the script
|
||||
installs today. Fork releases will ship <code>voculinux</code>.
|
||||
</p>
|
||||
<p className="mt-4 text-sm text-muted-foreground">
|
||||
Fork status: this command fetches the upstream install script, so
|
||||
it installs Vocalinux (upstream), not Voculinux. Fork release
|
||||
artefacts are not published yet.
|
||||
Fork status: this command fetches the upstream install script, so it
|
||||
installs Vocalinux (upstream), not Voculinux. Fork release artefacts
|
||||
are not published yet.
|
||||
</p>
|
||||
<div className="install-alts">
|
||||
<a
|
||||
@@ -766,8 +766,8 @@ export default function HomePage() {
|
||||
<h3>xbps repository</h3>
|
||||
<p>
|
||||
Signed xbps repository data will ship with releases once the
|
||||
packaging pipeline lands. Until then, use the install script
|
||||
or build from source.
|
||||
packaging pipeline lands. Until then, use the install script or
|
||||
build from source.
|
||||
</p>
|
||||
</a>
|
||||
<a
|
||||
@@ -778,7 +778,7 @@ export default function HomePage() {
|
||||
<p className="install-alt-kicker">No installer</p>
|
||||
<h3>AppImage</h3>
|
||||
<p>
|
||||
x86_64 or aarch64 from GitHub Releases. No root. Host
|
||||
x86_64 or aarch64 from upstream GitHub Releases. No root. Host
|
||||
text-injection tools are still required.
|
||||
</p>
|
||||
</a>
|
||||
@@ -790,8 +790,8 @@ export default function HomePage() {
|
||||
<p className="install-alt-kicker">New</p>
|
||||
<h3>Native packages</h3>
|
||||
<p>
|
||||
.deb for Debian 12+ and Ubuntu 24.04+. .rpm for Fedora.
|
||||
x86_64 and aarch64 on every release.
|
||||
.deb for Debian 12+ and Ubuntu 24.04+. .rpm for Fedora. x86_64
|
||||
and aarch64 on every fork release once published.
|
||||
</p>
|
||||
</a>
|
||||
<a
|
||||
@@ -802,7 +802,7 @@ export default function HomePage() {
|
||||
<p className="install-alt-kicker">Auto-updates</p>
|
||||
<h3>Flatpak</h3>
|
||||
<p>
|
||||
Install once from the Flatpak remote and{" "}
|
||||
Install once from the fork Flatpak remote once published and{" "}
|
||||
<code>flatpak update</code> carries each stable release. Or
|
||||
sideload the .flatpak bundle.
|
||||
</p>
|
||||
@@ -815,8 +815,9 @@ export default function HomePage() {
|
||||
<p className="install-alt-kicker">Snap Store</p>
|
||||
<h3>Snap</h3>
|
||||
<p>
|
||||
<code>snap install voculinux --edge</code>. amd64 only for
|
||||
now; a .snap is attached to every release too.
|
||||
<code>snap install voculinux --edge</code>, once the fork Snap
|
||||
is published (not published yet). amd64 only; a .snap will be
|
||||
attached to fork releases too.
|
||||
</p>
|
||||
</a>
|
||||
<a
|
||||
@@ -827,8 +828,8 @@ export default function HomePage() {
|
||||
<p className="install-alt-kicker">Arch</p>
|
||||
<h3>AUR</h3>
|
||||
<p>
|
||||
<code>yay -S voculinux</code>, or voculinux-bin for the
|
||||
prebuilt package.
|
||||
<code>yay -S voculinux</code>, or voculinux-bin for the prebuilt
|
||||
package. Fork packages are not published yet.
|
||||
</p>
|
||||
</a>
|
||||
<a
|
||||
@@ -839,11 +840,16 @@ export default function HomePage() {
|
||||
<p className="install-alt-kicker">From source</p>
|
||||
<h3>Build it yourself</h3>
|
||||
<p>
|
||||
Clone the repo and run <code>./install.sh</code>. The install
|
||||
guide has the full source path.
|
||||
Clone the repo and run <code>./install.sh</code>. The upstream
|
||||
install guide has the full source path.
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
<p className="mt-4 text-sm text-muted-foreground">
|
||||
Fork status: packaged artefacts (AppImage, .deb/.rpm, Flatpak, Snap,
|
||||
AUR, xbps) are not published yet — the cards above link upstream
|
||||
artefacts or reserved fork names until the first fork release lands.
|
||||
</p>
|
||||
<p className="section-link" style={{ marginTop: "1.6rem" }}>
|
||||
<Link href="/install/ubuntu/">Ubuntu guide</Link>
|
||||
{" · "}
|
||||
@@ -854,7 +860,10 @@ export default function HomePage() {
|
||||
<Link href="/install/">All distro notes</Link>
|
||||
</p>
|
||||
<div className="section-head" style={{ marginTop: "3.5rem" }}>
|
||||
<h3 className="section-title" style={{ fontSize: "clamp(1.6rem, 3vw, 2.2rem)" }}>
|
||||
<h3
|
||||
className="section-title"
|
||||
style={{ fontSize: "clamp(1.6rem, 3vw, 2.2rem)" }}
|
||||
>
|
||||
Uninstall
|
||||
</h3>
|
||||
</div>
|
||||
@@ -881,9 +890,8 @@ export default function HomePage() {
|
||||
answer: (
|
||||
<>
|
||||
Local engines (whisper.cpp, Faster Whisper, Whisper, VOSK,
|
||||
and Parakeet) process speech on your machine. Remote API is
|
||||
optional and only
|
||||
talks to servers you configure.{" "}
|
||||
and Parakeet) process speech on your machine. Remote API
|
||||
is optional and only talks to servers you configure.{" "}
|
||||
<Link href="/offline/">Offline details</Link>.
|
||||
</>
|
||||
),
|
||||
@@ -908,9 +916,9 @@ export default function HomePage() {
|
||||
question: "How do I switch between speech engines?",
|
||||
answer: (
|
||||
<>
|
||||
Settings dialog or CLI:{" "}
|
||||
<code>--engine whisper_cpp</code>, <code>whisper</code>,{" "}
|
||||
<code>vosk</code>, or <code>remote_api</code>.{" "}
|
||||
Settings dialog or CLI: <code>--engine whisper_cpp</code>,{" "}
|
||||
<code>whisper</code>, <code>vosk</code>, or{" "}
|
||||
<code>remote_api</code>.{" "}
|
||||
<Link href="/compare/">Compare engines</Link>.
|
||||
</>
|
||||
),
|
||||
@@ -981,9 +989,9 @@ export default function HomePage() {
|
||||
</h2>
|
||||
<p className="section-lede">
|
||||
Voculinux is a hard fork of Vocalinux for Void Linux (glibc,
|
||||
Wayland-primary under niri). The internal Python module keeps
|
||||
the upstream name so fixes stay cheap to port by hand; upstream
|
||||
links below are retained as provenance.
|
||||
Wayland-primary under niri). The internal Python module keeps the
|
||||
upstream name so fixes stay cheap to port by hand; upstream links
|
||||
below are retained as provenance.
|
||||
</p>
|
||||
</div>
|
||||
<div className="family-grid">
|
||||
@@ -1025,8 +1033,8 @@ export default function HomePage() {
|
||||
</div>
|
||||
<h3>Vocalinux (upstream)</h3>
|
||||
<p>
|
||||
The upstream Linux dictation app this fork is ported from.
|
||||
Fixes are taken by hand, one at a time.
|
||||
The upstream Linux dictation app this fork is ported from. Fixes
|
||||
are taken by hand, one at a time.
|
||||
</p>
|
||||
</a>
|
||||
<a
|
||||
@@ -1060,7 +1068,9 @@ export default function HomePage() {
|
||||
|
||||
<section className="band band-bright final-cta">
|
||||
<div className="shell">
|
||||
<h2 className="section-title">Install and try a real dictation session.</h2>
|
||||
<h2 className="section-title">
|
||||
Install and try a real dictation session.
|
||||
</h2>
|
||||
<p className="section-lede">
|
||||
Free and open source under AGPL-3.0. Local engines by default.
|
||||
</p>
|
||||
@@ -1078,7 +1088,8 @@ export default function HomePage() {
|
||||
</a>
|
||||
</div>
|
||||
<p className="hero-cta-note">
|
||||
Then hold Right Alt and speak into the app already in front of you.
|
||||
Then hold Right Alt and speak into the app already in front of
|
||||
you.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -320,6 +320,11 @@ export default function ParakeetPage() {
|
||||
</code>
|
||||
))}
|
||||
</div>
|
||||
<p className="mb-4 text-sm text-muted-foreground">
|
||||
Fork status: these commands fetch the upstream install script, so they
|
||||
install Vocalinux (upstream), not Voculinux. Fork release artefacts
|
||||
are not published yet.
|
||||
</p>
|
||||
<ol className="space-y-4">
|
||||
{setupSteps.map((step, index) => (
|
||||
<li
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
import { SITE_NAME, SITE_URL } from "../seo";
|
||||
|
||||
const readPage = (...segments: string[]): string =>
|
||||
fs.readFileSync(path.join(process.cwd(), "src", "app", ...segments), "utf-8");
|
||||
|
||||
describe("voculinux rebrand (ticket #24)", () => {
|
||||
it("names the fork site", () => {
|
||||
expect(SITE_NAME).toBe("Voculinux");
|
||||
@@ -9,3 +14,93 @@ describe("voculinux rebrand (ticket #24)", () => {
|
||||
expect(SITE_URL).toBe("https://voculinux.com");
|
||||
});
|
||||
});
|
||||
|
||||
describe("fork install honesty (ticket #24, AC1)", () => {
|
||||
const home = readPage("page.tsx");
|
||||
const install = readPage("install", "page.tsx");
|
||||
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 [
|
||||
["home", home],
|
||||
["install", install],
|
||||
] as const) {
|
||||
expect(`${name}: ${source}`).not.toContain("ship with every release");
|
||||
}
|
||||
});
|
||||
|
||||
it("does not tell users to launch the fork binary after the upstream script", () => {
|
||||
for (const [name, source] of [
|
||||
["home", home],
|
||||
["install", install],
|
||||
] as const) {
|
||||
expect(`${name}: ${source}`).not.toContain(
|
||||
"Then launch <code>voculinux</code>",
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
it("discloses fork status on every packaged-artefact surface", () => {
|
||||
for (const [name, source] of [
|
||||
["home", home],
|
||||
["install", install],
|
||||
["distro", distro],
|
||||
["flatpak", flatpak],
|
||||
] as const) {
|
||||
expect(`${name} discloses fork status: ${source}`).toContain(
|
||||
"Fork status:",
|
||||
);
|
||||
expect(`${name} states artefacts are unpublished: ${source}`).toMatch(
|
||||
/not published yet|not yet published|once published/,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
it("does not present the signed xbps repository as available today", () => {
|
||||
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],
|
||||
["install", install],
|
||||
["distro", distro],
|
||||
] as const) {
|
||||
expect(`${name} marks upstream artefacts: ${source}`).toMatch(
|
||||
/upstream GitHub Releases|upstream artefacts|upstream install script/,
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user