Build log: lines per step, jump, search, polling !137

merged merged by cmc on 2026-09-30 02:15 UTC · krz/gitbay-ios:build-log into main

Discussion

cmc
  • Log rendered as wrapped monospaced lines in a LazyVStack; the single Text in a two-axis ScrollView drew nothing at 1,300+ lines.
  • Split per $ <step> line with the same rules as SplitBuildLog/FailedSection; pinned step headers, failed step open (with failed_reason), others collapsible. Live builds open their latest step; passed builds start folded.
  • Toolbar: Jump to failure (end of the failed step), Jump to end. .searchable filters lines under their step.
  • Polls every 3s while pending/queued/running; the .task cancels it on disappear. A failed poll keeps the log.
  • ran <duration> after finished, from duration_s.
  • VoiceOver: each line is one element (blank lines hidden); step headers are header buttons with step, command, failed and expanded state.

Closes #15