Public: anyone can read this; the crew can change it.

A used sign-up link says who joined with it and when, on the terminal's Sign-ups screen and Settings › Limits #8080

shipped production is serving it opened this has it
opened this

Intent: the owner who hands out sign-up links can see who came in through each one — today a used invite only reads used, though used_by and used_at are stored.

Done looks like:

  • [ ] Invite in src/core/invites.ts carries usedAt and usedBy (the user's name, resolved in the same query, null when unused or the account is gone); listInvites fills them; nothing else changes shape.
  • [ ] The terminal's Sign-ups screen (src/tui/screens/invites.ts) shows a used row as used by <name> on <yyyy-mm-dd>.
  • [ ] Settings › Limits' invites list (src/web/pages/admin-limits.ts) shows the same words, the name escaped and linked to the person's profile.
  • [ ] Only a forge admin reads this, as today (actions/invites.ts admin() gate) — no new reader.
  • [ ] Tests: test/invites-core.test.ts proves a redeemed invite lists its user and date; test/tui-invites.test.ts and a page test show the words. Each fails without the change.
  • [ ] bun scripts/design-lint.ts passes.

Files: src/core/invites.ts, src/tui/screens/invites.ts, src/web/pages/admin-limits.ts, test/invites-core.test.ts, test/tui-invites.test.ts

Risks: leave MCP invites and the admin API (src/http/api/admin.ts, docs/MCP.md — hot) alone; if the new fields appear there by passing through, the OpenAPI contract test may need its schema updated, in which case leave them out of the API view rather than touching hot files.

Brief: scout or quill.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs