Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
a1e280f
build caching improvements.
bzeiss Mar 1, 2026
3f78d0a
gitignore updated
bzeiss Mar 1, 2026
0836249
updated Pro Tools template preferences
bzeiss Mar 1, 2026
8ab0935
Pro Tools session open check on fetch.
bzeiss Mar 1, 2026
9e0c56e
new pro tools daw processor parameters.
bzeiss Mar 1, 2026
b8be75c
project name implemented
bzeiss Mar 1, 2026
592a0a2
complete session creation
bzeiss Mar 1, 2026
b38be5b
cosmetic updates.
bzeiss Mar 1, 2026
7931024
batch mode
bzeiss Mar 1, 2026
19e8d68
dawproject silent enqueue
bzeiss Mar 1, 2026
0d0e1e3
updated README
bzeiss Mar 1, 2026
64e037b
batch progress bars.
bzeiss Mar 1, 2026
1095a7a
recoloring
bzeiss Mar 1, 2026
9edcf00
hidpi fix, old waveform shown, config merge fixes, batch queue drag &…
bzeiss Mar 1, 2026
3388c40
load/save batch queue
bzeiss Mar 2, 2026
2136f80
open project folder
bzeiss Mar 2, 2026
68ff32b
ptsl realiabity improvements
bzeiss Mar 2, 2026
eb62b66
pylint configuration
bzeiss Mar 2, 2026
3e99fa5
pylint fixes.
bzeiss Mar 2, 2026
3de96f4
pylint fixes
bzeiss Mar 2, 2026
ec1a3a0
pylint fixes
bzeiss Mar 2, 2026
5fd5fe6
pylint fixes
bzeiss Mar 2, 2026
8de8bf6
pylint fixes
bzeiss Mar 2, 2026
5d20650
pylint fixes
bzeiss Mar 2, 2026
038bf18
relevancy changes
bzeiss Mar 2, 2026
1bb58e3
QThread fixes.
bzeiss Mar 2, 2026
fe0365d
restoring the gain/faders when loading a session.
bzeiss Mar 2, 2026
a8e7621
fetch progress bar does not disappear now.
bzeiss Mar 2, 2026
3d873a9
pt template cache
bzeiss Mar 3, 2026
12de5f0
phase 1/phase 2 detector split.
bzeiss Mar 3, 2026
3bdc0c1
QThread race condition
bzeiss Mar 3, 2026
e3296f6
pylint error fixes, wider file column.
bzeiss Mar 3, 2026
404500c
synchronized phase 1 scrolling
bzeiss Mar 3, 2026
25728a9
channel selection fixes
bzeiss Mar 3, 2026
4d4d19c
some ptsl tests. fader adjustment works again.
bzeiss Mar 3, 2026
5a458f7
fixed missing faders.
bzeiss Mar 3, 2026
200b185
keep the session open in non-batch mode
bzeiss Mar 3, 2026
1d4ffe5
bundle rps with sessionprep
bzeiss Mar 3, 2026
714699d
workflow fixes
bzeiss Mar 3, 2026
110837d
workflow fixes.
bzeiss Mar 3, 2026
feaeaae
save session in phase 1.
bzeiss Mar 3, 2026
638266c
build fixes.
bzeiss Mar 3, 2026
9408f5a
color matrix
bzeiss Mar 3, 2026
7df4a12
pylint fixes.
bzeiss Mar 3, 2026
36f9bae
pro tools color picker tool based on the color definitions.
bzeiss Mar 4, 2026
2cd8370
fixes.
bzeiss Mar 4, 2026
3233471
build fix
bzeiss Mar 4, 2026
5356ce1
build fix
bzeiss Mar 4, 2026
ba39f82
try clang on windows
bzeiss Mar 4, 2026
64e5c76
fixes
bzeiss Mar 4, 2026
0fc5a7f
try openssl for windows on arm
bzeiss Mar 4, 2026
39c65cd
build fix
bzeiss Mar 4, 2026
79d5b9e
build fix
bzeiss Mar 4, 2026
0b2f6a6
always on top fix.
bzeiss Mar 4, 2026
b605014
keyboardinterrupt fix
bzeiss Mar 4, 2026
1aa6b41
build fixes
bzeiss Mar 4, 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
126 changes: 81 additions & 45 deletions .github/workflows/build-nuitka.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,30 @@ on:

