diff --git a/README.md b/README.md index 4058a68..0f676a3 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ #### Voice-to-text for Linux, finally done right! -[![Status: Alpha](https://img.shields.io/badge/Status-Alpha-orange)](https://github.com/jatinkrmalik/vocalinux) +[![Status: Beta](https://img.shields.io/badge/Status-Beta-blue)](https://github.com/jatinkrmalik/vocalinux) [![GitHub release](https://img.shields.io/github/v/release/jatinkrmalik/vocalinux?include_prereleases)](https://github.com/jatinkrmalik/vocalinux/releases) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) @@ -28,10 +28,10 @@ **A seamless free open-source private voice dictation system for Linux**, comparable to the built-in solutions on macOS and Windows. -> πŸŽ‰ **Alpha Release!** +> πŸŽ‰ **Beta Release!** > -> We're excited to share Vocalinux with the community. -> Try it out and [let us know what you think](https://github.com/jatinkrmalik/vocalinux/issues)! +> We're excited to share Vocalinux Beta with the community. +> This release is feature-complete and ready for broader testing. --- @@ -53,7 +53,7 @@ Let the installer guide you through the setup with smart hardware detection: ```bash -curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha --interactive +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta --interactive ``` The interactive installer will: @@ -65,10 +65,10 @@ The interactive installer will: ### One-liner Installation (Quick Install) ```bash -curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta ``` -> **Note**: Installs v0.4.1-alpha. For the most recent version, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases). +> **Note**: Installs v0.5.0-beta. For the most recent version, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases). > > **GPU Detection**: The installer now automatically detects NVIDIA GPUs and uses CPU-only PyTorch when no GPU is present, saving you ~2GB of download! @@ -86,13 +86,13 @@ This will: **Whisper with CPU-only PyTorch (no NVIDIA GPU needed):** ```bash -curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha --whisper-cpu +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta --whisper-cpu ``` This installs Whisper with CPU-only PyTorch (~200MB instead of ~2.3GB). Works great for systems without NVIDIA GPU. **For low-RAM systems (8GB or less) - VOSK only:** ```bash -curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha --no-whisper +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta --no-whisper ``` This skips Whisper installation entirely and configures VOSK as the default engine. diff --git a/SECURITY.md b/SECURITY.md index 429b874..c434cba 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,8 +4,9 @@ | Version | Supported | | ------- | ------------------ | -| 0.2.x | :white_check_mark: | -| < 0.2 | :x: | +| 0.5.x | :white_check_mark: | +| 0.4.x | :x: | +| < 0.4 | :x: | ## Reporting a Vulnerability diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 523b673..46249b9 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -7,10 +7,10 @@ This guide provides detailed instructions for installing Vocalinux on Linux syst ### One-liner Installation (Recommended) ```bash -curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta ``` -> **Note**: Installs v0.4.1-alpha. For other versions, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases). +> **Note**: Installs v0.5.0-beta. For other versions, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases). That's it! The installer handles everything automatically, including Whisper AI support. @@ -387,7 +387,7 @@ Already have Vocalinux installed? See the [Update Guide](UPDATE.md) for instruct Quick update command: ```bash -curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta ``` ## Getting Help diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md new file mode 100644 index 0000000..e5589d8 --- /dev/null +++ b/docs/RELEASE_PROCESS.md @@ -0,0 +1,342 @@ +# Vocalinux Release Process + +This document outlines the step-by-step process for creating a new release of Vocalinux. + +## Overview + +Vocalinux uses [Semantic Versioning](https://semver.org/) with pre-release suffixes: +- **Alpha**: Early testing phase (e.g., `0.4.1-alpha`) +- **Beta**: Feature-complete, testing phase (e.g., `0.5.0-beta`) +- **RC** (Release Candidate): Final testing before stable (e.g., `0.5.0-rc1`) +- **Stable**: Production-ready (e.g., `1.0.0`) + +## Quick Release Checklist + +Use this checklist for every release: + +```markdown +## Version Bump Checklist for X.Y.Z-PHASE + +### Core Version Files +- [ ] `src/vocalinux/version.py` - Update `__version__` and `__version_info__` +- [ ] `pyproject.toml` - Update classifiers (Alphaβ†’Betaβ†’Stable) +- [ ] `setup.py` - Update classifiers + +### Documentation +- [ ] `README.md` - Update badges, install commands, and announcements +- [ ] `docs/INSTALL.md` - Update version references in curl commands +- [ ] `docs/UPDATE.md` - Add "What's New" section for new version +- [ ] `SECURITY.md` - Update supported versions table + +### Website +- [ ] `web/src/app/layout.tsx` - Update `softwareVersion` in schema +- [ ] `web/src/app/page.tsx` - Update version badge (e.g., "v0.5.0 Beta") +- [ ] `web/package.json` - Update version field + +### Testing & Verification +- [ ] Run `make test` - All tests pass +- [ ] Run `make lint` - No linting errors +- [ ] Run `make typecheck` - No type errors +- [ ] Run `make build` - Package builds successfully + +### Git Operations +- [ ] Create release branch: `git checkout -b release/vX.Y.Z-PHASE` +- [ ] Commit all version changes +- [ ] Push branch and create PR +- [ ] After PR merge, create tag: `git tag -a vX.Y.Z-PHASE -m "Release X.Y.Z-PHASE"` +- [ ] Push tag: `git push origin vX.Y.Z-PHASE` +``` + +## Detailed Release Steps + +### Step 1: Determine Version Number + +Follow semantic versioning: + +``` +Given version MAJOR.MINOR.PATCH-PHASE: + +MAJOR - Breaking changes (for 1.0.0: public API stable) +MINOR - New features, backwards compatible +PATCH - Bug fixes, backwards compatible +PHASE - alpha, beta, rc1, rc2, etc. (omit for stable releases) +``` + +**Examples:** +- Alpha β†’ Beta: `0.4.1-alpha` β†’ `0.5.0-beta` (new features, phase change) +- Beta β†’ RC: `0.5.0-beta` β†’ `0.5.0-rc1` (same features, testing phase) +- RC β†’ Stable: `0.5.0-rc1` β†’ `1.0.0` (first stable release) +- Stable patch: `1.0.0` β†’ `1.0.1` (bug fixes only) +- Stable minor: `1.0.0` β†’ `1.1.0` (new features) + +### Step 2: Update Core Version Files + +#### 2.1 Update `src/vocalinux/version.py` + +```python +__version__ = "0.5.0-beta" +__version_info__ = (0, 5, 0, "beta") +``` + +#### 2.2 Update `pyproject.toml` + +Change the Development Status classifier: + +```toml +# For Alpha: +"Development Status :: 3 - Alpha", + +# For Beta: +"Development Status :: 4 - Beta", + +# For Stable: +"Development Status :: 5 - Production/Stable", +``` + +### Step 3: Update Documentation + +#### 3.1 Update `README.md` + +**Status Badge (line ~6):** +```markdown + +[![Status: Alpha](https://img.shields.io/badge/Status-Alpha-orange)] + + +[![Status: Beta](https://img.shields.io/badge/Status-Beta-blue)] + + +[![Status: Stable](https://img.shields.io/badge/Status-Stable-brightgreen)] +``` + +**Install Commands:** +Update all curl commands to use the new tag: +```bash +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta +``` + +**Release Announcement (lines ~31-34):** +```markdown +> πŸŽ‰ **Beta Release!** +> +> We're excited to share Vocalinux Beta with the community. +> This release is feature-complete and ready for broader testing. +``` + +#### 3.2 Update `docs/INSTALL.md` + +Update all curl command examples with the new version tag. + +#### 3.3 Update `docs/UPDATE.md` + +Add a new "What's New" section at the top: + +```markdown +## What's New in v0.5.0-beta + +- Feature 1 +- Feature 2 +- Bug fix 1 + +See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.5.0-beta). + +--- + +## Previous Versions + +### v0.4.1-alpha +... +``` + +#### 3.4 Update `SECURITY.md` + +Update the supported versions table: + +```markdown +| Version | Supported | +| ------- | ------------------ | +| 0.5.x | :white_check_mark: | +| 0.4.x | :x: | +| < 0.4 | :x: | +``` + +### Step 4: Update Website + +#### 4.1 Update `web/src/app/layout.tsx` + +Update the schema.org softwareVersion (around line 123): + +```typescript +"softwareVersion": "0.5.0-beta", +``` + +#### 4.2 Update `web/src/app/page.tsx` + +Update the version badge in the header (around line 207): + +```tsx + + v0.5.0 Beta + +``` + +Update the hero badge (around line 310): + +```tsx + + Beta Release β€” Try it now! + +``` + +#### 4.3 Update `web/package.json` + +```json +{ + "name": "vocalinux-website", + "version": "0.5.0" +} +``` + +### Step 5: Verify Everything Works + +Run the full verification suite: + +```bash +# Run tests +make test + +# Run linting +make lint + +# Run type checking +make typecheck + +# Build package +make build + +# Test install script (optional but recommended) +./install.sh --tag=v0.5.0-beta --dry-run 2>/dev/null || true +``` + +### Step 6: Create Release Branch and PR + +```bash +# Create branch +git checkout -b release/v0.5.0-beta + +# Stage all changes +git add -A + +# Commit with conventional commit format +git commit -m "chore(release): prepare v0.5.0-beta + +- Update version from 0.4.1-alpha to 0.5.0-beta +- Update status badges from Alpha to Beta +- Update documentation version references +- Update website schema and badges +- Update pyproject.toml classifiers +- Update SECURITY.md supported versions table" + +# Push branch +git push origin release/v0.5.0-beta + +# Create PR (use GitHub CLI or web interface) +gh pr create --title "chore(release): prepare v0.5.0-beta" \ + --body "This PR prepares the repository for the v0.5.0-beta release. + +## Changes +- Bumped version to 0.5.0-beta +- Updated status badges from Alpha to Beta +- Updated all documentation version references +- Updated website version info +- Updated SECURITY.md supported versions + +## Checklist +- [x] All tests passing +- [x] Linting clean +- [x] Type checking clean +- [x] Package builds successfully" +``` + +### Step 7: Create and Push Tag (After PR Merge) + +Once the PR is merged to main: + +```bash +# Checkout main +git checkout main +git pull origin main + +# Create annotated tag +git tag -a v0.5.0-beta -m "Vocalinux Beta Release 0.5.0 + +Key changes since 0.4.1-alpha: +- Feature 1 +- Feature 2 +- Bug fix 1 + +Full changelog: https://github.com/jatinkrmalik/vocalinux/releases" + +# Push tag +git push origin v0.5.0-beta +``` + +### Step 8: Monitor Release + +After pushing the tag, the GitHub Actions workflow will automatically: + +1. Build the Python package (wheel and sdist) +2. Create a GitHub Release with auto-generated notes +3. Publish to PyPI +4. Deploy the website to vocalinux.com +5. Mark as pre-release if version contains alpha/beta/rc + +Monitor at: https://github.com/jatinkrmalik/vocalinux/actions + +### Step 9: Post-Release Tasks + +- [ ] Verify GitHub Release was created correctly +- [ ] Verify PyPI package was published (if applicable) +- [ ] Verify website was deployed (check vocalinux.com) +- [ ] Announce on social media/communities +- [ ] Update any pinned issues or discussions + +## Emergency Hotfix Process + +For critical bugs in a released version: + +```bash +# Create hotfix branch from the tag +git checkout -b hotfix/v0.5.1-beta v0.5.0-beta + +# Make fix, commit, push +git add -A +git commit -m "fix: critical bug description" +git push origin hotfix/v0.5.1-beta + +# Create PR targeting main +# After merge, tag new version +git tag -a v0.5.1-beta -m "Hotfix release v0.5.1-beta" +git push origin v0.5.1-beta +``` + +## Version History + +| Version | Date | Phase | Notes | +|---------|------|-------|-------| +| 0.2.0-alpha | 2024 | Alpha | Initial alpha | +| 0.3.0-alpha | 2024 | Alpha | - | +| 0.4.0-alpha | 2024 | Alpha | Multi-language support | +| 0.4.1-alpha | 2024 | Alpha | Language selector UI | +| 0.5.0-beta | 2025 | Beta | First beta release | + +## Questions? + +If you're unsure about any step: +1. Check previous releases for examples +2. Review the GitHub Actions workflows in `.github/workflows/` +3. Ask in the project's discussions + +--- + +**Note**: This document should be updated when the release process changes. diff --git a/docs/UPDATE.md b/docs/UPDATE.md index 17f5edc..83488da 100644 --- a/docs/UPDATE.md +++ b/docs/UPDATE.md @@ -9,7 +9,7 @@ This guide explains how to update Vocalinux to the latest version. Simply re-run the installation command with the new version tag: ```bash -curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta ``` The installer will: @@ -24,7 +24,7 @@ The installer will: ```bash cd vocalinux git fetch origin -git checkout v0.4.1-alpha +git checkout v0.5.0-beta ./install.sh ``` @@ -50,7 +50,7 @@ cd vocalinux ./install.sh --tag=v0.4.1-alpha # Or via curl (for any installation) -curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta ``` **What gets preserved:** @@ -68,7 +68,7 @@ cd vocalinux # 2. Pull the latest changes git fetch origin -git checkout v0.4.1-alpha +git checkout v0.5.0-beta # 3. Activate your virtual environment source venv/bin/activate @@ -97,19 +97,29 @@ git describe --tags --- -## What's New in v0.4.1-alpha +## What's New in v0.5.0-beta + +- **Customizable keyboard shortcuts**: Configure your own activation shortcuts via GUI +- **Modern settings dialog**: Redesigned with GNOME HIG styling +- **Improved audio feedback**: Pleasant gliding tones for recording status +- **Enhanced Wayland support**: Better keyboard shortcut handling on Wayland +- **Microphone reconnection**: Automatic reconnection when microphone disconnects +- **80%+ test coverage**: Comprehensive test suite for reliability +- **Interactive installer**: Smart hardware detection and guided installation + +See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.5.0-beta). + +--- + +## Previous Versions + +### v0.4.1-alpha - **Language selector UI**: Choose from 10 languages with auto-detection support for Whisper - **App drawer launch fix**: Desktop entry now works when installing from local repo - **Better commit handling**: Fixed error with special characters in commit messages - **Improved update mechanism**: Corrected git fetch syntax for tag-based updates -See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.4.1-alpha). - ---- - -## Previous Versions - ### v0.4.0-alpha - **Multi-language support**: French, German, and Russian @@ -132,7 +142,7 @@ See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/ ./uninstall.sh --keep-config --keep-data # Reinstall -curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha +curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta ``` ### Old Version Still Running diff --git a/pyproject.toml b/pyproject.toml index 7392f6d..743bfd8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ keywords = [ "linux", "accessibility", "voice-typing", "speech-to-text" ] classifiers = [ - "Development Status :: 3 - Alpha", + "Development Status :: 4 - Beta", "Environment :: X11 Applications :: GTK", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", diff --git a/setup.py b/setup.py index b9a78a5..1568a45 100644 --- a/setup.py +++ b/setup.py @@ -138,7 +138,7 @@ setup( ], include_package_data=True, classifiers=[ - "Development Status :: 3 - Alpha", + "Development Status :: 4 - Beta", "Environment :: X11 Applications :: GTK", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", diff --git a/src/vocalinux/version.py b/src/vocalinux/version.py index 6aa871a..79434ad 100644 --- a/src/vocalinux/version.py +++ b/src/vocalinux/version.py @@ -2,8 +2,8 @@ Version information for Vocalinux. """ -__version__ = "0.4.1-alpha" -__version_info__ = (0, 4, 1, "alpha") +__version__ = "0.5.0-beta" +__version_info__ = (0, 5, 0, "beta") __author__ = "Jatin K Malik" __email__ = "jatinkrmalik@gmail.com" __license__ = "GPL-3.0" diff --git a/web/package.json b/web/package.json index 208968d..ddb0773 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "vocalinux-website", - "version": "0.3.0", + "version": "0.5.0", "private": true, "type": "module", "scripts": { diff --git a/web/src/app/layout.tsx b/web/src/app/layout.tsx index c1fd758..bc7ba39 100644 --- a/web/src/app/layout.tsx +++ b/web/src/app/layout.tsx @@ -120,7 +120,7 @@ export default function RootLayout({ "priceCurrency": "USD" }, "description": "Free, open-source voice dictation for Linux. 100% offline with Whisper AI and VOSK. Works with X11 and Wayland.", - "softwareVersion": "0.4.1-alpha", + "softwareVersion": "0.5.0-beta", "author": { "@type": "Person", "name": "Jatin K Malik", diff --git a/web/src/app/page.tsx b/web/src/app/page.tsx index d27af09..507389f 100644 --- a/web/src/app/page.tsx +++ b/web/src/app/page.tsx @@ -204,7 +204,7 @@ export default function HomePage() { /> Vocalinux - v0.4.1 Alpha + v0.5.0 Beta @@ -307,7 +307,7 @@ export default function HomePage() {
- Alpha Release β€” Try it now! + Beta Release β€” Try it now!