From d69aa35d8843e45e1d13bae82259043787a661b0 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Mon, 20 Jul 2026 15:05:19 -0500 Subject: v4.8.1: Bump version and mark shipped in roadmap Bump AppVersion/marketing version to 4.8.1 and build number to 41 across the app, widget, and share extension targets. Mark v4.8.1 (scheduled report tap target, completed Pro gate, markdown underline rendering, DNS record dedup, inspect tab keyboard behavior) shipped in RELEASE_ROADMAP.md, and note the three follow-ups filed during UAT. --- DomainDig.xcodeproj/project.pbxproj | 24 ++++++++++++------------ DomainDig/AppVersion.swift | 2 +- RELEASE_ROADMAP.md | 26 +++++++++++++++++++++++++- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/DomainDig.xcodeproj/project.pbxproj b/DomainDig.xcodeproj/project.pbxproj index 69a283a..136ab85 100644 --- a/DomainDig.xcodeproj/project.pbxproj +++ b/DomainDig.xcodeproj/project.pbxproj @@ -495,7 +495,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = DomainDig/DomainDig.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 40; + CURRENT_PROJECT_VERSION = 41; DEVELOPMENT_TEAM = ZCNAX3VL9D; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; @@ -512,7 +512,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 4.8.0; + MARKETING_VERSION = 4.8.1; PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DomainDig; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -532,7 +532,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = DomainDig/DomainDig.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 40; + CURRENT_PROJECT_VERSION = 41; DEVELOPMENT_TEAM = ZCNAX3VL9D; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; @@ -549,7 +549,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 4.8.0; + MARKETING_VERSION = 4.8.1; PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DomainDig; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -568,7 +568,7 @@ APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_ENTITLEMENTS = DomainDigWidget/DomainDigWidget.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 40; + CURRENT_PROJECT_VERSION = 41; DEVELOPMENT_TEAM = ZCNAX3VL9D; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = DomainDigWidget/Info.plist; @@ -579,7 +579,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 4.8.0; + MARKETING_VERSION = 4.8.1; PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DomainDig.DomainDigWidget; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -597,7 +597,7 @@ APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_ENTITLEMENTS = DomainDigWidget/DomainDigWidget.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 40; + CURRENT_PROJECT_VERSION = 41; DEVELOPMENT_TEAM = ZCNAX3VL9D; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = DomainDigWidget/Info.plist; @@ -608,7 +608,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 4.8.0; + MARKETING_VERSION = 4.8.1; PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DomainDig.DomainDigWidget; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -626,7 +626,7 @@ APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_ENTITLEMENTS = DomainDigShareExtension/DomainDigShareExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 40; + CURRENT_PROJECT_VERSION = 41; DEVELOPMENT_TEAM = ZCNAX3VL9D; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = DomainDigShareExtension/Info.plist; @@ -637,7 +637,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 4.8.0; + MARKETING_VERSION = 4.8.1; PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DomainDig.DomainDigShareExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -655,7 +655,7 @@ APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_ENTITLEMENTS = DomainDigShareExtension/DomainDigShareExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 40; + CURRENT_PROJECT_VERSION = 41; DEVELOPMENT_TEAM = ZCNAX3VL9D; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = DomainDigShareExtension/Info.plist; @@ -666,7 +666,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 4.8.0; + MARKETING_VERSION = 4.8.1; PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DomainDig.DomainDigShareExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/DomainDig/AppVersion.swift b/DomainDig/AppVersion.swift index 137fde9..bdd0518 100644 --- a/DomainDig/AppVersion.swift +++ b/DomainDig/AppVersion.swift @@ -2,6 +2,6 @@ import Foundation enum AppVersion { nonisolated static var current: String { - "4.8.0" + "4.8.1" } } diff --git a/RELEASE_ROADMAP.md b/RELEASE_ROADMAP.md index 3bb7966..dfe645e 100644 --- a/RELEASE_ROADMAP.md +++ b/RELEASE_ROADMAP.md @@ -6,7 +6,7 @@ ports, geolocation, subdomains, availability). The next several releases invest in *reach and surfacing* — getting that data onto more iOS surfaces and into more workflows — rather than adding raw protocol checks. -Current version: `v4.8.0`. +Current version: `v4.8.1`. ## v4.4.1 Patch: Release Readiness — ✅ shipped @@ -96,6 +96,30 @@ Deferred/scoped out: scheduled-report settings and logs are UserDefaults-only v4.7.0's watchlist saved views — this is local automation config, not user-authored content. +## v4.8.1 Patch: Reporting & Sharing Fixes — ✅ shipped + +Goal: fix what UAT of v4.8.0 turned up. + +- **Scheduled reports were unreachable manually** — the Overview section wrapped + every control in a single `VStack` inside one `List` row, so SwiftUI collapsed + them into one tap target and the Cadence `Picker` captured taps meant for + "Generate Now". Each control is now its own row. +- **Pro gate completed on that screen** — `.automatedMonitoring` previously + disabled only the toggle, leaving both pickers and "Generate Now" interactive + on Free where they silently no-opped against the service-side guard. +- **Markdown/PDF reports rendered `=` underlines as bullets** — the plain-text + transform only recognized `-`, so `batchText`'s title underline and its + 48-character inter-report separators leaked through as literal list items. +- **Duplicate DNS record values** — the report concatenated apex and wildcard + records without dedup, listing every value twice on domains with wildcard DNS. +- **Inspect tab keyboard behavior** — removed the "Dismiss Keyboard" toolbar + button and the launch-time focus that raised the keyboard on app open. + +Known open follow-ups filed during UAT: integration events to a disabled target +vanish with no delivery-log row (#8), "Process Queue Now" does not force a +backed-off retry (#9), and a monitoring snapshot fallback silently reports "No +meaningful changes" (#10). + ## v5.0.0 Major: Contract Stabilization & Engineering Health Goal: earn long-term compatibility promises — and pay down the debt that the -- cgit v1.2.3