jobs:
build:
name: Build on ${{ matrix.os }}
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
include:
- os: ubuntu-latest
name: Linux x64
suffix: linux-x64
- os: ubuntu-24.04-arm
name: Linux arm64
suffix: linux-arm64
- os: macos-15
name: macOS Apple arm64
suffix: macos-arm64
- os: macos-15-intel
name: macOS x64
suffix: macos-x64
- os: windows-latest
name: Windows x64
suffix: win-x64
- os: windows-11-arm
name: Windows arm64
suffix: win-arm64

steps:
- uses: actions/checkout@v4
Expand All @@ -27,17 +45,24 @@ jobs:
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y gcc patchelf ccache

- name: Cache Nuitka Build
- name: Install CCache (macOS)
if: runner.os == 'macOS'
run: brew install ccache

- name: Cache Nuitka & CCache
uses: actions/cache@v4
with:
path: |
dist_nuitka/*.build
~/.cache/Nuitka
~/AppData/Local/Nuitka/Nuitka/Cache
~/Library/Caches/Nuitka
key: ${{ runner.os }}-nuitka-${{ hashFiles('**/pyproject.toml', '**/uv.lock') }}
~/.cache/ccache
~/Library/Caches/ccache
~/AppData/Local/ccache
key: ${{ runner.os }}-${{ matrix.suffix }}-nuitka-${{ hashFiles('**/uv.lock') }}-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-nuitka-
${{ runner.os }}-${{ matrix.suffix }}-nuitka-${{ hashFiles('**/uv.lock') }}-
${{ runner.os }}-${{ matrix.suffix }}-nuitka-

- name: Install Dependencies
run: uv sync --extra cli --extra gui
Expand All @@ -50,6 +75,19 @@ jobs:
- name: Build with Nuitka
run: uv run python build_nuitka.py all

# -----------------------------------------------------------------------
# Determine version (used by all packaging steps)
# -----------------------------------------------------------------------
- name: Determine version
id: version
shell: bash
run: |
VER=$(python -c "exec(open('sessionpreplib/_version.py').read()); print(__version__)")
echo "ver=$VER" >> "$GITHUB_OUTPUT"

# -----------------------------------------------------------------------
# Linux packaging
# -----------------------------------------------------------------------
- name: Package Linux Distributions
if: runner.os == 'Linux'
shell: bash
Expand All @@ -58,9 +96,19 @@ jobs:
| 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
VERSION="${{ steps.version.outputs.ver }}"
SUFFIX="${{ matrix.suffix }}"
# Map matrix suffix to nfpm arch (deb/rpm format)
case "$SUFFIX" in
linux-x64) NFPM_ARCH=amd64 ;;
linux-arm64) NFPM_ARCH=arm64 ;;
*) NFPM_ARCH=amd64 ;;
esac
export VERSION SUFFIX NFPM_ARCH DIST_DIR=dist_nuitka

# Merge GUI dist into CLI dist so we have a single unified distribution directory
# This prevents nfpm from throwing "content collision" errors
cp -a dist_nuitka/sessionprep-gui.dist/. dist_nuitka/sessionprep.dist/

TMPCONFIG=$(mktemp --suffix=.yaml)
envsubst < packaging/linux/nfpm.yaml > "$TMPCONFIG"
Expand All @@ -69,77 +117,65 @@ jobs:
rm "$TMPCONFIG"

STAGING=$(mktemp -d)
cp dist_nuitka/sessionprep-linux-x64 "$STAGING/sessionprep"
cp dist_nuitka/sessionprep-gui-linux-x64 "$STAGING/sessionprep-gui"
cp -r dist_nuitka/sessionprep.dist "$STAGING/sessionprep.dist"
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" \
tar -czf "dist_nuitka/sessionprep-${VERSION}-${{ matrix.suffix }}.tar.gz" \
-C "$STAGING" \
sessionprep sessionprep-gui sessionprep.png \
sessionprep.dist \
sessionprep.png \
sessionprep.desktop install-sessionprep.sh

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

