Commit d8255af2cc

d8255af2cc6256b287d6dcd776b1b6b1fd630840

parent: 8974189c40

Verified · cmc

cmc <hello@cleberg.net> · 2026-08-28 04:02 UTC

parity: !101 closes three rows; archive is n/a on iOS

log at a ref, archive download and browse-all are commands now, so the
cli column is yes for all three and iOS has the two that translate.
Branches and tags, milestone lists and an MR's milestone landed in the
app.

Archive is marked n/a rather than no: the read API carries stdout as a
JSON string so a gzip stream cannot survive it, and a phone has nowhere
to put a tarball — no clone, checkout or build. That is a deliberate
absence, not outstanding work, and the table now distinguishes the two.

Wiki is the last row where the web can do something no other surface
can.

Layout: unified · split

Parity.org +21 −12
@@ -37,7 +37,7 @@ single row, which read as covered while blame had no command at all.
37| close | yes | yes | yes | 37| close | yes | yes | yes |
38| create | yes | yes | yes | 38| create | yes | yes | yes |
39| create from a fork | yes | no | yes | 39| create from a fork | yes | no | yes |
40| milestone | yes | yes | no | 40| milestone | yes | yes | yes |
41 41
42Diff-line comments are the one place the web trails: krz/gitbay#44. 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 43Creating from a fork works anywhere the source can be typed as
@@ -54,7 +54,7 @@ Creating from a fork works anywhere the source can be typed as
54| close and reopen | yes | yes | yes | 54| close and reopen | yes | yes | yes |
55| labels, assignees | yes | yes | yes | 55| labels, assignees | yes | yes | yes |
56| milestone | yes | yes | yes | 56| milestone | yes | yes | yes |
57| milestone list | yes | yes | no | 57| milestone list | yes | yes | yes |
58 58
59* Repositories 59* Repositories
60 60
@@ -63,13 +63,13 @@ Creating from a fork works anywhere the source can be typed as
63| browse files | yes | yes | yes | 63| browse files | yes | yes | yes |
64| read a file | yes | yes | yes | 64| read a file | yes | yes | yes |
65| commit log | yes | yes | yes | 65| commit log | yes | yes | yes |
66| commit log at a ref | no | yes | no | 66| commit log at a ref | yes | yes | yes |
67| one commit with its patch | yes | yes | yes | 67| one commit with its patch | yes | yes | yes |
68| blame | yes | yes | yes | 68| blame | yes | yes | yes |
69| search file contents | yes | yes | yes | 69| search file contents | yes | yes | yes |
70| branches and tags | yes | yes | no | 70| branches and tags | yes | yes | yes |
71| wiki | no | yes | no | 71| wiki | no | yes | no |
72| download an archive | no | yes | no | 72| download an archive | yes | yes | n/a |
73| edit a file | yes | yes | yes | 73| edit a file | yes | yes | yes |
74| create | yes | yes | yes | 74| create | yes | yes | yes |
75| pin | yes | yes | yes | 75| pin | yes | yes | yes |
@@ -84,21 +84,29 @@ Creating from a fork works anywhere the source can be typed as
84| delete, transfer | yes | no | no | 84| delete, transfer | yes | no | no |
85| release delete | yes | no | no | 85| release delete | yes | no | no |
86 86
87Four rows here are web-only because the handler reads git or the store 87Wiki is the one row left where the web can do something no other
88directly instead of dispatching a command: wiki (krz/gitbay#48), log at 88surface can: its handler reads the companion repository directly rather
89a ref, and archive download. Blame and file editing were in the same 89than dispatching a command (krz/gitbay#48). Blame, file editing, log at
90state until krz/gitbay!99 gave them commands. 90a ref, archive and the public listing were all in that state until
91krz/gitbay!99 and !101 gave them commands.
92
93=n/a= marks a capability deliberately absent from a surface rather than
94missing from it. Archive download is =n/a= on iOS: the read API carries
95a command's stdout as a JSON string, so a gzip stream cannot survive it,
96and the app has nowhere useful to put a tarball — the brief rules out
97local git, so there is no clone, checkout or build to feed. The web's
98route stays the way to get one.
91 99
92* Discovery 100* Discovery
93 101
94| capability | cli | web | ios | 102| capability | cli | web | ios |
95|-------------------------------+-----+-----+-----| 103|-------------------------------+-----+-----+-----|
96| search repositories | yes | yes | yes | 104| search repositories | yes | yes | yes |
97| browse all public repositories| no | yes | no | 105| browse all public repositories| yes | yes | yes |
98| profile page | yes | yes | yes | 106| profile page | yes | yes | yes |
99| activity feed | yes | yes | yes | 107| activity feed | yes | yes | yes |
100 108
101=repo search= needs a query, so there is no browse-all outside the web. 109=explore= is the listing without a query; =repo search= is the one with.
102 110
103* Accounts 111* Accounts
104 112
@@ -138,4 +146,5 @@ instance administration. Deleting or transferring a repository is also
138CLI-only: both want a typed confirmation, not a button. 146CLI-only: both want a typed confirmation, not a button.
139 147
140These are the only rows where a =no= is intended. Everywhere else a 148These are the only rows where a =no= is intended. Everywhere else a
141=no= is work outstanding. 149=no= is work outstanding, and =n/a= means a surface cannot usefully
150carry the capability at all — see the archive note above.