Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
c0f1091
Add macOS support
peteonrails Jan 27, 2026
8410568
macOS: Add SwiftUI setup wizard and improve daemon
peteonrails Jan 29, 2026
55769df
Restore Linux-specific documentation removed during macOS merge
peteonrails Jan 29, 2026
88c9497
Bump version to 0.6.0-rc1
peteonrails Jan 29, 2026
f5283f2
Bump version to 0.6.0-rc.1, add Homebrew formula
peteonrails Jan 29, 2026
df79e87
Document cargo clean requirement for GPU builds
peteonrails Jan 30, 2026
0df8b34
Add X11 and GTK dependencies to Dockerfiles
peteonrails Jan 30, 2026
2843b79
macOS: Polish setup wizard for first release
peteonrails Jan 30, 2026
4a0bc1e
Homebrew: Enable parakeet for macOS builds
peteonrails Jan 30, 2026
1ae51be
Fix Parakeet quantized model detection in setup check
peteonrails Jan 30, 2026
1810cca
Add Homebrew Cask for macOS prebuilt binary installation
peteonrails Jan 30, 2026
6c3adb9
Update Cask SHA256 for rebuilt DMG with Parakeet fix
peteonrails Jan 30, 2026
6e9020e
Auto-start daemon via LaunchAgent in Cask postflight
peteonrails Jan 30, 2026
d54521c
Auto-remove quarantine in Cask postflight for seamless install
peteonrails Jan 30, 2026
3e75c0f
Clean stale state and improve Cask caveats
peteonrails Jan 30, 2026
0dceea5
Update macOS install docs for beta with unsigned binaries
peteonrails Jan 31, 2026
fa44ac8
Add VoxtypeMenubar Swift app for macOS status icon
peteonrails Jan 31, 2026
ab9a350
Improve VoxtypeMenubar menu layout and settings launch
peteonrails Jan 31, 2026
3f1e307
Replace VoxtypeSetup wizard with sidebar settings app
peteonrails Jan 31, 2026
6080247
Fix macOS settings config corruption and improve notifications
peteonrails Jan 31, 2026
5b970dd
Improve macOS menubar layout and settings UX
peteonrails Jan 31, 2026
4845519
Add Christopher Albert to contributors for macOS port
peteonrails Jan 31, 2026
b1562e2
Add Homebrew installation to website download page
peteonrails Jan 31, 2026
bdfc019
Improve macOS Homebrew installation experience
peteonrails Jan 31, 2026
6c08105
Open Settings to Permissions pane on first Homebrew install
peteonrails Jan 31, 2026
c5851fc
Add "Show in Menu Bar" toggle to Settings app
peteonrails Jan 31, 2026
ffa0e6e
Bump version to 0.6.0-rc.2, document 7-binary release process
peteonrails Feb 1, 2026
ad616e0
Fix CI workflow issues for macOS PR
krystophny Feb 3, 2026
e71b76e
Add FN/Function/Globe key support for macOS hotkeys
krystophny Feb 4, 2026
cbc3e19
Add voxtype setup app-bundle for macOS (recommended over launchd)
krystophny Feb 4, 2026
c7dea1c
Unify macOS setup: macos.rs uses app_bundle, deprecate launchd
krystophny Feb 5, 2026
cc70f7e
Merge pull request #171 from peteonrails/fix/ci-workflow-issues
peteonrails Feb 15, 2026
da2cf35
Merge pull request #173 from peteonrails/feature/fn-key-support
peteonrails Feb 15, 2026
1d05c0c
Merge pull request #174 from peteonrails/feature/macos-launcher
peteonrails Feb 15, 2026
16525d0
Merge main into feature/macos-release
krystophny Feb 17, 2026
d499d64
Merge pull request #214 from peteonrails/chore/merge-main-into-macos-…
peteonrails Feb 17, 2026
ef83bcb
Merge origin/main into feature/macos-release
krystophny Feb 18, 2026
35a0137
Merge origin/main into feature/macos-release
krystophny Feb 25, 2026
d047e66
Fix macOS app bundle: self-copy corruption, code signing, and permiss…
krystophny Feb 25, 2026
b8b83a3
Replace menubar polling with kqueue file watching for instant icon up…
krystophny Feb 25, 2026
beb6280
macOS zero-friction install: auto-setup, FN hotkey, unified bundle ID
peteonrails Mar 9, 2026
4b93133
Merge main into feature/macos-release
krystophny Apr 23, 2026
36726d3
Add first-class filler-word filtering
peteonrails Apr 25, 2026
3022bce
Add daemon-side audio level emitter for the OSD visualizer
peteonrails Apr 25, 2026
48ceab3
Enable filler-word filtering by default
peteonrails Apr 25, 2026
5eb5ea9
Add voxtype-osd binary skeleton
peteonrails Apr 25, 2026
b7f4ca8
Update STATUS.md with Commit 2 progress
peteonrails Apr 25, 2026
e7ae824
Add Cohere Transcribe backend (proof-of-concept, feature-gated)
peteonrails Apr 25, 2026
742b421
Split OSD into shared module and dual-binary frontends
peteonrails Apr 25, 2026
a5a6863
Add GTK4 + Cairo OSD frontend rendering
peteonrails Apr 25, 2026
a8fc4d3
Add native (SCTK + wgpu + egui-wgpu) OSD frontend rendering
peteonrails Apr 25, 2026
d527d3a
Extract engine-agnostic binary inventory into setup::binary
peteonrails Apr 25, 2026
878a7da
Polish GTK4 OSD: themes, configurable gain, dead-spot fix
peteonrails Apr 26, 2026
ef0ec77
Run gpu_isolation worker spawn off the async event loop
peteonrails Apr 26, 2026
7132b7d
Merge branch 'feature/mic-osd-gtk4' into feature/mic-osd-native
peteonrails Apr 26, 2026
cb1ad31
Port GTK4 polish to native OSD: configurable gain, fast idle, config …
peteonrails Apr 26, 2026
13d9880
Add voxtype-osd launcher to pick between GTK4 and native frontends
peteonrails Apr 26, 2026
c891a7f
Add `voxtype configure` TUI with variant picker
peteonrails Apr 26, 2026
cecf332
Merge OSD into rc/0.7.0
peteonrails Apr 26, 2026
5e73cc7
Add hardware-aware variant recommendations and model hints to TUI
peteonrails Apr 26, 2026
4bc8f03
Merge filler-word filtering into rc/0.7.0
peteonrails Apr 26, 2026
d0ce56e
Add TUI sidebar navigation with placeholder sections
peteonrails Apr 26, 2026
f71578b
Bump version to 0.7.0
peteonrails Apr 26, 2026
a05148c
Add ConfigEditor for comment-preserving TUI saves
peteonrails Apr 26, 2026
81c1cfe
Add Hotkey section to the configuration TUI
peteonrails Apr 26, 2026
c2695d5
Add Audio section and dotted-table support to ConfigEditor
peteonrails Apr 27, 2026
840a1ee
Add Models section to the configuration TUI
peteonrails Apr 27, 2026
b70dda8
Add Engine section with Whisper-specific tuning
peteonrails Apr 27, 2026
8c225c7
Add Output section and shared form-rendering helpers
peteonrails Apr 27, 2026
a60375f
Rename ROCm to MIGraphX per BRIEF.md
peteonrails Apr 27, 2026
0dc03f6
Mark version 0.7.0-rc1 (beta build)
peteonrails Apr 27, 2026
07bb567
Add Text section for spoken-punctuation toggles
peteonrails Apr 27, 2026
d74f662
Add VAD, Meeting, Notifications, Waybar, and Advanced sections
peteonrails Apr 27, 2026
48d84e4
Two-panel form layout, applied to Hotkey first
peteonrails Apr 27, 2026
50d9390
Apply two-panel layout to all form sections
peteonrails Apr 27, 2026
1875570
use migraphx instead of rocm
andresilva Jan 28, 2026
1343525
flake: set ort migraphx model cache path in wrapper
andresilva Jan 28, 2026
5447c8c
flake: update nixpkgs
andresilva Feb 9, 2026
59f0531
Update log message to reflect MIGraphX execution provider
peteonrails Apr 18, 2026
41f587f
Bump parakeet-rs to 0.3.5 and accept CUDA 12 or 13
peteonrails Apr 27, 2026
7c814ea
Rename parakeet-rocm → parakeet-migraphx, voxtype-onnx-rocm → voxtype…
peteonrails Apr 27, 2026
2ea70eb
Detect Hyprland, Sway, and Niri voxtype bindings
peteonrails Apr 27, 2026
d859f4a
Suggest missing voxtype compositor bindings in Hotkey About pane
peteonrails Apr 27, 2026
886ab85
Skip already-bound keys when suggesting new compositor bindings
peteonrails Apr 27, 2026
2aefaba
Engine section now configures all seven engines, not just Whisper
peteonrails Apr 27, 2026
226f480
Engine screen auto-switches binary on family mismatch
peteonrails Apr 27, 2026
22653bb
Don't write engine tables that don't have a model
peteonrails Apr 27, 2026
1be743c
Engine page can now pick the model for each engine
peteonrails Apr 27, 2026
e55b7d5
Add Cohere Transcribe ONNX I/O inspector
peteonrails Apr 27, 2026
11c2a36
Remove Models section now that Engine handles model picking
peteonrails Apr 28, 2026
3f1bb98
Inline text editing, applied to Whisper initial prompt
peteonrails Apr 28, 2026
17df2b0
Verify Cohere PoC against real model and rewrite to match export
peteonrails Apr 28, 2026
6753b0c
Inline text editing for Output, Hotkey, and Audio free-text fields
peteonrails Apr 28, 2026
6d5757b
Wire Cohere into config/CLI/factory/output icon/VAD picker
peteonrails Apr 28, 2026
f1b1576
Whisper remote endpoint/api_key/model rows in Engine
peteonrails Apr 28, 2026
b43674d
Add Cohere Transcribe as the eighth engine
peteonrails Apr 28, 2026
018742a
Split voxtype-onnx-cuda into cu12 and cu13 variants and ship companio…
peteonrails Apr 28, 2026
a8fbd77
Detect host CUDA major and pick voxtype-onnx-cuda-12 vs -13 automatic…
peteonrails Apr 28, 2026
a57ab50
Add Cohere model download flow to 'voxtype setup model'
peteonrails Apr 28, 2026
b9d620e
Ship voxtype-configure as a desktop-launcher entry
peteonrails Apr 28, 2026
c3b6fba
Add Cohere to ONNX Docker build matrix
peteonrails Apr 28, 2026
8faf8b6
Add ? keymap overlay
peteonrails Apr 28, 2026
062f25b
Document Cohere Transcribe engine in USER_MANUAL and CONFIGURATION
peteonrails Apr 28, 2026
23dbb41
Per-state icon overrides on the Waybar section
peteonrails Apr 28, 2026
0295e0b
Inline editor for [text.replacements] map
peteonrails Apr 28, 2026
0473f6d
Footer summaries + binding source file + drop dead stub.rs
peteonrails Apr 28, 2026
729ef34
Recognize TranscriptionEngine::Cohere ahead of rc/0.7.0 rebase
peteonrails Apr 28, 2026
842493f
Merge pull request #334 from peteonrails/fix/cuda-13-support
peteonrails Apr 28, 2026
5c73eb6
Merge Cohere Transcribe engine into rc/0.7.0
peteonrails Apr 28, 2026
de48d30
Silence ALSA stderr during cpal device enumeration
peteonrails Apr 28, 2026
f4d9668
Document voxtype configure
peteonrails Apr 28, 2026
3a401ad
Live-refresh General every 2s while it's the active section
peteonrails Apr 28, 2026
5b2378f
Smoke + unit coverage for post_process trim + fallback_on_empty
peteonrails Apr 29, 2026
f952f54
Banner on General when the active model isn't downloaded
peteonrails Apr 29, 2026
c5bb0e4
Mouse support for sidebar and content focus
peteonrails Apr 29, 2026
0e9b4ea
Make notification urgency configurable
peteonrails Apr 30, 2026
8af778c
Add onnx-load-dynamic feature for Nix builds
peteonrails Apr 30, 2026
03a9af9
Rewrite Dockerfile.onnx-migraphx to build ORT from source with --use_…
peteonrails Apr 30, 2026
d71b398
Merge feature/tui-configure into rc/0.7.0
peteonrails Apr 30, 2026
f8965b2
Merge pull request #333 from peteonrails/fix/gpu-isolation-blocking
peteonrails Apr 30, 2026
f0e11de
Fall back to /etc/voxtype/config.toml when no user config exists
peteonrails Apr 30, 2026
830787c
Restrict MIGraphX EP registration to engines that actually compile
peteonrails Apr 30, 2026
e9dea02
Merge pull request #338 from peteonrails/fix/issue-335-notification-u…
peteonrails Apr 30, 2026
38911d0
Merge pull request #339 from peteonrails/fix/issue-337-config-fallback
peteonrails Apr 30, 2026
94f381f
Merge origin/rc/0.7.0 into feature/macos-release
peteonrails May 1, 2026
47c8e9f
Bump Dockerfile.onnx-migraphx base to ROCm 7.2.2 and pull in migraphx…
peteonrails May 1, 2026
7b4bf05
Wrapper script at /usr/bin/voxtype for GPU/ONNX variants
peteonrails May 2, 2026
c6b21a2
Set ORT_MIGRAPHX_MODEL_CACHE_PATH in the dispatch wrapper
peteonrails May 2, 2026
498532e
Detect active variant through wrapper script, not just symlink
peteonrails May 2, 2026
161fbbf
Merge new rc/0.7.0 commits into feature/macos-release
peteonrails May 2, 2026
70730c4
Build macOS DMG with all engines via Microsoft ONNX Runtime
peteonrails May 2, 2026
078ceb6
Merge origin/feature/macos-release into local
peteonrails May 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
291 changes: 291 additions & 0 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,291 @@
name: Build Linux

