You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: six onboarding defects found provisioning a real team project (#78)
All six sit on the first-run path, which is why 1,500+ unit tests missed
every one. Found by actually creating a project and inviting two teammates.
- init reuses a saved session instead of calling runGithubOAuth()
unconditionally. It forced a browser round-trip even right after
`tages login` and died on a 5-minute OAuth timeout in headless runs.
Falls back to the browser only when the session is expired, absent, or
a service-key client with no user to own the project.
- The expiry message says `tages login`, not `tages init`. `init` CREATES
a project: running it to fix auth trips the global slug-unique
constraint or drops you into a local-<slug> store that then blocks link.
- recall exits non-zero on an expired session. It printed "No memories
found" and exited 0, so a dead session was indistinguishable from an
empty project to a human and to a script. createAuthenticatedClient now
reports a SessionStatus; `anonymous` (local-only use) still works.
- The free-tier cap is reported as 1 project, the number
0002_rls_policies.sql enforces. The message said 2.
- Slug collisions are named as collisions instead of a plan limit. A
unique violation also contains "violates", so a name clash told you to
upgrade. Now points at `tages link --project-id <uuid>`.
- The post-commit hook no longer runs `npx tages` — no such package
exists on npm (404); the binary ships in @tages/cli. It failed silently
for anyone without a global install, because it runs backgrounded.
Docs: quickstart and team-onboarding no longer say npm is stale and tell
readers to check out a release branch that merged long ago. Both lead
with `npm install -g @tages/cli`. Also corrected: team seats are
LEAST(subscription_quantity, 20), not a flat 25 — a team profile with a
null quantity resolves to 1 seat; the "no periodic pull" trap now splits
CLI (auto-reconciles) from MCP (boot-only hydration); the stale doctor
caveat is removed.
Tests: +15 CLI, +3 shared. The init session-reuse tests were verified by
reintroducing the bug — 2 of 6 failed, the 4 fallback cases stayed green.
@tages/cli 0.5.5, @tages/shared 0.2.3. @tages/server unchanged at 0.3.4;
the CLI bundles @tages/shared from source, so the project-factory fixes
ship inside the CLI regardless of the registry.
Claude-Session: https://claude.ai/code/session_01KUETaNgrAdhY7zpjyycWTX
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>