Commit Graph
14 Commits
Author SHA1 Message Date
Jatin K MalikandGitHub 6a1bf7513a fix: update website version to 0.4.0-alpha (#86)
The website was displaying an outdated version (0.3.0-alpha) instead of
the current version (0.4.0-alpha) from src/vocalinux/version.py.

Updated version references in:
- web/src/app/page.tsx (header badge)
- web/src/app/layout.tsx (structured data)
2026-01-28 20:27:47 -08:00
Jatin K MalikandGitHub 9bae706bbd fix: download install.sh from main to get --tag support (#78)
The v0.3.0-alpha release was created before the --tag feature was
added to install.sh, so installing from that tag fails with "Unknown
option: --tag=v0.3.0-alpha".

Solution: Always download install.sh from main (which has --tag support)
and pass the release tag as a parameter. This ensures users get a working
installer that can install the specific stable release.

Changes:
- web/src/app/page.tsx: Download from main instead of ${latestRelease}
- README.md: Update install commands to download from main
- docs/INSTALL.md: Update install command
- .github/workflows/release.yml: Update release notes
2026-01-28 19:36:06 -08:00
4d8f029c8f fix: Install script now uses release tag instead of main branch (#75)
Problem: Even though the website fetched install.sh from a specific release tag,
the script itself would clone the repository from main branch, installing
potentially unstable/untested code.

Solution:
- Add --tag parameter to install.sh to specify which release to install
- Default to v0.3.0-alpha (latest stable) instead of main
- Clone the specific tag using 'git clone --branch <tag>'
- Update website to pass --tag parameter with fetched release

Changes:
- install.sh: Add --tag parameter, default to v0.3.0-alpha, clone specific tag
- web/src/app/page.tsx: Pass --tag=<version> to install script

This ensures users install the exact release version they intended, not
whatever code is currently on main branch.

Co-authored-by: Claude Opus <noreply@anthropic.com>
2026-01-26 01:02:46 -08:00
dff07ac960 Fix: Use latest release tag for install commands (#74)
* fix: Use latest release tag for install commands instead of main branch

The web install commands previously pointed to install.sh from the main branch,
which could be unstable/untested code. Now they dynamically fetch the latest
release tag from GitHub API and use that for the install script URLs.

Changes:
- Add getInstallCommands() function that takes a release tag
- Add latestRelease state that fetches from GitHub releases API
- Update all install commands to use the fetched release tag
- Fallback to 'main' if GitHub API fails

* docs: Update README and docs to use latest release tag

Also update GitHub release workflow to use the release tag dynamically.

Changes:
- README.md: Update install commands to use v0.3.0-alpha tag
- docs/INSTALL.md: Update install command to use v0.3.0-alpha tag
- .github/workflows/release.yml: Use ${{ github.ref_name }} for install URL
- Add note pointing to GitHub Releases for latest version

---------

Co-authored-by: Claude Opus <noreply@anthropic.com>
2026-01-26 00:45:34 -08:00
jatinkrmalik b5534e74c1 chore: bump version to 0.3.0-alpha for new release 2026-01-20 19:41:29 -08:00
Jatin K MalikandGitHub 7a6d0d4e2b feat: flexible Whisper installation options for different system configurations (#63)
* fix: VOSK-only install and CLI arg handling for low-memory systems

Fixes several issues reported by users on low-memory systems (8GB RAM):

1. Install script: Don't auto-install Whisper in non-interactive mode
   - Previously, running 'curl | bash' would install Whisper by default
   - Now requires explicit --with-whisper flag to install Whisper
   - Prevents OOM errors on systems with limited RAM

2. CLI arguments: Command-line flags now properly override saved config
   - --engine vosk now works even if config file has whisper set
   - --model flag also properly overrides saved model setting
   - Checks sys.argv to detect if user explicitly provided arguments

3. Default engine: Changed from 'whisper' to 'vosk'
   - VOSK works on low-memory systems without OOM issues
   - Users can still install and use Whisper with --with-whisper flag
   - Existing configs with 'whisper' engine are still respected

Reported issues:
- OOM during installation on 8GB RAM system
- vocalinux --engine vosk being ignored
- Config file not respected when trying to force VOSK

* fix: keep whisper as default engine, improve test robustness

- Reverted default engine back to 'whisper' for better accuracy
- Install script still defaults to VOSK-only install (--with-whisper for Whisper)
- CLI args still properly override saved config
- Improved test_config_manager tests to handle module caching issues

* fix: default to Whisper install, --no-whisper for VOSK-only on low-RAM systems

Updated install behavior:
- Default (curl|bash): Installs Whisper for best experience
- --no-whisper flag: Skips Whisper AND creates config with VOSK as default engine

This allows low-RAM users (8GB) to run:
  curl -fsSL .../install.sh | bash -s -- --no-whisper

Which will:
1. Skip installing torch/whisper (avoids OOM)
2. Create ~/.config/vocalinux/config.json with engine='vosk'
3. App will use VOSK by default without needing CLI flags

* docs: clarify --no-whisper is for low-RAM systems (8GB or less)

Updated README and website to explain that --no-whisper flag:
- Is intended for systems with 8GB RAM or less
- Avoids out-of-memory errors during installation
- Configures VOSK as the default speech recognition engine

* feat: add --whisper-cpu flag for CPU-only PyTorch installation

New installation option for users without NVIDIA GPU or with limited RAM:

Install script changes:
- Added --whisper-cpu flag: Installs CPU-only PyTorch (~200MB vs ~2.3GB)
- Uses https://download.pytorch.org/whl/cpu index for smaller torch package
- Interactive mode now offers 3 options: GPU, CPU-only, or skip Whisper
- Updated help text to explain all Whisper installation options

Documentation updates:
- README: Added --whisper-cpu example with explanation
- Website: Added new 'Whisper CPU-only' install option section

Installation options summary:
- Default (curl|bash): Whisper + GPU/CUDA support (~2.3GB, 5-10 min)
- --whisper-cpu: Whisper + CPU-only PyTorch (~200MB, 3-4 min)
- --no-whisper: VOSK only, no Whisper (~2-3 min)
2026-01-20 19:19:09 -08:00
Jatin K MalikandGitHub 35c091f09b Add Google Analytics tracking to website (#61)
* Add Google Analytics tracking to website

- Add GA script tags to layout.tsx head section
- Remove @next/third-parties dependency from package.json
- Use measurement ID G-7NBBNJNNQ7 for tracking

* Fix Google Analytics integration for static export

- Use Next.js Script component instead of inline scripts
- Add 'afterInteractive' strategy for optimal loading
- GA scripts now properly included in static build output
2026-01-19 23:38:44 -08:00
Jatin K MalikandGitHub 7426055336 Fix: Prevent horizontal scrolling on mobile for code blocks (#59)
* Fix: Prevent horizontal scrolling on mobile for code blocks [web]

- Wrap SyntaxHighlighter components in overflow-x-auto containers
- Add customStyle prop with maxWidth and overflowX for proper mobile handling
- Add min-w-0 to parent cards to prevent grid overflow
- Wrap uninstall command pre tag in overflow container
- Ensures code blocks scroll within their containers on mobile devices

* Style: Match uninstall command box with install sections [web]

- Use SyntaxHighlighter for uninstall command (consistent with install sections)
- Add red icon background to distinguish from install commands
- Add descriptive subtitle 'Clean removal in one command'
- Extract uninstallCommand as constant like install commands
- Maintain responsive overflow handling for mobile
2026-01-19 23:21:38 -08:00
jatinkrmalik 5ca1a1cbf7 Fix: Use Next.js Link component for internal navigation [web]
- Replace <a href='/'> with <Link href='/'> in header logo
- Replace <a href='/'> with <Link href='/'> in footer logo
- Fixes ESLint no-html-link-for-pages errors
2026-01-19 17:44:53 -08:00
jatinkrmalik b869c13ff5 Fix CI: Simplify deploy-website condition [web]
Deploy website whenever web-build succeeds on main branch.
The web-build job already has the conditional logic for when to build.
2026-01-19 17:43:38 -08:00
Jatin K MalikandGitHub 99b6fb6062 Website Beta v2: UI Polish and Improvements (#56)
* feat(web): Complete website overhaul for beta release

Major updates to make the website beta-ready:

## Content & Design
- Completely rewritten homepage with modern, catchy design
- Prominent one-click installation command in hero section
- Clear value proposition: 'Voice Dictation for Linux, Finally Done Right'
- Trust indicators (100% Offline, Privacy First, Open Source, X11/Wayland)
- Interactive demo section encouraging users to try double-tap Ctrl
- Feature cards highlighting key benefits
- Detailed installation section with both full and quick install options
- Voice commands reference section
- Speech engines comparison (Whisper AI vs VOSK)
- Comprehensive FAQ section
- Modern CTA section and footer

## SEO Improvements
- Added comprehensive meta tags with proper descriptions
- Open Graph and Twitter Card meta tags with proper images
- JSON-LD structured data for SoftwareApplication schema
- Added robots.txt for search engine crawling
- Added sitemap.xml for better indexing
- Added site.webmanifest for PWA support
- Proper canonical URL and meta keywords
- Author attribution and GPL-3.0 license info

## Technical
- Removed unused creatr-devtools dependency
- Real GitHub stars fetching from API
- Improved responsive design
- Better accessibility with proper aria labels
- Clean, maintainable component structure

The website now properly reflects the v0.2.0-alpha release features
and provides a clear path for users to install and use Vocalinux.

* feat(web): Add live demo, improve logo and install UX

Changes:
- Use actual app logo SVG image for consistent branding
- Added live browser-based speech recognition demo using Web Speech API
  - Allows users to try voice-to-text directly in their browser
  - Clear indication that the demo uses cloud-based Web Speech API
  - Prominent call-to-action to install Vocalinux for offline experience
- Redesigned one-click install box with better visual hierarchy
  - Left-aligned layout with clear instructions
  - Terminal-style command display with copy button
  - Added compatibility info and install time estimates
- Improved footer and feature section with consistent logo usage

* feat(web): Add double-tap Ctrl to trigger live demo

- Added keyboard detection for double-tap Ctrl (same as the real app)
- Shows visual hint 'Tap Ctrl again to start!' on first Ctrl press
- Instructions updated to highlight Ctrl+Ctrl as primary activation
- Click still works as alternative method
- Double-tap Ctrl also stops recording when active

* fix(web): Remove duplicate DictationOverlay that conflicted with LiveDemo

The old DictationOverlay was still responding to double-tap Ctrl alongside
the new LiveDemo component, causing two overlays to appear simultaneously.
Removed the page-level useDoublePress hook and DictationOverlay since the
LiveDemo now handles double-tap Ctrl detection internally.

* fix(web): Improve Quick Install section layout and readability

- Changed to stacked vertical layout for cleaner appearance
- Command now wraps with break-all instead of horizontal scroll
- Simplified compatibility text to fit better
- Better spacing and padding throughout
- Responsive bottom info section

* fix(web): Make Quick Install box wider for better text fit

Changed max-w-4xl to max-w-5xl and added horizontal padding so the
curl command doesn't wrap as much on medium-sized screens.

* Website beta v2: UI polish and improvements

- Reorder nav links to match page section order (Demo, Features, Install)
- Split install commands into 3 lines for better readability
- Fix button contrast in dark mode (Install Now, Install Vocalinux)
- Improve live demo mic icon and Ctrl text readability
- Add gradient/border styling to version tag in header
- Hide scrollbars on code blocks globally
- Add favicon using vocalinux.svg
- Add copy button to uninstall command
- Left-align Quick Install header text
- Update footer author link to X/Twitter profile
2026-01-19 17:34:24 -08:00
Jatin K MalikandGitHub 038bfd8fab Clean Rebuild and Web CI Workflow Implementation (#27)
* Remove external tool dependencies and branding

* Add package lock json

* Add web CI workflow to validate web changes on PRs and commits
2025-06-21 14:54:31 -05:00
jatinkrmalik b90d497f5a fix: add package-lock.json for GitHub Actions caching
- Allow web/package-lock.json in .gitignore for npm caching
- Add package-lock.json to enable GitHub Actions dependency caching
- This fixes the 'unable to cache dependencies' error in CI
2025-05-25 21:16:27 -05:00
jatinkrmalik ec68dd90f0 Add Next.js website with GitHub Pages deployment
- Added complete Next.js single-page website for Vocalinux
- Configured static export with proper GitHub Pages deployment
- Added GitHub Actions workflow for automated deployment to gh-pages branch
- Configured custom domain (vocalinux.com) with CNAME file
- Added comprehensive build script with npm support
- Responsive design with dark/light theme toggle
- Modern UI components with Tailwind CSS and shadcn/ui
- Proper SEO metadata and accessibility features
2025-05-25 21:11:17 -05:00