Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
cb9a41c
fix(renderers): search AUTOMIX_ASSET_ROOT before default PhaseLimiter…
soficis Sep 30, 2026
1b5610f
feat(ai): tensor inference and opt-in BS-RoFormer vocal separation
soficis Sep 30, 2026
dcebb4d
fix(ui): convert licence string_views before building juce::String
soficis Oct 1, 2026
dc2c919
feat(ui): per-session Vocal Model toggle and separate dev-tools command
soficis Oct 1, 2026
97e2d09
test(audioio): accept the initial meter value in the torn-read test
soficis Oct 1, 2026
ddc217b
fix(ai): append CUDA/TensorRT through their V2 provider APIs
soficis Oct 1, 2026
3e9d979
feat(ai): cancellable, GPU-accelerated tensor separation
soficis Oct 1, 2026
23a4f49
feat(ai): gate fp32 GPU separation on device memory
soficis Oct 1, 2026
05ef29d
feat(ai): on-demand per-user GPU runtime pack for CUDA
soficis Oct 1, 2026
8a42f1b
feat(ai): driver gate, model auto-upgrade and removal for the GPU run…
soficis Oct 1, 2026
1aa7f53
build: Windows release ZIP and lean PhaseLimiter asset staging
soficis Oct 1, 2026
60265fa
fix(renderers): make PhaseLimiter work, opt-in, and leak-free
soficis Oct 1, 2026
8682412
feat(ai): per-user model hub with one-time migration
soficis Oct 1, 2026
1d09f7c
fix(ai): unstick stale model registry entries; correct quantized-CUDA…
soficis Oct 1, 2026
dc4882d
fix(ui): rescan model packs after the in-app GPU vocal-model upgrade
soficis Oct 2, 2026
05f6742
feat(ai): unify session configuration and fix CoreML ANE options
soficis Oct 2, 2026
22935db
feat(ai): add webgpu pure logic, update priority chain order, and plu…
soficis Oct 2, 2026
613d820
fix(ai): untuned tensor sessions, BS-RoFormer allow-list default, har…
soficis Oct 2, 2026
e8d380b
feat(build): add pinned ORT fetch, cross-platform staging/rpath, CI w…
soficis Oct 3, 2026
801e421
fix(build): add separate overload for Clang and handle ORT include/on…
soficis Oct 3, 2026
b4f7baf
fix(test): use portable std::atomic_load/store on shared_ptr in Audio…
soficis Oct 3, 2026
543d617
fix(test): match const type for atomic_store_explicit in AudioIoTests
soficis Oct 3, 2026
90cdf4b
fix(renderers): restrict PhaseLimiter .exe discovery to Windows and t…
soficis Oct 3, 2026
e7da156
test(integration): PhaseLimiter must be discoverable and lead the cha…
soficis Oct 3, 2026
0913f31
fix(bench): exit 3 on fallback, print ORT diagnostics, and test stub …
soficis Oct 3, 2026
608a6f1
feat(renderers): pinned PhaseLimiter acquisition with SHA-256 verific…
soficis Oct 3, 2026
9853d6d
feat(renderers): update PhaseLimiter download pin table with native r…
soficis Oct 3, 2026
745159c
feat(renderers): restore static linux PhaseLimiter pin, enforce stric…
soficis Oct 3, 2026
ac85fdc
docs: sanitize internal doc links in README prior to history purge
soficis Oct 3, 2026
6581021
chore(hygiene): add repository hygiene checker, gitleaks CI workflow,…
soficis Oct 3, 2026
904a97a
fix(build): case-insensitive PhaseLimiter platform detection; reject …
soficis Oct 3, 2026
3be9fc0
refactor(build): single source of truth for PhaseLimiter pins
soficis Oct 3, 2026
e8d79b0
fix(build): always package a native PhaseLimiter; fail install withou…
soficis Oct 3, 2026
1ea2b40
fix(tests): resolve demo-mix-v1 model pack relative to repo root in b…
soficis Oct 3, 2026
cd70591
feat(renderers): pin portable PhaseLimiter v0.2.0-native2 for linux a…
soficis Oct 3, 2026
0773c95
fix(ci): fix Windows shell syntax, macOS processor detection, and ins…
soficis Oct 3, 2026
9145488
ci(workflows): install ffmpeg in nightly_golden_eval and tsan_build f…
soficis Oct 3, 2026
f883286
fix(ci): use YAML folded scalar for cmake configure to support Window…
soficis Oct 3, 2026
3bf9b9c
fix(ci): let CMake auto-detect installed Visual Studio version via -A…
soficis Oct 3, 2026
cc43fd0
fix(tests): make ModelInstallProbe::installCalls atomic to resolve TS…
soficis Oct 3, 2026
6a31c45
fix(ci): install ffmpeg on Windows runner and support OutputDir stagi…
soficis Oct 3, 2026
76aabda
fix(ci): add ffmpeg dependency for Windows packaging and support Wind…
soficis Oct 3, 2026
394f88b
ci(release): build Flatpak bundle on host with arch flag to resolve Q…
soficis Oct 3, 2026
3385ba5
ci: build and test linux arm64 on native ARM runners; remove QEMU
soficis Oct 3, 2026
0edb6cf
ci: forbid masked failures and unpinned actions; widen hygiene patterns
soficis Oct 3, 2026
ab9d0fb
fix(renderers): resolve ffmpeg explicitly for PhaseLimiter; clear err…
soficis Oct 3, 2026
cb4664a
feat(renderers): pin PhaseLimiter v0.2.0-native3 (WAV-only I/O, bundl…
soficis Oct 3, 2026
900740a
test(hygiene): docs/architecture must stay forbidden
soficis Oct 3, 2026
3d22cef
fix(renderers): PhaseLimiter availability no longer depends on ffmpeg…
soficis Oct 3, 2026
bee6757
ci: run TSan and golden eval on master and feature branches
soficis Oct 3, 2026
debebcb
fix(tools): model bench measures the requested provider and fails on …
soficis Oct 4, 2026
2ddc67d
fix(build): enable curl on Linux so HTTPS downloads work; CI smoke-te…
soficis Oct 4, 2026
afc5c9c
ci(onnx): key the deps cache by runner arch so x64 never restores the…
soficis Oct 4, 2026
ec4cd32
ci(release): add dry_run input that builds and verifies packages with…
soficis Oct 4, 2026
7068c54
fix(tools): model bench fails when any inference call fails instead o…
soficis Oct 4, 2026
fdd265d
feat(tools): model bench gains --skip-cpu-baseline, per-run progress,…
soficis Oct 5, 2026
4652206
feat(ai): CoreML/ANE are opt-in for auto on Macs under 12 GiB; warn w…
soficis Oct 5, 2026
7790613
feat(ai): add Open-Unmix vocals as a light separation pack for low-me…
soficis Oct 5, 2026
3b034bf
fix(ai): pin Open-Unmix to a fixed revision and hash; skip the low-me…
soficis Oct 5, 2026
f7aa7a1
fix(ui): working shortcuts dialog, unsaved-changes prompt, readable s…
soficis Oct 5, 2026
fa47e5b
feat(ui): clear visual hierarchy, guided empty state, and plain-langu…
soficis Oct 5, 2026
11d5235
feat(ui): quieter task area, safer settings, and a layout that holds …
soficis Oct 5, 2026
7e130e8
Merge branch 'feat/tensor-inference' into feat/ui-ux-pass
soficis Oct 5, 2026
3c30498
fix(ai): store hub sidecars flat so nested models load; join the ONNX…
soficis Oct 5, 2026
42a8fb4
fix(ui): confirm quitting over a running task, narrow click-to-import…
soficis Oct 5, 2026
a07d5dd
fix(util): pin every LAME download to a SHA-256 and stop trusting unv…
soficis Oct 5, 2026
5e5b903
feat(util): LAME pins follow upstream through a reviewed, published p…
soficis Oct 5, 2026
df77692
fix(util): publish only LAME bottles that run on their own; drop the …
soficis Oct 5, 2026
fd545a1
docs(readme): rewrite for users with new screenshots; fix the zoom mi…
soficis Oct 5, 2026
00cda93
Merge pull request #10 from soficis/feat/ui-ux-pass
soficis Oct 5, 2026
28aad9c
Merge remote-tracking branch 'origin/feat/tensor-inference' into fix/…
soficis Oct 5, 2026
fa83a97
Merge pull request #11 from soficis/fix/lame-hash-pin
soficis Oct 5, 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
56 changes: 56 additions & 0 deletions .github/workflows/lame_pins.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: LAME Pin Update

# Keeps assets/lame-pins.json in step with upstream LAME packages. The app reads
# that file from master, so merging the pull request this opens is what updates
# installed copies. It is never merged automatically: a changed hash is exactly
# what a tampered upstream would look like, so a person confirms it first.

on:
schedule:
- cron: "0 5 * * 1"
workflow_dispatch:

permissions:
contents: write
pull-requests: write

jobs:
update-pins:
runs-on: ubuntu-24.04

steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
ref: master

- name: Refresh pins
run: python3 tools/update_lame_pins.py | tee pin-changes.txt

- name: Open pull request
env:
GH_TOKEN: ${{ github.token }}
run: |
if git diff --quiet -- assets/lame-pins.json; then
echo "Pins are current."
exit 0
fi
branch=chore/lame-pins
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git switch -C "$branch"
git add assets/lame-pins.json
git commit -m "chore(util): refresh LAME download pins"
git push --force origin "$branch"
{
echo "Upstream LAME packages changed. Merging this updates the pins every installed copy uses."
echo
echo "Check each change against its source before merging. Windows (zip) changes have no independent confirmation."
echo
echo '```'
cat pin-changes.txt
echo '```'
} > pr-body.md
gh pr view "$branch" --json state -q .state 2>/dev/null | grep -q OPEN \
&& gh pr edit "$branch" --body-file pr-body.md \
|| gh pr create --base master --head "$branch" --title "chore(util): refresh LAME download pins" --body-file pr-body.md
8 changes: 5 additions & 3 deletions .github/workflows/nightly_golden_eval.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: Nightly Golden Eval

on:
push:
branches: [master, "feat/**"]
schedule:
- cron: "0 2 * * *"
workflow_dispatch:
Expand All @@ -11,12 +13,12 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4

- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y libasound2-dev libjack-jackd2-dev libfreetype6-dev libfontconfig1-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libxrender-dev libwebkit2gtk-4.1-dev libgtk-3-dev libglu1-mesa-dev mesa-common-dev libcurl4-openssl-dev
sudo apt-get install -y ffmpeg libasound2-dev libjack-jackd2-dev libfreetype6-dev libfontconfig1-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libxrender-dev libwebkit2gtk-4.1-dev libgtk-3-dev libglu1-mesa-dev mesa-common-dev libcurl4-openssl-dev

- name: Configure
run: cmake -S . -B build-codex -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DBUILD_TOOLS=ON
Expand All @@ -39,7 +41,7 @@ jobs:

- name: Upload Eval Artifacts
if: success() || failure()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: nightly-golden-eval
path: |
Expand Down
95 changes: 95 additions & 0 deletions .github/workflows/onnx_native.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Native ONNX Runtime CI

on:
push:
branches: [main, "feat/**"]
pull_request:
branches: [main]
workflow_dispatch:

concurrency:
group: onnx-native-${{ github.ref }}
cancel-in-progress: true

jobs:
native-ort:
name: Native ORT (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
cmake_args: "-G Ninja"
- os: ubuntu-24.04-arm
cmake_args: "-G Ninja"
- os: windows-latest
cmake_args: "-A x64"
- os: macos-15
cmake_args: "-G Ninja"

steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4

- name: Install Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential cmake ninja-build pkg-config curl ffmpeg \
libasound2-dev libjack-jackd2-dev libfreetype6-dev libfontconfig1-dev \
libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxinerama-dev \
libxrandr-dev libxrender-dev libwebkit2gtk-4.1-dev libgtk-3-dev \
libglu1-mesa-dev mesa-common-dev libcurl4-openssl-dev

- name: Install macOS build tools
if: runner.os == 'macOS'
run: |
brew install ninja ffmpeg

- name: Install Windows dependencies
if: runner.os == 'Windows'
run: |
choco install ffmpeg --no-progress
echo "C:\ProgramData\chocolatey\bin" >> $env:GITHUB_PATH

- name: Cache fetched dependencies
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: build/_deps
key: deps-ort-1.30.0-${{ matrix.os }}-${{ runner.arch }}-${{ hashFiles('cmake/FetchOnnxRuntime.cmake', 'CMakeLists.txt') }}
restore-keys: |
deps-ort-1.30.0-${{ matrix.os }}-${{ runner.arch }}-

- name: Configure CMake
run: >
cmake -S . -B build
${{ matrix.cmake_args }}
-DCMAKE_BUILD_TYPE=Release
-DENABLE_ONNX=ON
-DAUTOMIX_FETCH_ORT=ON
-DAUTOMIX_ORT_FLAVOR=cpu
-DBUILD_TESTING=ON
-DBUILD_TOOLS=ON

- name: Build
run: cmake --build build --config Release --parallel 3

- name: Run Tests (Full Suite)
run: ctest --test-dir build -C Release --output-on-failure

- name: HTTPS download smoke (Linux, curl)
if: runner.os == 'Linux'
run: |
set -euo pipefail
tools_bin="$(find build -type f -name automix_dev_tools -perm -u+x | head -n1)"
test -n "$tools_bin"
ok=0
for attempt in 1 2 3; do
if "$tools_bin" model browse --limit 1 --out browse.json; then
if python3 -c "import json,sys; d=json.load(open('browse.json')); sys.exit(0 if len(d)>=1 else 1)"; then ok=1; break; fi
fi
sleep 10
done
test "$ok" = 1
Loading
Loading