on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
version:
description: 'Version (without v prefix)'
required: true
default: '0.5.0'

jobs:
# AVX2 build - uses Docker for clean toolchain (no AVX-512 contamination)
build-avx2:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Determine version
id: version
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
fi

- name: Build AVX2 binary in Docker
run: |
VERSION=${{ steps.version.outputs.version }}
docker build -f Dockerfile.build -t voxtype-avx2 --build-arg VERSION=${VERSION} .
mkdir -p releases/${VERSION}
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-avx2

- name: Verify binary
run: |
VERSION=${{ steps.version.outputs.version }}
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx2 --version

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: linux-avx2
path: releases/${{ steps.version.outputs.version }}/voxtype-*-linux-x86_64-avx2

# Vulkan build - uses Docker for clean toolchain
build-vulkan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Determine version
id: version
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
fi

- name: Build Vulkan binary in Docker
run: |
VERSION=${{ steps.version.outputs.version }}
docker build -f Dockerfile.vulkan -t voxtype-vulkan --build-arg VERSION=${VERSION} .
mkdir -p releases/${VERSION}
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-vulkan

- name: Verify binary
run: |
VERSION=${{ steps.version.outputs.version }}
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-vulkan --version

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: linux-vulkan
path: releases/${{ steps.version.outputs.version }}/voxtype-*-linux-x86_64-vulkan

