a native ios client for gitbay

client ios swift

https://gitbay.org

builds: a detail screen and a job picker !20

merged cmc wants to merge krz/gitbay-ios:build-detail into main

cmc

Closes #6.

Detail. BuildLogView rendered the log and nothing else, so a build opened from the Feed showed "Build #60" and raw text — no status, ref, commit or timing. It is now BuildDetailView, loading build show alongside the log, with the sha linking to the commit as the web's page does. A queued build whose log does not exist yet still renders its header rather than failing the screen.

Trigger. The old control was a text field prefilled with the most recent job name — a guess the server then rejected. build jobs (krz/gitbay#50, deployed) lists what it will accept, so it is a menu of jobs carrying each one's schedule or tag glob, disabled where the repo has no job file. The web hides its form in exactly that case.

Status icon and colour moved onto Build; the row and the header must agree on what "failure" looks like.

Tests: 183 unit tests, plus testBuildJobsAndDetail against gitbay.org. Two notes on the UI tests:

  • The no-jobs assertion is behavioural (tap, expect no job offered) rather than isEnabled, because a disabled SwiftUI Menu still reports itself enabled to XCUITest.
  • testRepoManagementFlows was already failing on main at the merge requirements toggle — a List does not build rows it has not shown, so the assertion now scrolls the section into existence. Confirmed pre-existing by running the same test on main before this branch.