v0.8.1 b8e893f

2026-10-12

a2a22bffeat(usecase): add the owner passkey use cases GPG Verifiedbrice
9dac236feat(usecase): limit tokens to branch prefixes GPG Verifiedbrice
3246333feat(webauthn): add the passkey verifier adapter over go-webauthn GPG Verifiedbrice
dbbae13feat(kvstore): store passkeys and declare the passkey ports GPG Verifiedbrice
845634bfeat(domain): add passkeys and the passkey name rules GPG Verifiedbrice
e0bea3dfeat(domain): add branch prefixes to tokens GPG Verifiedbrice
fc4d564Merge pull request 'harden git HTTP, web headers and UI, speed up browsing, modernize tests' (#10) from fix/review-hardening into main merge SSH Unverifiedbnema
650dc0atest(githttp): write the fake backend once to avoid ETXTBSY under parallel tests GPG Verifiedbrice
588fe2cfix(web): recover a panic in the event watch goroutine GPG Verifiedbrice
2bedec2Merge origin/main into fix/review-hardening merge GPG Verifiedbrice
582b620refactor(web): read and write through the ports instead of in-process Connect clients GPG Verifiedbrice
d5cc8feMerge pull request 'feat(web): in-place tree and repo-wide file finder' (#11) from feat/file-finder into main merge SSH Unverifiedtag v0.6.0bnema
53b75effix(web): open the top file hit on an Enter typed before the first search frame GPG Verifiedbrice
570c3c0fix(web): free a build slot before waking its waiters and filter paths once GPG Verifiedbrice
ff596ddchore(web): regenerate overlays templ output from the repository root GPG Verifiedbrice
abeea67test(web): regenerate the goldens for the palette close hook and finder load GPG Verifiedbrice
d5d431etest(web): cover the finder on blobs, raw validator lists and truncated rows GPG Verifiedbrice
0219778refactor(web): split writing the path list and match raw validators as a list GPG Verifiedbrice
b06e385fix(web): point the finder of an abbreviated-id page at the full commit GPG Verifiedbrice
c75c5f3fix(web): bound the concurrent path list builds GPG Verifiedbrice
b5e1b0crefactor(domain): share the path list bounds between the git adapters GPG Verifiedbrice
9494523test(web): cover the finder and tree DOM glue GPG Verifiedbrice
84a2d29refactor(web): share the finder hit link and throttle the palette search GPG Verifiedbrice
4738f20refactor: split use cases into internal/usecase and the CLI and composition root into internal/app GPG Verifiedbrice
f2f0e1brefactor(ports): declare every cross-layer contract and its types in ports GPG Verifiedbrice

2026-10-11

ffb5f8dfix(web): keep diff TOC, filters and cursor right after jumps and live updates GPG Verifiedbrice
bde7c01fix: key the history cache on repo identity, revert raw tree lookup, scope refs fanout to the server GPG Verifiedbrice
8954329test: run unit tests in parallel and enable the tparallel linter GPG Verifiedbrice
0e9351bfix(web): persistent live regions, scroll-aware diff TOC, ermite.js handlers GPG Verifiedbrice
28d17a7fix(web): keep the tree and finder state consistent GPG Verifiedbrice
515aa1efix(web): revalidate paths without a build and bound the path cache GPG Verifiedbrice
aff5730fix(gitcli): wrap the tree id error and do not retain ls-tree entries GPG Verifiedbrice
94354earefactor(rpc): depend on consumer-side interfaces instead of app use cases GPG Verifiedbrice
11a76ebtest: run timing-dependent tests in synctest bubbles with real delays GPG Verifiedbrice
c505b30perf(web): list repos and refs in one call, share live refs fragments, trim blob copies GPG Verifiedbrice
e2ac0a6docs(web): mention the file tree and file finder GPG Verifiedbrice
2b2a2cffeat(web): find files across the repository with a fuzzy finder GPG Verifiedbrice
ed6aa64perf(gitcli): run up to 4 cat-file processes per repo, skip blob streams on raw 304 GPG Verifiedbrice
806d83drefactor(ermitegit): move tree route selection onto Routes GPG Verifiedbrice
4fbe895test: replace hand-written fakes with mockery mocks and map hexcheck roles GPG Verifiedbrice
576bc4afeat(rpc): serve GitService.ListPaths GPG Verifiedbrice
329477afeat(readers): list the file paths of a revision GPG Verifiedbrice
c33e43cperf(browse): route warm reads to ermite-git and cache immutable last-commit results GPG Verifiedbrice
e42fec5perf(web): gzip pages and assets, add ETag revalidation to public pages GPG Verifiedbrice
a2fc532fix(githttp): cap concurrent git backends globally and per client, bound body reads GPG Verifiedbrice
49d6992fix(web): harden CSP and headers, ignore htmx in untrusted HTML, cache health checks GPG Verifiedbrice
7559d0ffeat(app): add the ListPaths use case and reader port GPG Verifiedbrice
39ca311feat(web): expand directories in place in the Files view GPG Verifiedbrice
bfab294fix(web): keep tableless diff files closed, label the lede, show the tag count past the dated limit GPG Verifiedtag v0.5.0brice
08e6388feat(web): show the latest tag in its own summary rail block 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 2

Tags 45

↑↓ moveenter openesc close