* fix(snap): inject into native Wayland apps via ydotool Edge rev 7 only ships wtype and xdotool. GNOME rejects the virtual keyboard protocol, so the snap falls back to xdotool and types only into XWayland windows. Native GTK/Qt apps get nothing. Stage ydotool, request the uinput plug, and prefer ydotool when wtype is rejected. Distro ydotool 0.1.x still needs a writable /dev/uinput; log `snap connect vocalinux:uinput` when the Snap cannot open it. * docs(snap): v0.16.2 edge has no uinput plug The store snap (0.16.2, latest/edge rev 7) does not declare uinput. `sudo snap connect vocalinux:uinput` fails with "has no plug named uinput" and dictation only reaches XWayland apps. Spell that out in README, INSTALL, UPDATE, the website changelog, and the store copy so people do not run the 0.17 connect command against rev 7. * docs(snap): drop the unconfirmed 0.17 version from uinput notes Greptile P2: the tree is still 0.16.2 and the release process does not name the next tag. Tell people to refresh until `snap info` lists the uinput plug, instead of waiting on a version we have not cut.
Vocalinux website
Marketing site for vocalinux.com, built with Next.js and deployed as a static export (GitHub Pages).
Product claims and design constraints: PRODUCT.md, DESIGN.md. Agent notes: AGENTS.md.
Development
npm install
npm run dev
Production build
npm install
npm run build
Static output is written to out/.
Local preview of the build
cd out
python3 -m http.server 3000
Open http://localhost:3000.
Scripts
| Script | Purpose |
|---|---|
npm run dev |
Dev server |
npm run build |
Production static export |
npm run deploy |
Build and prepare GitHub Pages (.nojekyll, CNAME) |
npm run lint |
ESLint |
npm run typecheck |
TypeScript |
Deployment
Push to main triggers the site workflow. Production host: vocalinux.com.
Manual path:
cd web
npm install
npm run deploy
That produces out/ with .nojekyll and a CNAME for vocalinux.com.
Layout
web/
├── src/
│ ├── app/ # Next.js app routes
│ ├── components/
│ │ ├── site-chrome.tsx
│ │ └── ui/ # Reusable UI components
│ ├── hooks/
│ └── lib/
├── public/ # Static assets and screenshots
├── out/ # Build output (generated)
└── package.json
Configuration notes
- Custom domain:
deployscript writesout/CNAME - Subdirectory deploy: set
basePathinnext.config.jsif needed - Family workbench UI: warm paper, system type, same language as VocaHQ (DESIGN.md)
Troubleshooting
| Symptom | Check |
|---|---|
| Module not found | npm install |
| Type errors | npm run typecheck |
| Lint errors | npm run lint |
| 404 on GitHub Pages | Ensure out/.nojekyll exists |
| Assets 404 | Confirm basePath matches deploy path |
License
Same as the main Vocalinux project (AGPL-3.0).