From 2d85afee70d08d796e61e3ea9fcbecfe78d0632b Mon Sep 17 00:00:00 2001 From: Jatin K Malik Date: Sat, 14 Mar 2026 18:03:10 -0700 Subject: [PATCH] feat(docs): add Voca Ecosystem section to README and website (#317) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(docs): add Voca Ecosystem section to README and website Add cross-project ecosystem shoutouts linking VocaLinux, VocaMac, and VocaWin. README gets a table with platform, project, website, GitHub, and status columns. Website gets animated cards with platform logos, tech badges, status indicators, and links. Uses simpleicons CDN for Apple logo and inline SVG for Windows logo (simpleicons CDN does not serve a Windows icon). * feat(web): UI refinements — terminal install boxes, contrast fixes, wider card grids - Replace CodeBlock components with terminal-style command boxes (traffic-light dots, copy button, dark bg) - Fix dark mode contrast: add dark:text-black to badges and buttons on green backgrounds - Header: replace GitHub icon with filled yellow Star icon next to star count - Hero buttons: rename and reorder (Install Now, We're Open Source, Use Windows or Mac?) - Engine section: widen container from max-w-5xl to max-w-7xl to match features - Ecosystem section: add VocaLinux 'You are here' card, widen from max-w-4xl to max-w-7xl - Fix Windows icon color to official Microsoft Fluent blue (#0078D4) - Remove unused CodeBlock import * feat(web): link sub-pages, reorder cards, restyle hero, update FAQ, remove em-dashes - Add href prop to FeatureCard: 6 tiles link to /offline/, /use-cases/, /gpu-acceleration/, /shortcuts/, /wayland/, /for-developers/ - Engine section: reorder to Whisper > whisper.cpp (center) > VOSK, move 'Compare all engines' to centered link below cards - whisper.cpp card keeps 'GPU acceleration' link - FAQ answers: convert to ReactNode with inline links to sub-pages, fix 6 stale answers (distros, requirements, languages, shortcuts, voice commands, engine switching) - Hero buttons: GitHub-dark 'We're Open Source', ghost 'Use Windows or Mac?' - Ecosystem: reorder to VocaMac > VocaLinux (center) > VocaWin, change badge from 'You are here' to 'Beta' - Remove all em-dashes (9 occurrences) --- README.md | 12 ++ web/src/app/page.tsx | 482 +++++++++++++++++++++++++++++++++---------- 2 files changed, 380 insertions(+), 114 deletions(-) diff --git a/README.md b/README.md index 3bd9dbb..d10cb75 100644 --- a/README.md +++ b/README.md @@ -357,6 +357,18 @@ This script generates all three sounds using the same smooth glide algorithm. Yo - [x] ~~Wayland support via IBus~~ ✅ - [ ] Voice command customization +## 🌐 The Voca Ecosystem + +Vocalinux is part of a family of privacy-first, offline voice dictation tools. Same mission, every operating system. + +| Platform | Project | Website | GitHub | Status | +|----------|---------|---------|--------|--------| +| 🐧 Linux | **VocaLinux** | [vocalinux.com](https://vocalinux.com) | [jatinkrmalik/vocalinux](https://github.com/jatinkrmalik/vocalinux) | ✅ Beta v0.9.0 | +| 🍎 macOS | **VocaMac** | [vocamac.com](https://vocamac.com) | [jatinkrmalik/vocamac](https://github.com/jatinkrmalik/vocamac) | 🚀 Beta | +| 🪟 Windows | **VocaWin** | [vocawin.com](https://vocawin.com) | [jatinkrmalik/vocawin](https://github.com/jatinkrmalik/vocawin) | 📋 Planned | + +> Each platform uses native technologies for the best possible integration, while sharing the same privacy-first philosophy and offline-only architecture. + ## 🤝 Contributing We welcome contributions! Whether it's bug reports, feature requests, or code contributions, please check out our [Contributing Guide](CONTRIBUTING.md). diff --git a/web/src/app/page.tsx b/web/src/app/page.tsx index 9a285bf..16a0b98 100644 --- a/web/src/app/page.tsx +++ b/web/src/app/page.tsx @@ -31,11 +31,10 @@ import { } from "lucide-react"; import { ThemeToggle } from "@/components/theme-toggle"; import { VocalinuxLogo } from "@/components/optimized-image"; -import { CodeBlock } from "@/components/code-block"; import { useInView } from "react-intersection-observer"; // The one-liner install command (split into three lines for display) -// Always uses main/install.sh — the installer dynamically resolves the latest release tag via GitHub API +// Always uses main/install.sh. The installer dynamically resolves the latest release tag via GitHub API const installCommands = { interactiveInstallCommand: `curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --interactive`, @@ -150,30 +149,43 @@ const FeatureCard = ({ icon, title, description, + href, }: { icon: React.ReactNode; title: string; description: string; + href?: string; }) => { const [ref, inView] = useInView({ triggerOnce: true, threshold: 0.1, }); - return ( + + const card = (
{icon}

{title}

-

{description}

+

{description}

+ {href && ( +
+ Learn more +
+ )}
); + + if (href) { + return {card}; + } + return card; }; const CopyButton = ({ text, className = "" }: { text: string; className?: string }) => { @@ -299,9 +311,9 @@ export default function HomePage() { rel="noopener noreferrer" className="flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors" > - + {stars !== null && ( - + {stars.toLocaleString()} )} @@ -381,7 +393,7 @@ export default function HomePage() {
- Beta Release — Try it now! + Beta Release: Try it now!
@@ -406,24 +418,24 @@ export default function HomePage() { className="inline-flex items-center justify-center gap-2 bg-primary text-white dark:text-zinc-900 hover:bg-primary/90 px-8 py-4 rounded-xl text-lg font-semibold transition-all hover:scale-105 shadow-lg shadow-primary/25" > - Install Now — It's Free - - - - Watch Demo + Install Now - - View Source + + We're Open Source + + + + Use Windows or Mac? @@ -590,7 +602,7 @@ export default function HomePage() { Offline Voice Dictation Features for Linux

- Finally, Linux users get the voice dictation experience they deserve — + Finally, Linux users get the voice dictation experience they deserve. no compromises on privacy, no cloud dependencies, just pure productivity.

@@ -600,32 +612,38 @@ export default function HomePage() { } title="100% Offline & Private" - description="All processing happens on your machine. Your voice data never leaves your computer — complete privacy guaranteed." + description="All processing happens on your machine. Your voice data never leaves your computer. Complete privacy guaranteed." + href="/offline/" /> } title="Universal App Support" - description="Works everywhere — terminals, browsers, IDEs, office apps, and any text input field on your Linux system." + description="Works everywhere: terminals, browsers, IDEs, office apps, and any text input field on your Linux system." + href="/use-cases/" /> } title="Blazing Fast" description="whisper.cpp brings C++ optimized inference with Vulkan GPU support. Works with AMD, Intel, and NVIDIA GPUs!" + href="/gpu-acceleration/" /> } title="Simple Activation" description="Choose toggle mode (double-tap) or push-to-talk mode (hold key). Simple, predictable control." + href="/shortcuts/" /> } title="X11 & Wayland Support" - description="Works seamlessly with both display servers. Modern Wayland and traditional X11 — we've got you covered." + description="Works seamlessly with both display servers. Modern Wayland and traditional X11, fully supported." + href="/wayland/" /> } title="Fully Configurable" - description="Adjust model size, language, activation mode, and voice command behavior. GUI settings panel or config file — your choice." + description="Adjust model size, language, activation mode, and voice command behavior. GUI settings panel or config file, your choice." + href="/for-developers/" /> @@ -639,7 +657,7 @@ export default function HomePage() {

While macOS and Windows have had built-in voice dictation for years, - Linux users have been left behind — until now. + Linux users have been left behind. Until now.

    {[ @@ -715,17 +733,21 @@ export default function HomePage() { Fastest installation (~1-2 min), Vulkan GPU support for AMD/Intel/NVIDIA

    - -
    - - {oneClickInstallCommand} - +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +                        $ {oneClickInstallCommand}
    +                      
    +
    @@ -741,17 +763,21 @@ export default function HomePage() { PyTorch-based engine, NVIDIA GPU only (~5-10 min, ~2.3GB download)

    -
    -
    - - {oneClickInstallWhisper} - +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +                        $ {oneClickInstallWhisper}
    +                      
    +
    @@ -767,17 +793,21 @@ export default function HomePage() { For low-RAM systems (4GB or less) - minimal footprint (~40MB)

    -
    -
    - - {oneClickInstallVosk} - +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +                        $ {oneClickInstallVosk}
    +                      
    +
    @@ -845,17 +875,21 @@ export default function HomePage() { Clean removal in one command

    -
    -
    - - {uninstallCommand} - +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +                      $ {uninstallCommand}
    +                    
    +
    @@ -932,7 +966,7 @@ export default function HomePage() { {/* Speech Engines Section */}
    -
    +

    @@ -946,9 +980,39 @@ export default function HomePage() {
    +
    +
    +
    + +
    +

    Whisper (OpenAI)

    +
    +

    + OpenAI's original PyTorch-based Whisper model. NVIDIA GPU only. +

    +
      + {[ + "PyTorch-based implementation", + "NVIDIA GPU support (CUDA)", + "Same accuracy as whisper.cpp", + "Larger download (~2.3GB)", + ].map((item, i) => ( +
    • + + {item} +
    • + ))} +
    +
    + Install time: ~5-10 minutes with PyTorch +
    +
    +
    + +
    - + DEFAULT
    @@ -977,35 +1041,10 @@ export default function HomePage() {
    Model sizes: Tiny (39MB) • Base (74MB) • Small (244MB) • Medium (769MB) • Large (1.5GB)
    -
    -
    - - -
    -
    -
    - -
    -

    Whisper (OpenAI)

    -
    -

    - OpenAI's original PyTorch-based Whisper model. NVIDIA GPU only. -

    -
      - {[ - "PyTorch-based implementation", - "NVIDIA GPU support (CUDA)", - "Same accuracy as whisper.cpp", - "Larger download (~2.3GB)", - ].map((item, i) => ( -
    • - - {item} -
    • - ))} -
    -
    - Install time: ~5-10 minutes with PyTorch +
    + + GPU acceleration +
    @@ -1040,6 +1079,14 @@ export default function HomePage() {
    + + +
    + + Compare all engines + +
    +

    @@ -1055,48 +1102,80 @@ export default function HomePage() {
    - {[ + {([ { question: "Is Vocalinux really 100% offline?", - answer: - "Yes! All speech recognition processing happens locally on your machine. Your voice data never leaves your computer. No internet connection is required after installation (models are downloaded during setup).", + answer: ( + <> + Yes! All speech recognition processing happens locally on your machine. Your voice data never leaves your computer. No internet connection is required after installation (models are downloaded during setup).{" "} + Read more about offline voice dictation. + + ), }, { question: "Which Linux distributions are supported?", - answer: - "Vocalinux works on most modern Linux distributions including Ubuntu 22.04+, Fedora, Debian, Arch Linux, Linux Mint, Pop!_OS, and more. It supports both X11 and Wayland display servers.", + answer: ( + <> + Vocalinux works on most modern Linux distributions including Ubuntu 22.04+, Debian 11+, Fedora 39+, Arch Linux, and openSUSE Tumbleweed. Experimental support is available for Gentoo, Alpine, Void, Solus, and more. It supports both X11 and Wayland display servers.{" "} + See installation guides. + + ), }, { question: "How do I switch between speech engines?", - answer: - 'You can switch engines via the settings GUI or command line. Use "vocalinux --engine whisper_cpp" (default, recommended), "vocalinux --engine whisper" (OpenAI), or "vocalinux --engine vosk" (lightweight). whisper.cpp offers the best balance of speed and accuracy.', + answer: ( + <> + You can switch engines in the Settings dialog or via the command line. The three options are whisper.cpp (default, recommended for speed and GPU support), OpenAI Whisper (PyTorch-based, NVIDIA only), and VOSK (lightweight, CPU only). From the CLI: use "--engine whisper_cpp", "--engine whisper", or "--engine vosk".{" "} + Compare all engines. + + ), }, { question: "What are the system requirements?", - answer: - "Minimum: 4GB RAM, dual-core CPU, Python 3.8+. For Whisper large models: 8GB+ RAM recommended. The tiny/base Whisper models and VOSK work great on modest hardware.", + answer: ( + <> + Minimum: 4GB RAM, Python 3.8+, ~200MB disk space. 8GB+ RAM recommended for larger Whisper models. The default whisper.cpp tiny model (~39MB) works great on modest hardware. GPU acceleration is available via Vulkan for AMD, Intel, and NVIDIA GPUs.{" "} + View full installation requirements. + + ), }, { question: "Can I use it in languages other than English?", - answer: - "Yes! Whisper supports 99+ languages with varying accuracy levels. VOSK has models for 20+ languages. Download additional language models as needed.", + answer: ( + <> + Yes! whisper.cpp and OpenAI Whisper support 99+ languages with varying accuracy levels. VOSK includes models for 10 languages out of the box (English, Hindi, Spanish, French, German, Italian, Portuguese, Russian, Chinese, and more). Additional language models can be downloaded as needed.{" "} + See supported languages. + + ), }, { question: "How do I customize the activation shortcut?", - answer: - "The default is toggle mode with double-tap Ctrl, and you can switch to push-to-talk in Settings. You can also customize this via the GUI settings dialog or by editing ~/.config/vocalinux/config.json.", + answer: ( + <> + The default is toggle mode with double-tap Ctrl. You can switch to push-to-talk in Settings, and choose between Left Ctrl, Right Ctrl, Alt, Shift, and other modifier keys. Configuration is also available by editing ~/.config/vocalinux/config.json.{" "} + View shortcut options. + + ), }, { question: "Can I disable voice commands?", - answer: - "Yes. Voice commands are optional and can be enabled or disabled in Settings. VOSK-focused setups can use auto behavior while keeping full control over command parsing.", + answer: ( + <> + Yes. Voice commands can be toggled on or off in the Settings dialog. By default, commands are automatically enabled for VOSK and disabled for Whisper/whisper.cpp, but you can override this at any time.{" "} + Learn about voice commands. + + ), }, { question: "Is Vocalinux free?", - answer: - "Yes, Vocalinux is completely free and open-source, licensed under GPL-3.0. No premium tiers, no subscriptions, no tracking — just free software.", + answer: ( + <> + Yes, Vocalinux is completely free and open-source, licensed under GPL-3.0. No premium tiers, no subscriptions, no tracking. Just free software.{" "} + Learn about the project. + + ), }, - ].map((item, i) => ( + ] as { question: string; answer: React.ReactNode }[]).map((item, i) => (
    @@ -1113,6 +1192,181 @@ export default function HomePage() {
    + {/* The Voca Family - Ecosystem Section */} +
    +
    + +
    +

    + The Voca Family +

    +

    + Voice dictation, done right, on every platform. +

    +
    +
    + +
    + {/* VocaMac Card */} + +
    +
    + + Beta + +
    +
    +
    + macOS +
    +

    VocaMac

    +
    +

    + Native macOS menu bar app. 100% offline voice-to-text powered by WhisperKit and CoreML with Apple Silicon acceleration. +

    +
    + + WhisperKit + + + CoreML + + + Apple Silicon + + + AGPL-3.0 + +
    + +
    +
    + + {/* VocaLinux Card (center) */} + +
    +
    + + Beta + +
    +
    +
    + Linux +
    +

    VocaLinux

    +
    +

    + Voice dictation for Linux. System tray app with whisper.cpp, Vulkan GPU acceleration, and full offline support. +

    +
    + + whisper.cpp + + + Vulkan GPU + + + GTK + + + GPL-3.0 + +
    + +
    +
    + + {/* VocaWin Card */} + +
    +
    + + Coming Soon + +
    +
    +
    + +
    +

    VocaWin

    +
    +

    + Voice dictation for Windows. Native system tray app with offline-first architecture. Currently in planning. +

    +
    + + whisper.cpp + + + Native Tray + + + Planned + +
    + +
    +
    +
    +
    +
    + {/* CTA Section */}