From fe1ccc69661603d419a642a450e4ac9e1258adb0 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Mon, 13 Apr 2026 19:44:44 -0500 Subject: fix: centralize URLs, tighten models, and polish SwiftUI bindings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add shared HutchDeepLinkURL constants for app, widgets, and tests. - Bump marketing version to 3.1.2 and build to 70 (app + widget extension). - Point Hutch stats default base URL at HutchStatsAPI; add SRHTWebURL status incident feed and reuse it from SystemStatusService. - Group Project into Metadata and Resources; split ContributionStatsResponse into StatsWindow and StatsTotals with updated decoding and tests. - Replace @Bindable usage with explicit Bindings in Profile, Projects list, and repository ACL flows; simplify Home pinned-item helper; add no-op bodies on cancel alert buttons where the compiler requires a statement. - Move repository row build-status indicator next to the relative-updated caption and reserve a fixed 8×8 slot so the row does not jump when status loads. - Use NSString.lastPathComponent for build artifact filenames; collapse duplicate ACL error branches; minor HutchStats HTTP and XMLParserDelegate cleanups. - Point widgets at HutchDeepLinkURL helpers; align tests with the new response and URL types. --- Shared/HutchDeepLinkURLs.swift | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Shared/HutchDeepLinkURLs.swift (limited to 'Shared') diff --git a/Shared/HutchDeepLinkURLs.swift b/Shared/HutchDeepLinkURLs.swift new file mode 100644 index 0000000..9b60086 --- /dev/null +++ b/Shared/HutchDeepLinkURLs.swift @@ -0,0 +1,23 @@ +import Foundation + +/// Canonical `hutch://` URLs for widgets, tests, and in-app links. +enum HutchDeepLinkURL { + static let home = URL(string: "hutch://home")! + static let emptyHost = URL(string: "hutch://")! + static let repositoryGit = URL(string: "hutch://git/~user/repo")! + static let ticket = URL(string: "hutch://todo/~owner/tracker/42")! + static let buildJob = URL(string: "hutch://builds/12345")! + static let trackers = URL(string: "hutch://trackers")! + static let builds = URL(string: "hutch://builds")! + static let repositories = URL(string: "hutch://repositories")! + static let status = URL(string: "hutch://status")! + static let lookup = URL(string: "hutch://lookup")! + static let unknown = URL(string: "hutch://unknown")! + static let invalidTicketId = URL(string: "hutch://todo/~owner/tracker/abc")! + static let invalidBuildId = URL(string: "hutch://builds/abc")! +} + +/// Default Hutch Stats API base URL (mirrors `AppConfiguration` fallback). +enum HutchStatsAPI { + static let defaultBaseURL = URL(string: "https://hutch-stats.zerolabs.sh")! +} -- cgit v1.2.3