* feat(snap): add Snap packaging recipe and store publish strategy Add a strict-confinement snapcraft.yaml aligned with the current app version and Flatpak sandbox lessons (mic, desktop, network models, xdotool/xsel injection). Document human-only Snap Store steps and mark install docs as not published yet. Refs #48 * fix(snap): adopt-info so craftctl can set version from version.py snapcraft pack failed: craftctl set version requires adopt-info on the part. * fix(snap): stop staging GTK/GLib over the gnome platform Prepending snap-staged GI typelibs and lib paths caused a segfault on from gi.repository import Gtk. Use platform AppIndicator/GTK and only stage PortAudio plus xdotool/clipboard helpers. * docs(snap): note platform GTK path to avoid GI segfault * fix(snap): route ALSA through Pulse so Settings does not abort PortAudio enumerates ALSA devices when Settings opens. Missing /usr/share/alsa/alsa.conf inside the snap triggered a PortAudio assert. Ship an asound.conf that uses the pulse plugin, stage libasound2-plugins, and bind ALSA paths via layout. * fix(snap): keep ALSA conf under snap/local for snapcraft Move asound.conf out of snap/alsa so snapcraft stops warning about non-snapcraft paths in the snap directory. * fix(snap): request raw-input for global keyboard shortcuts Strict confinement blocks /proc/bus/input and /dev/input, so Wayland evdev hotkeys never start. Declare the raw-input plug (manual connect) and print snap-specific connect instructions instead of host input-group hints. * fix(hotkeys): discover keyboards via evdev when /proc is blocked Snap raw-input grants /dev/input/event* but still denies /proc/bus/input/devices, so find_keyboard_devices() returned empty and hotkeys never started. Fall back to evdev.list_devices() when /proc cannot be read. * fix(snap): restore UI sounds and prefer wtype for Wayland inject Stage paplay (pulseaudio-utils) and wtype; teach audio_feedback about pw-play/canberra. xdotool-only injection often hits the wrong window on native Wayland even when it reports success. * fix(snap): sync 0.16.2/AGPL metadata and AppImage-safe audio env Align snapcraft fallback version and store metadata with current main (VocaHQ URLs, AGPL-3.0), keep docs pointing at #48 on VocaHQ, pass host_env to pw-play/canberra paths, and document ordered Snap Store human deploy steps. * test(snap): harden audio host_env unit test against suite pollution Patch os.path.exists like sibling audio_feedback tests instead of relying on a real tempfile path that can collide with other suite mocks. * style(snap): black-format new audio and snap packaging tests * docs(snap): treat Store listing as live; edge→candidate→stable refresh Name vocalinux is already on snapcraft.io (edge @ 0.14.0-beta rev 6). Document upload/release without re-register, add snap-store-refresh.sh helper, and point INSTALL/README/DISTRO at the live listing. * fix(snap): move to core24 and close evdev capability FDs core22 only ships Python 3.10, which fails requires-python >=3.11, so the snap base is now core24 (Python 3.12) with the gnome-46 platform and the Ubuntu 24.04 libasound2t64 package. Also close InputDevice after failed capability scans and annotate the proc parser with TextIO. * Snap: align store listing metadata and icon Match snapcraft.yaml summary, description, license, website, and store icon to the live Snap Store listing. * Snap: trim packaging docs, script, and unused SVG Drop store refresh wrapper, long packaging README, duplicate snap/gui SVG, and speculative pw-play/canberra paths; keep recipe and confinement fixes. * ci: publish snap to edge and candidate on release tags * Snap: set grade stable for candidate channel CI * Snap: skip pip PyGObject; use gnome extension GI
175 lines
2.2 KiB
Plaintext
175 lines
2.2 KiB
Plaintext
# Python bytecode files
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
|
|
# Distribution / packaging
|
|
dist/
|
|
build/
|
|
*.egg-info/
|
|
*.egg
|
|
*.snap
|
|
# snapcraft local build trees (repo root only)
|
|
/parts/
|
|
/prime/
|
|
/stage/
|
|
/snap/.snapcraft/
|
|
/.snapcraft/
|
|
|
|
# Virtual environments
|
|
venv/
|
|
env/
|
|
ENV/
|
|
.env
|
|
.venv/
|
|
activate-vocalinux.sh
|
|
|
|
# Local development settings
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# Unit test / coverage reports
|
|
htmlcov/
|
|
.tox/
|
|
.coverage
|
|
.coverage.*
|
|
.cache
|
|
coverage.xml
|
|
*.cover
|
|
.pytest_cache/
|
|
.nyc_output
|
|
|
|
# Downloaded models and data
|
|
*.model
|
|
/models/
|
|
.local/
|
|
|
|
# Log files
|
|
*.log
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
lerna-debug.log*
|
|
|
|
# OS specific files
|
|
.DS_Store
|
|
.DS_Store?
|
|
._*
|
|
.Spotlight-V100
|
|
.Trashes
|
|
ehthumbs.db
|
|
Thumbs.db
|
|
|
|
# Installed desktop entries
|
|
*-installed.desktop
|
|
|
|
# Pre-commit
|
|
.pre-commit-cache/
|
|
|
|
# Node.js
|
|
node_modules/
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
pnpm-debug.log*
|
|
|
|
# Package manager lock files (keep bun.lock but ignore others if mixed)
|
|
# Allow package-lock.json in web directory for GitHub Actions caching
|
|
yarn.lock
|
|
pnpm-lock.yaml
|
|
package-lock.json
|
|
!web/package-lock.json
|
|
|
|
# Build outputs
|
|
out/
|
|
.next/
|
|
.nuxt/
|
|
dist/
|
|
build/
|
|
|
|
# Flatpak build artifacts
|
|
.flatpak-builder/
|
|
build-dir/
|
|
/repo/
|
|
*.flatpak
|
|
|
|
# Environment variables
|
|
.env
|
|
.env.local
|
|
.env.development.local
|
|
.env.test.local
|
|
.env.production.local
|
|
|
|
# Runtime data
|
|
pids
|
|
*.pid
|
|
*.seed
|
|
*.pid.lock
|
|
|
|
# Coverage directory used by tools like istanbul
|
|
coverage/
|
|
.nyc_output
|
|
|
|
# ESLint cache
|
|
.eslintcache
|
|
|
|
# Prettier cache
|
|
.prettierache
|
|
|
|
# TypeScript cache
|
|
*.tsbuildinfo
|
|
|
|
# Optional REPL history
|
|
.node_repl_history
|
|
|
|
# Output of 'npm pack'
|
|
*.tgz
|
|
|
|
# Yarn Integrity file
|
|
.yarn-integrity
|
|
|
|
# Dependency directories
|
|
jspm_packages/
|
|
|
|
# Temporary folders
|
|
tmp/
|
|
temp/
|
|
MagicMock/
|
|
tmp/
|
|
temp/
|
|
|
|
# Editor directories and files
|
|
.vscode/*
|
|
!.vscode/extensions.json
|
|
.idea
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# Turbo
|
|
.turbo
|
|
|
|
# Vercel
|
|
.vercel
|
|
|
|
# Storybook build outputs
|
|
.out
|
|
.storybook-out
|
|
|
|
# Local Netlify folder
|
|
.netlify
|
|
.claude-workflow-rules.md
|
|
# Analysis documents (keep local)
|
|
CROSS_DISTRO_ANALYSIS.md
|
|
FIX_PLAN.md
|
|
|
|
# opentree - local AI worktree orchestration tool (per-developer, not shared)
|
|
.opentree/
|
|
opentree.toml
|
|
|
|
# Sisyphus - local AI agent loop state (per-developer, not shared)
|
|
.sisyphus/
|