Run failed at 'brew install xcodegen node' AFTER both formulae upgraded
successfully under ARM: brew's 'installed dependents check' then tried to
rebuild gemini-cli (0.40.1 -> 0.46.0, an unrelated dev tool on the runner
that depends on node) and exited 1.
Verified node is NOT used by any step in pr-iphone-deploy.yml — only
xcodegen is. The only node references in the repo are in
scripts/prepare-release.cjs and scripts/verify-admin-web-docker.sh,
neither of which runs in this workflow. Node was a historical leftover.
Drop node from the brew install. No node upgrade = no dependents check =
no gemini-cli rebuild. Also sync AGENTS.md §5 step 4.
Two related fixes to the Install tools / Deploy steps:
1. Rosetta/ARM-prefix conflict (unblocks run #142 failure)
Run #142 failed at 'brew install':
Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
The act_runner shell runs under Rosetta 2 on Apple Silicon, but Homebrew
is installed natively in /opt/homebrew (ARM prefix). Brew refuses to mix
architectures and exits 1 — surfaced now because xcodegen/node registered
as outdated and brew tried to upgrade them.
Prefix the brew call with 'arch -arm64' (brew's own suggested workaround)
so the subprocess runs natively regardless of the parent shell's arch.
2. Drop ios-deploy, use xcrun devicectl only
The deploy step previously tried devicectl (WiFi) first, then fell back
to ios-deploy (USB). devicectl handles both network and wired discovery
natively, so the separate USB-fallback tool is unnecessary — removed
from the brew install and the deploy step.
Implication: a devicectl failure = deploy failure (no second tool to
fall back to). Acceptable: devicectl covers both transports.
Also updates workflow name/job labels and the 'Prêt à tester' comment to
drop 'WiFi/USB' wording, and aligns AGENTS.md §5 step 4 (arch -arm64 +
tool list) and step 7 (devicectl only).
Rewrite AGENTS.md to match the corrected pr-iphone-deploy.yml:
§5 Workflow:
- Clean step: 'GARDE build/spm-cache' (not ../build/spm-cache), explicit
warning never to 'rm -rf build/', note that Xcode global cache is spared.
- New step 5: write Secrets.xcconfig from Gitea secrets before xcodegen.
- Scheme lists 4 targets (TabataGo, TabataGoWidget, TabataGoWatch,
TabataGoWatchWidget) — clarify TabataGoWidget is iOS, not watchOS.
- wait-approval: re-fetches all comments each cycle, regex \bLGTM\b/\bKO\b
anywhere in body, squash-merge.
- Document concurrency block and timeouts.
§5 Secrets table:
- Replace false 'Injectés via Config/Secrets.xcconfig → Info.plist' with
the real flow (CI writes file from secrets, Info.plist reads $(VAR)).
- Add historical-exposure warning: Secrets.xcconfig was committed before
the gitignore rule; key rotation recommended.
§5 Pitfalls + §8 anti-patterns:
- 'rm -rf build/' (not just 'rm -rf cache SPM').
- Don't nuke ~/Library/Caches/com.apple.dt.Xcode.
- permissions: block is intentionally absent (no-op under Gitea API).
- Don't remove concurrency block.
- Don't anchor LGTM grep to body start.
- {"Do":"squash"} not {"Do":"merge"}.
- Scheme must list all 4 targets.
§7 rule #9: expanded with the CI-writes-file flow.
Update AGENTS.md and docs/ci-cd-setup.md from .gitea/workflows to .github/workflows
Add *.xcuserstate to .gitignore
Remove tracked UserInterfaceState.xcuserstate from git (preserve on disk)
- Replace all Ionicons with native SF Symbols via expo-symbols SymbolView
- Create reusable Icon wrapper component (src/shared/components/Icon.tsx)
- Remove @expo/vector-icons and lucide-react dependencies
- Refactor explore tab with filters, search, and category browsing
- Add collections and programs data with Supabase integration
- Add explore filter store and filter sheet
- Update i18n strings (en, de, es, fr) for new explore features
- Update test mocks and remove stale snapshots
- Add user fitness level to user store and types
- Replace browse tab with Supabase-connected explore tab with filters
- Add React Query for data fetching with loading states
- Add 3 structured programs with weekly progression
- Add Supabase anonymous auth sync service
- Add PostHog analytics with screen tracking and events
- Add comprehensive test strategy (Vitest + Maestro E2E)
- Add RevenueCat subscription system with DEV simulation
- Add i18n translations for new screens (EN/FR/DE/ES)
- Add data deletion modal, sync consent modal
- Add assessment screen and program routes
- Add GitHub Actions CI workflow
- Update activity store with sync integration