Skip to content

V4.8.0.0#179

Merged
BrandonKowalski merged 61 commits into
mainfrom
v4.8.0.0
Mar 27, 2026
Merged

V4.8.0.0#179
BrandonKowalski merged 61 commits into
mainfrom
v4.8.0.0

Conversation

@BrandonKowalski

Copy link
Copy Markdown
Member

No description provided.

pawndev and others added 30 commits February 27, 2026 15:47
Currently, all artifacts path from ss_metadata are wrong, because of the missing `/assets/romm/resources` prefix
feat: introduce tools menu in settings for this new artwork sync and for kid mode
Add support for RomM client API tokens as an alternative to
username/password authentication. Includes QR-less pairing code
exchange, token validation, and a settings option to switch
existing credential-based connections to token auth.

Refactors the HTTP client to use a generic auth header instead
of hardcoded basic auth, supporting both Bearer tokens and
Basic auth transparently via Host.AuthHeader().
Adds 37 new translation keys covering pairing code auth, token
management, tools settings, sync history columns, save mappings,
and server address validation. Removes 4 unused keys. Non-English
locales use English fallback values.
Split the login section into Server Connection and Authentication
phases. Document the pairing code flow with required token scopes.
Add new screenshots for server info, pairing code, and credentials
screens. Update quick start guide with new auth steps.
Add Directory Mappings, Tools, and Switch to API Token sections.
Document Server Address, Download Missing Art, and Save Sync
Mappings settings. Rename Kids Mode to Kid Mode throughout.
Restructure FAQ using collapsible questions. Simplify save sync ROM
matching documentation and remove verbose implementation details.
Call gaba.Close() before os.Exit/log.Fatalf during login to properly
shut down SDL. Without this, the display freezes on some CFWs when
quitting from the server connection screen. Also use exit code 0
for user-initiated quit (pressing B) instead of 1.
Add Onion OS (Miyoo Mini/Mini+) support with platform mappings,
save directory mappings, Miyoo input mappings, and packaging config.
Save path uses Onion's CurrentProfile structure. Shares the ARM32
build pipeline with Allium.
Bump gabagool v2.13.0 -> v2.13.7, sqlite v1.46.1 -> v1.47.0,
klauspost/compress v1.18.4 -> v1.18.5. Drop unused golang.org/x/tools.
- Package tasks now output to dist/ instead of build64/, keeping build
  folders for raw binaries/libs only
- Release workflow updated to reference dist/ for zip creation and uploads
- Allium and Onion now copy libs from vendored/miyoo/ instead of the
  build container
- Add app icons for Allium and Onion
- Update Spruce and Trimui config descriptions
…bytes

Write the embedded splash.png to .cache/splash.png on first use and
load from disk on subsequent launches. Avoids passing large byte slices
through the UI framework.
Add DurationSeconds type that marshals to JSON as whole seconds instead
of nanoseconds. Old configs with nanosecond values are auto-detected on
load (values > 1M are treated as nanoseconds). API timeout is clamped
to the valid picker range (max 300s) to prevent silent corruption when
saving from the advanced settings screen. Default API timeout corrected
from 30 minutes to 30 seconds to match the UI options.
Remap SDL keycode 9 (L2) to virtual button Menu on Allium and Onion
since L2 is unused and there is no dedicated Menu button on Miyoo.
Add IS_MIYOO env var to launch scripts and show "L2" instead of "Menu"
in the BIOS footer label on Miyoo devices.
Add installation guides for Onion (Miyoo Mini Plus) and Allium
(Miyoo Mini Flip). Update README, getting-started index, and mkdocs
nav with the new platforms.
Add docs/_includes/cfw-links.md as shared link definitions included
via pymdownx.snippets in all doc pages. README uses markdown
reference-style links defined at the bottom. Update Allium URL to
goweiwen/Allium, Onion to onionui.github.io, TrimUI to github.com/trimui.
klinkertinlegs and others added 27 commits March 22, 2026 09:37
…ility

