Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
9639042
[dotnet-linker] Create an xml descriptor instead of manual marking wh…
rolfbjarne Apr 14, 2026
8166e00
[msbuild] Revamp finding a simulator to use when running an app in th…
rolfbjarne Apr 14, 2026
b16c025
[dotnet-linker] Use [DynamicDependency] attributes instead of manual …
rolfbjarne Apr 14, 2026
31b5bd9
Reset files to net11.0
github-actions[bot] Apr 14, 2026
0f5bf0d
Merge remote-tracking branch 'origin/net11.0' into merge/main-to-net11.0
rolfbjarne Apr 15, 2026
8376df7
[xharness] Add TestReporter implementation to detect crashes properly…
rolfbjarne Apr 15, 2026
c74d594
[tests] Update expected sizes.
rolfbjarne Apr 15, 2026
be8a2ca
[tests] Improve LinkSdk.DllImportTest.PingSend to try to ping multipl…
rolfbjarne Apr 15, 2026
aaef2d9
[main] Update dependencies from dotnet/dotnet (#25140)
dotnet-maestro[bot] Apr 15, 2026
18f0646
[main] Update dependencies from dotnet/xharness (#25153)
dotnet-maestro[bot] Apr 15, 2026
43c4600
[apidiff] Update reference/stable versions to latest .NET 10 / Xcode …
dalexsoto Apr 15, 2026
5d419e3
CoreSpotlight: fix 'occured' -> 'occurred' in CSEnums XML doc comment…
SAY-5 Apr 16, 2026
9d6da66
[xharness] Enable nullability, and fix any errors. (#25160)
rolfbjarne Apr 17, 2026
542f21c
[AppKit] Fix the name of the userInfo 'Item' key in the WillAddItem/D…
rolfbjarne Apr 17, 2026
fa65041
[src] Review xml docs for grammar. (#25165)
rolfbjarne Apr 17, 2026
16ff253
Merge remote-tracking branch 'origin/net11.0' into merge/main-to-net11.0
rolfbjarne Apr 17, 2026
ab60585
Merge remote-tracking branch 'origin/main' into merge/main-to-net11.0
rolfbjarne Apr 17, 2026
00f45ee
[tests] Improve diagnostics a bit for DeskCase_83099_InmutableDiction…
rolfbjarne Apr 17, 2026
6ed2720
[main] Bump Xcode to 26.4.1 (#25169)
dalexsoto Apr 17, 2026
ba7f211
[ObjCRuntime] Provide a way to remove an object from the object map. …
rolfbjarne Apr 17, 2026
2870048
[tests] Update expected sizes.
rolfbjarne Apr 17, 2026
7dd3cbf
[src] Unify the xml docs for the `Dispose(bool)` method. (#25175)
rolfbjarne Apr 17, 2026
1321f7d
[tools] Improve the create-makefile-fragment script a bit. (#25174)
rolfbjarne Apr 17, 2026
aa593cf
[main] Update dependencies from dotnet/macios (#25189)
dotnet-maestro[bot] Apr 20, 2026
63f9e9f
[main] Update dependencies from dotnet/xharness (#25187)
dotnet-maestro[bot] Apr 20, 2026
5b0797b
[xharness] Unify test variation creation. (#25156)
rolfbjarne Apr 20, 2026
315cffc
[main] Update dependencies from dotnet/dotnet (#25163)
dotnet-maestro[bot] Apr 20, 2026
37af6c4
Merge remote-tracking branch 'origin/net11.0' into merge/main-to-net11.0
rolfbjarne Apr 20, 2026
28695ae
[tests] Update expected sizes.
rolfbjarne Apr 20, 2026
31655be
[devops] Remove the branch-based trigger for pull requests. (#25182)
rolfbjarne Apr 20, 2026
ad8572a
[Foundation] Clean up pre-net10.0 code from NSUrlSessionHandler. (#25…
rolfbjarne Apr 20, 2026
7b06638
[main] Update dependencies from dotnet/macios (#25199)
dotnet-maestro[bot] Apr 21, 2026
486d22e
[main] Update dependencies from dotnet/dotnet (#25201)
dotnet-maestro[bot] Apr 21, 2026
160431c
Merge remote-tracking branch 'origin/main' into merge/main-to-net11.0
rolfbjarne Apr 21, 2026
e772e4a
Merge remote-tracking branch 'origin/net11.0' into merge/main-to-net11.0
rolfbjarne Apr 21, 2026
d6a2d75
[tests] Fix merge conflicts.
rolfbjarne Apr 21, 2026
628501a
[sharpie] Add docs on how to create a sharpie release. (#25178)
rolfbjarne Apr 22, 2026
ceb6ce3
[docs] Minor updates from copilot review in the dotnet/docs-mobile re…
rolfbjarne Apr 22, 2026
7e68a96
Add eng/Signing.props to sign cab files inside MSI workload packs (#2…
rolfbjarne Apr 22, 2026
8d73468
Bump mlaunch to get startup hook fix. (#25202)
rolfbjarne Apr 22, 2026
14a851f
[tests] Update expected sizes.
rolfbjarne Apr 22, 2026
fbb929b
[dotnet-linker] Use [DynamicDependency] attributes instead of manual …
rolfbjarne Apr 22, 2026
727a5e4
[Foundation] Enable HTTP digest auth in NSUrlSessionHandler (#25180)
rolfbjarne Apr 22, 2026
35d79c6
[docs] Fix typo 'embeddded' -> 'embedded'. (#25205)
rolfbjarne Apr 22, 2026
9c925f0
[devops] Disable implicit CI triggers on xamarin-macios-pr pipeline (…
rolfbjarne Apr 23, 2026
306ec76
[devops] Add a timeout to the 'Publish to Artifact Services Drop' ste…
rolfbjarne Apr 23, 2026
15c3604
Add macios-reviewer skill for PR code review (#25206)
rolfbjarne Apr 23, 2026
8be4923
[tests] Simplify MonoTouch.Dialog. (#25203)
rolfbjarne Apr 23, 2026
c11dc4a
[Foundation] Improve potential reentrancy problems in NSUrlSessionHan…
rolfbjarne Apr 23, 2026
a144156
[msbuild] Copy some ILLink output back to Windows when building remot…
rolfbjarne Apr 23, 2026
91a5a68
[msbuild] Add a condition to make sure empty item groups aren't proce…
rolfbjarne Apr 23, 2026
98d199f
Merge remote-tracking branch 'origin/main' into merge/main-to-net11.0
rolfbjarne Apr 24, 2026
7c7e099
Merge remote-tracking branch 'origin/net11.0' into merge/main-to-net11.0
rolfbjarne Apr 24, 2026
61dbe84
Update global.json after merge.
rolfbjarne Apr 24, 2026
f3f8842
[tests] Update expected sizes.
rolfbjarne Apr 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@
# stored as 'lf' and converted to 'crlf' on Windows.

**/.template.config/localize/templatestrings.*.json text

.github/workflows/*.lock.yml linguist-generated=true merge=ours
9 changes: 9 additions & 0 deletions .github/aw/actions-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"entries": {
"github/gh-aw-actions/setup@v0.68.3": {
"repo": "github/gh-aw-actions/setup",
"version": "v0.68.3",
"sha": "ba90f2186d7ad780ec640f364005fa24e797b360"
}
}
}
112 changes: 112 additions & 0 deletions .github/skills/macios-reviewer/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
---
name: macios-reviewer
description: >-
Review dotnet/macios PRs against established rules. Trigger on "review this PR",
a GitHub PR URL, or code review requests. Checks bindings, MSBuild, nullable,
formatting, performance, testing, native runtime code, and Apple platform patterns.
---

# .NET for Apple Platforms PR Reviewer

Review PRs against guidelines distilled from past reviews by senior maintainers of dotnet/macios (Sebastien, Rolf, Chris, Manuel, Alex).

## Review Mindset

Be polite but skeptical. Prioritize bugs, performance regressions, safety issues, and pattern violations over style nitpicks. **3 important comments > 15 nitpicks.**

Flag severity clearly in every comment:
- ❌ **error** — Must fix before merge. Bugs, security issues, broken bindings, breaking API changes.
- ⚠️ **warning** — Should fix. Performance issues, missing validation, inconsistency with patterns.
- 💡 **suggestion** — Consider changing. Style, readability, optional improvements.

**Every review should produce at least one inline comment.** Even clean PRs have opportunities for improvement — code consolidation, missing edge-case tests, documentation gaps, or binding improvements. Use 💡 suggestions for these. Only omit inline comments if the PR is truly trivial (e.g., a 1-line typo fix or dependency bump).

## Workflow

### 1. Identify the PR

If triggered from an agentic workflow (slash command on a PR), use the PR from the event context. Otherwise, extract `owner`, `repo`, `pr_number` from a URL or reference provided by the user.
Formats: `https://github.com/{owner}/{repo}/pull/{number}`, `{owner}/{repo}#{number}`, or bare number (defaults to `dotnet/macios`).

### 2. Gather context (before reading PR description)

```
gh pr diff {number} --repo {owner}/{repo}
gh pr view {number} --repo {owner}/{repo} --json files
```

For each changed file, read the **full source file** (not just the diff) to understand surrounding invariants, call patterns, and data flow. If the change modifies a public/internal API or utility, search for callers. Check whether sibling types need the same fix.

**Form an independent assessment** of what the change does and what problems it has *before* reading the PR description.

### 3. Incorporate PR narrative and reconcile

```
gh pr view {number} --repo {owner}/{repo} --json title,body
```

Now read the PR description and linked issues. Treat them as claims to verify, not facts to accept. Where your independent reading disagrees with the PR description, investigate further. If the PR claims a performance improvement, require evidence (benchmarks, profiling data). If it claims a bug fix, verify the bug exists and the fix addresses root cause — not symptoms.

### 4. Check CI status

```
gh pr checks {number} --repo {owner}/{repo}
```

Review the CI results. **Never post ✅ LGTM if any required CI check is failing or if the code doesn't build.**

### 5. Load review rules

Read `references/review-rules.md` from this skill's directory.

### 6. Analyze the diff

For each changed file, check against the review rules. Record issues as:

```json
{ "path": "src/Example.cs", "line": 42, "side": "RIGHT", "body": "..." }
```

**What to look for (in priority order):**
1. **Bugs & correctness** — race conditions, null dereferences, incorrect selectors, wrong platform attributes
2. **Breaking changes** — API signature changes, removed members, changed parameter types without `XAMCORE_5_0` guard
3. **Binding correctness** — wrong `[Export]` selectors, missing `[NullAllowed]`, incorrect return types, missing platform attributes
4. **Safety** — thread safety, resource leaks, memory management issues
5. **Performance** — O(n²) patterns, unnecessary allocations, missing caches
6. **Missing tests** — untested error paths, edge cases, missing regression tests for bug fixes
7. **Code duplication** — near-identical methods that should be consolidated
8. **Consistency** — dedup patterns mixed within the same PR, API return types inconsistent with repo conventions
9. **Documentation** — misleading comments, undocumented behavioral decisions

Constraints:
- Only comment on added/modified lines in the diff — the API rejects out-of-range lines.
- `line` = line number in the NEW file (right side). Double-check against the diff.
- One issue per comment.
- **Don't pile on.** If the same issue appears many times, flag it once with a note listing all affected files.
- **Don't flag what CI catches.** Skip compiler errors, formatting the linter will catch, etc.
- **Avoid false positives.** Verify the concern actually applies given the full context. If unsure, phrase it as a question rather than a firm claim.
- **Don't report potential C# compilation errors** — the compiler will report those.
- **Ignore comments from 'vs-mobiletools-engineering-service2'** when processing issues and pull requests.

### 7. Post the review

Post your findings directly:

- **Inline comments** on specific lines of the diff with the severity, category, and explanation.
- **Review summary** with the overall verdict (✅ LGTM, ⚠️ Needs Changes, or ❌ Reject), issue counts by severity, and positive callouts.

If no issues found **and CI is green**, submit with at most one or two 💡 suggestions and a positive summary. Truly trivial PRs (dependency bumps, 1-line typo fixes) may have no inline comments.

**Copilot-authored PRs:** If the PR author is `Copilot` (the GitHub Copilot coding agent) and the verdict is ⚠️ Needs Changes or ❌ Reject, prefix the review summary with `@copilot ` so the comment automatically triggers Copilot to address the feedback. Do NOT add the prefix for ✅ LGTM verdicts.

## Comment format

```
🤖 {severity} **{Category}** — {What's wrong and what to do instead.}

_{Rule: Brief name}_
```

Where `{severity}` is ❌, ⚠️, or 💡.

**Categories:** Binding definition · Platform attributes · Breaking change · MSBuild tasks · MSBuild targets · Nullable · Async pattern · Error handling · Memory management · Security · Formatting · Performance · Code organization · Patterns · Native runtime · Testing · YAGNI · API design · Documentation
Loading
Loading