v0.16.0 924eaca

2026-10-11

9de0f7dtest(readertest): classify the invalid-argument domain errors in the reader comparison GPG Verifiedbrice
7b4c456perf(ermitegit): re-route the readers with the numbers of ermite-git 5228465 GPG Verifiedbrice
127d960perf(ermitegit): look up candidate refs without allocating on a miss GPG Verifiedbrice
778461abuild(deps): bump ermite-git to 5228465 GPG Verifiedbrice
38230d3test(ermitegit): add cold and parallel variants to the routing benchmarks GPG Verifiedbrice
dbef343feat(cmd): wire the ermite-git reader to pushes and maintenance GPG Verifiedbrice
a4afa9bfeat(ermitegit): bound memory, close idle repositories, claim refreshes and close synchronously GPG Verifiedbrice
5925475feat(app): tell the reader when a push or the maintenance changed a repository GPG Verifiedbrice
dedf508fix(ermitegit): keep a dangling ref out of ErrNotFound and trim names like git GPG Verifiedbrice

2026-10-10

c38360afeat(cmd): choose the git reader with ERMITE_GIT_READER GPG Verifiedbrice
b54f0d3feat(ermitegit): add the RepoReader adapter over ermite-git GPG Verifiedbrice
65a5c34feat(gitcli): write v2 Bloom filters in new repositories, expose RepoDir and OnTrash GPG Verifiedbrice
7f0f2f2refactor(domain): share blob sniffing, commit text, tree order and ref path splitting GPG Verifiedbrice
7586fbddocs(readme): document merge requests, web sign-in and the signing key GPG Verifiedbrice
41cf2ecfix(web): make the answer to an invalid cookie uncacheable GPG Verifiedtag v0.2.0brice
e2c58e1fix(app): reserve the token labels owner and root GPG Verifiedbrice
a658df0feat(serve): warn at startup when browser sign-in cannot work over http GPG Verifiedbrice
6833c9ffix(app): cap a web session at its token's expiry and sign out on owner-token revoke GPG Verifiedbrice
12ce961fix(web): recheck the owner's session before sending each event GPG Verifiedbrice
3922170fix(web): exempt only exact login paths from the session gate GPG Verifiedbrice
19cd78ffix(web): send only the origin as referrer on login pages so the sign-in POST keeps its Origin GPG Verifiedbrice
8523225test(web): cover the merge request pages, writes, events and text rules GPG Verifiedbrice
a889e05feat(web): add the merge request pages, compare and the owner's writes GPG Verifiedbrice
951a93arefactor(web): share the diff layout choice between pages GPG Verifiedbrice
509893dfix(cli): require --head for mr merge GPG Verifiedbrice
b87e471feat(app): cap the comments of a merge request at 1000 GPG Verifiedbrice
6d7a853fix(app): record a push when a merge moves the target branch GPG Verifiedbrice
e51c1e8fix(app): return Git and settings read failures as errors GPG Verifiedbrice
f878cf1fix(app): let mr:write see a private repository for merge request writes GPG Verifiedbrice
50c6964fix(kvstore): make merge request writes depend on the repository key so a delete cannot leave stray keys GPG Verifiedbrice
c7d4ad1fix(domain): reject line separators and bidi marks in merge request text GPG Verifiedbrice
59b81cafeat(web): sign the owner in with a one-time link, session cookie and CSRF gate GPG Verifiedbrice
c1f3cc9feat(session): add the owner principal, session store and login use cases GPG Verifiedbrice
1811509ci: install openssh for the signed commit tests GPG Verifiedbrice
a4c7fb6test(cmd): cover merge requests and the signing key over the API GPG Verifiedbrice
3e5f81bfeat(cli): add ermite mr and ermite signing-key GPG Verifiedbrice
17f0117feat(rpc): serve MergeRequestService, GetSigningKey and the repository settings GPG Verifiedbrice
0d1dbeafeat(config): add ERMITE_COMMITTER_NAME and ERMITE_COMMITTER_EMAIL GPG Verifiedbrice
224c22dfeat(app): add the merge request use cases and the signing key GPG Verifiedbrice
4023100feat(sshsig): sign commits with the instance ed25519 key GPG Verifiedbrice
7ce5542feat(gitcli): add the Git operations of a merge GPG Verifiedbrice
858a2fbfeat(kvstore): store merge requests, repository settings and the signing key GPG Verifiedbrice
b60fb76feat(domain): add merge requests, repository settings and the signing key types GPG Verifiedbrice
fef88c6build(deps): update ermite-api to the merge request contract GPG Verifiedbrice
3f267b5fix(web): show the commit page as detached and reload the refs page on a repository update GPG Verifiedtag v0.1.0brice
06a59c3refactor(web): share ref resolution and commit rows between pages GPG Verifiedbrice
52dd2effix(web): stop lexing at the highlight budget and survive lexer panics GPG Verifiedbrice
925a4ecfix(web): send the split layout of large diffs when the URL asks for it GPG Verifiedbrice
dbe8671fix(web): serve a favicon and keep tree, refs and README code within narrow screens GPG Verifiedbrice
c83fe67fix(web): bound concurrent highlighting and revalidate raw files at every request 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