fix(web): align privacy and capability wording with PRODUCT.md

PRODUCT.md promises no usage telemetry in the installed app, a guaranteed
whisper.cpp default, best-effort extras and audio leaving the machine only
through a user-configured remote API. Copy that went further is corrected:
"Zero Data Collection", "Truly Private" and the maintainer-cannot-see claim
are gone, the hero and ribbon say "no app telemetry" because the site itself
loads analytics, and the engine lists name whisper.cpp as the default with
the rest as extras. The privacy, FAQ, offline and home pages now say the app
uses the network for model downloads and the update check, without audio or
transcripts.
This commit is contained in:
2026-11-06 18:22:17 +05:30
parent 37262ced0e
commit 26aa5a0d54
4 changed files with 21 additions and 15 deletions
+2 -2
View File
@@ -41,11 +41,11 @@ const faqCategories = [
questions: [
{
q: "Does Voculinux work offline?",
a: "Local engines (whisper.cpp, Whisper, and VOSK) run on your Linux machine. Remote API is optional and only talks to a server you configure.",
a: "Local engines run on your Linux machine: whisper.cpp is the default, and Faster Whisper, Whisper, VOSK and Parakeet are best-effort extras. Remote API is optional and only talks to a server you configure; audio leaves the machine for that server.",
},
{
q: "Does Voculinux send any data to external servers?",
a: "Local engines do not send voice data externally. Remote API mode sends audio only to the transcription server URL you configure.",
a: "Local engines do not send voice data externally. Remote API mode sends audio only to the transcription server URL you configure. The app also uses the network for model downloads and for its update check against GitHub Releases; neither carries your audio or transcripts.",
},
{
q: "Is my voice data stored anywhere?",
+4 -4
View File
@@ -23,9 +23,9 @@ const benefits = [
iconBg: "bg-primary/10",
},
{
title: "Zero Data Collection",
title: "No usage telemetry",
description:
"No telemetry, no analytics, no usage tracking. Local engines have nowhere to send audio unless you enable Remote API.",
"The installed app sends no usage telemetry or analytics. Local engines do not send audio anywhere unless you enable Remote API. Model downloads and update checks still use the network.",
icon: Database,
iconColor: "text-primary",
iconBg: "bg-primary/10",
@@ -61,7 +61,7 @@ const sensitiveUseCases = [
{
title: "Local engines keep audio on the machine",
description:
"whisper.cpp, Whisper, and VOSK process speech on your hardware. That is a default for those engines, not a legal or compliance promise.",
"Local engines process speech on your hardware: whisper.cpp is the default, and Faster Whisper, Whisper, VOSK and Parakeet are best-effort extras. That is a default for those engines, not a legal or compliance promise.",
},
{
title: "Works after the model is downloaded",
@@ -281,7 +281,7 @@ export default function OfflinePage() {
</section>
<section className="rounded-[12px] border border-border bg-muted p-8">
<h2 className="mb-4 font-display text-2xl font-semibold">Truly Private Voice Dictation</h2>
<h2 className="mb-4 font-display text-2xl font-semibold">Voice Dictation That Stays on Your Machine by Default</h2>
<p className="mb-6 text-muted-foreground">
Install Voculinux and use a local engine if you want speech recognition on the machine.
Remote API stays optional.
+7 -6
View File
@@ -98,7 +98,7 @@ const homeJsonLd = [
name: "Does Voculinux collect usage telemetry?",
acceptedAnswer: {
"@type": "Answer",
text: "No. The installed app does not send usage telemetry, analytics events, or background usage pings. Even the project maintainer cannot see how many people install or actively use Voculinux.",
text: "No. The installed app does not send usage telemetry or analytics events. Its update checker only asks GitHub Releases whether a newer version exists.",
},
},
{
@@ -240,7 +240,7 @@ const ribbonItems = [
"no account",
"system tray",
"whisper.cpp",
"no telemetry",
"no app telemetry",
];
export default function HomePage() {
@@ -320,7 +320,7 @@ export default function HomePage() {
</div>
<div className="hero-proof">
<span>X11 and Wayland</span>
<span>No telemetry</span>
<span>No app telemetry</span>
<span>AGPL-3.0</span>
</div>
</div>
@@ -716,8 +716,9 @@ export default function HomePage() {
<article className="boundary">
<h3>What uses a network</h3>
<p>
Model and app downloads, plus any Remote API host you add.
Nothing is sent to a Voca speech cloud.
Model downloads, the update check against GitHub Releases, and
any Remote API host you add. Nothing is sent to a Voca speech
cloud.
</p>
</article>
<article className="boundary">
@@ -895,7 +896,7 @@ export default function HomePage() {
{
question: "Does Voculinux collect usage telemetry?",
answer:
"No. The installed app does not send usage telemetry, analytics events, or background usage pings.",
"No. The installed app does not send usage telemetry or analytics events. Its update checker only asks GitHub Releases whether a newer version exists.",
},
{
question: "Which Linux distributions are supported?",
+8 -3
View File
@@ -139,6 +139,11 @@ export default function PrivacyPage() {
Local engines keep audio on your device. Remote API sends audio only
to the server you configure.
</p>
<p>
The installed app does use the network for model downloads and for
its update check against GitHub Releases. Neither request carries
your audio or transcripts. Settings has a proxy page for both.
</p>
<p>
Those limits apply to the installed app. They do not describe this
website.
@@ -179,7 +184,7 @@ export default function PrivacyPage() {
</li>
<li className="border-l-2 border-primary pl-4">
<strong className="text-foreground">2. Local Processing</strong> - Audio is
processed by whisper.cpp, Whisper, or VOSK on your CPU/GPU
processed by your local engine (whisper.cpp by default) on your CPU/GPU
</li>
<li className="border-l-2 border-primary pl-4">
<strong className="text-foreground">3. Text Output</strong> - Transcribed text is
@@ -242,7 +247,7 @@ export default function PrivacyPage() {
</thead>
<tbody className="text-sm text-muted-foreground">
<tr className="border-b border-border">
<td className="py-3 font-medium text-foreground">Data leaves device</td>
<td className="py-3 font-medium text-foreground">Audio leaves device</td>
<td className="py-3 text-primary">
Only with Remote API
</td>
@@ -251,7 +256,7 @@ export default function PrivacyPage() {
<tr className="border-b border-border">
<td className="py-3 font-medium text-foreground">Internet required</td>
<td className="py-3 text-primary">
Only for Remote API or a model download
Only for Remote API, a model download or the update check
</td>
<td className="py-3 text-primary">Yes</td>
</tr>