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/git/vole.git

Write over SSH with a registered key:

git clone ssh://git@0.0.0.0:2222/vole.git

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

Give every account a profile page and a directory of accounts

a6b42433c087ab0c936e34a1d05cf488db7a92d6 · Keenan Nemetz · 8d ago · parent 727df386

Give every account a profile page and a directory of accounts

Clicking a name now opens /u/<name>: the issues and changes somebody
opened, the reviews they gave, the comments they left, and the
repositories that work is in. The numbers and the feed are grouped reads
of the same event rows the activity feed pages through, so a profile
cannot disagree with the feed, and every read is limited to the
repositories the reader may open. A private repository's work is not a
number an outsider gets to learn, so two readers can see different
totals and the page says what its numbers cover.

/u lists the roster. Account names are public on this instance; their
activity is not. Both pages ask crawlers to leave them out of an index.

@name in an issue, a comment, a change request, or a release note links
to the account it addresses, using the mention scanner CI already
evaluates: what reads as an address on the page is what a workflow sees.
A name that is not an account stays text, and code samples are skipped.

Git author names are not linked and commit counts are not shown. A
commit author is a name somebody typed, not the credential that proves
an account, and the index only keeps the top eight authors of each
default branch anyway.

docs/accounts-and-access.md +32

@@ -21,6 +21,38 @@ Names are never reused: because the account row outlives retirement, retiring
21 21 someone keeps their name attached to them. An old reference can never silently
22 22 point at a different person.
23 23
24 ## Profiles and the people directory
25
26 Account names are public on an instance. `/u` lists everyone who has an account,
27 and `/u/<name>` is that person's profile: what they have opened, reviewed and
28 commented on, and the repositories that work is in. Retiring an account keeps its
29 page, marked as no longer active, because every closed issue and merged change
30 still refers to the name.
31
32 What a profile counts is not public. Every number and every event is limited to
33 the repositories the reader may open, so two people can see different totals for
34 the same account, and a private repository's work contributes nothing to a
35 stranger's view. The page says what its numbers cover instead of pretending they
36 are the whole history. The same rule covers the counts beside a name in the
37 directory.
38
39 A profile is derived, not stored. The numbers and the feed are read from the web
40 index (`data/index.db`), which is rebuilt from Git and from the CI records; no
41 profile is written to `data/users.db`. Keys, passkeys, sessions and a person's
42 instance role are not shown, with one exception: an instance admin sees the role
43 on the profile, because they can already see it on the admin pages. Git commit
44 authors are shown as text and never counted, because a commit's author is a name
45 someone typed, not the credential that proves an account.
46
47 Writing `@name` in an issue, a comment, a change request, or a release note links
48 to that account's profile. It is the same mention syntax a workflow's `mentioned`
49 filter evaluates ([Workflows](workflows.md)), so a name that reads as an address
50 on the page is the name a job sees. A name that does not belong to an account
51 stays plain text, and a mention inside a code sample is not a mention.
52
53 Both pages ask crawlers to leave them out of an index. The names are public; a
54 scraped roster is not what public has to mean.
55
24 56 Account data lives in `data/users.db`. It also holds passkeys, one-time
25 57 enrollment links, browser sessions, repository access rules, and file locks.
26 58 Credentials are public keys, and session or enrollment-link tokens are stored