diff --git a/Info.plist b/Info.plist index b5bfff9..118f331 100644 --- a/Info.plist +++ b/Info.plist @@ -10,8 +10,8 @@ CFBundleDevelopmentRegionen CFBundleLocalizationsen CFBundlePackageTypeAPPL - CFBundleShortVersionString0.8.0 - CFBundleVersion13 + CFBundleShortVersionString0.8.1 + CFBundleVersion14 LSMinimumSystemVersion14.0 LSUIElement NSHighResolutionCapable diff --git a/README.md b/README.md index 9b20954..064fca5 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ Broschy is a small, native macOS companion that lives around your MacBook's notc ## Get started -**Current version: 0.8.0.** Broschy is an early, source-first release. Build it locally with **Xcode 26 or later** and its macOS SDK. The app's deployment target is **macOS 14**; hands-on validation has been on macOS 26 and Apple Silicon. The build produces an app for your Mac's architecture. +**Current version: 0.8.1.** Broschy is an early, source-first release. Build it locally with **Xcode 26 or later** and its macOS SDK. The app's deployment target is **macOS 14**; hands-on validation has been on macOS 26 and Apple Silicon. The build produces an app for your Mac's architecture. ```sh git clone https://github.com/SculptTechProject/Broschy.git @@ -115,6 +115,8 @@ In **Signals → Build Watch**, connect one GitHub.com repository or pull reques Broschy uses your existing GitHub CLI access and checks up to ten recent workflow runs about every 30 seconds. Failed requests retry less often. A workflow observed active and then completed can show its result in the notch for 12 seconds; existing completed runs on first connection are silent, and repeated results are deduplicated. Runs that finish entirely between polls appear in the list but do not trigger a compact result. Compact visibility and Quiet Focus still apply. +Each row shows a fixed **Updated** date and time from GitHub, not a running duration. A completed workflow appears after the next successful poll; use Refresh for an immediate check. + Open a workflow in GitHub to inspect it. Build Watch only reads status: it does not download workflow logs, rerun jobs, cancel workflows, or merge pull requests. GitHub Enterprise hosts and watching several targets at once are outside this version. Disconnect to stop polling. ## Terminal signals diff --git a/Sources/Broschy/BuildWatchView.swift b/Sources/Broschy/BuildWatchView.swift index 56e9cf3..a0f2c6b 100644 --- a/Sources/Broschy/BuildWatchView.swift +++ b/Sources/Broschy/BuildWatchView.swift @@ -180,6 +180,12 @@ struct BuildWatchView: View { private func row(_ run: BuildWatchRun) -> some View { let stale = !builds.isLive let color = stale ? Ink.muted : run.state.tint + // GitHub's updated_at is metadata freshness, not an execution duration. + // A relative date keeps ticking even after the workflow has completed. + let updateTime = run.updatedAt.formatted(.dateTime.month(.abbreviated).day() + .hour(.twoDigits(amPM: .omitted)).minute(.twoDigits).locale(Locale(identifier: "en_GB"))) + let fullUpdateTime = run.updatedAt.formatted(.dateTime.year().month(.abbreviated).day() + .hour(.twoDigits(amPM: .omitted)).minute(.twoDigits).second(.twoDigits).locale(Locale(identifier: "en_GB"))) return Button { NSWorkspace.shared.open(run.htmlURL) } label: { HStack(spacing: 10) { Image(systemName: stale && run.isActive ? "questionmark.circle" : run.state.symbol) @@ -195,7 +201,7 @@ struct BuildWatchView: View { VStack(alignment: .trailing, spacing: 3) { Text(stale && run.isActive ? "Last seen active" : run.statusText) .font(.system(size: 10, weight: .medium)).foregroundStyle(color).lineLimit(1) - Text(run.updatedAt, style: .relative) + Text("Updated \(updateTime)") .font(.system(size: 9)).foregroundStyle(Ink.muted).lineLimit(1) } Image(systemName: "arrow.up.right").font(.system(size: 9)).foregroundStyle(Ink.muted) @@ -203,8 +209,8 @@ struct BuildWatchView: View { .padding(.vertical, 9).contentShape(Rectangle()) } .buttonStyle(QuietButtonStyle()) - .help("\(run.name) · \(run.statusText) · Open workflow on GitHub") - .accessibilityLabel("\(run.name), \(stale && run.isActive ? "last seen active" : run.statusText). Open workflow on GitHub.") + .help("\(run.name) · \(run.statusText) · Last GitHub update: \(fullUpdateTime) · Open workflow on GitHub") + .accessibilityLabel("\(run.name), \(stale && run.isActive ? "last seen active" : run.statusText). Updated \(fullUpdateTime). Open workflow on GitHub.") } private var connectionDetail: String { diff --git a/docs/assets/build-watch-dark.png b/docs/assets/build-watch-dark.png index 4ee72d2..38749cf 100644 Binary files a/docs/assets/build-watch-dark.png and b/docs/assets/build-watch-dark.png differ