* fix(install): leftover review notes from #700 and #705
The scratch dir now holds pip logs and model download temps, so a failed
run has something to inspect. Dep, venv, leftover-process, and pip
failures use exit codes 2/3/4 instead of a blanket 1. --help says the
transcript is written during installation, and the tag hint is
--tag=<release>.
AGENTS.md no longer claims the hash-pinned exports are consumed (they
wait for phases 2/3/5). Docs add a just install line and
vocalinux[vosk] next to the PyPI commands. Settings points at
--engine=whisper. The whisper.cpp fallback installs ".[vosk]".
Fixes leftover review notes from #700 and #705.
Refs #701.
* fix(install): do not let pip build PyGObject from sdist
Fresh --auto --skip-system-deps died on pygobject-3.56.3 even with
distro python3-gi present. Install the other runtime deps from
pyproject.toml, then pip install --no-deps. Extra installs use the
extra's packages only, not pip install ".[extra]".
Fixes leftover review notes from #700 and #705.
Refs #701.
* fix(install): tolerate unset XDG_SESSION_TYPE under set -u
--auto with DISPLAY but no login session died on
XDG_SESSION_TYPE: unbound variable. The session probe now uses
${XDG_SESSION_TYPE:-}, ${WAYLAND_DISPLAY:-}, and ${DISPLAY:-}.
Phases 0-1 of #701. Drops dead deps, moves vosk to an optional extra, adds uv.lock and hash-pinned requirements exports, pins pywhispercpp to 1.5.0.
Closes#705. Refs #701.
Stacked bottom of #701. Replaces Makefile with justfile and hardens install.sh (strict mode, logging, HTTP probes, curl -f on model downloads, no v0.10.1-beta fallback).
Closes#700.
* feat(shortcuts): default to hold Right Alt push-to-talk on first install
Double-tap Ctrl conflicts with many desktop and app shortcuts, so new
installs now use hold Right Alt (Option) in push-to-talk mode. Existing
config.json values are preserved unchanged.
Updates README, user guide, AGENTS.md, first-run dialog, website copy,
and tests to match the new defaults.
* refactor(shortcuts): trim redundant default-change test and comments
Drop the fresh-install assertion that duplicated DEFAULT_CONFIG coverage,
remove the duplicated Right-Alt rationale from config_manager, and drop a
vacuous source-string check from the settings shortcuts test.
* fix(shortcuts): align install.sh seeds and preserve legacy toggle mode
install.sh still wrote ctrl+ctrl without mode, so merges with the new
push_to_talk default became hold-Ctrl. Seed right_alt + push_to_talk for
new installs, and migrate existing shortcut-only configs to mode=toggle
so prior behavior is unchanged.
* style(config): fix black formatting after shortcuts migration
* fix(shortcuts): preserve legacy defaults when shortcuts section is missing
Existing config files without a shortcuts section previously inherited
ctrl+ctrl toggle from DEFAULT_CONFIG. Pin those historical defaults on
upgrade so the new first-install Right Alt push-to-talk defaults do not
silently change behavior.
* docs(agents): unwrap hard-broken dictation control paragraph
Keep the AGENTS.md paragraph as a single line like the surrounding prose.
* feat(web): deslop marketing site with workstation craft identity
Replace generic AI SaaS landing patterns with a deliberate Linux desk
utility look: cool paper palette, Bricolage + Source Sans, solid type,
editorial feature rows, and terminal install as first-class proof.
Adds PRODUCT.md, DESIGN.md, and WEB-DESLOP-NOTES.md. Drops unused geist
and react-intersection-observer. No product claim changes.
* chore(web): drop local deslop working notes from PR
WEB-DESLOP-NOTES.md was a firstmate/session artifact, not product docs.
* fix(web): stop mobile horizontal overflow and harden viewport layout
Long install URLs expanded the page past the phone width. Constrain
terminal pre with break-all, min-w-0 columns, and overflow-x clip.
Tighten mobile hero type and full-width CTAs. Add Playwright viewport
QA script and jest checks that assert no overflow at desktop/tablet/mobile.
* refactor(web): drop browser speech preview from marketing home
Remove the cloud SpeechRecognition demo section and nav Demo link.
Keep product truth: hero install, features, screenshots, engines.
Fold shortcut/engine/audio links into the features intro.
Delete unused LiveDemo component and its unit test.
* chore(web): remove orphaned demo overlay and double-press hook
Only LiveDemo used these; gone with the browser preview section.
* feat(web): borrow PR #546 craft language into deslop home
Merge closed redesign language onto feat/web-deslop-craft: pure white
and near-black iron surfaces, emerald-committed palette, asymmetric
hero with real app screenshots, full-bleed install strip, feature bento
with tray/settings shots, and install-to-dictation steps.
Keep Bricolage + Source Sans (not Geist), no browser speech demo, and
mobile overflow guards. Update screenshots homepage expectations.
* docs(design): align DESIGN.md tokens with PR #546 iron/emerald palette
* fix(web): drop settings screenshot from installer details
Uninstall sat too far below the list once the general-settings shot
was in that column. Keep checklist, requirements, and uninstall only.
* fix(web): raise light-mode primary and footer contrast
Darken light emerald so white button text hits ~5:1 (was 3.4).
Brighten install-strip and footer secondary text for legibility.
Verified light/dark × desktop/tablet/mobile with no overflow.
* fix(web): compact feature cards to kill empty vertical space
Right-column tiles were h-full + justify-between next to a tall
screenshot, so short copy left large voids. Use content-height cards
with denser padding and inline link rows instead.
* fix(web): pair settings shot with full feature rail
Replace three orphan cards beside a tall dialog with a six-row
feature panel that stretches with the screenshot frame. Crop the
settings image with object-cover/object-top so heights match and
no void sits next to the UI shot.
* feat(web): apply homepage craft language to SEO child pages
Rewrite SeoSubpageShell chrome (fixed nav, install pill, iron footer)
to match the deslop home. Add subpage utilities and retoken all
templated child routes: borders, radii, mono kickers, single emerald
accent, terminal panels, no rainbow icon tiles or gradient cards.
* fix(web): avoid invalid @apply hover:border-primary/40 in subpage-card
* fix(web): rewrite subpage CSS without invalid Tailwind @apply
* fix(web): color comparison X icons rose-red on alternatives
Use soft rose (#c45c5c / #e08b8b) for no/cons marks so they read as
distinct from emerald yes/checks without looking like form errors.
* docs(web): move product/design docs under web/ and drop impeccable markers
Keep PRODUCT.md and DESIGN.md next to the Next app (not repo root), add
web/AGENTS.md as the entry point, and point the root AGENTS website
section at those files. Strip tool-specific schema comments.
* fix(web): use icon-only copy control on install terminal
Replace the chunky Copy/Copied chip with a quiet clipboard icon that
turns into a check on success.
* fix(web): restyle system requirements as a spec rail
Replace the nested bullet card with mono-label / value pairs under the
installer section so it matches the craft language used elsewhere.
* fix(web): center engine rows and quiet the Default badge
Align name/badge with multi-line engine details on sm+; replace the
filled green pill with a small mono outline chip.
* chore(release): prepare v0.10.0-beta
Bump versions and release references across app, docs, installer, and website for the next beta release. Add v0.10.0-beta release notes entries covering reliability fixes and CI/test improvements since v0.9.0-beta.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* docs(release): align Python baseline references to 3.9+
Synchronize stale Python 3.8 references in agent guidance and distro dependency docs/scripts with the current 3.9+ minimum used by project metadata and release docs.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
---------
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* chore(release): prepare v0.7.0-beta
## Version Bump (v0.6.3-beta → v0.7.0-beta)
This is a major beta release with significant new features including autostart support, tabbed settings, and improved GPU detection.
### Core Version Files
- Updated src/vocalinux/version.py to 0.7.0-beta
- Updated pyproject.toml classifiers (already correct - Beta)
### Documentation
- Updated README.md with new features, bug fixes, and version references
- Updated docs/INSTALL.md with v0.7.0-beta install commands
- Updated docs/UPDATE.md with comprehensive 'What's New' section
- Updated SECURITY.md supported versions table (0.7.x now supported)
### Website
- Updated web/src/app/page.tsx version badge (v0.7.0 Beta)
- Updated web/src/app/page.tsx softwareVersion schema
- Updated web/package.json version to 0.7.0
- Updated web/src/app/changelog/page.tsx with v0.7.0-beta release entry
### Other Updates
- Updated install.sh default tag to v0.7.0-beta
- Updated src/vocalinux/main.py error message install command
- Updated AGENTS.md branch naming example
## Changes Since v0.6.3-beta
### New Features (13 commits)
- Autostart on login support via XDG autostart
- Tabbed settings dialog with 5 organized tabs
- Intel GPU compatibility detection with automatic CPU fallback
- Single instance prevention
- Evdev device management to prevent CPU spin
- Improved GPU detection avoiding false positives
- IBus fallback when daemon not running
- Fedora dnf check-update fix
- Web SEO - 7 new optimized pages
### Contributors
- Jatin K Malik (maintainer)
- Antoine Monnet (contributor)
- jatinkrmalik (contributor)
### Bug Fixes
- #254: Improved GPU detection to avoid false positives
- #251: Skip IBus setup when daemon not running
- #243: Prevent dnf check-update from exiting script on Fedora
- #240: Raise exception on IBus setup failure
- #234: Removed leading space from first speech transcription
- #242/#253: Removed disconnected evdev devices to prevent CPU spin
## Verification
- [x] Lint passed
- [x] Black formatting passed
- [x] isort check passed
- [x] Version imports correctly as 0.7.0-beta
* docs: update version history in RELEASE_PROCESS.md
Add entries for 0.6.0-beta through 0.7.0-beta to the version history table.
* chore(release): prepare v0.6.2-beta
- Update version from 0.6.1-beta to 0.6.2-beta
- Update documentation version references
- Update website schema and badges
Changes since v0.6.1-beta:
- Fix#221: Add missing psutil dependency
- Fix#219: Suppress [BLANK_AUDIO] tokens in whisper.cpp output
- Fix#204: Resolve PyAudio paInt16 attribute error
- Fix#205: Ensure whisper module installed with --auto
- Improve Vulkan shader package detection for multiple distros
- CI: Fix nightly build tag cleanup
* docs(agents): update AGENTS.md with current project structure
- Update speech recognition engines list (whisper.cpp is now default)
- Add key dependencies section
- Update project structure with whispercpp_model_info.py and vosk_model_info.py
- Add release process quick summary
* docs(agents): add important rules about PR workflow
- Never push directly to main
- All changes require a PR
- Wait for CI before merging
- Squash merge PRs
Add guidelines for AI agents working on this codebase including:
- Build, lint, and test commands (including single test execution)
- Code style guidelines (formatting, imports, types, naming)
- Project structure overview
- Commit message and branch naming conventions