summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-08-02 15:29:31 -0500
committerChristian Cleberg <[email protected]>2026-08-02 15:35:31 -0500
commitfe83ff502ffcaa59c7a22471c634d565972e7644 (patch)
treefd17e5bc79d79973209ef712d44ede00b3a009e4
parenta6ed5c3546300994ab4d8b9840445d384b0083ed (diff)
downloaddomain-dig-main.tar.gz
domain-dig-main.tar.bz2
domain-dig-main.zip
convert readme to nfo; convert docs to txt; relicense to 0bsdHEADmain
-rw-r--r--Docs/ACCESSIBILITY.txt (renamed from Docs/ACCESSIBILITY.md)0
-rw-r--r--Docs/ARCHITECTURE.txt (renamed from Docs/ARCHITECTURE.md)4
-rw-r--r--Docs/data-migration.txt (renamed from Docs/data-migration.md)2
-rw-r--r--Docs/local-api.txt (renamed from Docs/local-api.md)0
-rw-r--r--LICENSE33
-rw-r--r--README.md108
-rw-r--r--README.nfo74
-rw-r--r--RELEASE_ROADMAP.txt (renamed from RELEASE_ROADMAP.md)4
-rw-r--r--SECURITY.txt (renamed from SECURITY.md)0
9 files changed, 91 insertions, 134 deletions
diff --git a/Docs/ACCESSIBILITY.md b/Docs/ACCESSIBILITY.txt
index 6e82055..6e82055 100644
--- a/Docs/ACCESSIBILITY.md
+++ b/Docs/ACCESSIBILITY.txt
diff --git a/Docs/ARCHITECTURE.md b/Docs/ARCHITECTURE.txt
index d0d2108..dbf66d1 100644
--- a/Docs/ARCHITECTURE.md
+++ b/Docs/ARCHITECTURE.txt
@@ -76,14 +76,14 @@ The app remains local-first. Purchase and entitlement code is local app infrastr
- `DomainReportExporter`
- `LocalAPIModels`
-`v5.0.0` stabilized this contract: `LocalAPIContract` is the single source of truth for the `v1` wire version and JSON encoder, the response envelope and payloads are documented, and the shape is regression-locked by `LocalAPIContractTests`. See [local-api.md](local-api.md) for the endpoint and compatibility reference, and [data-migration.md](data-migration.md) for how the persisted store is versioned across app updates.
+`v5.0.0` stabilized this contract: `LocalAPIContract` is the single source of truth for the `v1` wire version and JSON encoder, the response envelope and payloads are documented, and the shape is regression-locked by `LocalAPIContractTests`. See [local-api.txt](local-api.txt) for the endpoint and compatibility reference, and [data-migration.txt](data-migration.txt) for how the persisted store is versioned across app updates.
## Testing
Two test targets run from the `DomainDig` scheme's test action:
- `DomainDigTests` — unit coverage of the deterministic core: `DomainReportBuilder`, `DomainReportExporter`, `DiffService`, `DomainDataPortabilityService` (merge/replace dedup), the store-migration runner, and the Local API contract. `SnapshotFixture` builds the deep `LookupSnapshot`/`DomainReport` models through the real builder so tests construct inputs without wiring every field.
-- `DomainDigUITests` — Apple's `performAccessibilityAudit()` over every primary screen at default and largest Dynamic Type, plus metadata and screenshot assertions. See [ACCESSIBILITY.md](ACCESSIBILITY.md).
+- `DomainDigUITests` — Apple's `performAccessibilityAudit()` over every primary screen at default and largest Dynamic Type, plus metadata and screenshot assertions. See [ACCESSIBILITY.txt](ACCESSIBILITY.txt).
A plain `xcodebuild test` (and CI) runs both. The unit net went in first in `v5.0.0` and is what made the god-file decomposition safe to attempt.
diff --git a/Docs/data-migration.md b/Docs/data-migration.txt
index 1ae4030..c97a1be 100644
--- a/Docs/data-migration.md
+++ b/Docs/data-migration.txt
@@ -77,7 +77,7 @@ backup export/import). Its contract:
4. Add a `DataMigrationServiceTests` case that seeds a pre-`N` fixture, runs
`migrateIfNeeded`, and asserts the upgrade plus the version stamp.
5. If the change also alters the export shape, bump
- `DomainDigBackup.currentSchemaVersion` and update `Docs/local-api.md` /
+ `DomainDigBackup.currentSchemaVersion` and update `Docs/local-api.txt` /
backup validation as needed.
## Backup import compatibility
diff --git a/Docs/local-api.md b/Docs/local-api.txt
index a0cebdc..a0cebdc 100644
--- a/Docs/local-api.md
+++ b/Docs/local-api.txt
diff --git a/LICENSE b/LICENSE
index fd9f61b..419813e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,12 @@
-MIT License
-
-Copyright (c) 2026 Christian Cleberg
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+Copyright (C) 2026 krazy warez
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/README.md b/README.md
deleted file mode 100644
index 961560c..0000000
--- a/README.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# DomainDig
-
-[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=krz_domain-dig&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=krz_domain-dig)
-[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=krz_domain-dig&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=krz_domain-dig)
-[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=krz_domain-dig&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=krz_domain-dig)
-[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=krz_domain-dig&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=krz_domain-dig)
-[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
-
-[![App Store Badge](https://krz.sh/storebutton.svg)](https://apps.apple.com/us/app/domaindig/id6760368004)
-
-DomainDig is a local-first iOS domain inspection toolkit for DNS, web, ownership, monitoring, reporting, and audit workflows. The app gathers a point-in-time domain snapshot, normalizes it into a canonical `DomainReport`, and keeps user data on device unless the user exports, shares, or syncs it.
-
-## Features
-
-- Domain inspection for DNS records, email security, TLS certificates, HTTP headers, redirects, IP geolocation, reachability, open ports, RDAP, ownership, subdomain discovery, and availability.
-- Canonical `DomainReport` output used by the app UI and exports.
-- History snapshots with change summaries, risk scoring, notes, and saved domain context.
-- Dashboard, watchlist, monitoring, workflows, batch results, integrations, and data portability screens.
-- Audit Mode with sessions, checklist progress, reviewer notes, findings, evidence snapshots, audit timelines, and markdown/json/pdf export.
-- Backup and restore for tracked domains, history, audit sessions, workflows, monitoring settings/logs, app settings, and local feature metadata.
-- Local-first operation with no required backend.
-- Optional local API surface for automation-compatible report output.
-
-## Data And Privacy
-
-DomainDig stores local app data in on-device persistence. Backup exports can include tracked domains, lookup history, audit sessions, workflow definitions, monitoring configuration, monitoring logs, app settings, and cached feature metadata. Imports are processed on device.
-
-Network inspection requests are made only to perform the requested domain checks or configured resolver lookups. The app does not require a hosted DomainDig backend.
-
-## Development
-
-### Requirements
-
-- Xcode with current iOS SDK support
-- iOS Simulator or physical iOS device
-- Swift/Xcode support for filesystem-synchronized groups used by the project
-
-### Getting Started
-
-1. Clone the repository.
- ```sh
- git clone https://github.com/krazywarez/domain-dig.git
- ```
-2. Open `DomainDig.xcodeproj` in Xcode.
-3. Select the `DomainDig` scheme.
-4. Build and run on a simulator or device.
-
-### Useful Checks
-
-```sh
-xcodebuild -project DomainDig.xcodeproj -scheme DomainDig -destination 'platform=iOS Simulator,name=iPhone 16' build
-```
-
-The app and local API share the canonical report pipeline through `DomainInspectionService`, `DomainReportBuilder`, and `DomainReportExporter`. The Local API's endpoints, response envelope, and `v1` compatibility policy are documented in [Docs/local-api.md](Docs/local-api.md). How the on-device store evolves across app versions is documented in [Docs/data-migration.md](Docs/data-migration.md).
-
-### Tests
-
-Unit coverage of the deterministic core — `DomainReportBuilder`, `DomainReportExporter`, `DiffService`, `DomainDataPortabilityService` (merge/replace dedup), the migration runner, and the Local API contract — lives in the `DomainDigTests` target:
-
-```sh
-xcodebuild test -project DomainDig.xcodeproj -scheme DomainDig -destination 'platform=iOS Simulator,name=iPhone 16' -only-testing:DomainDigTests
-```
-
-The `DomainDig` scheme's test action runs both `DomainDigTests` and the `DomainDigUITests` accessibility audit, so a plain `xcodebuild test` (and CI) exercises both.
-
-### Accessibility Audit
-
-`DomainDigUITests` runs `performAccessibilityAudit()` over every primary screen,
-at default and at the largest accessibility text size.
-
-```sh
-./Scripts/audit-a11y.sh # oldest supported + newest runtime
-./Scripts/audit-a11y.sh floor # oldest supported runtime only (~85s)
-```
-
-Findings are **reported, not enforced** — they are the burndown list for the
-accessibility pass. Widen `AccessibilityAuditHarness.enforcedAuditTypes` to turn
-a category into a build failure as each phase lands.
-
-Optional pre-push hook, which runs the floor audit when Swift or project files
-change:
-
-```sh
-git config core.hooksPath .githooks
-```
-
-See [Docs/ACCESSIBILITY.md](Docs/ACCESSIBILITY.md) for why coverage is split
-between this script and CI.
-
-## Release Planning
-
-See `RELEASE_ROADMAP.md` for the semver release history from `v4.4.1` through the `v5.0.0` contract-stabilization milestone.
-
-## Contributing
-
-Contributions are welcome. Keep changes scoped, include tests or build verification when behavior changes, and open a pull request with a clear summary of user-facing impact.
-
-## Security
-
-If you discover a security issue, see `SECURITY.md`.
-
-## License
-
-This project is licensed under the MIT License. See `LICENSE`.
-
-## Contact
-
-Questions or feedback: [email protected]
diff --git a/README.nfo b/README.nfo
new file mode 100644
index 0000000..3b26ee7
--- /dev/null
+++ b/README.nfo
@@ -0,0 +1,74 @@
+┌──────────────────────────────────────────────────────────────┐
+│ D O M A I N D I G [ KRZ ] krz.sh │
+└──────────────────────────────────────────────────────────────┘
+
+WHAT
+ local-first ios domain inspection toolkit. dns, web, ownership,
+ monitoring, reporting, audit. takes a point-in-time snapshot of a
+ domain, normalizes it into a DomainReport, and keeps data on device
+ unless you export, share, or sync it.
+
+DOES
+ - inspects dns records, email security, tls certs, http headers,
+ redirects, ip geolocation, reachability, open ports, rdap,
+ ownership, subdomains, availability
+ - DomainReport output used by the ui and exports
+ - history snapshots with change summaries, risk scoring, notes
+ - dashboard, watchlist, monitoring, workflows, batch results,
+ integrations, data portability
+ - audit mode: sessions, checklists, reviewer notes, findings,
+ evidence snapshots, timelines, markdown/json/pdf export
+ - backup and restore for tracked domains, history, audit sessions,
+ workflows, monitoring, settings, feature metadata
+ - optional local api for automation-compatible output
+
+PRIVACY
+ app data lives in on-device storage. network requests go out only
+ to run the checks you asked for or the resolver you configured. no
+ hosted backend required.
+
+BUILD
+ needs xcode with a current ios sdk and a simulator or device.
+
+ git clone https://github.com/krazywarez/domain-dig.git
+
+ open DomainDig.xcodeproj, pick the DomainDig scheme, build and run.
+
+ build check:
+
+ xcodebuild -project DomainDig.xcodeproj -scheme DomainDig \
+ -destination 'platform=iOS Simulator,name=iPhone 16' build
+
+TESTS
+ deterministic core coverage lives in DomainDigTests:
+
+ xcodebuild test -project DomainDig.xcodeproj -scheme DomainDig \
+ -destination 'platform=iOS Simulator,name=iPhone 16' \
+ -only-testing:DomainDigTests
+
+ the scheme's test action also runs the DomainDigUITests
+ accessibility audit.
+
+ ./Scripts/audit-a11y.sh # oldest supported + newest
+ ./Scripts/audit-a11y.sh floor # oldest only (~85s)
+
+ findings are reported, not enforced. optional pre-push hook:
+
+ git config core.hooksPath .githooks
+
+DOCS
+ local api: Docs/local-api.txt
+ data migration: Docs/data-migration.txt
+ accessibility: Docs/ACCESSIBILITY.txt
+ releases: RELEASE_ROADMAP.txt (v4.4.1 -> v5.0.0)
+ security: SECURITY.txt
+
+LICENSE
+ 0bsd. see LICENSE.
+
+CONTACT
+
+┌──────────────────────────────────────────────────────────────┐
+│ krz.sh │
+└──────────────────────────────────────────────────────────────┘
diff --git a/RELEASE_ROADMAP.md b/RELEASE_ROADMAP.txt
index 1e6af13..dd2ca6a 100644
--- a/RELEASE_ROADMAP.md
+++ b/RELEASE_ROADMAP.txt
@@ -280,14 +280,14 @@ test net.
- **Local API `v1` contract stabilized.** `LocalAPIContract` is the single source
of truth for the wire version and JSON encoder; the response envelope and every
payload are promoted to a first-class, documented contract.
- `Docs/local-api.md` documents each endpoint, the envelope, the encoding
+ `Docs/local-api.txt` documents each endpoint, the envelope, the encoding
conventions (notably: absent optionals are omitted, not null), and a
semantic-version compatibility policy. 16 golden structure tests pin the JSON
shape so a renamed/removed field fails CI. (#45)
- **Versioned store-migration policy** for persisted snapshots, backups, audits,
workflows, and settings. `DataMigrationService` became a forward-only,
idempotent, never-downgrades runner keyed by an integer store schema version,
- replacing the one-shot boolean marker. `Docs/data-migration.md` documents the
+ replacing the one-shot boolean marker. `Docs/data-migration.txt` documents the
policy, the two independent version lines (on-device store vs. backup export),
and when to use lenient decoding vs. a migration step; legacy-fixture tests
cover it. (#46)
diff --git a/SECURITY.md b/SECURITY.txt
index a51c570..a51c570 100644
--- a/SECURITY.md
+++ b/SECURITY.txt