Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
a4482c2
Generalization of the DAW processors. Each DAW processor can be insta…
bzeiss Feb 17, 2026
59b716d
first version of dawproject support
bzeiss Feb 17, 2026
4a89e04
rebuild parts of config dialog from shared widget, fix for preapre bu…
bzeiss Feb 17, 2026
6608e8d
documentation updates.
bzeiss Feb 17, 2026
61d12a2
DAWProject clipgain working correctly now.
bzeiss Feb 18, 2026
39c32e2
Added "Selected by default" config preference for audio processors. F…
bzeiss Feb 18, 2026
4c9d0cf
alt+shift batch edit for multiselect-dropdowns.
bzeiss Feb 18, 2026
96453a3
load and save session.
bzeiss Feb 18, 2026
ea8d834
file selector for file-based daw processors.
bzeiss Feb 18, 2026
0bdf1e7
updated build workflows.
bzeiss Feb 18, 2026
41e64b7
bump version to 0.2.4
bzeiss Feb 18, 2026
22e3462
add setuptools
bzeiss Feb 18, 2026
1efdedd
build pipeline fix.
bzeiss Feb 18, 2026
c6a5726
fix for dawproject
bzeiss Feb 18, 2026
5a57ced
big mainwindow.py refactoring.
bzeiss Feb 19, 2026
017ef35
waveform.py refactoring.
bzeiss Feb 19, 2026
34423da
GUI directory restructuring.
bzeiss Feb 19, 2026
08ef515
preferences refactoring.
bzeiss Feb 20, 2026
b279ff9
bugfix for generalized pathpicker.
bzeiss Feb 20, 2026
ecff2a7
Documentation updates.
bzeiss Feb 20, 2026
5a5b934
windows innosetup
bzeiss Feb 21, 2026
8982723
dawproject fix.
bzeiss Feb 21, 2026
8b1d12d
innosetup fix + nfpm packaging.
bzeiss Feb 21, 2026
fafea53
linux packaging fix.
bzeiss Feb 21, 2026
e5daa5e
windows packaging: embedding ico
bzeiss Feb 21, 2026
e6495fa
improved linux installer script.
bzeiss Feb 21, 2026
203146d
innosetup rework.
bzeiss Feb 21, 2026
5d3207d
switch to mingw on windows by default.
bzeiss Feb 21, 2026
a6381cd
another innosetup fix.
bzeiss Feb 21, 2026
578ad3e
revert to msvc
bzeiss Feb 21, 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
95 changes: 87 additions & 8 deletions .github/workflows/build-nuitka.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]

steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -40,18 +40,97 @@ jobs:
${{ runner.os }}-nuitka-

- name: Install Dependencies
run: uv sync --all-extras
run: uv sync --extra cli --extra gui

- name: Disable Windows Defender for build directory
if: runner.os == 'Windows'
shell: pwsh
run: Add-MpPreference -ExclusionPath $PWD

- name: Build with Nuitka
run: uv run python build_nuitka.py all

- name: Upload Artifacts
- name: Package Linux Distributions
if: runner.os == 'Linux'
shell: bash
run: |
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \
| sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt-get update -q && sudo apt-get install -y nfpm

export VERSION=$(python -c \
"exec(open('sessionpreplib/_version.py').read()); print(__version__)")
export DIST_DIR=dist_nuitka

TMPCONFIG=$(mktemp --suffix=.yaml)
envsubst < packaging/linux/nfpm.yaml > "$TMPCONFIG"
nfpm package --config "$TMPCONFIG" --packager deb --target dist_nuitka/
nfpm package --config "$TMPCONFIG" --packager rpm --target dist_nuitka/
rm "$TMPCONFIG"

STAGING=$(mktemp -d)
cp dist_nuitka/sessionprep-linux-x64 "$STAGING/sessionprep"
cp dist_nuitka/sessionprep-gui-linux-x64 "$STAGING/sessionprep-gui"
cp sessionprepgui/res/sessionprep.png "$STAGING/sessionprep.png"
cp packaging/linux/sessionprep.desktop "$STAGING/sessionprep.desktop"
cp packaging/linux/install-sessionprep.sh "$STAGING/install-sessionprep.sh"
chmod +x "$STAGING/install-sessionprep.sh"
tar -czf "dist_nuitka/sessionprep-${VERSION}-linux-x64.tar.gz" \
-C "$STAGING" \
sessionprep sessionprep-gui sessionprep.png \
sessionprep.desktop install-sessionprep.sh

- name: Build InnoSetup Installer
if: runner.os == 'Windows'
shell: pwsh
run: |
$ver = (python -c "exec(open('sessionpreplib/_version.py').read()); print(__version__)").Trim()
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" `
"/DAPP_VERSION=$ver" `
"/DDIST_DIR=dist_nuitka" `
"packaging\windows\sessionprep.iss"

