Files
voculinux/web
Jatin K MalikandGitHub 4fad897f14 fix(appimage): smoke-test fixes for tray, labels, and packaging (#602)
* fix(ui): AppImage smoke fixes for tray icons, labels, and identity

Replace placeholder mic tray SVGs with opaque branded icons, show
whisper.cpp instead of Whisper_cpp, set GLib/AppIndicator identity to
Vocalinux (not main.py), and give About dialog buttons enough padding
so labels are not clipped under Adwaita.

* fix(packaging): harden AppImage build for Wayland and tray deps

Pin the build interpreter, install onnxruntime into the bundle, set
desktop Exec=AppRun + StartupWMClass, prune typelibs to an allowlist
after linuxdeploy, and stop forcing GDK_BACKEND=x11 on Wayland
(VOCALINUX_FORCE_X11=1 remains as an escape hatch). CI AppImage jobs
also pull Ayatana AppIndicator and librsvg SVG loader packages.

* fix(packaging): bundle full stdlib from base_prefix in AppImage

When build.sh runs under a venv, sys.prefix only has site-packages, so
the AppImage was missing encodings and crashed on start. Copy the
interpreter and stdlib from sys.base_prefix, force pip
--ignore-installed into AppDir, set Gdk program class to Vocalinux, and
tone down the muted tray slash so small StatusNotifier icons stay slate.

* fix(tray): use absolute icon paths so stale hicolor icons lose

XFCE StatusNotifier resolves IconName through the system theme and can
ignore IconThemePath. A leftover ~/.local/share/icons placeholder
(vocalinux-microphone-off.svg filled #e74c3c) was winning over the
AppImage's bundled icons. Outside Flatpak, pass absolute SVG paths to
set_icon_full / new_with_path instead of bare theme names.
2026-07-27 19:57:07 -07:00
..
2026-07-25 12:30:48 -07:00

Vocalinux Website

This is the official website for Vocalinux, a voice-to-text application for Linux systems. The website is built with Next.js and can be deployed as a static site to GitHub Pages.

🚀 Quick Start

Development

npm install
npm run dev

Building for Production

npm install
npm run build

The static files will be generated in the out/ directory.

📦 Deployment to GitHub Pages

  1. Push your changes to the main or master branch
  2. GitHub Actions will automatically build and deploy your site to the gh-pages branch
  3. Custom Domain: The site is configured for vocalinux.com
  4. The site will be available at https://vocalinux.com

Manual Deployment

If you prefer to deploy manually:

  1. Build the static site:

    cd web
    npm install
    npm run deploy
    
  2. The build includes:

    • Static HTML, CSS, and JavaScript files in out/
    • .nojekyll file for GitHub Pages compatibility
    • CNAME file pointing to vocalinux.com

Local Testing

To test the built site locally:

cd web/out
python3 -m http.server 3000

Then visit http://localhost:3000 in your browser.

🛠️ Build Scripts

  • npm run dev - Start development server
  • npm run build - Build static site for production
  • npm run deploy - Build and prepare for GitHub Pages (adds .nojekyll and CNAME)
  • npm run lint - Run ESLint
  • npm run typecheck - Run TypeScript type checking

📁 Project Structure

web/
├── src/
│   ├── app/
│   │   ├── layout.tsx          # Root layout
│   │   └── page.tsx            # Homepage
│   ├── components/
│   │   ├── dictation-overlay.tsx
│   │   ├── theme-toggle.tsx
│   │   └── ui/                 # Reusable UI components
│   ├── hooks/
│   └── lib/
├── public/                     # Static assets
├── out/                        # Generated static files (after build)
└── package.json

🎨 Features

  • Responsive Design - Works on desktop and mobile
  • Dark/Light Theme - Automatic theme switching
  • Modern UI - Built with Tailwind CSS and Framer Motion
  • SEO Optimized - Proper meta tags and structure
  • Fast Loading - Optimized static generation

🔧 Configuration

Custom Domain

If you want to use a custom domain:

  1. Update the deploy script in package.json to include your domain:

    "deploy": "next build && touch out/.nojekyll && echo 'yourdomain.com' > out/CNAME"
    
  2. Configure your domain's DNS to point to GitHub Pages

Base Path

If deploying to a subdirectory, update next.config.js:

const config = {
  basePath: '/your-subdirectory',
  // ... other config
}

🐛 Troubleshooting

Build Issues

  • "Module not found": Run npm install to ensure all dependencies are installed
  • TypeScript errors: Run npm run typecheck to see detailed type errors
  • ESLint errors: Run npm run lint:fix to automatically fix common issues

Deployment Issues

  • 404 on GitHub Pages: Ensure .nojekyll file exists in the out/ directory
  • Assets not loading: Check that basePath is correctly configured in next.config.js
  • Blank page: Check browser console for JavaScript errors

📝 License

This project is licensed under the same license as the main Vocalinux project.