#+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. [[https://apps.apple.com/us/app/gitbay/id6806399095][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, and the unread count | | 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, and a compare between any two refs | | Merge requests | Lists and detail with a unified diff, comments and review threads, review verdicts and requests, draft and ready, retarget, milestones, and the stack a merge request sits in | | Issues | Lists and detail, comments, labels with the colours the web paints them, assignees and milestones, filtering by label, assignee, author and milestone | | Search | Title-and-body search within a repository, file contents across one repository, and the whole instance for repositories, issues and merge requests | | Notifications | The inbox, unread or all, marked read singly or in bulk | | Repository actions | Fork, bookmark, watch and mute, pin, archive, visibility, topics, branch protection, and dependency checks with their status | | Builds | Build list, job picker, logs, and cancelling one that is queued or running | | Releases and wiki | Releases list, detail, create, edit and delete. Wikis read from the same instance | | Organisations | Members and roles, teams and their repository grants, create and rename | | Your account | SSH and PGP keys, email addresses, and your profile — description, website, about text and links | | Explore, feed and profiles | Discovery, activity, contribution graph | | Markup | Bodies and comments are written and rendered in the format they were stored in. Org renders natively through [[https://gitbay.org/krz/org-swift][OrgSwiftUI]] — selectable text, Dynamic Type, VoiceOver — rather than in a web view | Everything the CLI can do reaches the app, except what is SSH-only by design: minting an API token, and deleting or transferring a repository, both of which want a typed confirmation or carry a credential. * 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