Commit 8974189c40

8974189c40ccccc3230d634ee6583eed8df2f93a

parent: 512bbc5228

Verified · cmc

cmc <hello@cleberg.net> · 2026-08-28 03:21 UTC

parity: add the iOS column, split grouped rows, correct retarget

The page claimed retarget exists over ssh/cli. Nothing implements it —
no command, no store method, no template — so the row was wrong in
both columns and is gone; krz/gitbay#46 tracks whether the capability
should exist.

Grouped rows hid real gaps. 'browse, log, blame, search' read as
covered while blame had no command; it is now one row per page or
action, which is what makes a yes checkable.

Adds the iOS column, and rows for the capabilities an audit against the
web's routes turned up: wiki (#48), log at a ref, archive download and
browse-all are web-only because those handlers bypass the registry;
branches, tags and milestone lists have commands but no iOS screen.

Layout: unified · split

Parity.org +103 −58
@@ -1,9 +1,15 @@
11#+title: Parity
22
3Which surface can do what. The CLI is the complete interface: every
4capability exists over SSH, and web writes call the same control
5commands, so the two cannot drift. This page is updated in the merge
6request that changes a row.
3Which surface can do what. The CLI is meant to be the complete
4interface: every capability exists over SSH, and the other surfaces
5dispatch the same control commands rather than reimplementing them, so
6they cannot drift. This page is updated in the merge request that
7changes a row.
8
9Three surfaces now: the CLI over SSH, the web, and the iOS client
10(krz/gitbay-ios). A =no= in the cli column is a defect, not a
11preference — it means some surface reached around the registry and
12stranded a capability where only it can reach.
713
814* Rule
915
@@ -13,80 +19,116 @@ request. Anything whose input is a credential — secrets, mirror
1319tokens, API tokens, session minting — stays SSH-only by design: the
1420web dispatcher refuses =SSHOnly= commands outright.
1521
22Rows are one page or one action each. Grouped rows hide gaps: an
23earlier version of this page carried "browse, log, blame, search" as a
24single row, which read as covered while blame had no command at all.
25
1626* Merge requests
1727
18| capability | ssh/cli | web |
19|-----------------------+---------+-----|
20| read, diff, commits | yes | yes |
21| comment | yes | yes |
22| edit title and body | yes | yes |
23| review (approve etc.) | yes | yes |
24| resolve a thread | yes | yes |
25| merge (all strategies)| yes | yes |
26| close | yes | yes |
27| create | yes | yes |
28| create from a fork | yes | no |
29| comment on a diff line| yes | no |
30| retarget | yes | no |
28| capability | cli | web | ios |
29|------------------------+-----+-----+-----|
30| read, diff, commits | yes | yes | yes |
31| comment | yes | yes | yes |
32| edit title and body | yes | yes | yes |
33| review (approve etc.) | yes | yes | yes |
34| resolve a thread | yes | yes | yes |
35| comment on a diff line | yes | no | yes |
36| merge (all strategies) | yes | yes | yes |
37| close | yes | yes | yes |
38| create | yes | yes | yes |
39| create from a fork | yes | no | yes |
40| milestone | yes | yes | no |
41
42Diff-line comments are the one place the web trails: krz/gitbay#44.
43Creating from a fork works anywhere the source can be typed as
44=owner/name:branch=; only the web lacks it.
3145
3246* Issues
3347
34| capability | ssh/cli | web |
35|---------------------+---------+-----|
36| read, list, filter | yes | yes |
37| create | yes | yes |
38| comment | yes | yes |
39| edit title and body | yes | yes |
40| close and reopen | yes | yes |
41| labels, assignees | yes | yes |
42| milestone | yes | yes |
48| capability | cli | web | ios |
49|---------------------+-----+-----+-----|
50| read, list, filter | yes | yes | yes |
51| create | yes | yes | yes |
52| comment | yes | yes | yes |
53| edit title and body | yes | yes | yes |
54| close and reopen | yes | yes | yes |
55| labels, assignees | yes | yes | yes |
56| milestone | yes | yes | yes |
57| milestone list | yes | yes | no |
4358
4459* Repositories
4560
46| capability | ssh/cli | web |
47|---------------------------+---------+-----|
48| browse, log, blame, search| yes | yes |
49| create | yes | yes |
50| edit a file | yes | yes |
51| pin | yes | yes |
52| settings, protection | yes | yes |
53| topics, website | yes | yes |
54| visibility | yes | yes |
55| archive | yes | yes |
56| delete, transfer | yes | no |
57| release create, edit | yes | yes |
58| build trigger | yes | yes |
59| release delete | yes | no |
61| capability | cli | web | ios |
62|-----------------------------+-----+-----+-----|
63| browse files | yes | yes | yes |
64| read a file | yes | yes | yes |
65| commit log | yes | yes | yes |
66| commit log at a ref | no | yes | no |
67| one commit with its patch | yes | yes | yes |
68| blame | yes | yes | yes |
69| search file contents | yes | yes | yes |
70| branches and tags | yes | yes | no |
71| wiki | no | yes | no |
72| download an archive | no | yes | no |
73| edit a file | yes | yes | yes |
74| create | yes | yes | yes |
75| pin | yes | yes | yes |
76| settings, protection | yes | yes | yes |
77| topics, website | yes | yes | yes |
78| visibility | yes | yes | yes |
79| archive (read-only flag) | yes | yes | yes |
80| release list, show | yes | yes | yes |
81| release create, edit | yes | yes | yes |
82| build list, log | yes | yes | yes |
83| build trigger | yes | yes | yes |
84| delete, transfer | yes | no | no |
85| release delete | yes | no | no |
86
87Four rows here are web-only because the handler reads git or the store
88directly instead of dispatching a command: wiki (krz/gitbay#48), log at
89a ref, and archive download. Blame and file editing were in the same
90state until krz/gitbay!99 gave them commands.
91
92* Discovery
93
94| capability | cli | web | ios |
95|-------------------------------+-----+-----+-----|
96| search repositories | yes | yes | yes |
97| browse all public repositories| no | yes | no |
98| profile page | yes | yes | yes |
99| activity feed | yes | yes | yes |
100
101=repo search= needs a query, so there is no browse-all outside the web.
60102
61103* Accounts
62104
63| capability | ssh/cli | web |
64|----------------------------+---------+-----|
65| SSH keys: list, add, remove| yes | yes |
66| PGP keys: list, add, remove| yes | yes |
67| email add and verify | yes | yes |
68| dashboard aggregate | yes | yes |
69| activity feed | yes | yes |
70| API token mint | yes | no |
71| account export bundle | yes | no |
105| capability | cli | web | ios |
106|-----------------------------+-----+-----+-----|
107| SSH keys: list, add, remove | yes | yes | yes |
108| PGP keys: list, add, remove | yes | yes | yes |
109| email add and verify | yes | yes | yes |
110| dashboard aggregate | yes | yes | yes |
111| API token mint | yes | no | no |
112| account export bundle | yes | no | no |
72113
73114* Organizations
74115
75| capability | ssh/cli | web |
76|---------------------------+---------+-----|
77| read members and teams | yes | yes |
78| members add, remove, role | yes | yes |
79| teams create, delete | yes | yes |
80| team members | yes | yes |
81| team repo grants | yes | yes |
82| create, rename, delete | yes | no |
116| capability | cli | web | ios |
117|---------------------------+-----+-----+-----|
118| read members and teams | yes | yes | yes |
119| members add, remove, role | yes | yes | yes |
120| teams create, delete | yes | yes | yes |
121| team members | yes | yes | yes |
122| team repo grants | yes | yes | yes |
123| create, rename, delete | yes | no | no |
83124
84125* Pagination
85126
86127=issue list=, =mr list=, =repo list=, and =feed= take =--limit <n>=
87128and =--cursor <c>=. Cursors are opaque; each page carries the next
88129one. Without the flags a list stays complete, so existing scripts are
89unchanged. The web renders server-side and does not paginate.
130unchanged. The web renders server-side and does not paginate; iOS
131pages with the cursors.
90132
91133* SSH only, by design
92134
@@ -94,3 +136,6 @@ Build secrets, mirror configuration and tokens, custom domain claims,
94136API token minting, web session minting, deploy keys, account and
95137instance administration. Deleting or transferring a repository is also
96138CLI-only: both want a typed confirmation, not a button.
139
140These are the only rows where a =no= is intended. Everywhere else a
141=no= is work outstanding.