fix(site): Phone chip, Free forever Cost copy, and privacy GA disclosure (#868)
* fix(site): align Phone chip, Cost copy, and privacy with GA Use the official Android beta / iOS TestFlight chip on #ecosystem. Replace Free forever with Free and open source on privacy and open-source. Disclose vocalinux.com Google Analytics and scope no-telemetry claims to the installed app. Fixes #867 * fix(site): make privacy GA disclosure match the live gtag Spell out page views, the client-ID cookie, and IP/device processing for G-7NBBNJNNQ7. Align Data Collection with PRODUCT.md, drop the hidden telemetry weasel, and correct config.json plus the voice-storage row.
This commit is contained in:
@@ -42,7 +42,7 @@ const benefits = [
|
||||
iconBg: "bg-primary/10",
|
||||
},
|
||||
{
|
||||
title: "Free Forever",
|
||||
title: "Free and open source",
|
||||
description:
|
||||
"AGPL-3.0 licensed. Free to use, modify, and share. No freemium, no premium tier, no hidden costs.",
|
||||
icon: Heart,
|
||||
@@ -52,7 +52,7 @@ const benefits = [
|
||||
];
|
||||
|
||||
const vsProprietary = [
|
||||
{ feature: "Cost", vocalinux: "Free forever", proprietary: "$10-500/month or $500+ license" },
|
||||
{ feature: "Cost", vocalinux: "Free and open source", proprietary: "$10-500/month or $500+ license" },
|
||||
{ feature: "Source Code", vocalinux: "Fully open", proprietary: "Closed, proprietary" },
|
||||
{ feature: "Data Privacy", vocalinux: "Local engines by default", proprietary: "Often cloud-based" },
|
||||
{ feature: "Linux Support", vocalinux: "Native", proprietary: "Limited or none" },
|
||||
|
||||
@@ -984,7 +984,7 @@ export default function HomePage() {
|
||||
</span>
|
||||
iPhone + Android
|
||||
</span>
|
||||
<span className="chip">Phone beta</span>
|
||||
<span className="chip">Android beta / iOS TestFlight</span>
|
||||
</div>
|
||||
<h3>VocaPhone</h3>
|
||||
<p>
|
||||
|
||||
@@ -24,7 +24,7 @@ export default function PrivacyPage() {
|
||||
headline: "Vocalinux Privacy Policy",
|
||||
description:
|
||||
"How Vocalinux handles voice data: local engines on your machine, optional Remote API to a server you configure.",
|
||||
dateModified: "2026-02-19",
|
||||
dateModified: "2026-09-23",
|
||||
author: {
|
||||
"@type": "Person",
|
||||
name: "Jatin K Malik",
|
||||
@@ -92,8 +92,8 @@ export default function PrivacyPage() {
|
||||
</div>
|
||||
<h3 className="mb-2 text-xl font-semibold">Open Source</h3>
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Fully open source under AGPL-3.0. Inspect the code yourself on GitHub. No hidden
|
||||
telemetry or data collection.
|
||||
Fully open source under AGPL-3.0. Inspect the code yourself on GitHub. The installed
|
||||
app does not send usage telemetry.
|
||||
</p>
|
||||
</article>
|
||||
</section>
|
||||
@@ -107,31 +107,61 @@ export default function PrivacyPage() {
|
||||
</h2>
|
||||
<div className="space-y-4 text-muted-foreground">
|
||||
<p>
|
||||
<strong className="text-foreground">We do not collect any personal data.</strong> This
|
||||
includes:
|
||||
<strong className="text-foreground">
|
||||
The installed Vocalinux app does not send usage telemetry.
|
||||
</strong>{" "}
|
||||
It does not phone home. The installed app does not do the following
|
||||
for us:
|
||||
</p>
|
||||
<ul className="space-y-2">
|
||||
<li className="flex items-start gap-2">
|
||||
<CheckCircle2 className="mt-0.5 h-4 w-4 flex-shrink-0 text-primary" />
|
||||
No voice recordings or audio data
|
||||
Does not send voice recordings or audio data to us
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<CheckCircle2 className="mt-0.5 h-4 w-4 flex-shrink-0 text-primary" />
|
||||
No transcribed text
|
||||
Does not send transcribed text to us
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<CheckCircle2 className="mt-0.5 h-4 w-4 flex-shrink-0 text-primary" />
|
||||
No usage analytics or telemetry
|
||||
Does not send usage analytics or telemetry
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<CheckCircle2 className="mt-0.5 h-4 w-4 flex-shrink-0 text-primary" />
|
||||
No device fingerprints
|
||||
Does not send device fingerprints to us
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<CheckCircle2 className="mt-0.5 h-4 w-4 flex-shrink-0 text-primary" />
|
||||
No IP addresses or location data
|
||||
Does not collect IP addresses or location data for us
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
Local engines keep audio on your device. Remote API sends audio only
|
||||
to the server you configure.
|
||||
</p>
|
||||
<p>
|
||||
Those limits apply to the installed app. They do not describe this
|
||||
website.
|
||||
</p>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article className="rounded-[12px] border border-border bg-background p-6">
|
||||
<h2 className="mb-4 flex items-center gap-2 font-display text-2xl font-semibold">
|
||||
<Eye className="h-5 w-5 text-primary" />
|
||||
This website (vocalinux.com)
|
||||
</h2>
|
||||
<div className="space-y-4 text-muted-foreground">
|
||||
<p>
|
||||
vocalinux.com loads Google Analytics via the googletagmanager gtag
|
||||
script for measurement ID{" "}
|
||||
<code className="rounded bg-muted px-1.5 py-0.5">G-7NBBNJNNQ7</code>{" "}
|
||||
and runs gtag config with no IP anonymization and no cookie flags.
|
||||
That sends page views and a Google Analytics client identifier (a
|
||||
cookie) to Google. Google processes IP addresses and device and
|
||||
browser data. The installed Vocalinux app does not send usage
|
||||
telemetry.
|
||||
</p>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -174,7 +204,7 @@ export default function PrivacyPage() {
|
||||
</h2>
|
||||
<div className="space-y-4 text-muted-foreground">
|
||||
<p>
|
||||
Vocalinux stores configuration locally at <code className="rounded bg-muted px-1.5 py-0.5 bg-muted">~/.config/vocalinux/</code>:
|
||||
Vocalinux stores configuration locally at <code className="rounded bg-muted px-1.5 py-0.5">~/.config/vocalinux/config.json</code>:
|
||||
</p>
|
||||
<ul className="space-y-2">
|
||||
<li className="flex items-start gap-2">
|
||||
@@ -191,7 +221,7 @@ export default function PrivacyPage() {
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
This data is stored in plain text YAML format. You can view, edit, or delete it at
|
||||
This data is stored in JSON. You can view, edit, or delete it at
|
||||
any time.
|
||||
</p>
|
||||
</div>
|
||||
@@ -232,12 +262,12 @@ export default function PrivacyPage() {
|
||||
</tr>
|
||||
<tr className="border-b border-border">
|
||||
<td className="py-3 font-medium text-foreground">Voice recordings stored</td>
|
||||
<td className="py-3 text-primary">No</td>
|
||||
<td className="py-3 text-primary">Not by us; Remote API only if you enable it</td>
|
||||
<td className="py-3">Varies by service</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td className="py-3 font-medium text-foreground">Cost</td>
|
||||
<td className="py-3 text-primary">Free forever</td>
|
||||
<td className="py-3 text-primary">Free and open source</td>
|
||||
<td className="py-3">Subscription</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
Reference in New Issue
Block a user