Review page and home page polish, plus "last activity" ordering of the repositories.
Merge request page
- Title, facts and description in one card; the header a shade lighter than the description. Issues share it.
- Unified / Split / Collapse all in one view menu (the existing
details.menucomponent); u, d and x still work, escape closes menus on every page and the focus goes back to the menu button. - Wide mode on every page with
w(listed in?), kept in localStorage;store.jsloads withoutdeferand sets it before the first paint. - Hunk headers and hidden-line rows are quieter (background and border), text keeps its contrast.
- A shift + click range is one block (one border, none between its lines, per side in split); the form title names the whole range (
a.go:21-149); lines loaded later from a gap inside the range are selected too.
Home page
- Inbox button next to the logo, home page only, with a mailbox icon (Lucide) and a darker count badge.
- Default order is the last activity: push (incl. merge), merge request opened / merged / closed / ready, comment on a merge request, issue opened / approved / closed / reopened / commented. Moderation (submissions, rejections) stays owner-only and does not count.
- The row of a repository with activity moves to the top live (activity order only; CI updates do not move it).
Storage
Repo.ActiveAt(storage proto field 8; falls back to the later of pushed and created).RepoMetaStore.Updateis replaced byMutate: a compare-and-swap on the version read, retried up to 8 times. The previousUpdatechecked the version read at write time, so a read-modify-write could overwrite a concurrent change (e.g. a visibility change).
No change to ermite-api.
Checks: go vet ./..., go test ./..., go test -race on usecase and kvstore, JS tests (160), golden pages refreshed, manual checks on the dev server. Reviewed by Go and JS reviewers; findings fixed.