Skip to content

Community configs: fork CI build - #3

Open
maxjivi05 wants to merge 17 commits into
mainfrom
community-configs
Open

Community configs: fork CI build#3
maxjivi05 wants to merge 17 commits into
mainfrom
community-configs

Conversation

@maxjivi05

Copy link
Copy Markdown
Owner

Build-only PR so CI runs inside this fork, where COMMUNITY_HMAC_SECRET is available. Fork PRs against upstream do not receive secrets.

maxjivi05 and others added 16 commits June 18, 2026 15:07
Resolve conflicts in .gitignore, app/build.gradle, GameSettings.kt and
ShortcutSettingsComposeDialog.kt by keeping both sides: main's controller
nav, artwork scraper and ReShade catalog alongside the community config
sharing UI, preview mode and HMAC build config.
Add CommunitySettings as the single source of truth for which shortcut
settings are portable, with per-key validators, container defaults and the
runtime's own resolution order. ConfigSerializer and ConfigApplier now derive
from it, so they cannot drift apart, and a Gradle check fails the build when a
newly persisted shortcut setting is neither shared nor explicitly excluded.

Share the seven settings that were being dropped: zinkMode, useUnixLibs,
screenTouchMode and the four ReShade keys. Resolve refreshRate through the
container the way the runtime does, clear portable keys a config omits so an
applied config is the uploader's config rather than a merge, and check
downloaded values against the same rules the server enforces.

Restyle the community dialogs onto the shared palette and wire controller
navigation through the config browser, report dialog, missing-component
dialog and the Download/Upload header buttons.

Share one OkHttpClient, cap response reads, guard an unconfigured build
instead of failing at signing time, and replace the per-apply executor with
the shared IO dispatcher.
Wrap the Download and Upload entry points so a setup or runtime failure names
the exception instead of taking the process down.

Move the Download/Upload buttons into the scrolling sidebar list so they scroll
away with the sections while the game name stays pinned, and bring them back
into view when the controller cursor lands on them.

Resolve the hardware block once per process instead of forking getprop on the
UI thread every time the browser opens.
The deployed API only accepts schemaVersion 1 and rejects any key it does not
know, so an app that sends version 2 fails the whole upload. Retry once against
the older contract with the keys that version accepted, and report the settings
that were left behind rather than failing outright.

Uploads now work against either server; once the API is updated the first
attempt succeeds and nothing is dropped.
ContentDialog inherited the default cutout mode while the host activity theme
uses shortEdges, so on a device with a camera cutout the dialog window was
letterboxed into the safe area and its centre gravity landed off-centre.

Give ContentDialog the activity's cutout mode on API 27+ via a shared base
style, and size the community browser against the navigation-bar and cutout
insets the way the shortcut settings dialog already does, so the panel spans
the real centre without sitting under the camera.
An absent GitHub secret still exports the variable, as an empty string, so
COMMUNITY_API_BASE overrode its own default with "" and disabled community
sharing even when the HMAC secret was present. Treat blank as unset for both,
and warn during configuration when the secret is missing so the build log says
why sharing is off instead of leaving it to be discovered on device.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Build.SOC_MODEL reports "unknown" on many devices, which is not blank, so it
was used verbatim as the chipset and bucketed unrelated hardware together.
Reject placeholder values, widen the property fallbacks, and send the board
platform alongside the SoC model instead of collapsing them, so the read path
keys the same way the upload path already did - a device could previously
upload a config and then fail to find it.

The sign-in prompt fired whenever the cached Play Games id had not resolved
yet, so it appeared and was then contradicted by a successful upload moments
later. Only prompt once an interactive sign-in is actually required.

Deleting a config now asks first; it removes the config for everyone.
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.

2 participants