detached 59d5a0b

2026-10-20

5805840fix(mirror): sync --all past failures, admin-only warnings, no config lock during pushes and deferred due repos GPG Verifiedbrice
5e1949ffix(domain): reject dash-led SSH users and hosts, check cron gaps on non-leap years and inject the URL validator GPG Verifiedbrice
335d134fix(mirror): mark mirrors dirty on merges and default branch changes, validate config before saving and keep manual throttling on coalesced syncs GPG Verifiedbrice
c59b5fafix(domain): check the cron gap across the year, parse only on resolution and classify more SSH auth denials GPG Verifiedbrice
4d330eadocs(mirror): document push mirror setup, sync rules, CLI and events GPG Verifiedbrice
49d746dmerge: push mirror CLI and composition into feat/push-mirror merge GPG Verifiedbrice
86b5a04merge: push mirror warning and badge into feat/push-mirror merge GPG Verifiedbrice
0ebe073feat(cli): add the mirror commands and wire push mirrors into the forge GPG Verifiedbrice
475ebb6feat(mirror): warn about failing mirrors on git push and show a badge on the repo page GPG Verifiedbrice
ed419c7feat(rpc): serve the mirror service, convert mirror events and add the mirror client GPG Verifiedbrice
26e2b66merge: push mirror use case into feat/push-mirror merge GPG Verifiedbrice
3fb99b3merge: push mirror adapters into feat/push-mirror merge GPG Verifiedbrice
a40b26ffeat(mirror): add the mirror use case with scheduler, single-flight sync and push trigger GPG Verifiedbrice
3aadd9bfix(domain): emit one mirror.failed event per incident, including the pause GPG Verifiedbrice
e3ee891feat(mirror): add the git push transport and the mirror KV storage GPG Verifiedbrice
1069a88feat(domain): add push mirror config, state machine, ref selection and ports GPG Verifiedbrice
55fcc8frefactor(diff): move the commit page window and the one-file splice into the usecases GPG Verifiedtag v0.29.08/8brice
d00be2edocs(diff): name every cause of an unavailable file in the API GPG Verifiedbrice
88a1a56refactor(web): share the fragment layout rule and document the API omission reasons GPG Verifiedbrice
de918e2docs(diff): say that files over the one-file cap take no line comment GPG Verifiedbrice
4af5505fix(diff): cap one-file loads at 50,000 changed lines and harden the web splice GPG Verifiedbrice
eb480cbfix(web): keep collapsed files closed in loaded windows and ignore held keys GPG Verifiedbrice
81bd47ffeat(web): collapse generated and large diff files with on-demand load GPG Verifiedbrice
1b58f08test(diff): comment on a generated file and collapse it in commit windows GPG Verifiedbrice
2a79463feat(diff): share one window policy for MR, commit and comment reads GPG Verifiedbrice
b1b81dffix(diff): omit a file over the byte budget of earlier files as budget GPG Verifiedbrice
0e23da4feat(diff): tell why a diff file has no hunks GPG Verifiedbrice
7fe3b18build(deps): use ermite-api v0.11.0 for the file omission reason GPG Verifiedbrice
e9b7a51test(diff): drop the duplicate changed-line limit test GPG Verifiedbrice
03ad5a8fix(diff): count only changed lines against the diff line limits GPG Verifiedbrice
1e5691efeat(domain): classify generated and vendored files by path GPG Verifiedbrice
fe19220test(web): run the MR push subtests in parallel GPG Verified8/8brice
a01252afix(web): keep the open MR footer panel through an in-place refresh GPG Verified3/4brice
6b81fd4fix(web): show MR footer panels without scripts and style the tabs as buttons GPG Verified2/4brice
f525ac6feat(web): turn the MR footer into toggle tabs on a darker background GPG Verifiedbrice
89e7d82fix(web): stop the checks label observer from looping with hx-live GPG Verified3/4brice
a034b8cfix(web): treat a chosen merge mode as a draft that blocks the refresh GPG Verified3/4brice
18da841fix(web): handle the live stream reader cancellation at its source GPG Verifiedbrice
e688ec5fix(web): keep MR form drafts and the live stream across refreshes GPG Verifiedbrice
cff892bfix(web): keep the MR refresh anchored, draft safe and lean GPG Verifiedbrice
e97c08efeat(web): refresh the MR view in place when its source branch moves GPG Verifiedbrice
b46e8c1fix(web): resolve MR view review findings GPG Verified4/4brice
52bc7c7style(web): fit the MR footer to the mobile layout GPG Verified4/4brice
97c558fMerge branch 'feat/mr-view-ux-mobile' into feat/mr-view-ux merge GPG Verifiedbrice
966bf44Merge branch 'feat/mr-view-ux-panels' into feat/mr-view-ux merge GPG Verifiedbrice
d92c6dcfeat(web): make the MR view edge to edge and touch friendly on mobile GPG Verifiedbrice
42e48d0feat(web): move MR commits and checks into a tabbed card footer GPG Verifiedbrice
cc7ba64Merge branch 'fix/list-cursor-corners' into main (!12) merge SSH Verifiedtag v0.28.14/4ermite
6494d11refactor(kvstore): list job contexts keys in their own helper GPG Verified8/8brice
74b956dfix(web): round the list cursor frame at the card corners GPG Verified4/4brice

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