Skip to content

Share personal-data rules with the backup validator and tolerate missing artwork - #34

Closed
btsouth wants to merge 1 commit into
codex/completionfrom
codex/1.7-review-fixes
Closed

Share personal-data rules with the backup validator and tolerate missing artwork#34
btsouth wants to merge 1 commit into
codex/completionfrom
codex/1.7-review-fixes

Conversation

@btsouth

@btsouth btsouth commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Fixes from the review of #30. All six findings sat in the backup path.

  • New library/PersonalDataRules.h holds the manual title limit, argument count, saved filter name length and count, and the control-character rule. ManualGameModel, LibraryFilterModel, UnifiedGameModel, and BackupArchive all use it, so the validator accepts exactly what the app can store. Previously the editor allowed 256-character titles the archive rejected at 200, and filter names allowed C1 controls the archive rejected.
  • BackupSnapshot drops an artwork override whose file is gone instead of failing the whole export. The library already falls back to provider art for those rows and the reset button is disabled when the file is missing, so there was no in-app remedy. Oversized or invalid files still fail.
  • BackupSnapshot exports only active manual games in both the flag pass and the table dump, so removed entries no longer inflate the preview count or come back on a Replace restore.
  • main.cpp cleans the XDG data and config roots before building the recovery paths. Qt passes a trailing slash in XDG_DATA_HOME or XDG_CONFIG_HOME through untouched and BackupRecovery rejects any path cleanPath would change, which blocked every restore on such systems.

Tests: artwork test now expects a successful capture with the dangling override dropped, manual game test checks inactive rows are excluded and the shared title limit is enforced, saved filter test checks the shared name rule. Full suite 81/81.

@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 1b979136-7d75-47c9-8f6d-2ac146f012f2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@btsouth btsouth mentioned this pull request Sep 6, 2026
@btsouth btsouth closed this Sep 7, 2026
Furrociuos pushed a commit to Furrociuos/omakade-nix that referenced this pull request Sep 7, 2026
Brings codex/1.7-review-fixes (PR btsouth#34 on top of PR btsouth#30) into the release
branch so one 1.7.0 carries both feature sets.

Conflict resolutions worth knowing about:

- Hero and logo artwork overrides moved into the data() switch. The merged
  code left them after it, where they were unreachable, so custom heroes and
  logos would have silently stopped working.
- Saved filters record the multi-select source list instead of one source
  name, and both the model and the archive validator accept a bare string so
  filters saved by an earlier build still load and export.
- Sort modes are five, not three. The duplicate name list is gone and the
  count is shared through PersonalDataRules with the archive validator.
- Manual games, extra GOG folders, and backup and restore moved into the
  redesigned settings sections, which had replaced the sheet they lived in.
- The Manual source chip joins the multi-select chips and has its controller
  targets wired. Pick A Game is now the first toolbar button after the source
  row, so the row hands focus to it rather than skipping to Sort.
- CI and the release workflow install wayland and wayland-protocols, so both
  build the idle inhibitor instead of quietly configuring it out.

All 94 CTest cases pass, along with the SBOM, desktop and AppStream checks.
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.

1 participant