Skip to content

fix:EXC_BREAKPOINT crash in forwardInvocation: - #7

Merged
faimin merged 14 commits into
mainfrom
feature/optimize
Jul 29, 2026
Merged

faimin merged 14 commits into
mainfrom
feature/optimize

Conversation

@faimin

@faimin faimin commented Jul 28, 2026 •

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • Bug Fixes
    • Fixed crashes when forwarded method return values had mismatched sizes by aligning synthesized return-value buffering.
    • Removed DEBUG-only logging for unknown selector handling in the broadcast proxy.
    • Improved watchOS behavior by treating certain transformation arguments as unsupported rather than matching a dedicated case.
  • Documentation
    • Updated CHANGELOG.md with version 0.4.5 notes (including cache-read entries) and refreshed installation docs.
    • Updated the architecture diagram and API naming/signatures.
  • Chores
    • Added/expanded CI lint/build coverage and introduced an automated multi-platform XCFramework release workflow.

@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@faimin

faimin commented Jul 28, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jul 28, 2026 •

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 6a55a9cc-54eb-462a-9a8b-62e0465aa754

📥 Commits

Reviewing files that changed from the base of the PR and between 611c3db and 66f7154.

📒 Files selected for processing (5)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • Sources/Classes/Tools/ZDMInvocation.m
  • ZDMediator.podspec
  • _Pods.xcodeproj
💤 Files with no reviewable changes (1)
  • _Pods.xcodeproj
🚧 Files skipped from review as they are similar to previous changes (2)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml

📝 Walkthrough

Walkthrough

Proxy return-value handling now matches method return sizes, broadcast-proxy unknown-selector logging was removed, watchOS argument handling was adjusted, documentation and architecture diagrams were updated, and GitHub Actions workflows now validate builds and publish tagged XCFramework releases.

Changes

Proxy and release updates

Layer / File(s) Summary
Sized proxy return buffers
Sources/Classes/Public/ZDMProxy.m
forwardInvocation: exits for void methods and assigns a zero-initialized buffer matching the method’s return length for non-void methods.
Selector logging and platform handling
Sources/Classes/Public/ZDMBroadcastProxy.m, Sources/Classes/Tools/ZDMInvocation.m
The broadcast proxy’s DEBUG-only selector override is removed, and CATransform3D marshaling is excluded on watchOS.
Release notes and version
CHANGELOG.md, ZDMediator.podspec
Version 0.4.5 and prior 0.4.4 changes are documented, and the podspec version is updated.

GitHub Actions automation

Layer / File(s) Summary
Continuous integration checks
.github/workflows/ci.yml
The CI workflow runs CocoaPods linting and matrix-based Xcode builds with concurrency cancellation.
Tagged XCFramework release
.github/workflows/release.yml
Tagged runs archive platform variants, create and zip ZDMediator.xcframework, extract changelog notes, and publish a GitHub Release with the archive attached.

Documentation and architecture

Layer / File(s) Summary
Installation and compatibility documentation
README.md
Badges and installation instructions now cover CocoaPods, Swift Package Manager, and XCFramework distribution.
Architecture and lookup flow
Resources/ZDMediator架构.drawio
Architecture diagrams now show updated protocol signatures, proxy and responder components, and the onlyFromCache? lookup branch.

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

Sequence Diagram(s)

sequenceDiagram
  participant TagPush
  participant GitHubActions
  participant Xcode
  participant GitHubRelease
  TagPush->>GitHubActions: trigger tagged release workflow
  GitHubActions->>Xcode: archive platform variants
  Xcode-->>GitHubActions: return XCArchives
  GitHubActions->>Xcode: create and zip XCFramework
  GitHubActions->>GitHubRelease: publish release with changelog and zip
Loading

Possibly related PRs

🚥 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 matches the main change: fixing the EXC_BREAKPOINT crash in forwardInvocation:.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/optimize

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.

faimin added 2 commits July 29, 2026 13:19
- CI: push triggers CocoaPods lint + SPM build across all platforms
- Release: tag triggers xcframework build (all platforms) + GitHub Release
  with changelog body and asset upload

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

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

Inline comments:
In @.github/workflows/ci.yml:
- Around line 1-13: Add a workflow-level permissions declaration near the
top-level CI configuration in .github/workflows/ci.yml, granting only contents:
read. Keep the existing checkout, lint, and build jobs unchanged.
- Line 18: Disable checkout credential persistence by setting
persist-credentials to false for the checkout steps at .github/workflows/ci.yml
lines 18-18 and 36-36, and .github/workflows/release.yml line 16-16; retain
token availability for softprops/action-gh-release.
- Around line 40-44: Update the Xcode build pipeline in .github/workflows/ci.yml
at lines 40-44 to enable pipefail and remove the trailing || true, preserving
xcpretty while propagating xcodebuild failures. Apply the same change to the
archive pipeline in .github/workflows/release.yml at lines 33-40 so every
required archive failure blocks packaging and release.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 78ef060d-2983-49e6-8539-cffc9091c2ef

📥 Commits

Reviewing files that changed from the base of the PR and between 85ecc61 and c8e0832.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml

Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml Outdated
faimin added 4 commits July 29, 2026 14:49
- Add permissions: contents: read to CI workflow
- Set persist-credentials: false on all checkout steps
- Enable pipefail and drop || true so build failures propagate

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

Inline comments:
In `@README.md`:
- Around line 34-36: Update the fenced code block containing the ZDMediator URL
in the README to include a language identifier, preferably text (or url if
supported), while preserving the URL content.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: d8899bcb-71db-4eb6-b8ef-be53c4f0a250

📥 Commits

Reviewing files that changed from the base of the PR and between c8e0832 and 611c3db.

⛔ Files ignored due to path filters (2)
  • Resources/architecture.png is excluded by !**/*.png
  • Resources/process.png is excluded by !**/*.png
📒 Files selected for processing (4)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • README.md
  • Resources/ZDMediator架构.drawio
🚧 Files skipped from review as they are similar to previous changes (2)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml

Comment thread README.md
Comment on lines +34 to +36
```
https://github.com/faimin/ZDMediator.git
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add a language identifier to this fenced block.

Use ```text (or ```url if supported by the configured linter) to satisfy MD040.

Proposed fix
-```
+```text
 https://github.com/faimin/ZDMediator.git
🧰 Tools
🪛 markdownlint-cli2 (0.23.1)

[warning] 34-34: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 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 `@README.md` around lines 34 - 36, Update the fenced code block containing the
ZDMediator URL in the README to include a language identifier, preferably text
(or url if supported), while preserving the URL content.

Source: Linters/SAST tools

@faimin
faimin force-pushed the feature/optimize branch 2 times, most recently from 4f644d3 to df08ba0 Compare July 29, 2026 07:49
Root-level _Pods.xcodeproj caused xcodebuild to ignore Package.swift.
@faimin
faimin force-pushed the feature/optimize branch from df08ba0 to 66eab54 Compare July 29, 2026 07:59
CATransform3D is API_UNAVAILABLE(watchos) since iOS 2.0.
@faimin
faimin merged commit a2d2a25 into main Jul 29, 2026
15 checks passed
@faimin
faimin deleted the feature/optimize branch July 29, 2026 09:22
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