* 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
pywhispercpp requires psutil internally but doesn't declare it as a dependency,
causing vocalinux to fail on fresh installs with:
Failed to import pywhispercpp: No module named 'psutil'
Adding psutil>=5.9.0 to vocalinux's dependencies as a workaround.
- Add suppress_blank=True and suppress_non_speech_tokens=True parameters
to whisper.cpp Model initialization to prevent blank audio tokens
from being output when transcribing silent audio
- This implements Option 2 from the investigation: suppress at the
whisper.cpp level rather than post-processing filtering
- Root cause: whisper.cpp outputs a special [BLANK_AUDIO] token
when transcribing silent audio, which was being inserted into the
text field when users paused with the mic on
The nightly workflow fails when re-running on the same day because
after deleting the remote tag, the local tag still exists in the
runner's checkout. GitHub CLI sees this local tag and expects it
to be pushed to remote.
This fix adds 'git tag -d' to delete local tags in both the
cleanup and create release steps, ensuring clean state before
creating new releases.
The previous cleanup logic sorted releases by column 3 which contained
relative dates like '3 days ago' as text. This doesn't work reliably
for sorting because '3 days ago' and '4 days ago' are compared as
strings, not dates.
This fix:
- Uses gh release list --json to get actual ISO 8601 creation timestamps
- Calculates a proper cutoff date (3 days ago in seconds since epoch)
- Parses and compares actual timestamps
- Only deletes releases that are truly older than 3 days
Fixes the nightly build retention policy.
* fix(install): correct package detection for Void and Solus, fix git fetch syntax
- Fix git fetch syntax: remove incorrect quoting around 'tag' argument
- Fix Void Linux: use 'xbps-query' instead of 'xbps-query -S' which checks
remote repos instead of installed packages
- Fix Solus: use 'eopkg list-installed | grep' instead of 'eopkg info' which
queries repository info, not installed status
These bugs caused the installer to always attempt reinstalling packages on
Void Linux and Solus, even when they were already installed.
* fix(install): correct package names for Arch, Void, and Gentoo
- Arch Linux: libappindicator-gtk3 -> libappindicator (package was renamed)
- Void Linux: libappindicator -> libappindicator-gtk3 (correct package name)
- Gentoo: dev-libs/libappindicator:3 -> dev-libs/libayatana-appindicator
(libappindicator is deprecated, use ayatana fork)
Added glslang and vulkan-tools to distributions that were missing them:
- Gentoo: dev-util/glslang
- Alpine: glslang vulkan-tools
- Void: glslang Vulkan-Tools
- Solus: glslang vulkan-tools
Validated package names against official repositories for each distro.
- Try glslc first (available on Ubuntu 24.04+)
- Fall back to glslang-tools if glslc not available (Ubuntu 22.04)
- Update user-facing messages to mention both packages
- Fixes#212 while maintaining compatibility with newer Ubuntu versions
* feat(web): overhaul SEO structure and landing pages
Add distro-specific install pages and an engine comparison hub to capture high-intent organic queries. Centralize metadata and structured data handling to improve crawl consistency, internal linking, and rich-result eligibility.
* feat(web): add subpage navigation and visual polish
Make SEO landing pages easier to discover and navigate by adding persistent subpage header/footer links to home and key routes. Refresh install and comparison pages with colorful icon-driven sections while expanding homepage footer links for stronger internal linking.
* fix(ci): make web version sync robust to schema location
CI assumed softwareVersion lived in layout.tsx, but SEO refactors moved SoftwareApplication JSON-LD to page.tsx. Update workflow sync steps to patch whichever file currently contains softwareVersion so website build and release jobs keep working.
* chore(web): remove SEO audit artifact
Drop the internal SEO audit markdown from the PR so only production website and workflow changes are included.
Swap the website Open Graph image with the provided design and regenerate both PNG and WebP assets at the standard 1200x630 share size so previews render consistently across platforms.
When installing with --engine=whisper, the installer would continue even
if the whisper package installation failed, creating a config file with
engine=whisper. This caused the app to crash on startup with
'No module named whisper'.
Changes:
- Add proper verification of whisper installation by importing the module
- Only create whisper config if installation succeeds
- Fall back to whisper.cpp if whisper installation fails
- Provide clear error messages during installation
Fixes#190
The _attempt_audio_reconnection method was incorrectly accessing
paInt16 as an attribute of the PyAudio instance instead of the
pyaudio module. Added local import and fixed the reference.
Fixes#203
Bump version from 0.6.0-beta to 0.6.1-beta with installation improvements:
Version Updates:
- src/vocalinux/version.py: 0.6.0-beta → 0.6.1-beta
- install.sh: Default tag and help text updated
- web/package.json: 0.6.0 → 0.6.1
- web/src/app/layout.tsx: schema.org softwareVersion updated
- web/src/app/page.tsx: version badge updated
Documentation Updates:
- README.md: New 'What's New' section for v0.6.1-beta
- docs/UPDATE.md: Added v0.6.1-beta release notes with new features
- docs/INSTALL.md: Version references updated
- docs/RELEASE_PROCESS.md: Example commands updated
- tests/distro-testing-checklist.md: Version references updated
- src/vocalinux/main.py: Error message updated
New Features in v0.6.1-beta:
- Interactive backend selection for whisper.cpp (GPU vs CPU)
- Enhanced welcome message with testing instructions
- Simplified install commands (tag-based URLs)
- Better GPU support with proper library detection
Bug Fixes:
- Fixed bash arithmetic with set -e
- Fixed TTY detection for interactive mode
- Auto-install git if missing
- Fixed GPU installation commands
Changed install commands to download install.sh directly from the release
tag instead of from main branch with --tag parameter. This ensures:
1. The install script version matches the release being installed
2. No version mismatch between script and code
3. Simpler, cleaner install commands
Changes:
- install.sh: Updated error message to use v0.6.0-beta URL
- README.md: All install commands now use v0.6.0-beta/install.sh
- docs/INSTALL.md: Updated quick install command
- docs/UPDATE.md: Updated update command examples
- docs/RELEASE_PROCESS.md: Updated example command
- src/vocalinux/main.py: Updated error message install command
- tests/distro-testing-checklist.md: Updated download URL
- web/src/app/page.tsx: Now uses dynamic tag in URL (not main)
- .github/workflows/release.yml: Release notes use tag-based URL
Before:
curl .../main/install.sh | bash -s -- --tag=v0.6.0-beta
After:
curl .../v0.6.0-beta/install.sh | bash
Fixes version consistency between install script and installed code.
The previous fix stored the pip command in a variable:
PYWHISPERCPP_INSTALL_CMD="GGML_CUDA=1 pip install ..."
$PYWHISPERCPP_INSTALL_CMD
This doesn't work because bash interprets "GGML_CUDA=1" as a
command, not as an environment variable prefix.
Fix: Use conditional logic to run the commands directly:
if GGML_CUDA=1 pip install ...; then
GPU_INSTALL_SUCCESS=true
fi
The basic `pip install pywhispercpp` only includes CPU support.
For GPU acceleration, pywhispercpp must be installed with special
environment flags:
- NVIDIA GPU: GGML_CUDA=1 pip install git+...
- Vulkan (AMD/Intel): GGML_VULKAN=1 pip install git+...
This fix:
- Detects GPU type during whisper.cpp installation
- Installs pywhispercpp with appropriate GPU support flag
- Falls back to CPU version if GPU install fails
Fixes#193
The previous implementation directly interpolated the commit message
into the shell script, which broke when messages contained newlines.
Words like "not" were being interpreted as shell commands.
Fix: Pass commit message via environment variable and write to temp file
before grepping, avoiding shell injection issues.
Users running the install script via curl | bash may not have git
installed. This adds a check before attempting to clone the repo
and auto-installs git using the appropriate package manager for
the detected distribution.
Fixes issue reported on Reddit where install failed on Linux Mint
with "git command not found" error at line 170.
The previous mobile fix broke desktop behavior by only taking the last result.
This fix uses resultIndex properly while also tracking processed results to
prevent duplication on mobile browsers where resultIndex stays at 0.
- Track processed results using a Set to avoid duplication
- Still use resultIndex for proper accumulation on desktop
- Clear processed results when starting a new session
Fixes speech result duplication issue on mobile while restoring
proper accumulation behavior on desktop browsers.
* docs: update all documentation for whisper.cpp as default engine
Comprehensive documentation update highlighting whisper.cpp as the new
default speech recognition engine:
README.md:
- Added 'Major Change: whisper.cpp is Now Default!' section
- Updated Features to highlight whisper.cpp and Vulkan GPU support
- Updated Quick Install section with engine choices
- Changed default engine from whisper to whisper_cpp in examples
- Updated configuration examples
- Updated roadmap to mark whisper.cpp as complete
docs/INSTALL.md:
- Added whisper.cpp section with performance benefits
- Updated installation options (--engine flag)
- Added GPU support matrix and Vulkan detection info
- Added installation time comparison table
- Updated system requirements (lower disk space for whisper.cpp)
docs/USER_GUIDE.md:
- Added comprehensive 'Choosing Your Engine' section
- Added GPU acceleration information
- Updated tips to mention whisper.cpp benefits
- Added model size recommendations
web/src/app/page.tsx:
- Updated hero to mention whisper.cpp (C++ optimized, Vulkan support)
- Changed installation time from ~5-10 min to ~1-2 min
- Updated Features section to mention Vulkan GPU support
- Added whisper.cpp as default engine card (3-column layout)
- Updated installation commands (--engine flags)
- Updated FAQ about switching engines
This ensures all documentation reflects whisper.cpp as the new default
and highlights its major benefits: 10x faster install, universal GPU
support, and C++ optimized performance.
* chore(release): prepare v0.6.0-beta
This release brings whisper.cpp as the new default speech recognition engine:
Version Updates:
- Bump version from 0.5.0-beta to 0.6.0-beta
- Update src/vocalinux/version.py
- Update web/package.json
Documentation Updates:
- README.md: Update all v0.5.0-beta references to v0.6.0-beta
- docs/INSTALL.md: Update version references and installation commands
- docs/UPDATE.md: Add new 'What's New' section highlighting whisper.cpp
- SECURITY.md: Update supported versions table (0.6.x now supported)
Website Updates:
- web/src/app/layout.tsx: Update softwareVersion to 0.6.0-beta
Release Highlights:
- whisper.cpp is now the default engine (10x faster install!)
- Universal GPU support via Vulkan (AMD, Intel, NVIDIA)
- C++ optimized inference with multi-threading
- ~1-2 minute installation vs ~5-10 minutes before
Testing:
- All 472 tests passing
- Black formatting clean
- Flake8 linting clean
- isort import ordering clean
* ui(website): improve hero section layout
* docs(readme): remove duplicate What's New section
The sed pattern didn't correctly match tar.gz files which don't have
a dash after the version number. Fixed by explicitly handling both
.whl and .tar.gz file extensions with proper naming patterns.
Fixes the error: 'mv: source and destination are the same file'
The nightly build workflow was not creating accessible releases for users.
This fix addresses several issues:
- Add write permissions (contents: read → contents: write) to create GitHub releases
- Create a persistent 'nightly' pre-release that users can easily find and download
- Add workflow_dispatch trigger for manual testing
- Improve version naming: {base_version}.dev{date}+{short_sha}
- Extend artifact retention from 7 to 30 days
- Add clear installation instructions in release notes
Users can now access nightly builds at:
https://github.com/jatinkrmalik/vocalinux/releases/tag/nightlyFixes#186
The nightly build workflow was not creating accessible releases for users.
This fix addresses several issues:
- Add write permissions (contents: read → contents: write) to create GitHub releases
- Create a persistent 'nightly' pre-release that users can easily find and download
- Add workflow_dispatch trigger for manual testing
- Improve version naming: {base_version}.dev{date}+{short_sha}
- Extend artifact retention from 7 to 30 days
- Add clear installation instructions in release notes
Users can now access nightly builds at:
https://github.com/jatinkrmalik/vocalinux/releases/tag/nightlyFixes#186
* feat(speech): add whisper.cpp with Vulkan support for GPU acceleration
Add whisper.cpp as a new speech recognition engine with the following features:
- Vulkan GPU acceleration support (AMD, Intel, NVIDIA)
- Fallback to CUDA for NVIDIA GPUs
- CPU-only mode with automatic thread optimization
- Support for all model sizes: tiny, base, small, medium, large
- Hardware detection to recommend best model/backend
- Models downloaded from Hugging Face (ggml format)
- Updated UI to show compute backend info in settings
- pywhispercpp as the Python binding library
- whisper_cpp as the new default engine
Changes:
- New whispercpp_model_info.py with model metadata and hardware detection
- Updated recognition_manager.py with whisper.cpp init and transcription
- Updated settings_dialog.py with whisper.cpp UI support
- Updated config_manager.py with whisper_cpp_model_size config
- Updated main.py with whisper_cpp CLI option
- Updated pyproject.toml with pywhispercpp dependency
- Updated install.sh with vulkan-tools for GPU detection
Closes#104
* style: fix black and isort formatting issues
* test: update config manager test for whisper_cpp default engine
* feat(install): interactive mode with 3 engine choices and whisper.cpp as default
Major changes to install.sh:
- Interactive mode is now the DEFAULT (not --auto)
- Added --auto flag for non-interactive automatic installation
- New --engine flag to specify engine directly
- Interactive mode shows 3 engine options with visual boxes:
1. whisper.cpp (recommended) - Vulkan/CUDA/CPU support
2. whisper (OpenAI) - PyTorch-based, NVIDIA-only
3. VOSK - lightweight option
- Hardware detection with recommendations:
- Detects Vulkan support (AMD/Intel/NVIDIA)
- Detects NVIDIA CUDA
- Checks available RAM
- Recommends best engine based on hardware
- Updated help text with new options and examples
- Removed old --with-whisper, --whisper-cpu, --no-whisper flags
- whisper.cpp is now the default engine for automatic mode
* feat(uninstall): kill running vocalinux processes before uninstall
* fix(whisper.cpp): auto-download model, use all CPU cores, hide unavailable engines
Three fixes for whisper.cpp implementation:
1. Auto-download model during install
- Added install_whispercpp_model() function to install.sh
- Downloads ggml-tiny.bin (~39MB) from Hugging Face
- Runs automatically when whisper.cpp engine is selected
2. Use all CPU cores for transcription
- Added n_threads parameter to Model initialization
- Uses multiprocessing.cpu_count() to get all cores
- Significantly improves transcription speed
3. Hide unavailable engines from dropdown
- Added get_available_engines() function to detect installed engines
- Settings dialog now only shows engines that are actually installed
- Falls back to first available engine if current not available
Fixes user-reported issues with whisper.cpp integration.
* ui(settings): display whisper.cpp correctly and increase dialog height
- Changed engine display name from 'whisper_cpp' to 'whisper.cpp'
- Added format_engine_display_name() helper function
- Dialog now uses 75% of screen height for better visibility
- More options visible by default without scrolling
* revert(settings): remove display name change, keep dialog height increase
- Reverted engine display name change (was breaking engine selection)
- Kept dialog height at 75% of screen for better visibility
* style: fix black and isort formatting for whisper.cpp logging
* style: fix black formatting in settings_dialog.py
* ci: fix Fedora 39 container package installation
Add dnf cache update and fallback with --nogpgcheck for Fedora containers
that may have stale or missing package metadata.
- Add language mapping with flag emojis for 40+ locales
- Display detected browser language in header with flag badge
- Show Listening in Language indicator when active
- Responsive design: language name hidden on mobile, flag always visible
Improves UX by making users aware of which language the speech recognition is configured for.
Use navigator.language instead of hardcoded 'en-US' so the demo works
for users with non-English browser settings (French, German, Spanish, etc.)
Fixes#165
* docs: Add distribution package mapping reference
Add a comprehensive YAML reference file documenting package names
across different Linux distributions. This serves as:
1. Documentation for manual installation on unsupported distros
2. Reference for adding support for new distributions
3. Auxiliary reference for the installer's embedded package mappings
Completes Task 6 from the cross-distribution compatibility fix plan.
Related to: #158, #159, #160, #161
* ci: Actually test install.sh distro detection in CI matrix
Previously, the distro-test-matrix.yml workflow only did syntax checks
on install.sh without actually testing the core cross-distribution
functionality that was added in phases 1-4.
This update adds proper tests for:
1. Distro Detection - Tests detect_distro() function logic across
different containers to verify proper identification of Ubuntu,
Debian, Fedora, etc.
2. Typelib Path Detection - Tests detect_typelib_path() function
which uses pkg-config and fallback paths for GI_TYPELIB_PATH
3. Virtual Environment Creation - Verifies Python venv can be
created with minimal system dependencies
4. Dependency Checker - Runs check-system-deps.sh to see what's
missing on each distro
5. Installer Help - Verifies install.sh --help works
This ensures the cross-distribution compatibility improvements
are actually tested by CI, not just syntax-checked.
Related to: #158, #159, #160, #161, #162
* ci: Fix distro test - avoid sourcing install.sh (root check fails)
The install.sh script has a root check that exits immediately when
running as root, which causes CI to fail when we try to source it.
Instead, we now test the distro detection logic directly without
sourcing install.sh. This gives us the same test coverage while
avoiding the root check issue.
Add a comprehensive YAML reference file documenting package names
across different Linux distributions. This serves as:
1. Documentation for manual installation on unsupported distros
2. Reference for adding support for new distributions
3. Auxiliary reference for the installer's embedded package mappings
Completes Task 6 from the cross-distribution compatibility fix plan.
Related to: #158, #159, #160, #161
Add testing infrastructure and documentation improvements.
**Task 12: Add pkg-config to Core Dependencies**
- Added pkg-config check at the start of install_system_dependencies()
- Added pkg-config to all distribution package lists
- Provides distro-specific install instructions if pkg-config is missing
- Critical for library detection (GI_TYPELIB_PATH, PortAudio, etc.)
**Task 13: Update README with Distro Info**
- Updated Requirements section with tested distributions
- Added link to DISTRO_COMPATIBILITY.md
- Listed officially supported distros: Ubuntu 22.04+, Debian 11+, Fedora 39+, Arch, openSUSE
- Mentioned experimental support for Gentoo, Alpine, Void, Solus
**Task 14: Create Test Matrix for CI**
- New workflow: .github/workflows/distro-test-matrix.yml
- Tests on multiple container images: Ubuntu 22.04, 24.04, Debian 12, Fedora 39
- Runs dependency checker on each distro
- Tests Python imports and bash syntax validation
- Uses continue-on-error for experimental distro support
**Task 15: Integration Testing Checklist**
- New file: tests/distro-testing-checklist.md
- Comprehensive checklist for testing on new distributions
- Covers: Pre-install, Installation, Post-install, Functionality, Performance, Cleanup
- Includes quick reference commands
- Desktop environment and application-specific testing sections
- Template for submitting test results
Part of cross-distribution compatibility improvements (Phase 4 of 5).
Related to #157
Add better error messages and documentation for cross-distribution compatibility.
**Task 9: System Dependency Checker (scripts/check-system-deps.sh)**
- New script to check system dependencies regardless of distribution
- Detects Python 3.8+, pkg-config, GTK3, PyGObject, PortAudio
- Checks for text injection tools (xdotool, wtype, ydotool)
- Provides distribution-specific installation instructions
- Supports all 10+ distribution families (Ubuntu, Debian, Fedora, Arch, openSUSE, Gentoo, Alpine, Void, Solus, Mageia)
**Task 10: Better Unsupported Distro Message (install.sh)**
- Enhanced error message for unsupported distributions
- References the new dependency checker script
- Provides manual installation options (skip-system-deps, venv install)
- Includes link to project wiki
- Interactive prompt to continue or cancel
**Task 11: Distro Compatibility Documentation (docs/DISTRO_COMPATIBILITY.md)**
- Comprehensive compatibility matrix for supported distros
- Experimental support section with known issues
- Requirements by distribution with exact commands
- Desktop environment compatibility (GNOME, KDE, Xfce, sway, i3, etc.)
- Display server support (X11, Wayland, XWayland)
- Architecture support (x86_64, arm64, armhf, riscv64)
- Testing checklist for new distributions
- Issue reporting guidelines
- Contributing guidelines for compatibility fixes
Part of cross-distribution compatibility improvements (Phase 3 of 5).
Related to #157
Add support for 5 additional Linux distribution families:
**New Distribution Detection:**
- Gentoo (Portage package manager)
- Alpine Linux (apk package manager)
- Void Linux (xbps package manager)
- Solus (eopkg package manager)
- Mageia (dnf/urpmi package managers)
**Changes:**
- Enhanced `detect_distro()` to detect Gentoo, Alpine, Void, Solus, Mageia
- Added package definitions for each new distribution in `install_system_dependencies()`
- Added full installation case statements with package verification
- Updated `install_python_dependencies()` to handle virtual environment creation for new distros
- Updated `install_text_input_tools()` for both Wayland and X11 sessions
- Updated unknown session type fallback with all new distributions
**Package Manager Support:**
- emerge: Gentoo's Portage (compiles from source)
- apk: Alpine's package manager (musl libc)
- xbps: Void Linux's package manager
- eopkg: Solus's package manager
- dnf/urpmi: Mageia's package managers
Part of cross-distribution compatibility improvements (Phase 2 of 5).
Related to #157
* fix: Phase 1 - Critical cross-distribution compatibility fixes
This commit implements the first phase of cross-distribution compatibility
improvements for Vocalinux, addressing the most critical issues that prevent
the application from working on non-Ubuntu distributions.
## Changes
### install.sh
- Add detect_typelib_path() function that dynamically discovers GI_TYPELIB_PATH
using pkg-config with fallback to distribution-specific paths
- Update wrapper scripts (vocalinux, vocalinux-gui) to use detected path
- Support for: x86_64, arm64, armhf, riscv64, powerpc64le, s390x architectures
- Specific paths for: Ubuntu multiarch, Fedora/RHEL (lib64), Arch (lib)
### src/vocalinux/speech_recognition/recognition_manager.py
- Add _get_system_model_paths() function for dynamic model path discovery
- Enhance ALSA library detection with multiple library name fallbacks:
- libasound.so.2, libasound.so, libasound.so.0, asound
- Support XDG_DATA_DIRS environment variable for model paths
- Distribution-specific paths for Fedora/RHEL/CentOS/Rocky/AlmaLinux
- Arch-specific handling (excludes /usr/local)
### src/vocalinux/utils/resource_manager.py
- Enhanced _find_resources_dir() with more candidate paths
- Support for XDG_DATA_DIRS environment variable
- Add lib64 and lib paths for Fedora/RHEL distributions
- Add Flatpak-specific path (/app/share/vocalinux/resources)
## Testing
All 462 existing tests pass.
## Related Issues
Fixes#157 (partial - Phase 1 of 5)
* chore: Remove analysis docs from PR, add to .gitignore
* style: Apply black formatting to pass lint checks
* feat(readme): add screenshots section to README
* feat(readme): add transcription screenshot to README
* feat(readme): remove duplicate settings screenshot, keep annotated version
* refactor(readme): move screenshots to resources directory
* feat(resources): add screenshots directory
* feat(readme): add all screenshots in 2x2 table layout with full-width features overview
* docs(readme): mark Improved Wayland support as completed in roadmap
* feat(website): update install commands to use /tmp/vl.sh for better UX
* feat(readme): add screenshots section to README
* feat(readme): add transcription screenshot to README
* feat(readme): remove duplicate settings screenshot, keep annotated version
* refactor(readme): move screenshots to resources directory
* feat(resources): add screenshots directory
* feat(readme): add all screenshots in 2x2 table layout with full-width features overview
* docs(readme): mark Improved Wayland support as completed in roadmap
Accidentally removed entire 'Alternative: Install from Source' section
when adding 'What's New' content. Restored the original section
with installation commands and After Installation instructions.
Moved 'What's New in v0.5.0-beta' section to be positioned
correctly (before the 'Beta Release' announcement, not after 'Requirements').
All install commands now correctly reference v0.5.0-beta.
This commit prepares the repository for the v0.5.0-beta release,
transitioning from alpha to beta status.
Changes made:
- Update version from 0.4.1-alpha to 0.5.0-beta in version.py
- Update Development Status classifier from Alpha to Beta in pyproject.toml and setup.py
- Update status badges from Alpha (orange) to Beta (blue) in README.md
- Update all installation command examples to use v0.5.0-beta tag
- Update release announcement from Alpha to Beta in README.md
- Add RELEASE_PROCESS.md documentation for future releases
- Update docs/INSTALL.md with new version references
- Add What's New section for v0.5.0-beta in docs/UPDATE.md
- Update SECURITY.md supported versions table
- Update website schema softwareVersion in layout.tsx
- Update website version badges in page.tsx
- Update website package.json version to 0.5.0
Testing:
- All 463 tests passing (100%)
- Version consistency verified across all files
Release process documentation added to docs/RELEASE_PROCESS.md