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