Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
e2b8943
migrate tray from fyne systray to wails v3
nik9play Jul 12, 2026
cc15ac4
add gui config write path with settings dto and validation
nik9play Jul 12, 2026
a62dc86
add settings service and generated bindings
nik9play Jul 12, 2026
fec106a
add svelte settings frontend and tray menu entry
nik9play Jul 12, 2026
547e4a3
build frontend in build scripts and ci
nik9play Jul 12, 2026
628c658
use png tray icon on windows, wails cannot load ico containers
nik9play Jul 12, 2026
a0717bb
emit live slider and connection events and add status service method
nik9play Jul 12, 2026
31547ae
add tailwind and bits-ui, restyle settings into dialog with frameless…
nik9play Jul 12, 2026
87506f5
replace mapping editor with live mixer and target dialog
nik9play Jul 12, 2026
b074b54
use bits-ui controls throughout the settings dialog
nik9play Jul 13, 2026
3841012
add friendly target names and tabbed target picker
nik9play Jul 13, 2026
955694d
split audio devices into their own target picker tab
nik9play Jul 13, 2026
40a32ed
show raw target name when no matching session is running
nik9play Jul 13, 2026
bf3f7b5
build with the Task system and add a cgo-free headless linux build
nik9play Jul 13, 2026
de1d595
warn when the webview2 runtime is missing during install
nik9play Jul 13, 2026
887df8c
build headless linux binaries in the release workflow
nik9play Jul 13, 2026
1288a0f
replace hand-rolled frontend i18n with paraglide-js
nik9play Jul 13, 2026
41f9e81
polish settings GUI layout and let blank VID/PID fall back to defaults
nik9play Jul 15, 2026
2dae68d
implement wails3 dev-mode support
nik9play Jul 15, 2026
ecf05e4
fix binding generation
nik9play Jul 16, 2026
62978f2
rewrite app config handling for better control
nik9play Jul 17, 2026
c974b73
ui/ux improvements
nik9play Jul 18, 2026
1b53120
add prod tags
nik9play Jul 18, 2026
d30d71f
suffix linux input devices with (input) to control them separately fr…
nik9play Jul 18, 2026
d2de023
display all procceses in list
nik9play Jul 19, 2026
7103ab5
add icons to process (only Windows for now) and device lists
nik9play Jul 22, 2026
181880a
unify config validation in normalize and drop the ConfigValues wrapper
nik9play Jul 25, 2026
0dd8e47
save connection and obs settings per section and add an about tab
nik9play Jul 25, 2026
a304365
add slider mapping profiles switchable by tray, gui and global hotkey
nik9play Jul 27, 2026
e13af2e
feat: add Discord integration
nik9play Aug 9, 2026
8b0e0b0
feat: add configurable volume conversion
nik9play Aug 9, 2026
236aa2b
fix(ui): handle platform fonts and long labels
nik9play Aug 11, 2026
add7b06
style(ui): refine controls and target picker
nik9play Aug 11, 2026
0ce4cf1
perf(ui): debounce settings writes
nik9play Aug 11, 2026
d4473e3
update wails
nik9play Aug 12, 2026
5a06f3b
improve slider handle design
nik9play Aug 13, 2026
cf60a9f
update wails
nik9play Aug 27, 2026
50c0303
use .ico icon for windows tray
nik9play Aug 27, 2026
6bb4aaa
feat(ui): add connection status popover
nik9play Sep 3, 2026
92cc8e3
fix(ui): hide empty autocomplete results
nik9play Sep 4, 2026
62a464d
migrate to tasks from scripts
nik9play Oct 13, 2026
b162767
upgrade Wails and frontend dependencies
nik9play Nov 2, 2026
94a0287
limit Windows dev compiler flags to project packages
nik9play Nov 2, 2026
1cfdce8
add repository guidance for coding agents
nik9play Nov 2, 2026
ac356ed
build Linux GUI with the purego backend
nik9play Nov 2, 2026
b5b3331
big architecture refactor
nik9play Nov 3, 2026
65996f5
generate Windows resources with the Wails CLI
nik9play Nov 3, 2026
a7a7f67
Merge remote-tracking branch 'origin/master' into settings-gui
nik9play Nov 3, 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
131 changes: 109 additions & 22 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,29 @@ jobs:
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
include:
- os: ubuntu-latest
go-flags: -tags=purego
env:
CGO_ENABLED: "0"
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.25.7"
go-version-file: go.mod

# Purego loads these libraries at runtime; compilation needs no headers.
- name: Install GTK runtime libraries
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-4-1 libwebkitgtk-6.0-4

- name: Run tests
run: go test ./...
run: go test ${{ matrix.go-flags }} ./...

build-windows:
name: Build (windows)
Expand All @@ -38,41 +50,62 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.25.7"
go-version-file: go.mod

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: frontend/package-lock.json

- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Install Wails CLI
shell: pwsh
run: |
$wailsVersion = go list -m -f '{{.Version}}' github.com/wailsapp/wails/v3
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
go install "github.com/wailsapp/wails/v3/cmd/wails3@$wailsVersion"

- name: Build deej (amd64)
run: scripts/windows/build-all.bat
shell: cmd
run: task windows:build:all

- name: Rename binaries (amd64)
run: |
Rename-Item build/deej-release.exe deej-windows-amd64.exe
Rename-Item build/deej-dev.exe deej-windows-amd64-dev.exe
Rename-Item bin/deej-release.exe deej-windows-amd64.exe
Rename-Item bin/deej-dev.exe deej-windows-amd64-dev.exe

- name: Build deej (arm64)
run: scripts/windows/build-all.bat
shell: cmd
run: task windows:build:all
env:
GOARCH: arm64

- name: Rename binaries (arm64)
run: |
Rename-Item build/deej-release.exe deej-windows-arm64.exe
Rename-Item build/deej-dev.exe deej-windows-arm64-dev.exe
Rename-Item bin/deej-release.exe deej-windows-arm64.exe
Rename-Item bin/deej-dev.exe deej-windows-arm64-dev.exe

# bundles both binaries into a single universal installer
- name: Build installer
run: ISCC /Obuild "/DAppVersion=$(git describe --tags --always)" /DAmd64Exe=../../build/deej-windows-amd64.exe /DArm64Exe=../../build/deej-windows-arm64.exe scripts/windows/installer.iss
run: task windows:package:universal

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: deej-windows
path: build/
path: bin/

# The purego GUI backend lets one runner cross-compile both architectures.
build-linux:
name: Build (linux)
runs-on: ubuntu-latest
env:
CGO_ENABLED: "0"
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -82,36 +115,86 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.25.7"
go-version-file: go.mod

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: frontend/package-lock.json

- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Build deej (amd64)
run: scripts/linux/build-all.sh
run: task linux:build:all
env:
GOARCH: amd64

- name: Rename binaries (amd64)
run: |
mv build/deej-release build/deej-linux-amd64
mv build/deej-dev build/deej-linux-amd64-dev
mv bin/deej-release bin/deej-linux-amd64
mv bin/deej-dev bin/deej-linux-amd64-dev

- name: Build deej (arm64)
run: scripts/linux/build-all.sh
run: task linux:build:all
env:
GOARCH: arm64

- name: Rename binaries (arm64)
run: |
mv build/deej-release build/deej-linux-arm64
mv build/deej-dev build/deej-linux-arm64-dev
mv bin/deej-release bin/deej-linux-arm64
mv bin/deej-dev bin/deej-linux-arm64-dev

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: deej-linux
path: build/
path: bin/deej-linux-*

# the headless build compiles Wails out (-tags headless), so it is cgo-free and
# a single runner cross-compiles every arch without GTK/WebKit or Node
build-linux-headless:
name: Build (linux headless)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod

- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Build deej (headless, amd64 + arm64)
run: |
GOARCH=amd64 task linux:build:headless
mv bin/deej-headless bin/deej-linux-amd64-headless
GOARCH=arm64 task linux:build:headless
mv bin/deej-headless bin/deej-linux-arm64-headless

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: deej-linux-headless
path: bin/

release:
name: Create release draft
if: startsWith(github.ref, 'refs/tags/')
needs: [build-windows, build-linux]
needs: [build-windows, build-linux, build-linux-headless]
runs-on: ubuntu-latest
permissions:
contents: write
Expand All @@ -137,9 +220,13 @@ jobs:
| Windows portable | arm64 | [deej-windows-arm64.exe](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/deej-windows-arm64.exe) |
| Linux | amd64 | [deej-linux-amd64](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/deej-linux-amd64) |
| Linux | arm64 | [deej-linux-arm64](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/deej-linux-arm64) |
| Linux (headless, no GUI) | amd64 | [deej-linux-amd64-headless](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/deej-linux-amd64-headless) |
| Linux (headless, no GUI) | arm64 | [deej-linux-arm64-headless](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/deej-linux-arm64-headless) |
files: |
artifacts/deej-windows-amd64.exe
artifacts/deej-windows-arm64.exe
artifacts/deej-linux-amd64
artifacts/deej-linux-arm64
artifacts/deej-linux-amd64-headless
artifacts/deej-linux-arm64-headless
artifacts/deej_setup.exe
18 changes: 16 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,25 @@ venv/
.vscode
*.lnk
*.exe
*.syso
deej-dev
deej-release
build/
build/*
!build/config.yml
!build/tasks/
!build/tasks/*.yml
!build/windows/
build/windows/*
!build/windows/wails.exe.manifest
!build/windows/info.json
bin/
releases/
*.bin
logs/
preferences.yaml
config.yaml
config.yaml
frontend/node_modules/
frontend/dist/*
!frontend/dist/.gitkeep
# paraglide-js generated output (regenerated by the vite plugin on build)
frontend/src/paraglide/
Loading
Loading