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.
3737| close | yes | yes | yes |
3838| create | yes | yes | yes |
3939| create from a fork | yes | no | yes |
40| milestone | yes | yes | no |
40| milestone | yes | yes | yes |
4141
4242Diff-line comments are the one place the web trails: krz/gitbay#44.
4343Creating 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
5454| close and reopen | yes | yes | yes |
5555| labels, assignees | yes | yes | yes |
5656| milestone | yes | yes | yes |
57| milestone list | yes | yes | no |
57| milestone list | yes | yes | yes |
5858
5959* Repositories
6060
@@ -63,13 +63,13 @@ Creating from a fork works anywhere the source can be typed as
6363| browse files | yes | yes | yes |
6464| read a file | yes | yes | yes |
6565| commit log | yes | yes | yes |
66| commit log at a ref | no | yes | no |
66| commit log at a ref | yes | yes | yes |
6767| one commit with its patch | yes | yes | yes |
6868| blame | yes | yes | yes |
6969| search file contents | yes | yes | yes |
70| branches and tags | yes | yes | no |
70| branches and tags | yes | yes | yes |
7171| wiki | no | yes | no |
72| download an archive | no | yes | no |
72| download an archive | yes | yes | n/a |
7373| edit a file | yes | yes | yes |
7474| create | yes | yes | yes |
7575| pin | yes | yes | yes |
@@ -84,21 +84,29 @@ Creating from a fork works anywhere the source can be typed as
8484| delete, transfer | yes | no | no |
8585| release delete | yes | no | no |
8686
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.
87Wiki is the one row left where the web can do something no other
88surface can: its handler reads the companion repository directly rather
89than dispatching a command (krz/gitbay#48). Blame, file editing, log at
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.
9199
92100* Discovery
93101
94102| capability | cli | web | ios |
95103|-------------------------------+-----+-----+-----|
96104| search repositories | yes | yes | yes |
97| browse all public repositories| no | yes | no |
105| browse all public repositories| yes | yes | yes |
98106| profile page | yes | yes | yes |
99107| activity feed | yes | yes | yes |
100108
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.
102110
103111* Accounts
104112
@@ -138,4 +146,5 @@ instance administration. Deleting or transferring a repository is also
138146CLI-only: both want a typed confirmation, not a button.
139147
140148These 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.