Skip to content

RU-T51 Build fix#237

Merged
ucswift merged 1 commit intomasterfrom
develop
May 10, 2026
Merged

RU-T51 Build fix#237
ucswift merged 1 commit intomasterfrom
develop

Conversation

@ucswift
Copy link
Copy Markdown
Member

@ucswift ucswift commented May 10, 2026

Summary by CodeRabbit

  • Chores
    • Enhanced development team configuration synchronization for widget extensions, ensuring proper alignment of build settings between the host app and widget targets during the build process.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 10, 2026

📝 Walkthrough

Walkthrough

The PR adds logic to synchronize the DEVELOPMENT_TEAM identifier from the host app's Xcode build configuration into the CheckInTimerWidget target's build settings for both Debug and Release configurations, complementing existing version-number and resource-file synchronization.

Changes

Xcode Build Configuration Sync for CheckIn Widget

Layer / File(s) Summary
Resolve Development Team from Host Target
plugins/withCheckInLiveActivity.js
Logic extracts DEVELOPMENT_TEAM from the host app target's first build configuration (lines 447–462).
Propagate Development Team to Widget Target
plugins/withCheckInLiveActivity.js
The resolved DEVELOPMENT_TEAM is merged into the widget target's Debug and Release buildSettings when successfully resolved (lines 480–482).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Poem

🐰 A team ID hops from host to widget bright,
Build settings now sync left and right,
The config flows with harmony and care,
Development teams everywhere!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'RU-T51 Build fix' is vague and lacks specificity about what build issue was fixed or which component was modified. Use a more descriptive title that explains the specific build fix, such as 'Sync DEVELOPMENT_TEAM to CheckInTimerWidget build configuration' to clearly convey the change.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

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
Copy Markdown

@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.

🧹 Nitpick comments (1)
plugins/withCheckInLiveActivity.js (1)

447-461: ⚡ Quick win

Eliminate duplication: reuse existing host build config access.

Lines 426–437 already navigate to the host target's build configuration and read firstHostConfig.buildSettings. Lines 447–461 duplicate this entire navigation with slightly different variable names (hostBuildConfigListId vs. hostConfigListId) to read DEVELOPMENT_TEAM from the same object.

Refactor by reading DEVELOPMENT_TEAM at lines 433–434 alongside the version numbers.

♻️ Proposed refactor to eliminate duplication
    const hostTarget = project.getFirstTarget();
    let hostMarketingVersion = null;
    let hostCurrentProjectVersion = null;
+   let hostDevelopmentTeam = null;
    const hostConfigListId = targetSection[hostTarget.uuid].buildConfigurationList;
    const hostConfigList = project.pbxXCConfigurationList()[hostConfigListId];
    if (hostConfigList) {
      const firstHostConfigUuid = hostConfigList.buildConfigurations[0]?.value;
      if (firstHostConfigUuid) {
        const firstHostConfig = project.pbxXCBuildConfigurationSection()[firstHostConfigUuid];
        if (firstHostConfig?.buildSettings) {
          hostMarketingVersion = firstHostConfig.buildSettings.MARKETING_VERSION || null;
          hostCurrentProjectVersion = firstHostConfig.buildSettings.CURRENT_PROJECT_VERSION || null;
+         hostDevelopmentTeam = firstHostConfig.buildSettings.DEVELOPMENT_TEAM || null;
        }
      }
    }
    // MARKETING_VERSION in pbxproj is already quoted (e.g., '"1.2.3"');
    // config.version is raw (e.g., '1.2.3'), so wrap it in quotes.
    const resolvedMarketingVersion =
      hostMarketingVersion || (config.version ? `"${config.version}"` : '"1.0"');
    // CURRENT_PROJECT_VERSION in pbxproj is an unquoted number string (e.g., '42');
    // config.ios?.buildNumber is raw, pass through as-is.
    const resolvedCurrentProjectVersion =
      hostCurrentProjectVersion || (config.ios?.buildNumber ?? '1');

-   // Resolve DEVELOPMENT_TEAM from the host target so the widget extension
-   // can be signed. EAS sets this on the main target during credential
-   // application; copying it here ensures the widget inherits it.
-   let hostDevelopmentTeam = null;
-   const hostBuildConfigListId = targetSection[hostTarget.uuid].buildConfigurationList;
-   const hostBuildConfigList = project.pbxXCConfigurationList()[hostBuildConfigListId];
-   if (hostBuildConfigList) {
-     const firstHostConfigUuid = hostBuildConfigList.buildConfigurations[0]?.value;
-     if (firstHostConfigUuid) {
-       const firstHostConfig = project.pbxXCBuildConfigurationSection()[firstHostConfigUuid];
-       if (firstHostConfig?.buildSettings) {
-         hostDevelopmentTeam = firstHostConfig.buildSettings.DEVELOPMENT_TEAM || null;
-       }
-     }
-   }
-
    const buildConfigListId = targetSection[widgetTarget.uuid].buildConfigurationList;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/withCheckInLiveActivity.js` around lines 447 - 461, The code
duplicates navigation to the host target's build configuration to read
DEVELOPMENT_TEAM; instead reuse the already-resolved firstHostConfig from the
earlier block where you read version numbers and set hostDevelopmentTeam =
firstHostConfig.buildSettings.DEVELOPMENT_TEAM || null (or null if absent), then
remove the later duplicated block that declares
hostBuildConfigListId/hostBuildConfigList and repeats the lookup; keep
references to project.pbxXCConfigurationList(),
project.pbxXCBuildConfigurationSection(), and firstHostConfig as used earlier
(ensure firstHostConfig is in scope where you add the DEVELOPMENT_TEAM read).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@plugins/withCheckInLiveActivity.js`:
- Around line 447-461: The code duplicates navigation to the host target's build
configuration to read DEVELOPMENT_TEAM; instead reuse the already-resolved
firstHostConfig from the earlier block where you read version numbers and set
hostDevelopmentTeam = firstHostConfig.buildSettings.DEVELOPMENT_TEAM || null (or
null if absent), then remove the later duplicated block that declares
hostBuildConfigListId/hostBuildConfigList and repeats the lookup; keep
references to project.pbxXCConfigurationList(),
project.pbxXCBuildConfigurationSection(), and firstHostConfig as used earlier
(ensure firstHostConfig is in scope where you add the DEVELOPMENT_TEAM read).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f93442a9-6041-4870-a347-55a9f9b11c61

📥 Commits

Reviewing files that changed from the base of the PR and between 8c99d64 and 60c6c98.

📒 Files selected for processing (1)
  • plugins/withCheckInLiveActivity.js

@ucswift
Copy link
Copy Markdown
Member Author

ucswift commented May 10, 2026

Approve

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

This PR is approved.

@ucswift ucswift merged commit e97104c into master May 10, 2026
19 of 20 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request May 10, 2026
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