Added bare minimum instructions to manually set time with recommended and option instructions to enable NTP and set the system to wait for NTP before boot.
These were being excluded by the global config.json gitignore rule.
Add an exception for scripts/**/config.json.
Upload the ARM32 binary as grout-arm32 alongside the ARM64 grout binary.
GetAssetName now returns grout-arm32 for Allium and Onion so the in-app
updater downloads the correct architecture binary.
Generate platform.md docs from existing JSON mappings. Add both to
mkdocs nav and gen-platforms tool.
the url.JoinPath method on go encode the '?' charater to a %3F html unicode. So we basically split from that point
Add CPS1/CPS2/CPS3, Ports, Satellaview, ScummVM, SGB, Sufami Turbo,
and VideoPac mappings. Fix Neo Geo Pocket Color, WonderSwan Color,
and PICO-8 folder paths to match actual Onion directory structure.
Batocera runs on both ARM64 and x86_64 PCs. The release was only
shipping an ARM64 binary, causing "Exec format error" on x86_64.

- Add package-batocera-amd64 task and build AMD64 in release workflow
- Ship separate Grout-Batocera-arm64.zip and Grout-Batocera-amd64.zip
- Upload grout-amd64 standalone binary for the in-app updater
- Use runtime.GOARCH in updater to download correct binary for arch
Instead of hardcoding asset names per-CFW, derive them from the
compiled architecture. Release now uploads grout-arm64, grout-amd64,
and grout-arm32 instead of a bare "grout" binary.
- Add build-x86, extract-x86, and package-batocera-x86 tasks
- Add x86 (386) to updater asset name resolution
- Split release workflow into parallel jobs per architecture:
  build-arm64, build-amd64, build-x86, build-arm32
- Each job uploads artifacts, final release job collects and publishes
- Release now ships grout-arm64, grout-amd64, grout-x86, grout-arm32
  and Batocera zips for arm64, amd64, and x86
Older versions of the updater look for a bare "grout" asset.
Upload the arm64 binary under both names so existing installs
can still update to this release.
…tegration

feat: Continue integration and download of more artifacts
Prerelease segments like beta.6 vs beta.10 were compared as strings,
causing beta.10 to appear older than beta.6. Split on '.' and compare
numeric segments as integers per the semver spec.
Fetch update metadata from a static versions.json hosted on GitHub
Pages instead of querying the GitHub releases API. Eliminates rate
limits, pagination issues, and the stable-channel-falling-back-to-
prerelease bug. The versions file is updated by CI on each release.
Replace bare binary swap with full distribution zip update. Downloads
the CFW-specific zip, verifies its SHA256 hash, and extracts to a
staging directory. The launch script applies the update on next start,
keeping the running binary untouched. Adds per-CFW install root and
asset name resolution for all 13 distribution targets.
Each launch script now checks for a .update staging directory after
cd'ing to the binary dir. If present, it copies the contents over the
install and removes the staging dir before starting grout. Also cleans
up leftover update artifacts on startup.
Use atomic.Pointer for updateInfo and a mutex for releaseChannel to
eliminate a data race between the background check goroutine and the
UI thread. Add update-versions job to the release workflow that hashes
build artifacts, verifies uploaded assets match, and commits the
versions.json with all distribution zip metadata.
Use atomic.Pointer for updateInfo and a mutex for releaseChannel to
eliminate a data race between the background check goroutine and the
UI thread. Add update-versions job to the release workflow that hashes
build artifacts, verifies uploaded assets match, and commits the
versions.json with all distribution zip metadata.
@BrandonKowalski
BrandonKowalski merged commit f19364b into main Mar 27, 2026
7 checks passed
@BrandonKowalski
BrandonKowalski deleted the v4.8.0.0 branch March 27, 2026 00:06
@BrandonKowalski BrandonKowalski added this to the v4.8.0.0 milestone Mar 28, 2026
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.

3 participants