Skip to content

feat: .ios settings moved to labelle-ios; name the moved key (labelle-cli#471 I4) - #810

Merged
apotema merged 1 commit into
mainfrom
feat/ios-moved-hint
Sep 29, 2026
Merged

apotema merged 1 commit into
mainfrom
feat/ios-moved-hint

Conversation

@apotema

@apotema apotema commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Part of labelle-cli#471, item I4.

Codegen never read the .ios block (there is no cfg.ios access anywhere). IosConfig only existed so the strict parse would accept it. iOS now belongs to labelle-ios (v0.1.0), whose settings live in providers/ios.json.

What

  • src/ios_moved_keys.zig: a pre-pass mirroring android_moved_keys.zig. It names the first moved key in source order:
    project.labelle: `.ios.bundle_id` is no longer read from project.labelle: move bundle_id to providers/ios.json (labelle-ios provider; see labelle-cli#471)
    
  • Moved keys: the six former IosConfig fields (app_name, bundle_id, team_id, minimum_ios, orientation, device_family) plus the provider schema's simulator and destination.
  • Wiring: plugin_params.parseTypedDiag runs it after the android check.
  • Compatibility:
    • IosConfig is now empty, so .ios = .{} still parses.
    • A typo (.ios.bundle_idd) still gets the strict parser's line:col error.
    • Malformed ZON goes to the typed parse.
  • Removed: the Orientation enum, used only by IosConfig, and its root re-export. No toolkit repo imports it.

Tests

  • 4 pre-pass tests.
  • 2 plugin_params tests: all 8 keys, the .params path, the empty block, a typo.
  • zig build test passes 94/94 steps (3827 tests).

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Summary by CodeRabbit

  • Configuration
    • iOS packaging settings are now configured through the iOS provider rather than the project’s .ios block.
    • Using a former iOS setting in .ios now produces a migration hint identifying the setting to move.
    • An empty .ios block remains valid. Unknown keys continue to be reported as configuration errors.

…-cli#471 I4)

Codegen never read the .ios block. IosConfig only existed so the strict
parse would accept it. iOS now belongs to the labelle-ios provider, whose
settings live in providers/ios.json. A new pre-pass (ios_moved_keys.zig,
mirroring android_moved_keys.zig) names the first moved key:

  project.labelle: `.ios.bundle_id` is no longer read from project.labelle:
  move bundle_id to providers/ios.json (labelle-ios provider; see labelle-cli#471)

Moved keys: the six former IosConfig fields (app_name, bundle_id,
team_id, minimum_ios, orientation, device_family) plus the provider
schema's simulator and destination. IosConfig is now empty, so
`.ios = .{}` still parses. A real typo still gets the strict parser's
line:col error. The Orientation enum, used only by IosConfig, is removed.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-29T18:27:21.568067Z 97dfb08 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 34f13930-b068-4df7-94a4-68dcf0fe4b99

📥 Commits

Reviewing files that changed from the base of the PR and between f95386c and 97dfb08.

📒 Files selected for processing (4)
  • src/config.zig
  • src/ios_moved_keys.zig
  • src/plugin_params.zig
  • src/root.zig

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour.


📝 Walkthrough

Walkthrough

The .ios project configuration is now an empty, deprecated block. Parsing checks for former iOS configuration keys and returns a migration error with a hint directing the key to providers/ios.json.

Changes

iOS Configuration Migration

Layer / File(s) Summary
Reduce the iOS project configuration
src/config.zig, src/root.zig
IosConfig is now empty, and the Orientation enum and public re-export are removed. Documentation marks the .ios block as deprecated.
Detect and report moved iOS keys
src/ios_moved_keys.zig, src/plugin_params.zig, src/root.zig
The ZON check detects listed keys within a root .ios struct and reports the first match with a migration hint. Typed parsing invokes the check before project parsing. Tests cover detection, error handling, and accepted or rejected .ios blocks.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant parseTypedDiag
  participant ios_moved_keys_check
  participant findMovedKey
  participant ZON_parser
  participant diagnostic_logger
  parseTypedDiag->>ios_moved_keys_check: check source
  ios_moved_keys_check->>findMovedKey: find matching key
  findMovedKey->>ZON_parser: parse source
  ZON_parser-->>findMovedKey: parsed root .ios struct
  findMovedKey-->>ios_moved_keys_check: first matching key
  ios_moved_keys_check->>diagnostic_logger: write provider migration hint
  ios_moved_keys_check-->>parseTypedDiag: return IosKeyMovedToProvider
Loading

Merge Risk: ⚪ Minimal · up to 97dfb

The iOS settings migration appears mergeable after normal checks.

🚥 Pre-merge checks | ✅ 5
✅ 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 clearly and concisely describes the main change: moving .ios settings to the labelle-ios provider and naming the moved key.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

A rabbit checks the .ios keys,
Then points them to provider files with ease.
An empty block stays in its place,
Old fields now meet a clear error case.
I nibble clover, pleased to see,
The hint says where those keys should be.

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

@apotema
apotema merged commit e5c45c6 into main Sep 29, 2026
5 checks passed
@apotema
apotema deleted the feat/ios-moved-hint branch September 29, 2026 19:12
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.

2 participants