Repository navigation
Make settings values type safe and centralize path reloads - #499
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (29)
Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 2 remain after this review. 📝 WalkthroughWalkthroughSettings now use generic value types and typed manager APIs. Setting implementations share a generic base, and manager registration uses setting-specific interfaces. Settings views route writes through a helper that handles failed updates. Tests use generic setting types and cover decimal parsing. ChangesTyped Settings
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Refactor Suggested reviewers: Merge Risk: ⚪ Minimal · up to No confirmed issue remains that should block merging after normal checks. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The settings and path-change behavior warrant design review, but the inspected code retains validation and reloads the selected Dolphin profile after a successful path change. No introduced security issue was established. Failure and recovery behavior is not fully covered by the available evidence. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
Hardening Proposals
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. A rabbit checks each typed setting with care Comment |
patchzyy
left a comment
There was a problem hiding this comment.
reviewed this layer against #498, including the typed setting api, json/ini/toml conversion, path reloads, and settings ui callers.
the existing tests pass locally: 551 unit tests and 19 ui tests. i did not find a new blocking issue in this layer.
the partial-save issue noted on #498 is still inherited here and should be fixed in that lower layer before merging the stack.
Updated yml to include new l10n on latest version of WhWz (v2.5.7), plus some mistake corrections on a few existing translations. Translation support is now back to 100%.
* i10n: Update German translation * fix: Update name
* l10n: Add missing German translations * l10n: Fix mistranslation of "scaling" * l10n: Fix issues in code review * l10n: Add translation for "polish" string --------- Co-authored-by: Dirk <dirkroosendaal04@gmail.com>
* l10n(leaderboard): Add l10n to basic strings * l10n(leaderboard): Add l10n to placements * l10n(leaderboard): Add l10n to snackbar messages * l10n(leaderboard): Add German translations * l10n: Fix rank labels not using localization * l10n: Fix retry/refresh buttons not using localization * l10n(Leaderboard): Translate unknown Mii name * l10n(Leaderboard): Use localization for podium placements * l10n(Leaderboard): Fix German retry/refresh translation * fix(LeaderboardPodiumCard): Make placement a Avalonia property --------- Co-authored-by: WantToBeeMe | Dirk <dirkroosendaal04@gmail.com>
Co-authored-by: Dirk <dirkroosendaal04@gmail.com>
* Preserve settings files and report persistence failures * Propagate recommended settings save failures * Recalculate virtual settings after partial save failures
Purpose of this PR:
Replace object-based setting access with Setting and typed manager methods. Incorrect value types are rejected by the compiler. Runtime parsing stays at JSON/INI/TOML boundaries, with domain validation retained.
Reload Dolphin settings centrally when its executable/user path changes. Settings UI edits surface persistence failures. Persisted property names and representations stay unchanged.
Based on #498. Merge after #498; works without later layers.
How to Test:
dotnet test WheelWizard.sln551 tests passed (532 unit, 19 headless UI), including the typed API contract and the existing settings/path suites.
What Has Been Changed:
See the focused implementation above. The existing settings JSON contract and imported translation sheets are preserved.
Related Issue Link:
No linked issue. Part of native GitHub stack #503.
Checklist before merging
Summary by CodeRabbit