Skip to content

Conversation

@rbruels
Copy link

@rbruels rbruels commented Dec 9, 2025

It seems that in iOS 18, empty Key values for PSTextFieldSpecifier will cause the Settings bundle not to load, instead of being ignored. I don't know if this is documented anywhere or if Apple simply made parsing more strict in iOS 18.

Either way, this fixes #191 and restores the Settings bundle for the iOS app:

simulator_screenshot_CFC3EE59-0193-462C-9903-D8F78A9499FC

Summary by CodeRabbit

  • Settings Updates
    • Improved settings label clarity for screen resolution
    • Removed unused preference sections and empty fields from the app settings

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 9, 2025

Walkthrough

The iOS settings bundle configuration file was updated to fix resolution settings visibility on iOS 18. The "Screen Settings" group specifier was removed, the resolution specifier was renamed to "Screen Resolution", and an empty text field entry was deleted.

Changes

Cohort / File(s) Change Summary
Settings Bundle Configuration
app/iEinstein/Settings.bundle/Root.plist
Removed "Screen Settings" PSGroupSpecifier, renamed resolution multi-value specifier to "Screen Resolution", removed empty PSTextFieldSpecifier from Paper Size section

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

  • Configuration file changes only; no functional code logic modified
  • Single file with straightforward structural adjustments for iOS 18 compatibility

Poem

🐰 In the plist's neat array, a fix takes its place,
Screen settings vanished without a trace,
"Resolution" bloomed as "Screen Resolution" bright,
iOS 18 settings now work just right!
One empty field swept clean away... ✨

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately identifies the main change: fixing the Settings bundle configuration to work on iOS 18+, which is the core objective.
Linked Issues check ✅ Passed The changes directly address issue #191 by removing empty Key values that caused Settings bundle failures on iOS 18, restoring the resolution settings display.
Out of Scope Changes check ✅ Passed All changes in the Settings.plist file are focused on fixing the iOS 18 Settings bundle compatibility issue; no unrelated modifications detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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 and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
app/iEinstein/Settings.bundle/Root.plist (1)

11-18: Title rename may affect localization because StringsTable is set to Root

With <key>StringsTable</key><string>Root</string>, each Title is used as a lookup key in Root.strings. Renaming "Resolution""Screen Resolution" is fine functionally, but it can break existing translations unless Root.strings entries are updated to match the new key.

If you rely on localized titles, please confirm the corresponding entry exists (or update/create it) so this specifier doesn’t silently fall back to the literal English string.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a29e0a0 and 45a597c.

📒 Files selected for processing (1)
  • app/iEinstein/Settings.bundle/Root.plist (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (1)
app/iEinstein/Settings.bundle/Root.plist (1)

55-74: Empty PSTextFieldSpecifier removal aligns with iOS 18 behavior; consider scanning for any remaining empty keys

The removal of the empty PSTextFieldSpecifier under/around the “Paper Size” section is the right fix to prevent the Settings bundle from failing to load on iOS 18+, where empty Key values are no longer tolerated.

To ensure there are no other latent issues across the Settings bundle, you might want to scan all plist files in Settings.bundle for <key>Key</key> followed by an empty <string>:

#!/bin/bash
# From repo root: scan Settings bundle for specifiers with an empty Key
fd 'Settings\.bundle' -t d -x rg -nP '<key>Key</key>\s*<string>\s*</string>' {}

This should return no matches after your changes.

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.

Resolution settings unavailable after iOS 18

1 participant