detached 35cc498

docs(issues): describe resolution and linked issue history

commit
35cc498aac2e9df93f1589b150003723b53e9e21
author
brice · · 2026-10-22 18:14 UTC
committer
brice · · 2026-10-23 09:28 UTC
parent
e95ffd9
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
2 files · +22 -7
M docs/issues.md +17 -6
@@ -1,13 +1,14 @@
11 # Issues
22
3-An issue records a task, a bug or a question about a repository: a title, a body, comments, and an open or closed state. Issues share the numbering of merge requests: after merge request 1, the next issue is number 2.
3+An issue records a task, a bug or a question about a repository: a title, a body, comments, and an open, closed or resolved state. Issues share the numbering of merge requests: after merge request 1, the next issue is number 2.
44
55 ```sh
66 ermite repo edit myrepo --issues owner
77 ermite issue create myrepo --title "Crash on start" --body "It crashes."
8-ermite issue list myrepo [--state open|closed|all]
8+ermite issue list myrepo [--state open|closed|resolved|all]
99 ermite issue show myrepo 2
1010 ermite issue comment myrepo 2 -m "Reproduced."
11+ermite issue resolve myrepo 2
1112 ermite issue close myrepo 2
1213 ermite issue reopen myrepo 2
1314 ```
@@ -17,6 +18,16 @@ ermite issue reopen myrepo 2
1718
1819 All commands take `--json`. `--body -` and `--body-file -` read standard input. A server needs the `issues` feature (`ermite version`); without it the commands, `repo edit --issues` and `token create --scope issue:write` are refused.
1920
21+## States and history
22+
23+- **Open**: work remains.
24+- **Closed**: closed without being resolved.
25+- **Resolved**: fixed, either with `ermite issue resolve <repo> <n>` or by merging a closing reference.
26+
27+The web list has Open, Closed and Resolved tabs. The web offers Close for open issues and Reopen for closed or resolved issues; manual resolution is CLI-only. Reopening clears the resolving merge request. A merge does not resolve an already closed issue. Existing issues closed by a merge are migrated to resolved without adding historical events.
28+
29+The issue conversation interleaves comments and timestamped system rows for references, closure, reopening and resolution, with actor and merge request links. History is append-only: removing a current reference does not remove its history. At most 500 events are retained per issue; later events are omitted without preventing state changes or merges.
30+
2031 ## The `issues` setting
2132
2233 `ermite repo edit <repo> --issues off|owner|public`, shown by `repo show` (JSON field `issues`):
@@ -41,13 +52,13 @@ Merge requests and issues of a repository draw `#n` from one sequence, so a numb
4152
4253 A merge request and the issues of its repository are linked by `#N` in its text:
4354
44-- **Closing keywords** close the issue when the merge request is **merged**, and only then: `close`, `closes`, `closed`, `fix`, `fixes`, `fixed`, `resolve`, `resolves`, `resolved` (any case), then `#N`, with an optional `:` after the keyword. A list works: `fixes #3, #4 and #5`. They count in the title, the description and the commit messages, not in notes. Closing the merge request without merging closes nothing.
45-- **Any `#N`** in the title, description, notes or commit messages shows the merge request on the issue (`ermite issue show`, the API `references`), with its state and whether it closes the issue.
46-- A closed issue records the merge request that closed it ("closed by !N"). Reopening or closing by hand clears it.
55+- **Closing keywords** resolve an open issue when the merge request is **merged**, and only then: `close`, `closes`, `closed`, `fix`, `fixes`, `fixed`, `resolve`, `resolves`, `resolved` (any case), then `#N`, with an optional `:` after the keyword. A list works: `fixes #3, #4 and #5`. They count in the title, the description and the commit messages, not in notes. Closing the merge request without merging resolves nothing.
56+- **Any `#N`** in the title, description, notes or commit messages shows the merge request on the issue (`ermite issue show`, the API `references`), with its state and whether it resolves the issue on merge.
57+- A merge-resolved issue records the merge request that resolved it ("resolved by !N"). Reopening clears it.
4758 - The links are recomputed whenever the merge request changes (a note added, edited or deleted, a push to its branch, a merge), so removing a mention removes the link.
4859 - Words glued to the number (`abc#3`), `&#39;` and `##3` are not references. Code spans are not skipped.
4960
50-Limits: the 100 most recent commits of the merge request, 16 KiB of each text, 100 merge requests listed per issue. Only numbers of existing issues are linked: a mention of a number that does not exist yet is not filled in later. With issues `off`, nothing is closed.
61+Limits: the 100 most recent commits of the merge request, 16 KiB of each text, 100 merge requests listed per issue. Only numbers of existing issues are linked: a mention of a number that does not exist yet is not filled in later. With issues `off`, nothing is resolved.
5162
5263 ## Inbox
5364
@@ -1,13 +1,14 @@
1 # Issues1 # Issues
2 2
3-An issue records a task, a bug or a question about a repository: a title, a body, comments, and an open or closed state. Issues share the numbering of merge requests: after merge request 1, the next issue is number 2.3+An issue records a task, a bug or a question about a repository: a title, a body, comments, and an open, closed or resolved state. Issues share the numbering of merge requests: after merge request 1, the next issue is number 2.
4 4
5 ```sh5 ```sh
6 ermite repo edit myrepo --issues owner6 ermite repo edit myrepo --issues owner
7 ermite issue create myrepo --title "Crash on start" --body "It crashes."7 ermite issue create myrepo --title "Crash on start" --body "It crashes."
8-ermite issue list myrepo [--state open|closed|all]8+ermite issue list myrepo [--state open|closed|resolved|all]
9 ermite issue show myrepo 29 ermite issue show myrepo 2
10 ermite issue comment myrepo 2 -m "Reproduced."10 ermite issue comment myrepo 2 -m "Reproduced."
11+ermite issue resolve myrepo 2
11 ermite issue close myrepo 212 ermite issue close myrepo 2
12 ermite issue reopen myrepo 213 ermite issue reopen myrepo 2
13 ```14 ```
@@ -17,6 +18,16 @@ ermite issue reopen myrepo 2
17 18
18 All commands take `--json`. `--body -` and `--body-file -` read standard input. A server needs the `issues` feature (`ermite version`); without it the commands, `repo edit --issues` and `token create --scope issue:write` are refused.19 All commands take `--json`. `--body -` and `--body-file -` read standard input. A server needs the `issues` feature (`ermite version`); without it the commands, `repo edit --issues` and `token create --scope issue:write` are refused.
19 20
21+## States and history
22+
23+- **Open**: work remains.
24+- **Closed**: closed without being resolved.
25+- **Resolved**: fixed, either with `ermite issue resolve <repo> <n>` or by merging a closing reference.
26+
27+The web list has Open, Closed and Resolved tabs. The web offers Close for open issues and Reopen for closed or resolved issues; manual resolution is CLI-only. Reopening clears the resolving merge request. A merge does not resolve an already closed issue. Existing issues closed by a merge are migrated to resolved without adding historical events.
28+
29+The issue conversation interleaves comments and timestamped system rows for references, closure, reopening and resolution, with actor and merge request links. History is append-only: removing a current reference does not remove its history. At most 500 events are retained per issue; later events are omitted without preventing state changes or merges.
30+
20 ## The `issues` setting31 ## The `issues` setting
21 32
22 `ermite repo edit <repo> --issues off|owner|public`, shown by `repo show` (JSON field `issues`):33 `ermite repo edit <repo> --issues off|owner|public`, shown by `repo show` (JSON field `issues`):
@@ -41,13 +52,13 @@ Merge requests and issues of a repository draw `#n` from one sequence, so a numb
41 52
42 A merge request and the issues of its repository are linked by `#N` in its text:53 A merge request and the issues of its repository are linked by `#N` in its text:
43 54
44-- **Closing keywords** close the issue when the merge request is **merged**, and only then: `close`, `closes`, `closed`, `fix`, `fixes`, `fixed`, `resolve`, `resolves`, `resolved` (any case), then `#N`, with an optional `:` after the keyword. A list works: `fixes #3, #4 and #5`. They count in the title, the description and the commit messages, not in notes. Closing the merge request without merging closes nothing.55+- **Closing keywords** resolve an open issue when the merge request is **merged**, and only then: `close`, `closes`, `closed`, `fix`, `fixes`, `fixed`, `resolve`, `resolves`, `resolved` (any case), then `#N`, with an optional `:` after the keyword. A list works: `fixes #3, #4 and #5`. They count in the title, the description and the commit messages, not in notes. Closing the merge request without merging resolves nothing.
45-- **Any `#N`** in the title, description, notes or commit messages shows the merge request on the issue (`ermite issue show`, the API `references`), with its state and whether it closes the issue.56+- **Any `#N`** in the title, description, notes or commit messages shows the merge request on the issue (`ermite issue show`, the API `references`), with its state and whether it resolves the issue on merge.
46-- A closed issue records the merge request that closed it ("closed by !N"). Reopening or closing by hand clears it.57+- A merge-resolved issue records the merge request that resolved it ("resolved by !N"). Reopening clears it.
47 - The links are recomputed whenever the merge request changes (a note added, edited or deleted, a push to its branch, a merge), so removing a mention removes the link.58 - The links are recomputed whenever the merge request changes (a note added, edited or deleted, a push to its branch, a merge), so removing a mention removes the link.
48 - Words glued to the number (`abc#3`), `&#39;` and `##3` are not references. Code spans are not skipped.59 - Words glued to the number (`abc#3`), `&#39;` and `##3` are not references. Code spans are not skipped.
49 60
50-Limits: the 100 most recent commits of the merge request, 16 KiB of each text, 100 merge requests listed per issue. Only numbers of existing issues are linked: a mention of a number that does not exist yet is not filled in later. With issues `off`, nothing is closed.61+Limits: the 100 most recent commits of the merge request, 16 KiB of each text, 100 merge requests listed per issue. Only numbers of existing issues are linked: a mention of a number that does not exist yet is not filled in later. With issues `off`, nothing is resolved.
51 62
52 ## Inbox63 ## Inbox
53 64
M docs/merge-requests.md +5 -1
@@ -8,7 +8,7 @@ ermite mr show myrepo 1 --diff
88 ermite mr merge myrepo 1 --head <commit> [--mode fast-forward|squash|merge] [--delete-branch]
99 ```
1010
11-Naming an issue with `#N` links it, and `Fixes #N` closes it on merge: see [issues](issues.md#merge-request-links).
11+Naming an issue with `#N` links it, and `Fixes #N` resolves it on merge: see [issues](issues.md#merge-request-links).
1212
1313 `ermite mr create` and `ermite mr close` print a confirmation followed by the full
1414 merge request web URL on its own line. With `--json`, merge request objects
@@ -16,6 +16,10 @@ merge request web URL on its own line. With `--json`, merge request objects
1616
1717 A draft cannot merge. `ermite mr ready <repo> <n>` removes the `WIP:` or `[WIP]` title prefix; it needs `mr:write` and an open draft.
1818
19+## Linked issues and history
20+
21+The web Issues rail lists current linked issues with their state and a **resolves** marker for closing references. Links lead to the issue. The conversation includes timestamped system rows for references and resolutions, interleaved with general comments. Removing a reference removes its current link, not its history; historical rows may name issues no longer in the rail.
22+
1923 ## Merge modes
2024
2125 | Mode | Result | Needs |
@@ -8,7 +8,7 @@ ermite mr show myrepo 1 --diff
8 ermite mr merge myrepo 1 --head <commit> [--mode fast-forward|squash|merge] [--delete-branch]8 ermite mr merge myrepo 1 --head <commit> [--mode fast-forward|squash|merge] [--delete-branch]
9 ```9 ```
10 10
11-Naming an issue with `#N` links it, and `Fixes #N` closes it on merge: see [issues](issues.md#merge-request-links).11+Naming an issue with `#N` links it, and `Fixes #N` resolves it on merge: see [issues](issues.md#merge-request-links).
12 12
13 `ermite mr create` and `ermite mr close` print a confirmation followed by the full13 `ermite mr create` and `ermite mr close` print a confirmation followed by the full
14 merge request web URL on its own line. With `--json`, merge request objects14 merge request web URL on its own line. With `--json`, merge request objects
@@ -16,6 +16,10 @@ merge request web URL on its own line. With `--json`, merge request objects
16 16
17 A draft cannot merge. `ermite mr ready <repo> <n>` removes the `WIP:` or `[WIP]` title prefix; it needs `mr:write` and an open draft.17 A draft cannot merge. `ermite mr ready <repo> <n>` removes the `WIP:` or `[WIP]` title prefix; it needs `mr:write` and an open draft.
18 18
19+## Linked issues and history
20+
21+The web Issues rail lists current linked issues with their state and a **resolves** marker for closing references. Links lead to the issue. The conversation includes timestamped system rows for references and resolutions, interleaved with general comments. Removing a reference removes its current link, not its history; historical rows may name issues no longer in the rail.
22+
19 ## Merge modes23 ## Merge modes
20 24
21 | Mode | Result | Needs |25 | Mode | Result | Needs |

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 46

↑↓ moveenter openesc close