fix(userdata): resolve profile deactivation file conflict and add build-check script - #20
Open
undead2146 wants to merge 21 commits into
Open
fix(userdata): resolve profile deactivation file conflict and add build-check script#20undead2146 wants to merge 21 commits into
undead2146 wants to merge 21 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)
…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)
…tivated and add build-check tooling
undead2146
force-pushed
the
fix/user-data-conflict-and-tooling
branch
from
August 20, 2026 19:04
80bbe4f to
afb9fa5
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.
Resolves file conflict when prior owner profile is deactivated, refactors CasPoolManager path helper, and adds build-check mutex script.