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

A suspended account's repositories leave every list, and every page #858

Merged opened this in answer to

Check · Review · Land · Live done — Landed and live in production.

Merged

Closes #831

shipped production is serving it for issue #831 — its issue is already done deploy f5d5671

opened this

Closes #831

A suspended or removed account's repositories are kept and hidden. A stranger or a signed-in reader finds them nowhere. The forge's owner still finds them, to look and to restore, and unsuspending brings everything back as it was.

There is one rule, at the two places visibility is decided:

  • SQL: OWNER_STANDING in src/core/visibility.ts is now part of REPO_VISIBLE and of a new PUBLIC_VISIBLE (the signed-out case). Every list built on them follows: the command palette, /apps, search, explore, the front page's fork counts, owner pages, the activity feed, fleet selection, the API's repository lists and the llms.txt and manifest pages.
  • canRead: a repository whose owner is not in good standing reads as absent to everyone but a site admin. Every page, API route, MCP tool, git clone and fork tree that asks canRead follows, so a direct link is the forge's one 404, never a page that says why.
  • The profile itself: /:owner, GET /api/v1/users/:username and its repository list answer 404 for a hidden person (hiddenFrom in core/users.ts). Their name stays on what they wrote in others' threads.

Tests: test/suspended-hidden.test.ts, admitted to the gate. A stranger and a reader find sam's repository on 15 surfaces before the suspension. After it, they find it on none of them (palette, search page and API, the repository list API, owner page and API, repository page and API, git, fork tree page and API, manifest, llms.txt, activity). The owner still finds it, and every surface comes back on unsuspension. The test fails on main.

🤖 Generated with Claude Code

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs