Skip to content

Add opt-in App Health native session reporting #48

Closed

Description

@sarthakagrawal927

Released acceptance - 5 October 2026

Released in 0.1.4 build113, tag v0.1.4-113, exact source 94fe203bd663f9d058e72ad3f9ab2c5af9130483. Implementation PR55, label refinement PR57, protected signed release, public download.

Tagged Foundation-only App Health Swift SDK0.1.0 and strict optional per-user public-key seam are shipped. Ordered foreground/background/termination lifecycle and fake-client/fake-HTTP payload checks pass. No file, scan, device or identity data is included. README, distribution/public privacy disclosure and MIT acknowledgments are updated. Live reporting remains Unknown/unmeasured: owner-created native key and runtime receipt are deliberately outside this issue; no live key was generated or installed.

Validation: full CI256 Swift tests, optimized build, Python packaging checks and shared candidate pass. Protected exact-tag candidate, signing/notarization, public feed/download bytes and installed Sparkle update are verified separately in the release receipt. Native evidence is retained under .fleet-local/storage-accounting/, with three-width full-shell fixtures explicitly synthetic and live installed/isolated captures explicitly identified. Full VoiceOver, enlarged text, exhaustive OS/hardware coverage and live App Health counts are not claimed.

Required acceptance is complete. Earlier prepared-source and control-pipe limitations below are historical snapshots, superseded by this release evidence where stated.


Why

StorageDaddy's native Mac app currently has no App Health session signal, so applicable native sessions remain unmeasured. App Health already ships a Foundation-only Swift SDK and native heartbeat endpoint. Its public key is scoped to one project/environment and safe to distribute, but must be created by the owner.

What

Add opt-in native session reporting to StorageDaddy using the published App Health Swift SDK. Read an optional native public key from a documented per-user setting; with no key, keep the app fully offline from App Health. Report app foreground/background activity only. Do not add event tracking, user/device identity, file or scan details, owner keys, production credentials, or a key value to source.

Design

Add the tagged sass-maker/app-health 0.1.0 Swift package dependency and wrap AppHealthClient in the StorageDaddy app lifecycle. Call setActive(true) while the app is active, setActive(false) when it resigns active, and close it during termination. Resolve the public key from UserDefaults at launch and use https://health.sassmaker.com as the collector. Keep integration disabled when the key is missing or invalid. Unit-test the opt-in/configuration boundary without network calls. Live acceptance remains a separate owner action after creating the StorageDaddy native key in App Health; do not generate or install that key in this task.

Specs

Requirement: Opt-in native session reporting

StorageDaddy SHALL send bounded native active-session heartbeats through the App Health Swift SDK only when a valid per-user native public key is configured.

Scenario: Key absent

  • WHEN StorageDaddy launches without a configured native public key
  • THEN it makes no App Health request and all existing app behavior remains available.

Scenario: Key configured

  • WHEN StorageDaddy launches with a valid public key
  • THEN App Health receives active heartbeats while the app is foregrounded and no file, scan, device, or identity details are sent.

Tasks

  • 1. Add the published Swift SDK dependency and an optional per-user key configuration seam.
  • 2. Bind the SDK active state to macOS app lifecycle transitions and termination.
  • 3. Add focused tests and document local configuration plus the separate live-key handoff.

Product privacy decision required

StorageDaddy currently promises no app telemetry in DISTRIBUTION.md and the public site/public/storagedaddy/index.md. Even optional heartbeats would change that unqualified promise once enabled. Source implementation was therefore reverted after the contract review; no native telemetry was shipped or activated. Before implementation, the owner must either keep native sessions intentionally unmeasured or approve an opt-in product/privacy disclosure update that clearly explains active-session heartbeats. App Health must keep the current native session value Unknown until an accepted runtime receipt exists; a source-only integration is not proof of live usage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions