3480e7594a3bab78b83f637e90da9f49cb3cd8be
Remove all PipeWire/wpctl system calls (SetDefaultSinkVolume, listSinkIDs, listSinks, SetAllSinkVolumes, parseSinks, parseSinkLine, Sink struct). Volume is now managed entirely through SDL_mixer's VolumeMusic(), making audio fully system-agnostic. Changes: - mixer.go: delete ~170 lines of wpctl code; add SetVolume() public API using mix.VolumeMusic(math.Round(level * MAX_VOLUME)) - Init/Play/SwitchDevice set volume inline (they already hold the mutex) - Play() now uses stored currentVolume instead of hardcoded MAX_VOLUME - AudioOptions: SetAllSinkVolumes -> SetVolume - mixer_test.go: add TestSetVolume (validation + error path coverage)
Radiantwave & KioskConfig Development & Release Pipeline
Radiant Wave
Full Pipeline Workflow (Detailed)
Development Phase
- Create a new branch for the issue
- Implement the changes for the issue
Integration to dev
- Open a pull request to
dev - CI: Run
nix buildto verify no errors - CI: Run linting and unit tests
- CI: Auto-update
rhemawave-devflake input - CI: Build all
devVMs in parallel (Kiosk, Commercial, RPi) - Merge the pull request to
devafter CI passes
Testing Phase
- Run all VMs (Kiosk, Commercial, RPi) and test all functionality of the application on each VM
- Install
dev-isoto a test machine and verify installation and application functionality
Release to main
- Open a pull request from
devtomain - CI: Build all
mainVMs in parallel (Kiosk, Commercial, RPi) - CI: Build all ISO images in parallel
- CI: Auto-rename ISO images to format
radiantwave-{system}-{YYYY-MM-DD}-{git-hash}.iso - CI: Upload ISO images to file server
- CI: Move old ISO images to
archives/on file server - Merge the pull request to
mainafter CI passes - Tag the release (optional, for traceability)
Automation Opportunities
This section describes which parts of the workflow can be automated via CI/CD, and how.
Group 1: Development Validation (Steps 3-8)
What to automate: PR triggering,nix build, linting, unit tests, flake updates, dev VM buildsHow: GitHub Actions workflow triggered on PR todevWhy: Catch integration errors before manual testing; ensuredevis always buildable
Group 2: Testing (Steps 9-10)
What to automate: VM functionality testing, ISO installation verificationHow: Scripted test suites, automated ISO installation in VMsWhy: Reduce manual toil; increase test coverage and consistency
Group 3: Release Pipeline (Steps 11-16)
What to automate: Main VM/ISO builds, ISO renaming, file server uploads, archivingHow: GitHub Actions workflow triggered on PR tomainWhy: Ensure consistent releases; eliminate human error in naming/uploading
Preflight Checklist
- Create a new branch for the issue
- Implement the changes for the issue
- Open a pull request to
dev - Merge the pull request to
devafter CI passes - Run all VMs (Kiosk, Commercial, RPi) and test all functionality of the application on each VM
- Install
dev-isoto a test machine and verify installation and application functionality - Open a pull request from
devtomain - Merge the pull request to
mainafter CI passes - Tag the release (optional, for traceability)
Automation Task List
Group 1: Development Validation
-
Set up GitHub Actions workflow for PRs to
dev- Configure
nix buildstep - Add linting and unit test steps
- Add flake auto-update step
- Configure parallel VM builds (Kiosk, Commercial, RPi)
- Configure
- Verify workflow blocks PR merge on failure
Group 2: Testing
- Create automated test scripts for VM functionality
- Set up automated ISO installation testing
- Integrate with CI for optional automated testing
Group 3: Release Pipeline
-
Set up GitHub Actions workflow for PRs to
main- Configure parallel VM builds
- Configure parallel ISO builds
- Add ISO auto-renaming step (using
git rev-parse HEADanddate +%Y-%m-%d) - Add file server upload step (
rsyncor similar) - Add archive old ISOs step
- Verify workflow blocks PR merge on failure
Languages
Go
86.1%
Shell
4.9%
Python
4.5%
Nix
2.5%
HTML
1.4%
Other
0.6%