diff options
| -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-- | LICENSE | 33 | ||||
| -rw-r--r-- | README.md | 108 | ||||
| -rw-r--r-- | README.nfo | 74 | ||||
| -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 @@ -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 - -[](https://sonarcloud.io/summary/new_code?id=krz_domain-dig) -[](https://sonarcloud.io/summary/new_code?id=krz_domain-dig) -[](https://sonarcloud.io/summary/new_code?id=krz_domain-dig) -[](https://sonarcloud.io/summary/new_code?id=krz_domain-dig) -[](LICENSE) - -[](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 |
