summaryrefslogtreecommitdiff
path: root/RELEASE_ROADMAP.md
diff options
context:
space:
mode:
Diffstat (limited to 'RELEASE_ROADMAP.md')
-rw-r--r--RELEASE_ROADMAP.md33
1 files changed, 32 insertions, 1 deletions
diff --git a/RELEASE_ROADMAP.md b/RELEASE_ROADMAP.md
index c09639f..30158e7 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.2`.
+Current version: `v4.8.3`.
## v4.4.1 Patch: Release Readiness — ✅ shipped
@@ -154,6 +154,37 @@ Goal: close the UAT follow-ups and make failures legible instead of silent.
synced against App Store Connect. Registered in the project without target
membership so it is not bundled into shipping builds.
+## v4.8.3 Patch: Static Analysis Cleanup — ✅ shipped
+
+Goal: clear the SonarCloud new-code backlog without changing behavior.
+
+- **Dead confidence conditionals fixed** (4 bugs) —
+ `DomainInspectionService`'s `confidenceFor*` helpers each returned
+ `error == nil ? .low : .low`. The conditional was inert, so the unused `error`
+ parameter was dropped alongside it.
+- **Identical switch branches merged** — 14 sites in `DomainViewModel` handled
+ `.empty(message)` and `.error(message)` with byte-identical bodies; they now
+ share one `case let .empty(message), let .error(message):`.
+- **Duplicate implementations consolidated** — `clearPresentedResults()` now
+ delegates to `reset()`, `String.nonEmpty` was folded into `nilIfEmpty`, and
+ `ExportFormat.id` derives from `fileExtension`.
+- **Nested ternaries extracted** — grade-to-tone and impact-to-color mappings
+ became `TLSGrade.tone`, `EmailSecurityGrade.tone`, and
+ `ChangeImpactClassification.color`, replacing `ContentView`'s private
+ `impactColor` and the duplicate mapping in `BatchResultsView`.
+- **Remaining smells** — empty closures and singleton inits documented, unused
+ protocol-conformance parameters marked `_`, `CloudSyncTrigger.import` renamed
+ to `imported` (raw value preserved), `_serverTrust`/`_tlsMetadata` renamed,
+ nested `if`s merged in the DER parser, and deep closure nesting flattened in
+ `PortScanService` and `IntegrationService`.
+
+Left open deliberately: `swift:S107` (initializer parameter counts on model
+memberwise inits), `swift:S115` (constants mirroring DoH/ipapi JSON keys),
+`swift:S1075` (false positives on `https://` literals), and two `swift:S117`
+hits on SwiftUI `$binding` shorthand in `AuditModeView`, which cannot be
+renamed. These want a *Won't Fix* / *Safe* resolution in SonarCloud rather than
+a code change.
+
## v5.0.0 Major: Contract Stabilization & Engineering Health
Goal: earn long-term compatibility promises — and pay down the debt that the