login: ecore's cookie decoder, which validates the name ours did not authz/identity.go was the fifth copy of a decode the instance has one of, and it was one of the two that validated nothing: whatever name a sealed payload carried went on to the GraphQL viewer field, the chrome's nav and every log line the request produced. login.ValidName refuses it, and there is no spelling of the API that turns the check off. Gone with it: CookieName, UsernameFromRequest, Middleware, ForContext and the ctxKey, plus identity_test.go, whose round-trip, tilde-stripping and garbage-cookie cases are ecore's tests now. The Middleware becomes login.Optional() — this service refuses nobody, git.sr.ht decides what an anonymous viewer may see — and the default validator is kept rather than core.ValidOwner, which is lowercase-only and would log a real account out of compare alone. The one behaviour change a viewer could notice: a cookie whose name carries a '/', a control byte or a non-ASCII letter now reads as anonymous instead of as that name.
docs: spec for inline code comments on diffs Draft proposal for line-anchored comment threads on the commit and compare pages. Records the key finding that storage is already available through sr-ht-core (Postgres via the database package + connection-string), that the service is stateless by choice rather than by limitation, and that @pierre/diffs already provides the thread UI primitives (DiffLineAnnotation + renderAnnotation + onDiffLineClick). Covers the anchoring model, schema, authz reuse, HTTP API, frontend wiring, config, and a commit-first phasing.