feat(content): add SFX payload extractor and control bar package processor - #24
Open
undead2146 wants to merge 42 commits into
Open
feat(content): add SFX payload extractor and control bar package processor#24undead2146 wants to merge 42 commits into
undead2146 wants to merge 42 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
2 tasks
…cutable in Add Local Content dialog (community-outpost#391)
…rowse builds by last updated (community-outpost#389)
undead2146
force-pushed
the
feat/content-sfx-extractors
branch
2 times, most recently
from
August 19, 2026 11:56
0459584 to
c372d1e
Compare
…ne profiles (community-outpost#382) * fix(launching): only rewrite GeneralsOnline settings for GeneralsOnline profiles * fix(profiles): treat a recorded publisher type as authoritative when identifying GeneralsOnline profiles * fix(settings): only rewrite GeneralsOnline settings.json when editing a GeneralsOnline profile * fix(settings): align GeneralsOnline view model defaults with the client's own values * fix(settings): declare the intended money transaction volume default on the settings model * fix(settings): abort the GeneralsOnline settings rewrite when settings.json cannot be read * fix(settings): restore GeneralsOnline sections that settings.json spells as null * docs(settings): describe the load-then-merge semantics of settings.json * test(settings): name the dropped key and cover an unrecorded publisher type * fix(settings): re-read settings.json for every save instead of rewriting a snapshot * fix(settings): replace settings.json by moving a completed file over it * docs(settings): correct the Options.ini claim and record the save's read and write rules * test(profiles): cover the content fallback for a profile with no game client * fix(settings): serialize settings.json access and retry a refused replacement * test(settings): cover overlapping settings.json calls and a replacement that never succeeds * fix(settings): report each half of the save separately instead of claiming nothing was written
community-outpost#386) * fix(launching): adopt a forked game process on Unix as well as Windows * test(launching): keep the expected-child launcher test on Windows runners * fix(launching): match Unix game processes through the name the kernel truncates * fix(launching): decide workspace residence against the real directory on disk * fix(launching): require a known launcher start time before adopting a running game * fix(launching): decline adoption at once when the launcher start time is unknown * fix(launching): bound adoption by the launcher start time instead of the recency window
…structive data deletion (community-outpost#383) * fix(userdata): copy CAS content to user-writable targets and guard destructive data deletion * test(userdata): narrow the hard-link helper catch to expected failures * fix(workspace): open the copy source before unlinking the destination * fix(userdata): distinguish a failed hash check from a real mismatch before moving files aside * fix(userdata): restore uninstall backups by copy so a redirected Documents folder cannot strand them * fix(userdata): fail the uninstall and keep tracking data when a pristine backup cannot be restored * fix(userdata): abort delete-all on cancellation before any tracking metadata is removed * fix(userdata): let delete-all finish when an index key has no manifest left to restore * fix(settings): report a failed delete-all confirmation instead of letting it escape the command * test(settings): assert every deletion channel is gated on the delete-all confirmation * fix(userdata): consume the backup when rollback or deactivation restores the original * fix(userdata): report delete-all as a failure naming the backups it had to keep * fix(userdata): default an unmapped install target to copying instead of hard-linking * fix(userdata): surface backups left behind when a failed install is rolled back * docs(constants): document the delete-all prompt constants and UserDataConstants * fix(userdata): surface the uninstall failure that profile cleanup used to discard * fix(userdata): let a cancelled manifest read abort instead of reading as corruption * fix(userdata): keep a consumed backup's failed delete from failing the restore * fix(userdata): keep the tracking data that maps retained backups to their paths * fix(workspace): report a missing file as an unverified hash rather than a mismatch * fix(workspace): resolve links before deciding a copy would overwrite its own source * fix(settings): stop the delete-all summary contradicting a partial user data failure * fix(workspace): replace a destination link to the source instead of skipping the copy * test(userdata): prove the tightened backup directory really denies a delete before relying on it
…s the v0.0.3 upgrade (community-outpost#384) * fix(config): preserve profiles, settings and workspace metadata across the v0.0.3 upgrade * refactor(config): narrow legacy migration catches to file and path failures * refactor(core): add a shared path comparison helper and name the v0.0.3 layout constants * fix(config): migrate legacy data into the root the app reads from and probe the v0.0.3 Content layout * fix(settings): stop a failed initialization from saving defaults over the real settings file * refactor(userdata): reference constants for the tracked user data sub-paths * docs(workspace): correct the provenance of numeric workspace strategy values * fix(config): resolve the default content directories from the data root the app reads from * fix(settings): block saving when an existing settings file could not be read * fix(config): publish the legacy migration flag so the lock-free fast path is safe on weak memory models * fix(settings): refuse saves that would overwrite a settings file the session never read * feat(settings): surface a failed settings save instead of only logging it
…uctions that development added (community-outpost#402)
…m deliverers (community-outpost#385) * fix(content): bound archive extraction and propagate cancellation from deliverers * fix(content): stage overwriting archive writes and reject entries once the expansion budget is spent * fix(content): propagate cancellation instead of reporting a truncated import as success * fix(maps): skip only the failing map and release the bytes counted for a discarded one * fix(content): refuse archive entry names that cannot name a file * fix(core): follow symbolic links when testing path containment * fix(core): bound the staging name, isolate its cleanup and name a spent budget * fix(maps): create the map directory inside the per-map failure handler * docs(constants): correct the binary units on the Community Outpost expansion caps * test(content): cancel extraction mid-entry and cover the deliverers' entry checks * test(core): fail loudly when the spoofed-size fixture's ZIP layout drifts
community-outpost#353) * test(launching): add engine-only launch smoke test and macos-15 CI job * test(launching): assert the no-data abort writes its crash report under the sandboxed HOME * ci: include engine-launch-smoke in the build summary needs * test(launching): pin retail install-path variables and assert the crash report's reason line * ci: fail the build summary on failed jobs and render skipped jobs as skipped * ci: include detect-changes in the build summary gate * ci: unwrap the engine archive's top-level directory in the smoke test * ci: drop the unused checkout from the build summary job * ci: include build configuration files in change detection
… and GeneralsOnline EAC registration (community-outpost#399)
…info/settings to titlebar (community-outpost#407)
… manifest reconstruction, and eliminate copy fallback (community-outpost#419)
undead2146
force-pushed
the
feat/content-sfx-extractors
branch
2 times, most recently
from
August 26, 2026 05:16
d2fea1c to
7b76465
Compare
…base with development
…zed variable warnings
… and reduce cognitive complexity
- Replace bash regex comparisons with case globs to satisfy SH-3015 - Inline cleanup into EXIT trap to satisfy SH-2329 - Initialize 'read' variable to satisfy CS-W1022
…tive cleanup - ArchivePayloadProcessor: remove log-and-rethrow (S2139); caller logs with context - ArchivePayloadProcessor: rewrite FindSignatureOffset with span search and overlap carry (S3776) - ArchivePayloadProcessor: filter empty directories before ordering (S6607) - ControlBarPackageProcessor: skip destructive source cleanup when only fallback metadata was produced - build-check.sh: replace POSIX-undefined == pattern matches with case; add default case (S131) Reviewed-by: ox-alpha (opencode/x-preview-f-free)
…e, use named buffer constant - ControlBarPackageProcessor: extract IsMetadataOnlyBig so the cleanup gate and metadata detection share one source of truth - ArchivePayloadProcessor: return early for empty signatures in FindSignatureOffset - IoConstants: add SignatureScanBufferSize and use it for signature scanning Reviewed-by: ox-alpha (opencode/x-preview-f-free)
undead2146
force-pushed
the
feat/content-sfx-extractors
branch
from
August 30, 2026 13:01
9b971bc to
fe12960
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Smart Install Maker SFX payload extraction, DAT/BIG archive processing, and control bar UI package normalization with unit tests.