Skip to content

chore: add CI workflows, issue template, and EAS config#1

Merged
dhairyashiil merged 4 commits into
mainfrom
devin/1771098416-add-gh-actions
Feb 14, 2026
Merged

chore: add CI workflows, issue template, and EAS config#1
dhairyashiil merged 4 commits into
mainfrom
devin/1771098416-add-gh-actions

Conversation

@volnei
Copy link
Copy Markdown
Contributor

@volnei volnei commented Feb 14, 2026

Summary

Adds CI/CD infrastructure to the standalone companion repo, migrated and adapted from the monorepo (calcom/cal.com). The companion app was previously a subdirectory in the monorepo where CI was orchestrated via workflow_call jobs in pr.yml. Now that companion lives in its own repo, it needs its own CI configuration.

Changes:

  • .github/workflows/ci.yml — Standalone CI with three parallel jobs: lint, typecheck, and build (Expo web + browser extension). Triggers on PRs to main and pushes to main.
  • .github/ISSUE_TEMPLATE/companion.md — Bug/feature request template for iOS, Android, and browser extension issues (carried over from monorepo).
  • .easignore — EAS Build ignore file, adapted from monorepo version by removing companion/ path prefixes and the root-level exclusion pattern that was needed in the monorepo context.
  • biome.json — Two fixes for standalone repo compatibility:
    • Changed "root": false"root": true so Biome doesn't look for a parent config that no longer exists outside the monorepo.
    • Added "noUnknownAtRules": "off" to suppress Biome 2.x flagging Tailwind's @tailwind directives as unknown CSS at-rules.

Review & Testing Checklist for Human

  • Verify scripts exist in package.json: The CI references bun run lint:all, bun run typecheck:all, and bun run ext:build — confirm these scripts are defined in the companion repo's package.json.
  • Verify secrets/variables are configured: The build job references secrets.CI_EXPO_PUBLIC_CAL_API_KEY / vars.CI_EXPO_PUBLIC_CAL_API_KEY / vars.EXPO_PUBLIC_CAL_API_KEY. At least one of these needs to be set in the companion repo's GitHub Settings → Secrets/Variables.
  • biome.json changes are appropriate: root: true is correct for a standalone repo. noUnknownAtRules: "off" disables the rule globally (though it only applies to CSS in Biome 2.x) — confirm this is acceptable or if a more scoped approach is preferred.
  • Runner choice: Original monorepo used Blacksmith runners (blacksmith-4vcpu-ubuntu-2404). This PR uses ubuntu-latest. Confirm this is acceptable or if Blacksmith should be configured for this repo too.
  • CONTRIBUTING.md link: The issue template links to https://github.com/calcom/companion/blob/main/CONTRIBUTING.md — verify this file exists or update the link.

Notes

  • The workflows were converted from workflow_call (invoked by the monorepo's pr.yml) to direct pull_request/push triggers for standalone use.
  • All working-directory: companion directives were removed since the repo root is now the companion app.
  • The .easignore was simplified — the monorepo version had to ignore everything at root except companion/, which is no longer needed.
  • All three CI jobs (Lint, Type Check, Build) are passing on this PR.

Link to Devin run: https://app.devin.ai/sessions/c426fbde722b4a668333a803306fd36e
Requested by: @volnei

Co-Authored-By: Volnei Munhoz <volnei.munhoz@gmail.com>
@devin-ai-integration
Copy link
Copy Markdown
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@volnei volnei marked this pull request as ready for review February 14, 2026 19:51
devin-ai-integration Bot and others added 3 commits February 14, 2026 19:53
Co-Authored-By: Volnei Munhoz <volnei.munhoz@gmail.com>
Co-Authored-By: Volnei Munhoz <volnei.munhoz@gmail.com>
Co-Authored-By: Volnei Munhoz <volnei.munhoz@gmail.com>
@dhairyashiil dhairyashiil merged commit 67782b5 into main Feb 14, 2026
4 checks passed
devin-ai-integration Bot pushed a commit that referenced this pull request May 29, 2026
…registration races

Addresses parallel-review findings:
- #1/#2: add a monotonic auth generation (epoch) bumped on clearAuth and every
  new login. Refreshes discard their result if the epoch changed mid-flight, and
  401 retries abort instead of replaying a stale request under a new identity.
- #3: loginFromWebSession now clears the query cache before flipping auth state
  so a previous user's in-memory cache can't be re-persisted under the new owner.
- #4: a registration that completes after logout/switch is not persisted as the
  active record; it is parked for retry instead of leaving a live subscription.
- #5: compare the full {token,userId,region,deviceId} tuple and keep unresolved
  prior registrations in a retry queue instead of clobbering the single slot.
dhairyashiil added a commit that referenced this pull request Jun 2, 2026
…es (epoch guard + auth-transition lock) (#97)

* fix(mobile): durable push registration, single-flight token refresh, identity-scoped query cache

* fix(mobile): address review feedback on push/auth/cache hardening

- write cal_auth_user_id in loginFromWebSession so web-session users keep persisted cache
- treat backend 404 on unregister as already-gone (region-aware) and clear stale record
- resolve a differing previous push registration before overwriting it
- add safe, PII-free logs (region, userId, deviceId, token hash) to push cleanup paths

* fix(mobile): guard auth session with a generation/epoch; harden push registration races

Addresses parallel-review findings:
- #1/#2: add a monotonic auth generation (epoch) bumped on clearAuth and every
  new login. Refreshes discard their result if the epoch changed mid-flight, and
  401 retries abort instead of replaying a stale request under a new identity.
- #3: loginFromWebSession now clears the query cache before flipping auth state
  so a previous user's in-memory cache can't be re-persisted under the new owner.
- #4: a registration that completes after logout/switch is not persisted as the
  active record; it is parked for retry instead of leaving a live subscription.
- #5: compare the full {token,userId,region,deviceId} tuple and keep unresolved
  prior registrations in a retry queue instead of clobbering the single slot.

* fix(mobile): close epoch-guard gaps in refresh/boot/logout/push paths

* fix(mobile): close residual epoch/partial-write and push-404 ownership gaps

* fix(mobile): close rollback/web-login/push-cleanup gaps from round 4

* fix(mobile): epoch-guard setupAfterLogin/loginWithOAuth, tighten rollback marker + late-registration cleanup

* fix(mobile): close remaining setupAfterLogin/loginWithOAuth/web-session epoch windows

* fix(mobile): serialize auth/storage marker mutations via auth-transition lock; pre-POST generation check for push registration

* fix(mobile): recheck auth generation after setupAfterLogin before installing refresh fn

* fix(mobile): coalesce concurrent logouts, re-entrancy guard for auth lock, region-safe cache envelope, pending-queue cap
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.

2 participants