aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-07-20 15:05:19 -0500
committerChristian Cleberg <[email protected]>2026-07-20 15:07:16 -0500
commitd69aa35d8843e45e1d13bae82259043787a661b0 (patch)
tree81a18f3c65a6d45f4e5d66decf8b5052eba92e84
parent1c3d19b233f135a059f5d111dd1a7514af25ed3f (diff)
downloaddomain-dig-d69aa35d8843e45e1d13bae82259043787a661b0.tar.gz
domain-dig-d69aa35d8843e45e1d13bae82259043787a661b0.tar.bz2
domain-dig-d69aa35d8843e45e1d13bae82259043787a661b0.zip
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.
-rw-r--r--DomainDig.xcodeproj/project.pbxproj24
-rw-r--r--DomainDig/AppVersion.swift2
-rw-r--r--RELEASE_ROADMAP.md26
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