Commit Graph

176 Commits

Author SHA1 Message Date
Millian Lamiaux
8236eb35ae ci: gate admin-web docker build on unit tests and remove admin-web job from ci.yml
- admin-web-docker.yml: add 'test' job (Node 22, npm ci, tsc --noEmit,
  vitest run) gated by the anti-[skip ci] guard, wire needs: [test] on
  build-validation and semantic-release, and needs: [semantic-release, test]
  on build-and-push. Tests now run as a gate before Docker build validation
  on PRs and before semantic-release on main.
- ci.yml: drop the redundant admin-web-test job (now covered by the test
  job in admin-web-docker.yml on PRs), remove the admin-web path filter
  and output from the changes job, simplify deploy-functions.needs.
- scripts/verify-admin-web-docker.sh: update check_workflow_jobs to expect
  4 jobs (test + build-validation + semantic-release + build-and-push) and
  check_workflow_needs to expect build-and-push needs [semantic-release, test]
  so the verify script stays green with the new job topology.
2026-07-13 15:52:09 +02:00
Millian Lamiaux
094bd59470 test(admin-web): fix 14 broken vitest tests and exclude e2e from run
- vitest.config.ts: add explicit exclude (e2e/**, playwright-report/**,
  test-results/**) spread with configDefaults.exclude to keep
  node_modules/dist filtering intact
- app/page.test.tsx: waitFor for async stats resolution, replace
  getAllByRole('article') with 'a [data-slot=card]' scoped queries
  (Getting Started card has no icon so we scope to the 3 stat cards inside
  <Link>), drop console.error assertion (production fetchStats destructures
  { count } from the resolved payload without throwing on
  { count: null, error }, so console.error is never called on that path)
- components/workout-form.test.tsx: mock sonner (toast.error/success with
  all methods stubbed) to replace obsolete window.alert assertions, wait for
  the custom Select trainer dropdown to mount before clicking, fill the
  exercise-name-0 input (default exercises state is [{name:""}] which fails
  validation), make insert/update mocks resolve on a macrotask so React can
  render the transient 'Saving...' loading state
- app/login/page.test.tsx: replace getByRole('heading') with getByText
  (shadcn CardTitle renders a <div>, not a semantic heading), extend sonner
  mock with toast.error, fix invalid-credentials mock to return a real
  Error instance (production supabase-js returns AuthError extends Error,
  so the err instanceof Error branch surfaces the real message)
- components/ui/dialog.test.tsx: skip jsdom-incompatible click-outside test
  (Radix Dialog closes via pointerDown on overlay, not reproducible in jsdom;
  covered by the Escape test + Playwright E2E), replace aria-modal assertion
  with role=dialog + aria-labelledby (modern Radix no longer emits aria-modal)

Scope: tests + config only. No production code change.
2026-07-13 15:52:09 +02:00
Millian Lamiaux
46d95661ce fix(ci): remove sudo from docker install — Gitea ubuntu runner is root without sudo 2026-07-13 15:52:09 +02:00
Millian Lamiaux
56739edf65 ci: trigger workflow on PR with build-only validation 2026-07-13 15:52:09 +02:00
Millian Lamiaux
0166398ae1 feat: add admin-web Docker build & push workflow with semantic-release 2026-07-13 15:52:09 +02:00
baddfd7510 Merge pull request 'fix: Dynamic Island, Live Activity errors, background audio stop, CFBundleVersion' (#9) from fix/live-activity-and-audio into main
All checks were successful
CI / YouTube Worker (push) Has been skipped
CI / Deploy (push) Has been skipped
CI / Detect Changes (push) Successful in 3s
CI / Admin Web CI (push) Has been skipped
Reviewed-on: #9
2026-07-11 23:28:22 +02:00
Millian Lamiaux
316dab2f9c fix: restore UIBackgroundModes audio for background playback
All checks were successful
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Successful in 33s
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m26s
- Restaure UIBackgroundModes[audio] dans Info.plist (supprimé par erreur
  au commit précédent) → empêche iOS de suspendre l'app en arrière-plan
- Ajoute UIBackgroundModes dans project.yml pour robustesse
2026-07-04 19:35:14 +02:00
Millian Lamiaux
f5a36f0a26 fix: add NSSupportsLiveActivities to main app target + cleanup info plists
Some checks failed
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m24s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Failing after 33s
- Ajout de NSSupportsLiveActivities et NSSupportsLiveActivitiesFrequentUpdates
  dans info.properties du target TabataGo (project.yml) — corrige l'erreur
  'Target does not include NSSupportsLiveActivities plist key' au runtime
- Nettoie Info.plist (retire CFBundleURLTypes, UIBackgroundModes redondants)
- Aligne les entitlements (retire aps-environment, ajoute app groups)
- Corrige le bundle version du widget (2 → 1)
2026-07-04 19:25:50 +02:00
Millian Lamiaux
309d67c88a fix(widget): add NSExtension to info.properties for xcodegen compat
Some checks failed
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m39s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Failing after 32s
xcodegen parses info.path plist and generates INFOPLIST_KEY_* settings,
but silently drops nested dictionaries like NSExtension.  Adding it to
info.properties ensures xcodegen produces:
  INFOPLIST_KEY_NSExtension_NSExtensionPointIdentifier = widgetkit-extension
which Xcode preserves at build time.
2026-07-04 19:13:54 +02:00
Millian Lamiaux
b57584f890 fix(ci): wrap deploy commands in if blocks for -e protection
Some checks failed
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 4m12s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
Bash -e doesn't just kill on pipefail — it exits on ANY non-zero
command.  Even without a pipeline, both xcrun devicectl and ios-deploy
return non-zero on failure, killing the script before the exit-code
check.

Fix: wrap both in 'if command; then exit 0; fi' so -e treats them
as condition-tested (no early exit).  Fallback now actually runs.
2026-07-04 18:59:21 +02:00
Millian Lamiaux
b956e5189b fix(ci): eliminate pipeline bug preventing ios-deploy fallback
Some checks failed
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 5m44s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
CI / Detect Changes (pull_request) Successful in 4s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
When devicectl fails under bash -e -o pipefail, the pipeline
(xcrun devicectl ... | tail -3) exits non-zero and -e kills
the script before the if-check.  The ios-deploy USB fallback
was dead code.

Fix: redirect to temp file, capture exit code explicitly.
No pipeline = pipefail has no side-channel effect.
2026-07-04 18:50:12 +02:00
Millian Lamiaux
807361449b fix: remove info.properties from widget target — use on-disk Info.plist with NSSupportsLiveActivities
Some checks failed
CI / Detect Changes (pull_request) Successful in 4s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 2m47s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-07-04 18:26:12 +02:00
Millian Lamiaux
ee01380be8 fix: remove remaining force-unwrap in widgetURL (AGENTS.md §7) 2026-07-04 18:19:37 +02:00
Millian Lamiaux
210c254298 fix: scope shared model sources to TabataGoWidget only
Some checks failed
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m33s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Failing after 33s
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
Previous sed command accidentally injected shared model files into
TabataGo, TabataGoWatch, and TabataGoWatchWidget targets, corrupting
their YAML structure. Restored all targets; shared files now correctly
scoped to TabataGoWidget target only.
2026-07-04 18:15:11 +02:00
Millian Lamiaux
1bb6a544e4 fix: add shared model sources to TabataGoWidget target
Some checks failed
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 8s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
Widget extension references WorkoutPhase, WorkoutActivityAttributes,
TogglePauseIntent (WorkoutLiveActivity) and MusicActivityAttributes
(MusicLiveActivity) but cannot import parent app module. Shared source
files must be compiled in both targets, following existing pattern
of WatchConnectivityTypes.swift shared between iOS/watch.
2026-07-04 18:11:16 +02:00
Millian Lamiaux
a17367081c fix: add widget target, push entitlement, error handling, force-unwrap
Some checks failed
CI / Deploy (pull_request) Has been skipped
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 46s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
Phase 1 — Widget extension target:
- Add TabataGoWidget target to project.yml (app-extension, iOS 26.0)
- Embed in TabataGo, add to scheme build targets

Phase 2 — Push notification capability:
- Add aps-environment: development to TabataGo.entitlements
- Required by iOS 26 for AppIntents-based Live Activity buttons

Phase 3 — Error handling hardening:
- Catch ActivityAuthorizationError specifically with user message
- Truncate generic errors to 200 chars to avoid UI overflow
- Fix force-unwrap at WorkoutLiveActivity.swift:556 (widgetURL)
2026-07-04 18:07:59 +02:00
Millian Lamiaux
40ffb04f31 fix: Dynamic Island, Live Activity errors, background audio stop, CFBundleVersion
Some checks failed
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Failing after 8m7s
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m58s
Phase 1 — Audio background resilience:
- Remove .mixWithOthers, app takes audio focus for coach cues
- Add AVAudioSession.interruptionNotification handler (re-activates after calls/Siri)
- Add AVAudioSession.routeChangeNotification handler (re-activates on headphone changes)

Phase 2 — Live Activity error surfacing:
- PlayerViewModel: @Published liveActivityError captures auth-denied + request errors
- PlayerView: translucent error banner with dismiss button (non-blocking)

Phase 3 — CFBundleVersion 1→2 in all 4 Info.plist files (match project.yml CURRENT_PROJECT_VERSION: 2)
2026-07-04 17:54:09 +02:00
Millian Lamiaux
560b056dc9 fix: update workflow references to .github/ and gitignore xcuserstate
All checks were successful
CI / Detect Changes (push) Successful in 3s
CI / Admin Web CI (push) Has been skipped
CI / YouTube Worker (push) Has been skipped
CI / Deploy (push) Has been skipped
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)
2026-07-04 16:46:09 +02:00
Millian Lamiaux
a309b2b593 chore: purge obsolete .archive docs and relocate CI workflows
- Remove 5 outdated TabataFit/Expo concept docs (.archive/)
- Rename .gitea/workflows -> .github/workflows
- Ignore build/ directory
- Add Xcode UserInterfaceState
2026-07-04 16:41:34 +02:00
98cbcd4d52 Merge pull request 'docs: revamp AGENTS.md — canonical AI agent reference' (#7) from docs/revamp-agents-md into main 2026-07-04 16:22:54 +02:00
741376229d docs: revamp AGENTS.md — canonical AI agent reference, purge obsolete TabataFit docs
All checks were successful
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 6m52s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Successful in 1m3s
2026-07-03 12:16:53 +00:00
de63ae0546 Merge pull request 'ci: switch from Firebase OTA to Xcode WiFi/USB direct deploy' (#6) from ci/xcode-network-deploy into main 2026-06-28 11:29:26 +02:00
7d9a89e637 fix(ci): correct derived data path in install step
All checks were successful
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 5m31s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Successful in 1m3s
2026-06-28 09:22:43 +00:00
97b61d3afb fix(ci): switch from Firebase OTA to Xcode WiFi/USB direct deploy
Some checks failed
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 2m59s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-28 09:14:51 +00:00
a9eda61967 Merge pull request 'ci: add iPhone deploy workflow + CI/CD setup docs' (#4) from ci/iphone-deploy-workflow into main 2026-06-27 22:49:52 +02:00
a382ad62dc fix: move #if outside array literal in TabataGoComplication.supportedFamilies
All checks were successful
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Successful in 4m59s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Successful in 4m5s
2026-06-27 20:40:39 +00:00
069b7d417f fix(ci): keep SPM cache — remove aggressive clean that forces RevenueCat re-clone
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 2m13s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 20:35:47 +00:00
63fbae3698 fix(ci): restore automatic code signing — Apple account now configured on runner
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 11m7s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 20:28:01 +00:00
4b7548501a fix(ci): disable code signing — Mac runner has no Apple Developer account
Some checks failed
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been cancelled
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Has been cancelled
STOPGAP: CODE_SIGN_IDENTITY="-" CODE_SIGNING_REQUIRED=NO to bypass
signing on the Mac CI runner which has no Apple account signed into Xcode.

REAL FIX: Sign into Xcode → Settings → Accounts with the Apple Developer
account on the Mac runner machine. Then -allowProvisioningUpdates +
DEVELOPMENT_TEAM will auto-provision profiles for any bundle IDs.
2026-06-27 20:23:56 +00:00
5079de0fb1 fix(ci): checkout PR branch instead of main
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 6m12s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 20:13:28 +00:00
52346fb4ac fix: align bundleIdPrefix with Firebase app (com.tabatago → fr.millianlmx.tabatago)
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 10m58s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 20:00:35 +00:00
abf926e4bc fix(ci): remove -derivedDataPath from resolve step (requires -scheme)
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 8m40s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 08:42:41 +00:00
7c50282284 fix(ci): clean SPM/Xcode caches agressivement pour éviter les segfaults linker après changement de bundle ID
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 2m4s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
- Supprime TOUT DerivedData (pas seulement TabataGo-*) car le changement
  de bundle ID (com.tabatago.app → fr.millianlmx.tabatago) a rendu les
  anciens caches SPM incohérents
- Ajoute la suppression de ~/Library/org.swift.swiftpm, ~/.swiftpm,
  ~/Library/Caches/com.apple.dt.Xcode et du ModuleCache
- Supprime les build/ locaux et .build avant xcodegen generate
- Supprime les Package.resolved stale
- Utilise -derivedDataPath et -clonedSourcePackagesDirPath cohérents
  entre la résolution SPM et le build
2026-06-27 08:38:27 +00:00
6cc25300d1 fix: change bundle ID from com.tabatago.app to fr.millianlmx.tabatago
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 4m2s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 08:29:33 +00:00
09e77b477c fix(ci): switch to --token auth and add --project flag for Firebase deploy
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 9m15s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 08:00:57 +00:00
5c73d6bf29 fix(ci): use npx firebase to avoid PATH issues with npm global install
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 8m42s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 02:33:33 +00:00
d614e72031 fix(ci): add mkdir -p build to Package IPA step
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 7m31s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 02:14:54 +00:00
3ca3e54837 fix(ci): add -derivedDataPath and target find to build/derived — compatible with -scheme
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 7m41s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 02:02:12 +00:00
4e2e807fd9 fix(ci): remove grep -v DerivedData from Package IPA step — app builds to DerivedData
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 6m28s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 01:54:33 +00:00
b48178f167 fix(ci): switch from -target to -scheme for Xcode 26 SPM module path resolution
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 6m32s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 01:45:52 +00:00
c45e85edb6 fix(ci): remove stale .xcodeproj from git, nuke before xcodegen to prevent PostHog ghost dependency
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 7m8s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 01:35:07 +00:00
00e02b7166 fix(ci): clean SPM caches and DerivedData on CI runner to remove stale PostHog resolution
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 4m30s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 01:25:11 +00:00
2aa312ab61 fix(ci): use xcodebuild -version instead of xcode-select, clean only runner caches
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 3m30s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 01:10:44 +00:00
595140e2f9 fix(ci): add sudo back to xcode-select — must be run as root
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 3h8m4s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 00:48:57 +00:00
afc161c8ce fix: remove PostHog from project.yml — EmitSwiftModule crashes on Xcode 26
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 2s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 00:48:00 +00:00
58177102a4 fix: permanently fix PostHog module emission error
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 0s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
- Change PostHog from exactVersion to revision (tag 3.62.0) in project.yml
- Add deep cache clean step before xcodegen in CI workflow
- Add ONLY_ACTIVE_ARCH=NO to xcodebuild command
- Wrap PostHog usage in #if canImport(PostHog) for graceful degradation
- Add Package.resolved, .build/, DerivedData/ to .gitignore
- Remove stale SPM caches between CI runs (DerivedData, swiftpm caches, act cache)
2026-06-27 00:39:52 +00:00
9739a739f5 fix(ci): remove sudo from Setup Xcode step to prevent password prompt hang
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 2s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 00:37:08 +00:00
7fb44198e7 fix: kill stale Package.resolved, pin PostHog exact, add module emission flags
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 8m39s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-06-27 00:28:40 +00:00
8ce38332b8 fix(ci): remove -derivedDataPath and -clonedSourcePackagesDirPath incompatible with -target
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 6m36s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
Xcode demands -scheme when using -derivedDataPath or -clonedSourcePackagesDirPath.
Since we use -target TabataGo, these flags must be removed.

Changes:
- Removed -derivedDataPath and -clonedSourcePackagesDirPath from build command
- Moved SWIFT_ENABLE_EXPLICIT_MODULES=NO to its own line for clarity
- Updated Package IPA step to search from repo root (find ..) with explicit
  TabataGo.app name instead of relying on the old derived data path
2026-06-27 00:18:13 +00:00
3202ea9b5b fix(ci): revert build command from -scheme TabataGo to -target TabataGo
Some checks failed
PR → Build → Firebase OTA → LGTM / Build & Deploy to Firebase OTA (pull_request) Failing after 3m37s
PR → Build → Firebase OTA → LGTM / Wait for LGTM comment (pull_request) Has been skipped
xcodegen 2.45.4 does not generate a "TabataGo" scheme (only
RevenueCatUI, RevenueCatUITests, TabataGoUITests). The -scheme flag
therefore fails. Reverting to -target TabataGo as was previously used.

Verified: all .accessoryCorner usages in TabataGoComplication.swift are
properly guarded with #if canImport(WatchKit), so the watch target
transitive dependency build will not surface accessoryCorner issues.
2026-06-26 23:50:46 +00:00