# Parakeet AVX2 build - uses Docker for clean toolchain
build-parakeet-avx2:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Determine version
id: version
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
fi

- name: Build Parakeet AVX2 binary in Docker
run: |
VERSION=${{ steps.version.outputs.version }}
docker build -f Dockerfile.parakeet -t voxtype-parakeet-avx2 --build-arg VERSION=${VERSION} .
mkdir -p releases/${VERSION}
docker run --rm -v $(pwd)/releases/${VERSION}:/output voxtype-parakeet-avx2

- name: Verify binary
run: |
VERSION=${{ steps.version.outputs.version }}
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-parakeet-avx2 --version

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: linux-parakeet-avx2
path: releases/${{ steps.version.outputs.version }}/voxtype-*-linux-x86_64-parakeet-avx2

# AVX-512 build - requires AVX-512 capable runner (best effort)
build-avx512:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Check for AVX-512 support
id: check-avx512
run: |
if grep -q avx512f /proc/cpuinfo; then
echo "supported=true" >> $GITHUB_OUTPUT
echo "AVX-512 is supported on this runner"
else
echo "supported=false" >> $GITHUB_OUTPUT
echo "AVX-512 is NOT supported on this runner - skipping build"
fi

- name: Determine version
if: steps.check-avx512.outputs.supported == 'true'
id: version
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
fi

