Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/vole.git

Write over SSH with a registered key:

git clone ssh://git@rodent.software:2222/vole.git

A free and open-source forge that lives in your Git repo.

#150

Give every account a profile page and a directory of people

closed · opened by keenan 8d ago

keenan opened this 8d ago

A person’s name appears all over the forge — as an issue author, a comment author, an approver, a merger, and in @name mentions — and none of it can be clicked. There is no way to answer “who is this?” or “what has this person been working on here?” without opening a search and guessing.

Account names are public on an instance for now. Their work is not: a private repository’s activity must not become a number an outsider can read.

Scope

  • GET /u/<name>: a profile with the account’s issues opened, changes opened, reviews given, comments, the repositories that work is in, and a filtered activity feed.
  • GET /u: a directory of every account, active first, with retired accounts in their own group and a name filter.
  • Names link to profiles wherever they are credential-derived: issue and change authors in lists and page headers, comment authors, event actors and assignees. @name in a body links too.
  • A Mention button copies @name, since that is how you address somebody.

Rules to hold

  • Every count and every event is limited to repositories the reader may open.
  • Unknown names answer with the same 404 as a missing page.
  • A retired account keeps its page.
  • Names that did not come from a credential do not link: Git commit authors and release taggers are a string somebody typed.
  • No keys, passkeys, sessions, or per-profile view counts. The instance role is shown to instance admins only.
  • @name means the same thing to the page as to a workflow’s mentioned filter, and never matches inside a code sample or an email address.

Acceptance criteria

  • An anonymous reader and an account with access to a private repository see the same profile with different totals, and neither sees the other’s rows.
  • A name in an issue header, a comment, a change request, the activity feed, and a @name mention opens the profile the name belongs to.
  • A name that is not an account renders as text rather than a dead link.
  • A README or code sample mentioning @name does not become a profile link.
  • Retired accounts appear under “No longer active” in /u and still open.
  • /u and /u/<name> ask crawlers not to index them.
  • The full verify workflow passes.

Comments (0)

No comments yet.