Commit ce4ff56609

ce4ff56609137090f1527ac59e0795ec40dc6880

parent: 079c94c2d1

Unsigned

cmc <hello@cleberg.net> · 2026-08-31 20:00 UTC

README: a feature table, and clearer prose

The "What it does" bullets become a two-column table — area, and what is
in it.

Also carries edits made alongside: the sign-in section leads with the SSH
key as identity, building and contributing read more directly, and the
live-fixture and bundle-identifier notes are dropped.

=gitbay= uses org verbatim rather than backticks, which org has no markup
for and would render literally.

Layout: unified · split

README.org +26 −36
@@ -3,59 +3,55 @@
3 3
4A native iOS client for [[https://gitbay.org][gitbay]], a CLI-first git forge. 4A native iOS client for [[https://gitbay.org][gitbay]], a CLI-first git forge.
5 5
6The command line is the product. This app is a reading, reviewing and 6This app is a reading, reviewing and responding surface for the times you are
7responding surface for the times you are not at a keyboard. 7not at a keyboard.
8 8
9# TODO: on publish, replace with the App Store badge: 9# TODO: on publish, replace with the App Store badge:
10# [[https://apps.apple.com/app/id<APP_ID>][https://toolbox.marketingtools.apple.com/api/v2/badges/download-on-the-app-store/black/en-us]] 10# [[https://apps.apple.com/app/id<APP_ID>][https://toolbox.marketingtools.apple.com/api/v2/badges/download-on-the-app-store/black/en-us]]
11 11
12* What it does 12* What it does
13 13
14- *Dashboard* — your review queue, assigned work, open merge requests and 14| Area | What's there |
15 issues, pinned repositories, recent activity. 15|----------------------------+-------------------------------------------------------------------------------------------------------------------------------|
16- *Repositories* — file tree and blob view with syntax highlighting, 16| Dashboard | Your review queue, assigned work, open merge requests and issues, pinned repositories, recent activity |
17 history at a ref or per file, blame, branches and tags, and file editing 17| Repositories | File tree and blob view with syntax highlighting, history at a ref or per file, blame, branches and tags, file editing on a branch |
18 on a branch. 18| Merge requests and issues | Lists, detail, comments, milestones, and a unified diff |
19- *Merge requests and issues* — lists, detail, comments, milestones, and a 19| Builds | Build list, job picker, logs |
20 unified diff. 20| Releases and wiki | Read from the same instance |
21- *Builds* — build list, job picker, logs. 21| Explore, feed and profiles | Discovery, activity, contribution graph |
22- *Releases and wiki*, read from the same instance. 22| READMEs | Markdown and Org. Org renders natively through [[https://gitbay.org/krz/org-swift][OrgSwiftUI]] — selectable text, Dynamic Type, VoiceOver — rather than in a web view |
23- *Explore, feed and profiles* — discovery, activity, contribution graph.
24- *READMEs* in Markdown and Org. Org renders natively through
25 [[https://gitbay.org/krz/org-swift][OrgSwiftUI]] — selectable text, Dynamic Type, VoiceOver — rather than in a
26 web view.
27 23
28* Signing in 24* Signing in
29 25
30Auth is a bearer token, minted over SSH on a machine that already has your 26As =gitbay= requires, your SSH key is your identity. To login to the mobile app,
31key. The app never asks for a password. 27you will need to mint a bearer token:
32 28
33#+begin_src sh 29#+begin_src sh
34gitbay auth token create --name iphone --scope full --ttl 90d 30gitbay auth token create --name iphone --scope full --ttl 90d
35#+end_src 31#+end_src
36 32
37=--scope read= works too, but a read-only token cannot comment or merge. 33Alternatively, =--scope read= works too, but a read-only token cannot comment or
38The token is stored in the iOS keychain. 34merge.
39 35
40Any gitbay instance works; the host is entered at sign-in. 36Any gitbay instance works. You just need to enter the host at sign-in.
41 37
42* Building 38* Building
43 39
44Requires Xcode with an iOS 26.5 SDK. Swift 6 language mode, default 40Requires Xcode with an iOS 26.5 SDK. Swift 6 language mode, default =MainActor=
45=MainActor= isolation. 41isolation.
46 42
47#+begin_src sh 43#+begin_src sh
48xcodebuild -project gitbay.xcodeproj -scheme gitbay \ 44xcodebuild -project gitbay.xcodeproj -scheme gitbay \
49 -destination 'platform=iOS Simulator,name=iPhone 17' build 45 -destination 'platform=iOS Simulator,name=iPhone 17' build
50#+end_src 46#+end_src
51 47
52Dependencies resolve over SSH ([[https://gitbay.org/krz/org-swift][krz/org-swift]]) and HTTPS 48Dependencies resolve over SSH ([[https://gitbay.org/krz/org-swift][krz/org-swift]]) and HTTPS ([[https://github.com/raspu/Highlightr][Highlightr]]), so a key
53([[https://github.com/raspu/Highlightr][Highlightr]]), so a key that can reach gitbay.org is needed to build. 49that can reach gitbay.org is needed to build.
54 50
55* Tests 51* Tests
56 52
57=gitbayTests= is hermetic and runs offline; network calls go through a 53=gitbayTests= is hermetic and runs offline; network calls go through a stubbed
58stubbed =URLProtocol=. 54=URLProtocol=.
59 55
60#+begin_src sh 56#+begin_src sh
61xcodebuild -project gitbay.xcodeproj -scheme gitbay \ 57xcodebuild -project gitbay.xcodeproj -scheme gitbay \
@@ -63,9 +59,9 @@ xcodebuild -project gitbay.xcodeproj -scheme gitbay \
63 test -only-testing:gitbayTests 59 test -only-testing:gitbayTests
64#+end_src 60#+end_src
65 61
66=gitbayUITests= includes a live smoke suite that talks to a real instance. 62=gitbayUITests= includes a live smoke suite that talks to a real instance. It is
67It is opt-in, and skips without both variables. Environment reaches the 63opt-in, and skips without both variables. Environment reaches the test runner
68test runner only with the =TEST_RUNNER_= prefix: 64only with the =TEST_RUNNER_= prefix:
69 65
70#+begin_src sh 66#+begin_src sh
71TEST_RUNNER_GITBAY_UITEST_LIVE=1 \ 67TEST_RUNNER_GITBAY_UITEST_LIVE=1 \
@@ -74,16 +70,10 @@ xcodebuild -project gitbay.xcodeproj -scheme gitbay \
74 -destination 'platform=iOS Simulator,name=iPhone 17' test 70 -destination 'platform=iOS Simulator,name=iPhone 17' test
75#+end_src 71#+end_src
76 72
77The live suite depends on fixtures it does not create; each is guarded by
78a skip rather than seeded, since seeding one would mean a push.
79
80* Contributing 73* Contributing
81 74
82Merge requests, not pull requests — this is gitbay, not GitHub. =gh= does 75To contribute, create a merge request with your changes:
83nothing here.
84 76
85#+begin_src sh 77#+begin_src sh
86gitbay mr create --source <branch> --target main --title "..." 78gitbay mr create --source <branch> --target main --title "..."
87#+end_src 79#+end_src
88
89Bundle identifier =org.gitbay.gitbay=. Releases are tagged =vX.Y.Z=.