- name: Install Rust
if: steps.check-avx512.outputs.supported == 'true'
uses: dtolnay/rust-toolchain@stable

- name: Install dependencies
if: steps.check-avx512.outputs.supported == 'true'
run: |
sudo apt-get update
sudo apt-get install -y libasound2-dev libclang-dev cmake \
libgtk-3-dev libglib2.0-dev libx11-dev libxi-dev libxtst-dev

- name: Build AVX-512 binary
if: steps.check-avx512.outputs.supported == 'true'
env:
RUSTFLAGS: "-C target-cpu=native"
run: |
cargo build --release
VERSION=${{ steps.version.outputs.version }}
mkdir -p releases/${VERSION}
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx512

- name: Verify binary
if: steps.check-avx512.outputs.supported == 'true'
run: |
VERSION=${{ steps.version.outputs.version }}
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx512 --version

- name: Upload artifact
if: steps.check-avx512.outputs.supported == 'true'
uses: actions/upload-artifact@v4
with:
name: linux-avx512
path: releases/${{ steps.version.outputs.version }}/voxtype-*-linux-x86_64-avx512

# Parakeet AVX-512 build - requires AVX-512 capable runner (best effort)
build-parakeet-avx512:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Check for AVX-512 support
id: check-avx512
run: |
if grep -q avx512f /proc/cpuinfo; then
echo "supported=true" >> $GITHUB_OUTPUT
echo "AVX-512 is supported on this runner"
else
echo "supported=false" >> $GITHUB_OUTPUT
echo "AVX-512 is NOT supported on this runner - skipping build"
fi

