1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# DomainDig Release Roadmap
Priority lens: **new user-facing features.** The inspection engine is already
deep (DNS, DNSSEC, CAA, TLS, TLSA/DANE, email security incl. BIMI/MTA-STS, RDAP,
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.7.0`.
## v4.4.1 Patch: Release Readiness — ✅ shipped
- Consolidated Audit Mode onto the single `DomainDig/DomainDig/Audit*`
implementation and retired the prototype files.
- Aligned `AppVersion.current`, Xcode marketing version, and build number.
- Included audit sessions in backup/restore counts, summaries, and merge behavior.
- Removed the retired `DomainDigCLI` target and refreshed README/architecture docs.
## v4.5.0 Minor: Home Screen & Shortcuts Reach — ✅ shipped
Goal: put DomainDig data and actions where the user already is.
- **App Intents / Shortcuts** — `InspectDomainIntent`, `AddToWatchlistIntent`, and
`RunSweepIntent`, exposed via `DomainDigShortcuts` for Shortcuts, Spotlight, the
Action button, and Siri.
- **`domaindig://` deep links** — `inspect`, `watch`, `domain` (detail), and
`sweep`, routed in `RootTabView`.
- **WidgetKit portfolio widget** (Home Screen small/medium/large) — per-domain
health, certificate countdowns, and portfolio health counts, shared from the app
via an App Group; tapping a domain deep-links into its detail.
Deferred to a later minor: **Lock Screen accessory widget families** and a richer
per-widget "last change" indicator.
## v4.6.0 Minor: Alerts, Glances & iPad — ✅ shipped
Goal: make monitoring and results feel first-class across contexts.
- **Sweep Live Activity** — a batch/watchlist sweep drives a Live Activity with a
progress bar, current domain, and change/warning counts on the Lock Screen and
in the Dynamic Island (`SweepActivityController` around the batch pipeline).
- **Share extension** (`DomainDigShareExtension`) — "Dig Domain" accepts a web URL
from the system share sheet, extracts the host, and hands it to the app via the
App Group inbox; the app inspects it on next activation.
- **iPad-optimized layout** — `RootTabView` renders a `NavigationSplitView`
(sidebar + detail) in the regular size class and the tab bar in compact.
- **Actionable notifications** — per-domain `threadIdentifier` grouping, a
"Re-inspect" action, and taps that route into the domain's detail.
Deferred: monitoring-alert Live Activities (only the sweep activity shipped) and
Lock Screen accessory widget families (carried over from v4.5.0).
## v4.7.0 Minor: Intelligence & Comparison — ✅ shipped
Goal: help users interpret and organize, not just collect.
- **Domain-vs-domain comparison** — `DiffService.compare(domainA:domainB:)`
reuses the existing section-diff builders; `DomainCompareView` (Watchlist
toolbar → "Compare Domains") picks two tracked domains and renders the result
with the existing diff section UI.
- **Reputation / blocklist signals** — a new pluggable data source
(`ExternalDataService.reputation(domain:)`, Pro+) mirroring the existing
ownership/DNS-history/pricing enrichment pattern. Ships with no bundled
third-party endpoint; folds a listed status into risk score/factors and
insights, so it rides the existing report and monitoring change-severity
pipeline rather than needing bespoke monitoring wiring.
- **Tags and saved views** for the watchlist — freeform tags per tracked
domain, tag filter chips, and named saved filter/sort/tag presets
(UserDefaults-backed; not yet part of backup/restore).
## v4.8.0 Minor: Reporting & Sharing
Goal: turn point-in-time snapshots into shareable, scheduled deliverables.
- Scheduled report generation (markdown/json/pdf) for tracked domains.
- Stronger share affordances for reports and audit evidence.
- Export polish and consistency across app and local API output.
## v5.0.0 Major: Contract Stabilization & Engineering Health
Goal: earn long-term compatibility promises — and pay down the debt that the
feature releases above will accumulate.
- Define migration policy for persisted snapshots, backups, audits, workflows,
and settings.
- Stabilize the public local API response contract; document compatibility
guarantees and planned deprecations.
- **Establish a test target.** The project currently has no XCTest target and no
tests; add one and cover the deterministic core first — `DomainReportBuilder`,
`DomainReportExporter`, `DomainDataPortabilityService` (merge/replace dedup),
and `DiffService` — before locking down external contracts.
- **Decompose the god-files** behind that test net: `DomainViewModel.swift`
(~4.7k lines) and `ContentView.swift` (~3.8k lines) into focused units
(audit, monitoring, workflows, portability).
## Cross-cutting note
New feature surfaces (widgets, intents, extensions) each add a target and a
persistence/entitlement seam. This project still has **no XCTest target** —
v4.5.0 through v4.7.0 all shipped without the characterization-test safety net
originally recommended before v4.7.0. That gap is now larger (comparison,
reputation, and tags/saved-views all touch persisted models with hand-written
backward-compatible decoders) and should be the very first thing v5.0.0 does,
not a later item within it.
|