Skip to content

4.1.0 merge#1332

Closed
Sundownersport wants to merge 243 commits intomainfrom
Development
Closed

4.1.0 merge#1332
Sundownersport wants to merge 243 commits intomainfrom
Development

Conversation

@Sundownersport
Copy link
Member

Summary

  • Merge Development into main for v4.1.0 release

🤖 Generated with Claude Code

ryanmsartor and others added 30 commits February 12, 2026 12:09
This reverts commit 4ce6d62.
Improve icon + text alignment in descriptive list view
Move Recents/Favorites/Collections to start of list before systems
Include spruce version in about this device
Something is causing python to exit before its flushed resulting in an empty file
This safeguards from that
Use a temp file for an atomic replacement of the config
Fix accidental breakage of collections/favorites/recents
Mupen SA rice hack for aspect 4:3
Sundownersport and others added 26 commits March 2, 2026 16:40
spruce/scripts/sleep_helper.sh — Before entering kernel sleep on real-sleep devices, kill the exclusive getevent process. This prevents the power button wake press from being buffered in the pipe and triggering
  an immediate re-sleep loop. The power watchdog's outer while true loop restarts getevent fresh after wake.

  spruce/scripts/platform/device_functions/A30.sh — Removed the A30-specific getevent kill from device_enter_sleep() since it's now handled centrally in sleep_helper.sh.
  Sleep re-sleep fix (all devices):
  - spruce/scripts/sleep_helper.sh — kill exclusive getevent before kernel sleep
  - spruce/scripts/platform/device_functions/A30.sh — removed duplicate getevent kill

  A30 PyUI audio fix:
  - spruce/scripts/platform/device_functions/A30.sh — touch /tmp/audio_reinit_needed on wake
  - App/PyUI/main-ui/audio/sdl2_audio_player.py — reinit SDL2 audio + re-preload WAVs when flag is present
The ScummVM scanner automatically registers games in the Scummvm Launcher.
It automatically creates {GameFolderName}.scummvm and inserts the target_name into it (e.g., monkey, tentacle, 5daysastranger ...).
/mnt/SDCARD/Saves/spruce/scummvm-scan.log (You can check the scanner's results here.)
Multiple games can be registered to the launcher by a single GameFolder. (e.g., monkey / monkey-fm / monkey-sega )
 but even in such cases, only one ID will be written to {GameFolderName}.scummvm. (e.g., monkey )
 However, you must manually delete all but one game from the launcher.
(There's no problem if you don't erase it, but... it would be easier to set them up if you want to distinguish which objects are running from your gamelist.)
  - killall -q idlemon — kills the idle monitor binary itself
  - killall -q idlemon_mm.sh — kills the wrapper script so it doesn't respawn idlemon
 1. USB launch.sh — Fixed $GADGET_PATH → $USB_GADGET_PATH on the A30 LUN_PATH (line 13). This was completely breaking A30 USB mode.
  2. spruceBackup.sh — Kill idlemon before backup starts, restart it (via idlemon_mm.sh &) at the end. Unlike USB mode, backup doesn't reboot so it needs to bring idlemon back.
principal.sh restarts it on exit so no need to restart it
Unify scummvm binary into one
The standalone ScummVM binary was missing 19 shared library dependencies
that are present in the TrimUI firmware but not on the Flip. Without
these, ScummVM crashes immediately on launch. Libraries sourced from
TrimUI Smart Pro S.
Add a "Scan ScummVM games" task to Settings so users can generate
.scummvm files without needing to access the X menu from within the
ScummVM game list, which requires having a .scummvm file in the first
place.
The ScummVM standalone binary is aarch64 only. Skip extracting it on
A30 and MiyooMini where it can't run.
Keep CLAUDE.md local-only so it doesn't get committed to the repo.
pixel2: fix volume buttons (hopefully)
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.

6 participants