#+title: gitbay-ios #+author: Christian Cleberg A native iOS client for [[https://gitbay.org][gitbay]], a CLI-first git forge. This app is a reading, reviewing and responding surface for the times you are not at a keyboard. # TODO: on publish, replace with the App Store badge: # [[https://apps.apple.com/app/id][https://toolbox.marketingtools.apple.com/api/v2/badges/download-on-the-app-store/black/en-us]] * What it does | Area | What's there | |----------------------------+-------------------------------------------------------------------------------------------------------------------------------| | Dashboard | Your review queue, assigned work, open merge requests and issues, pinned repositories, recent activity | | 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 | | Merge requests and issues | Lists, detail, comments, milestones, and a unified diff | | Builds | Build list, job picker, logs | | Releases and wiki | Read from the same instance | | Explore, feed and profiles | Discovery, activity, contribution graph | | 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 | * Signing in As =gitbay= requires, your SSH key is your identity. To login to the mobile app, you will need to mint a bearer token: #+begin_src sh gitbay auth token create --name iphone --scope full --ttl 90d #+end_src Alternatively, =--scope read= works too, but a read-only token cannot comment or merge. Any gitbay instance works. You just need to enter the host at sign-in. * Building Requires Xcode with an iOS 26.5 SDK. Swift 6 language mode, default =MainActor= isolation. #+begin_src sh xcodebuild -project gitbay.xcodeproj -scheme gitbay \ -destination 'platform=iOS Simulator,name=iPhone 17' build #+end_src Dependencies resolve over SSH ([[https://gitbay.org/krz/org-swift][krz/org-swift]]) and HTTPS ([[https://github.com/raspu/Highlightr][Highlightr]]), so a key that can reach gitbay.org is needed to build. * Tests =gitbayTests= is hermetic and runs offline; network calls go through a stubbed =URLProtocol=. #+begin_src sh xcodebuild -project gitbay.xcodeproj -scheme gitbay \ -destination 'platform=iOS Simulator,name=iPhone 17' \ test -only-testing:gitbayTests #+end_src =gitbayUITests= includes a live smoke suite that talks to a real instance. It is opt-in, and skips without both variables. Environment reaches the test runner only with the =TEST_RUNNER_= prefix: #+begin_src sh TEST_RUNNER_GITBAY_UITEST_LIVE=1 \ TEST_RUNNER_GITBAY_UITEST_TOKEN= \ xcodebuild -project gitbay.xcodeproj -scheme gitbay \ -destination 'platform=iOS Simulator,name=iPhone 17' test #+end_src * Contributing To contribute, create a merge request with your changes: #+begin_src sh gitbay mr create --source --target main --title "..." #+end_src