Skip to content

Feat/settings software update - #246

Merged
dianjixz merged 3 commits into
masterfrom
feat/settings-software-update
Nov 12, 2026
Merged

dianjixz merged 3 commits into
masterfrom
feat/settings-software-update

Conversation

@dianjixz

Copy link
Copy Markdown
Collaborator

No description provided.

Replace the pactl popen/system calls with a libpulse.so.0 client loaded
through dlopen, so volume and mute control no longer spawn processes and
the build needs no PulseAudio development package. Calls fail cleanly
when the library or server is missing.

- Add cp0_pulse_client with sink lookup, volume/mute read-write and the
  PulseAudio volume-scale conversions.
- Add the Preload audio API command and warm the mixer up during the
  splash screen so the first volume action does not pay loader cost.
- Seed the Settings volume page from the persisted config before the list
  is built, and keep that value when the mixer read fails, instead of
  showing the 100% default.
- Deduplicate the static_lib download logic in project SConstructs via
  SDK's ensure_static_lib_version.
- Update docs, tests and submodules.
Play a reminder cue at 20% and a critical cue at 4%, registered once with
the platform system-sound list and replayed by name through
cp0_signal_system_play.

- Latch each cue per warning phase so the 4% -> 3% promotion does not
  repeat the warning
- Re-arm latches on recovery and on init/shutdown so the cues fire once
  per low-battery cycle
- Register lazily and latch on failure to avoid retrying every frame
- Add assets applaunch-arcade-refund.mp3 / applaunch-arcade-warning.mp3
- Cover the cue behaviour in test_low_battery_ui and document it in AGENTS.md
- Add Settings -> System -> Software listing installed application packages
  and the launcher, with GitHub release version checks and update prompts.
- Add settings_software_model to parse dpkg status, release metadata and
  updater status payloads.
- Add settings_software_updater plus a libcurl multi worker to fetch release
  metadata concurrently, falling back to curl subprocesses when libcurl is
  not compiled in.
- Add applaunch-apps-updater service/script to the Debian packaging so the
  launcher can trigger allowlisted app updates via polkit.
- Add unit and contract tests, wire them into run_tests.sh, and document the
  libcurl build dependency in the READMEs.
@dianjixz
dianjixz merged commit 905947f into master Nov 12, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant