summaryrefslogtreecommitdiff
path: root/RELEASE_ROADMAP.md
diff options
context:
space:
mode:
Diffstat (limited to 'RELEASE_ROADMAP.md')
-rw-r--r--RELEASE_ROADMAP.md90
1 files changed, 90 insertions, 0 deletions
diff --git a/RELEASE_ROADMAP.md b/RELEASE_ROADMAP.md
new file mode 100644
index 0000000..42600f2
--- /dev/null
+++ b/RELEASE_ROADMAP.md
@@ -0,0 +1,90 @@
+# 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.4.1`.
+
+## v4.4.1 Patch: Release Readiness (in progress)
+
+Finish the audit-mode consolidation already on the working tree, then ship a
+clean release candidate.
+
+- Resolve duplicate Audit Mode implementations; retire the prototype
+ `AuditMode.swift` / `AuditModeView.swift` and keep the `DomainDig/DomainDig/Audit*`
+ path as the single active implementation.
+- Align `AppVersion.current`, Xcode marketing version, and build number.
+- Confirm audit sessions are included in backup/restore counts, summaries, and
+ merge behavior.
+- Refresh README and architecture docs to match the shipping surface.
+
+Gate: clean Xcode build/archive before tagging.
+
+## v4.5.0 Minor: Home Screen & Shortcuts Reach
+
+Goal: put DomainDig data and actions where the user already is.
+
+- **WidgetKit widgets** (Home Screen + Lock Screen) for pinned/watchlist domains:
+ certificate expiry countdown, monitoring status, last-change indicator.
+- **App Intents / Shortcuts**: "Inspect domain", "Add to watchlist", "Run sweep"
+ as intents usable from Shortcuts, Spotlight, and the Action button.
+- Deep links from widgets and intents into the relevant domain detail screen.
+- Polished audit-mode ergonomics carried over from the prior roadmap (timeline
+ presentation, checklist/finding editing, markdown/json/pdf export affordances).
+
+## v4.6.0 Minor: Alerts, Glances & iPad
+
+Goal: make monitoring and results feel first-class across contexts.
+
+- **Live Activities** for in-flight sweeps and active monitoring alerts
+ (cert-expiry and change events at a glance).
+- **Share extension**: "Dig this domain" from Safari and the system share sheet.
+- **iPad-optimized layout** using `NavigationSplitView` (the app currently ships
+ an iPhone-style stack on iPad); adapt watchlist/detail as a two-column layout.
+- Richer, actionable notification content building on the existing
+ `LocalNotificationService` triggers.
+
+## v4.7.0 Minor: Intelligence & Comparison
+
+Goal: help users interpret and organize, not just collect.
+
+- **Domain-vs-domain comparison** (side-by-side), extending the existing
+ time-based `DiffService` to compare two distinct domains.
+- **Reputation / blocklist signals** as a new optional data source (currently
+ absent); surfaced in the report and available to monitoring alerts.
+- **Tags / folders and saved views** for the watchlist to organize large sets.
+
+## 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. Add at least characterization tests for
+`DomainDataPortabilityService` and the report builders **before** v4.7.0, so the
+v5.0.0 contract and refactor work has a safety net rather than starting from zero.