- name: Package macOS .app bundles as DMG
if: runner.os == 'macOS'
run: |
brew install create-dmg
for app in dist_nuitka/*.app; do
[ -d "$app" ] || continue
name=$(basename "$app" .app)
create-dmg \
--volname "$name" \
--app-drop-link 600 185 \
--sandbox-safe \
"dist_nuitka/${name}.dmg" \
"$app"
done

- name: Upload Artifacts (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v4
with:
name: sessionprep-${{ matrix.os }}
path: |
dist_nuitka/sessionprep-win-x64.exe
dist_nuitka/sessionprep-gui-win-x64.exe
dist_nuitka/SessionPrep-*-setup.exe
if-no-files-found: error

- name: Upload Artifacts (macOS)
if: runner.os == 'macOS'
uses: actions/upload-artifact@v4
with:
name: sessionprep-${{ matrix.os }}
path: dist_nuitka/*.dmg
if-no-files-found: error

- name: Upload Artifacts (Linux)
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: sessionprep-nuitka-${{ matrix.os }}
name: sessionprep-${{ matrix.os }}
path: |
dist_nuitka/*
!dist_nuitka/*.build
!dist_nuitka/*.dist
!dist_nuitka/*.onefile-build
dist_nuitka/*.deb
dist_nuitka/*.rpm
dist_nuitka/*.tar.gz
if-no-files-found: error
94 changes: 87 additions & 7 deletions .github/workflows/build-pyinstaller.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]

steps:
- uses: actions/checkout@v4
Expand All @@ -24,18 +24,98 @@ jobs:
python-version-file: "pyproject.toml"

- name: Install Dependencies
run: uv sync --all-extras
run: uv sync --extra cli --extra gui

- name: Disable Windows Defender for build directory
if: runner.os == 'Windows'
shell: pwsh
run: Add-MpPreference -ExclusionPath $PWD

- name: Build with PyInstaller
# Using --onefile to produce single binaries where possible (standard distribution format)
run: uv run python build_pyinstaller.py --onefile all

- name: Upload Artifacts
- name: Package Linux Distributions
if: runner.os == 'Linux'
shell: bash
run: |
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \
| sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt-get update -q && sudo apt-get install -y nfpm

export VERSION=$(python -c \
"exec(open('sessionpreplib/_version.py').read()); print(__version__)")
export DIST_DIR=dist_pyinstaller

TMPCONFIG=$(mktemp --suffix=.yaml)
envsubst < packaging/linux/nfpm.yaml > "$TMPCONFIG"
nfpm package --config "$TMPCONFIG" --packager deb --target dist_pyinstaller/
nfpm package --config "$TMPCONFIG" --packager rpm --target dist_pyinstaller/
rm "$TMPCONFIG"

STAGING=$(mktemp -d)
cp dist_pyinstaller/sessionprep-linux-x64 "$STAGING/sessionprep"
cp dist_pyinstaller/sessionprep-gui-linux-x64 "$STAGING/sessionprep-gui"
cp sessionprepgui/res/sessionprep.png "$STAGING/sessionprep.png"
cp packaging/linux/sessionprep.desktop "$STAGING/sessionprep.desktop"
cp packaging/linux/install-sessionprep.sh "$STAGING/install-sessionprep.sh"
chmod +x "$STAGING/install-sessionprep.sh"
tar -czf "dist_pyinstaller/sessionprep-${VERSION}-linux-x64.tar.gz" \
-C "$STAGING" \
sessionprep sessionprep-gui sessionprep.png \
sessionprep.desktop install-sessionprep.sh

- name: Build InnoSetup Installer
if: runner.os == 'Windows'
shell: pwsh
run: |
$ver = (python -c "exec(open('sessionpreplib/_version.py').read()); print(__version__)").Trim()
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" `
"/DAPP_VERSION=$ver" `
"/DDIST_DIR=dist_pyinstaller" `
"packaging\windows\sessionprep.iss"

- name: Package macOS .app bundles as DMG
if: runner.os == 'macOS'
run: |
brew install create-dmg
for app in dist_pyinstaller/*.app; do
[ -d "$app" ] || continue
name=$(basename "$app" .app)
create-dmg \
--volname "$name" \
--app-drop-link 600 185 \
--sandbox-safe \
"dist_pyinstaller/${name}.dmg" \
"$app"
done

- name: Upload Artifacts (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v4
with:
name: sessionprep-${{ matrix.os }}
path: |
dist_pyinstaller/sessionprep-win-x64.exe
dist_pyinstaller/sessionprep-gui-win-x64.exe
dist_pyinstaller/SessionPrep-*-setup.exe
if-no-files-found: error

- name: Upload Artifacts (macOS)
if: runner.os == 'macOS'
uses: actions/upload-artifact@v4
with:
name: sessionprep-${{ matrix.os }}
path: dist_pyinstaller/*.dmg
if-no-files-found: error

- name: Upload Artifacts (Linux)
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: sessionprep-pyinstaller-${{ matrix.os }}
name: sessionprep-${{ matrix.os }}
path: |
dist_pyinstaller/*
!dist_pyinstaller/*.build
!dist_pyinstaller/*.spec
dist_pyinstaller/*.deb
dist_pyinstaller/*.rpm
dist_pyinstaller/*.tar.gz
if-no-files-found: error
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,8 @@ nuitka-crash-report.xml
sessionpreplib/daw_processors/ptsl/index.md
sessionpreplib/daw_processors/ptsl/PTSL_2025.10.md
sessionpreplib/daw_processors/ptsl/PTSL_2025.10.proto
sessionpreplib/daw_processors/ptsl/DAWProject-Reference.html

# Temporary build directories
_dawproject_build/
_dawproject_build/*
Loading