v0.32.0 53e25a3

2026-10-20

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
e908c5bfix(kvstore): store CI job contexts under their own key GPG Verified3/4brice

2026-10-19

fca9155fix(app): reconcile pull refs before force-push GC tests GPG Verifiedtag v0.28.08/8brice
4d9eaacfix(usecase): drop the unused repository read before the merge lock GPG Verified7/8brice
05fc636refactor: reuse the domain settings predicates and tighten the moved rules after review GPG Verified3/4brice
558568cfix(web,rpc): handle an API or web server built without merge requests or OIDC keys GPG Verifiedbrice
5344be5merge: hexmove/workflow into chore/hexcheck-v0.4.0 merge GPG Verifiedbrice
9f9eee5merge: hexmove/history into chore/hexcheck-v0.4.0 merge GPG Verifiedbrice
c902d2fmerge: hexmove/policies into chore/hexcheck-v0.4.0 merge GPG Verifiedbrice
6b4272dmerge: hexmove/budgets into chore/hexcheck-v0.4.0 merge GPG Verifiedbrice
fe7ab7dmerge: hexmove/revision into chore/hexcheck-v0.4.0 merge GPG Verifiedbrice
a1ec1afrefactor(domain): own the workflow-change rule for job tokens in WorkflowChangeOf GPG Verifiedbrice
6080cberefactor(usecase): own branch comparison, push summaries and unread commits in MergeRequests GPG Verifiedbrice
c0f84a6refactor(usecase): own repo defaults, disabled workflows, OIDC rotation and issue visibility rules GPG Verifiedbrice
0424a8arefactor(domain): own commit-object and diff read budgets GPG Verifiedbrice
ac21956chore(hexcheck): bump to v0.4.0 and drop unused ignore directives GPG Verifiedbrice
e188800refactor(domain): own the revision resolution order in Revision.Candidates GPG Verifiedbrice
4534992feat(web): group the checks of a merge request by run when a commit has several GPG Verified7/8brice
70c00adtest: use Store.Mutate for the merge-mode upgrade test and skip id-only events in the inbox stream test GPG Verified8/8brice
bda2a5efix(mr): wait for the async source deletion before pruning in the squash test; simplify the retry pop condition GPG Verifiedbrice
1475ed7build(deps): require ermite-api v0.10.0 GPG Verifiedbrice
fb5ff06test(mr): cover stale retry timers, branch disappearance and CAS conflict; drop unused clock GPG Verifiedbrice
c22da12fix(mr): keep replacement retries from stale timers and log reconcile failures GPG Verifiedbrice
1036507refactor(mr): reconcile mergeability once per repository GPG Verifiedbrice
0019f14refactor(mr): retry failed mergeability work per repository only GPG Verifiedbrice
99b00c3fix(mr): count retry attempts only for the keys that wait in the scheduler GPG Verifiedbrice
33a90cdfix(mr): arm one retry timer per earliest retry in the mergeability scheduler GPG Verifiedbrice
41023defix(mr): bound mergeability retries with one scheduler and retry failed publishes GPG Verifiedbrice
0e2e418feat(cli): report the mergeability feature GPG Verifiedbrice
bfa2dcdfix(rpc): report checking mergeability on open merge requests GPG Verifiedbrice
5ad3fbefix(events): deliver mergeability events on owner topics GPG Verifiedbrice
f09b4fbfix(mr): bound conflict paths with exact-sized copies 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