- name: Determine version
if: steps.check-avx512.outputs.supported == 'true'
id: version
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
fi

- name: Install Rust
if: steps.check-avx512.outputs.supported == 'true'
uses: dtolnay/rust-toolchain@stable

- name: Install dependencies
if: steps.check-avx512.outputs.supported == 'true'
run: |
sudo apt-get update
sudo apt-get install -y libasound2-dev libclang-dev cmake \
libgtk-3-dev libglib2.0-dev libx11-dev libxi-dev libxtst-dev \
libssl-dev protobuf-compiler libprotobuf-dev

- name: Build Parakeet AVX-512 binary
if: steps.check-avx512.outputs.supported == 'true'
env:
RUSTFLAGS: "-C target-cpu=native"
run: |
cargo build --release --features parakeet
VERSION=${{ steps.version.outputs.version }}
mkdir -p releases/${VERSION}
cp target/release/voxtype releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-parakeet-avx512

- name: Verify binary
if: steps.check-avx512.outputs.supported == 'true'
run: |
VERSION=${{ steps.version.outputs.version }}
releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-parakeet-avx512 --version

- name: Upload artifact
if: steps.check-avx512.outputs.supported == 'true'
uses: actions/upload-artifact@v4
with:
name: linux-parakeet-avx512
path: releases/${{ steps.version.outputs.version }}/voxtype-*-linux-x86_64-parakeet-avx512

# Collect all artifacts and create release
release:
needs: [build-avx2, build-vulkan, build-parakeet-avx2, build-avx512, build-parakeet-avx512]
if: always() && needs.build-avx2.result == 'success'
runs-on: ubuntu-latest
steps:
- name: Determine version
id: version
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
fi

- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts

- name: Collect binaries
run: |
VERSION=${{ steps.version.outputs.version }}
mkdir -p releases/${VERSION}

# Move all binaries to releases directory
find artifacts -name 'voxtype-*' -type f -exec mv {} releases/${VERSION}/ \;

# List collected binaries
echo "Collected binaries:"
ls -la releases/${VERSION}/

- name: Generate checksums
run: |
VERSION=${{ steps.version.outputs.version }}
cd releases/${VERSION}
sha256sum voxtype-* > SHA256SUMS.txt
echo "Checksums:"
cat SHA256SUMS.txt

- name: Upload combined artifact
uses: actions/upload-artifact@v4
with:
name: linux-release-all
path: |
releases/${{ steps.version.outputs.version }}/voxtype-*
releases/${{ steps.version.outputs.version }}/SHA256SUMS.txt

- name: Upload to release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
files: |
releases/${{ steps.version.outputs.version }}/voxtype-*
releases/${{ steps.version.outputs.version }}/SHA256SUMS.txt
Loading
Loading