summaryrefslogtreecommitdiff
path: root/LocalAPIService.swift
Commit message (Collapse)AuthorAgeFilesLines
* fix: surface the real NWListener error and drop conflicting ↵Christian Cleberg11 days1-5/+4
| | | | | | | | | | | | | | | | | | requiredLocalEndpoint (#30) The Local API failed to start with a generic "Could not start Local API on port 47821" and no actionable cause. Two problems: 1. The NWListener construction catch discarded the caught error and substituted a generic string, so the real NWError was never surfaced or logged. Now the underlying error is logged via stateLogger (matching the .failed branch) and appended to the thrown message. 2. parameters.requiredLocalEndpoint pinned 127.0.0.1:<port> while the same port was passed as the listener's on: argument. Pinning a required local endpoint conflicts with the listener's own port assignment; acceptLocalOnly already constrains binding to the local link. Dropped requiredLocalEndpoint, keeping acceptLocalOnly + allowLocalEndpointReuse.
* fix: StoreKit config path and Swift 6 concurrency warningsChristian Cleberg2026-07-201-6/+8
| | | | | | | | | | | | | | | | | | The StoreKitConfigurationFileReference added in #11 used one '../' too many, resolving outside the repository. Xcode resolves it relative to the .xcodeproj's xcshareddata directory, so two levels reaches the repo root. SweepActivityAttributes is now explicitly nonisolated. The app target sets SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor while the widget target does not, so a type shared by both inferred a main-actor-isolated ActivityAttributes conformance that ActivityKit cannot use from its concurrent contexts. LocalAPIService's logger closures captured self strongly while their inner Tasks declared [weak self]. The weak capture is now on the outer closure and bound before the Task, so the concurrently-executing closure references an immutable strong local rather than the weak capture.
* DomainDig v4.2.0: Add a local-only HTTP API layer for DomainDigChristian Cleberg2026-04-261-0/+1029
Expose DomainDig as a programmable local domain intelligence engine over localhost with explicit user opt-in and token-based authentication. Highlights: - add a localhost-only API server with safe start/stop lifecycle - require a local token for every request and store it in Keychain - add read endpoints for portfolio, domains, history, events, and monitoring - add inspection endpoints that reuse the existing inspection engine - add monitoring enable/disable control endpoints - add structured JSON response envelopes with API versioning - add lightweight capped request logging with clear/reset support - add a Settings UI for Local API enablement, token management, status, and logs - start the server on launch only when enabled - include Local API secrets in local data reset cleanup This is the first programmability release for DomainDig and establishes the foundation for Shortcuts, scripts, and other local automation workflows.