README.org

v1.4.0
gitbay-ios/README.org rendered · source · history · blame · raw

103 lines · 5694 bytes

gitbay-ios

A native iOS client for 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://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. Push registers this device against every signed-in account; a tap opens the issue, merge request or build it names
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 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:

gitbay auth token create --name iphone --scope full --ttl 90d

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

Builds with the iOS 26.5 SDK and runs on iOS 18.0 and later. Swift 6 language mode, default MainActor isolation.

xcodebuild -project gitbay.xcodeproj -scheme gitbay \
  -destination 'platform=iOS Simulator,name=iPhone 17' build

Dependencies resolve over SSH (krz/org-swift) and HTTPS (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.

xcodebuild -project gitbay.xcodeproj -scheme gitbay \
  -destination 'platform=iOS Simulator,name=iPhone 17' \
  test -only-testing:gitbayTests

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:

TEST_RUNNER_GITBAY_UITEST_LIVE=1 \
TEST_RUNNER_GITBAY_UITEST_TOKEN=<token> \
xcodebuild -project gitbay.xcodeproj -scheme gitbay \
  -destination 'platform=iOS Simulator,name=iPhone 17' test

The suite runs as the ios-smoke account, not a personal one: it owns the scratch and fixture repositories and is an admin of krz. An instance admin provisions it once with gitbayUITests/smoke-account.sh, which also writes the account's SSH key to ~/.ssh/gitbay-ios-smoke. The token above is minted with that key:

ssh -F /dev/null -i ~/.ssh/gitbay-ios-smoke -o IdentitiesOnly=yes \
  git@gitbay.org token create --name ui-smoke --scope full --ttl 30d

Setup signs in only when it finds the token screen, so a simulator signed in as another account has to be signed out first (xcrun simctl keychain <device> reset while the app is not running).

Contributing

To contribute, create a merge request with your changes:

gitbay mr create --source <branch> --target main --title "..."