From 1315e1b3f2ceb295d1ab94847bade64302542ba1 Mon Sep 17 00:00:00 2001 From: Cassio Rossi Date: Tue, 21 Jul 2026 21:37:17 +0100 Subject: [PATCH 1/2] fix(#316): hide ads when opening a post via widget, push, deeplink, or shortcut The deeplink fullScreenCover is presented at the SceneView.body level, a sibling of MainView, so it did not inherit the \.removeAds environment value that is injected only on the MainView subtree. MMWebView therefore read the default (false) and wrote patr="false", showing ads to purchasing users. Re-inject \.removeAds on the cover content alongside modelContainer and analytics, which are already re-injected there. All four external entry points share this single presentation, so this fixes every path at once. Co-Authored-By: Claude --- MacMagazine/MacMagazine/MainApp/MacMagazineApp.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/MacMagazine/MacMagazine/MainApp/MacMagazineApp.swift b/MacMagazine/MacMagazine/MainApp/MacMagazineApp.swift index fac67608..2015b9fa 100644 --- a/MacMagazine/MacMagazine/MainApp/MacMagazineApp.swift +++ b/MacMagazine/MacMagazine/MainApp/MacMagazineApp.swift @@ -61,6 +61,7 @@ struct SceneView: View { viewModel.deepLinkPostURL = nil } .modelContainer(viewModel.storage.sharedModelContainer) + .environment(\.removeAds, viewModel.settingsViewModel.removeAds) .environmentObject(viewModel.analytics) } } From da3efb4f88e05c7170f34fd8a227dbdd4c37dc47 Mon Sep 17 00:00:00 2001 From: Cassio Rossi Date: Tue, 21 Jul 2026 21:41:26 +0100 Subject: [PATCH 2/2] update agent --- .claude/agents/ios-principal-engineer.md | 6 +++--- .claude/rules/git-workflow.md | 2 +- .claude/skills/ios-dod/SKILL.md | 2 +- .claude/skills/ios-start/SKILL.md | 6 +++--- CLAUDE.md | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.claude/agents/ios-principal-engineer.md b/.claude/agents/ios-principal-engineer.md index bf7abea5..f7252921 100755 --- a/.claude/agents/ios-principal-engineer.md +++ b/.claude/agents/ios-principal-engineer.md @@ -42,7 +42,7 @@ CLAUDE.md is the constitution; the rules files hold the detail. Read the relevan - `.claude/rules/git-workflow.md` — branches, commits, the gate - `.claude/rules/anti-hallucination.md` — verification contract -**Branch discipline**: Branch off `develop`. Format: `feature/`, `fix/`, `refactor/`. +**Branch discipline**: Branch off `release/v5`. Format: `feature/`, `fix/`, `refactor/`. **Build commands**: ALWAYS use `-skipPackagePluginValidation -skipMacroValidation` and target `iPhone 17 Pro` simulator: ```bash @@ -98,7 +98,7 @@ Co-Authored-By: Claude Before you declare any task complete, verify ALL of the following. If any item fails, fix it before proceeding: - [ ] Read existing code in the affected area first -- [ ] On a feature/fix branch off `develop` (not main, not release) +- [ ] On a feature/fix branch off `release/v5` (not main, not another release line) - [ ] Naming matches existing codebase conventions exactly - [ ] No duplicate utilities — reused existing helpers - [ ] Card system used correctly (NewsCard for news, AdaptivePodcastCardView for podcasts, GlassCardView for videos) @@ -128,7 +128,7 @@ Handle edge cases: empty states, nil values, large data sets, iPad vs iPhone lay 1. **Understand** — Parse the request. Identify the affected modules, files, and patterns. 2. **Read** — Read all relevant existing code. At minimum 3-5 related files. 3. **Plan** — State your approach briefly. Identify what you'll create, modify, or delete. -4. **Branch** — Create or verify you're on the correct feature/fix branch off `develop`. +4. **Branch** — Create or verify you're on the correct feature/fix branch off `release/v5`. 5. **Implement** — Write code that follows every pattern and rule above. 6. **Verify** — Run the self-verification checklist. Review all changes for obvious comments, hardcoded values. 7. **Quality gates** — Build, test, lint. Fix any failures. diff --git a/.claude/rules/git-workflow.md b/.claude/rules/git-workflow.md index 0d0c13d1..9706d26b 100644 --- a/.claude/rules/git-workflow.md +++ b/.claude/rules/git-workflow.md @@ -3,7 +3,7 @@ ## Branches - `feature/`, `fix/`, `hotfix/`, `docs/`, `refactor/` -- Branch off `develop`; releases land on `release/v5`. Never commit directly to a release branch. +- Branch off `release/v5`; releases land on `release/v5`. - One logical change per branch; keep diffs reviewable. ## Commits / PR titles diff --git a/.claude/skills/ios-dod/SKILL.md b/.claude/skills/ios-dod/SKILL.md index 4ace732d..a32f35ce 100755 --- a/.claude/skills/ios-dod/SKILL.md +++ b/.claude/skills/ios-dod/SKILL.md @@ -57,7 +57,7 @@ swiftlint lint --config ./.swiftlint.yml --strict - [ ] New tests use Swift Testing (`@Suite`, `@Test`, `#expect`) ### Git Workflow -- [ ] On feature/fix branch off `develop` +- [ ] On feature/fix branch off `release/v5` - [ ] Committed with Conventional Commits format: ``` feat(scope): description diff --git a/.claude/skills/ios-start/SKILL.md b/.claude/skills/ios-start/SKILL.md index a72f5dcb..34040203 100755 --- a/.claude/skills/ios-start/SKILL.md +++ b/.claude/skills/ios-start/SKILL.md @@ -45,8 +45,8 @@ Before implementing new functionality, ALWAYS read and understand how similar fe ### 5. Set Up Feature Branch ```bash -git checkout develop -git pull origin develop +git checkout release/v5 +git pull origin release/v5 git checkout -b feature/short-description git branch --show-current ``` @@ -147,7 +147,7 @@ Stop and rethink if: ## Ready to Start? -- [ ] Feature branch created off `develop` +- [ ] Feature branch created off `release/v5` - [ ] Existing code reviewed (no duplication) - [ ] Architecture designed - [ ] Card system understood for this content type diff --git a/CLAUDE.md b/CLAUDE.md index 65619070..6365f665 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -144,7 +144,7 @@ Run `/ios-dod` for the full checklist. ## Conventions -- **Branches:** `feature/…`, `fix/…`, `hotfix/…`, `docs/…`, `refactor/…` — off `develop`; +- **Branches:** `feature/…`, `fix/…`, `hotfix/…`, `docs/…`, `refactor/…` — off `release/v5`; releases land on `release/v5`. - **Commits/PR titles** (CI-enforced): `feat(scope): description` · `fix(#123): description` (bug fixes MUST include the issue number). Types: feat, fix, docs, style, refactor, perf,