2026-10-10

0d9c2a3feat(gitcli): read refs, trees, blobs, history and diffs with a cat-file pool GPG Verifiedbrice
1b7c75afeat(domain): add read-side git types GPG Verifiedbrice
423aa4ffeat(githttp): stream push bodies, allowlist CGI input and revalidate hook tokens GPG Verifiedbrice
474d85efeat(gitcli): set receive.maxInputSize on pushes from Config.MaxReceiveBytes GPG Verifiedbrice
857b2f4feat(app): limit token list and revoke to the caller's reach, add Auth.Revalidate GPG Verifiedbrice
71acbb2perf(githttp): sweep the limiter once per interval and group IPv6 clients by /64 GPG Verifiedbrice
58ac19erefactor(eventbus): unsubscribe with context.AfterFunc and key subscribers by channel GPG Verifiedbrice
a771dd2refactor(app): drop dead crypto/rand error paths and unused helpers GPG Verifiedbrice
89fd514test(e2e): use requireGit so CI cannot skip the Git tests GPG Verifiedbrice
b0a4fdftest(e2e): run the real git client against the wired server for AC1-AC8 GPG Verifiedbrice
979aa64feat(serve): wire push use cases, event bus and debounced maintenance GPG Verifiedbrice
d949cadfeat(githttp): add the hook socket, hook scripts and the ermite hook command GPG Verifiedbrice
16a8861feat(app): open repositories for push, create on first push and fix the default branch GPG Verifiedbrice
1ab78bbfeat(githttp): serve smart HTTP through git http-backend with Basic auth and a failed-login limiter GPG Verifiedbrice
851827crefactor(domain): unexport the principal kind and expose a label GPG Verifiedbrice
2bea74efeat(app): add token use cases, authentication and token-aware access rule GPG Verifiedbrice
607c375feat(tokens): add token and scope domain, storage message and kv token store GPG Verifiedbrice
2b1cdbfci: keep checkout options on the checkout step GPG Verifiedbrice
9f1b083ci: fetch private modules through the runner's Forgejo route GPG Verifiedbrice
bf21654ci: run tests on the arch label for git 2.45 or newer GPG Verifiedbrice
4e14be1refactor: simplify config lookup, git default and create errors; strengthen tests GPG Verifiedbrice
763b41fci: fail when git is older than 2.45 GPG Verifiedbrice
30815dbfix(gitcli): keep a published repo when the directory sync fails GPG Verifiedbrice
b9b6781fix(serve): reset run dir after taking the kv lock and restore signals on shutdown GPG Verifiedbrice
620ae64ci: add buf lint, breaking and drift checks GPG Verifiedbrice
b7fa16ddocs: document ermite serve and its environment GPG Verifiedbrice
251be53feat(serve): load env config, reconcile and serve health GPG Verifiedbrice
b156bd8feat(httpserver): serve health with security headers and graceful shutdown GPG Verifiedbrice
aa54e60feat(config): parse and validate the server environment GPG Verifiedbrice
9db7dbffeat(gitcli): stage and publish bare repositories GPG Verifiedbrice
3c97d93feat(kvstore): store repository metadata in ermite-kv GPG Verifiedbrice
c5c8a63feat(storage): add repo and schema protobuf messages with buf config GPG Verifiedbrice
c97ed57feat(app): add repository use cases with access rule GPG Verifiedbrice
4c5e5e6feat(ports): add repo metadata, git repos and clock ports with mockery mocks GPG Verifiedbrice
f7f6672feat(domain): add repository name, visibility and principal GPG Verifiedbrice
0ed56a9chore: ignore local worktrees directory GPG Verifiedbrice

2026-10-09

02a2e04chore: bootstrap ermite module with license, readme and CI GPG Verifiedbrice

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 4

Tags 45

↑↓ moveenter openesc close