# -----------------------------------------------------------------------
# macOS packaging
# -----------------------------------------------------------------------
- name: Package macOS .app bundles as DMG
if: runner.os == 'macOS'
run: |
brew install create-dmg
SUFFIX=$(python3 -c "from build_conf import get_platform_suffix; print(get_platform_suffix())")
VERSION="${{ steps.version.outputs.ver }}"
for app in dist_nuitka/*.app; do
[ -d "$app" ] || continue
name=$(basename "$app" .app)
dmg_name="${name}-${SUFFIX}"
# create-dmg uses source folder contents as DMG root,
# so stage the .app inside a temporary directory
STAGING=$(mktemp -d)
cp -R "$app" "$STAGING/"
create-dmg \
--volname "$name" \
--app-drop-link 600 185 \
--sandbox-safe \
"dist_nuitka/${dmg_name}.dmg" \
"dist_nuitka/sessionprep-${VERSION}-${{ matrix.suffix }}.dmg" \
"$STAGING"
rm -rf "$STAGING"
done
# Clean up temporary read-write DMG files left by create-dmg
rm -f dist_nuitka/rw.*.dmg

- name: Upload Artifacts (Windows)
if: runner.os == 'Windows'
# -----------------------------------------------------------------------
# Upload
# -----------------------------------------------------------------------
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: sessionprep-${{ matrix.os }}
name: sessionprep-${{ matrix.suffix }}
path: |
dist_nuitka/sessionprep-win-x64.exe
dist_nuitka/sessionprep-gui-win-x64.exe
dist_nuitka/SessionPrep-*-setup.exe
dist_nuitka/sessionprep-*.*
!dist_nuitka/sessionprep-*.build
!dist_nuitka/sessionprep-*.build/**
!dist_nuitka/sessionprep-*.dist
!dist_nuitka/sessionprep-*.dist/**
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-${{ matrix.os }}
path: |
dist_nuitka/*.deb
dist_nuitka/*.rpm
dist_nuitka/*.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 @@ -34,6 +34,11 @@ sessionpreplib/daw_processors/ptsl/PTSL_2025.10.md
sessionpreplib/daw_processors/ptsl/PTSL_2025.10.proto
sessionpreplib/daw_processors/ptsl/DAWProject-Reference.html

_private/
_private/*

GEMINI.md

# Temporary build directories
_dawproject_build/
_dawproject_build/*
30 changes: 30 additions & 0 deletions .pylintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[MASTER]
ignore=CVS
ignore-patterns=
persistent=yes
load-plugins=
jobs=1
unsafe-load-any-extension=no
extension-pkg-allow-list=PySide6

[MESSAGES CONTROL]
disable=raw-checker-failed,bad-inline-option,locally-disabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,use-symbolic-message-instead,missing-docstring,too-many-instance-attributes,too-many-public-methods,too-many-statements,too-many-arguments,too-many-locals,too-many-branches,too-many-return-statements,protected-access,duplicate-code,fixme,broad-exception-caught,no-member,invalid-name,import-outside-toplevel,redefined-outer-name,reimported,attribute-defined-outside-init,too-many-nested-blocks,unused-argument,unused-variable,try-except-raise,multiple-statements,unused-import,line-too-long

[REPORTS]
output-format=text
reports=no
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)

[FORMAT]
max-line-length=120
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
single-line-if-stmt=no
max-module-lines=1000
indent-string=' '
indent-after-paren=4

[BASIC]
good-names=i,j,k,ex,Run,_,x,y,fs,ch,db,tc,pt,dp,sz,df,ok,L,tL,pL,ta,pa,tb_,pb2,tr,tg,tb,pr,pg,pb,e,c
bad-names=foo,bar,baz,toto,tutu,tata
name-group=
include-naming-hint=no
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"pylint.args": [
"--rcfile=.pylintrc"
],
"pylint.importStrategy": "fromEnvironment"
}
16 changes: 16 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Pylint: Run Workspace",
"type": "shell",
"command": "uv run pylint sessionpreplib sessionprepgui sessionprep.py sessionprep-gui.py",
"problemMatcher": "$pylint",
"presentation": {
"reveal": "silent",
"panel": "shared",
"clear": true
}
}
]
}
Loading