app-creator/domain-packs/ios-app/examples/feature-brief-local-notification-window.md
Kjell Tore Guttormsen 2011507ea1 design(app-creator): S6 — forfatt ios-app referanse-domain-pack + start claude-code-plugin-pakke
- domain-packs/ios-app/: komplett referanse-pakke (8 komponenter) — pack.json med
  components-map, conventions.md, 4 patterns/, gotchas.md, checklist.md splittet i 3
  (App Store-submission + security-privacy/MASVS 2.1 + accessibility/WCAG 2.2 AA),
  3 scaffold/-maler (PrivacyInfo.xcprivacy-plist, NSUsageDescription-inventar,
  ASC-metadata), eksempel-feature-brief i Voyage strict-mode-format, glossary.md.
  Hver teknisk påstand verifisert mot Apple Developer / W3C WAI / OWASP MAS.
- domain-packs/claude-code-plugin/: stub — pack.json + conventions.md + gotchas.md
  + checklist.md + glossary.md ferdige (ekstrahert fra ktg-privat-konvensjoner);
  patterns/scaffold/examples er stubs.
- docs/domain-pack-spec.md: § D2/D3/D4/D7 + restrisiko oppdatert — pack.json
  components-felt, core/supplementary låst til manifestet, checklist-splitt-konvensjon,
  snapshot-materialiserings-mekanikk presisert, iOS-versjons-korreksjon (iOS 26, ikke
  "iOS 18/19"), D7 → "forfattet i S6".
- prototype-run/friksjon.md: #9 (Akashic-briefen refererer "iOS 19" som ikke finnes —
  rettes i S7) + S6-prosessnotater (checklist-splitt bekreftet nødvendig, components-gap
  fylt, verifiserings-asymmetri ios-app vs claude-code-plugin notert).
- CLAUDE.md: peker til domain-packs/ under § Status.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 14:06:54 +02:00

5.7 KiB


--- Voyage-påkrevde (Handover 1, brief_version 2.0) ---

type: trekbrief brief_version: "2.0" created: 2026-06-01 task: "Lokale notifikasjoner som varsler brukeren når hvert av de tre daglige soltidsvinduene åpner, av/på per vindu, Focus-bevisst" slug: notification-on-window-open project_dir: .claude/projects/2026-06-01-notification-on-window-open/ research_topics: 0 research_status: complete brief_quality: complete source: manual

--- app-creator-interne (Voyage ignorerer / strippes ved handover) ---

brief_type: feature phase: 7 parent_app: akashic-intelligence parent_feature: F-002 domain_pack: "ios-app@0.1.0" revision: 0 length_words: 480 voyage_run_dir: null voyage_run_status: null

Task: Lokale notifikasjoner når et soltidsvindu åpner

Generert av app-creator fase 7 på 2026-06-01 fra akashic-intelligence feature F-002.

Intent

Praksisen Akashic støtter krever at brukeren bukker innenfor tre tidsvinduer som flytter seg med soltidene der brukeren er. Det definerende problemet er at det er lett å glemme — uten en påminnelse i tide forsvinner vanen. Denne featuren leverer den primære eksterne forsterkningen: én notifikasjon når hvert vindu åpner, slik at brukeren kan handle der og da. Den henger sammen med, men er separat fra, den visuelle in-app-klokka (F-003) — notifikasjonen er for når appen ikke er åpen.

Goal

Når et soltidsvindu åpner, mottar brukeren én lokal notifikasjon (med mindre vinduet er slått av eller allerede markert fullført den dagen). Notifikasjonen kan trykkes for å åpne appen direkte til markeringssjermen for det vinduet. Brukeren kan slå hver av de tre notifikasjonene av/på uavhengig i innstillinger. Notifikasjonene respekterer brukerens Focus-modus. Tidene re-beregnes og re-planlegges når appen kommer i forgrunnen og posisjonen har endret seg vesentlig (delt logikk med F-001). Ingen notifikasjon fyrer på feil tidspunkt etter en lokasjons- eller dato-endring.

Non-Goals

  • Push-notifikasjoner / server (appen er all-local, ingen backend).
  • Snooze, gjentatte påminnelser innenfor samme vindu, eller "du glemte i går"-varsler.
  • Notifikasjons-handlinger utover "åpne appen" (in-notification "marker gjort" vurderes i en senere feature, ikke her).
  • Konfigurerbar tekst / lyd per notifikasjon (standard system-lyd, fast tekst i v1).
  • Time Sensitive / Critical interruption-nivå (krever Apple-entitlement; bruk standard .active i v1).

Constraints

  • Ingen nye tredjeparts-deps (app-invariant).
  • All in-app- og notifikasjons-tekst skal være forsiktig med effekt-claims — speil kildens framing, hevd ingenting (app-brief constraint-signal, [enforce]).
  • Permission-transparens: notifikasjons-tillatelsen forklares på en onboarding-skjerm før requestAuthorization (GDPR + App Review-forventning, [enforce]).
  • Maks ~64 ventende lokale notifikasjoner per app (iOS-grense) — planlegg rullerende (f.eks. neste N dager), ikke et helt år.

Preferences

  • UNUserNotificationCenter + UNCalendarNotificationTrigger; re-planlegging ved scenePhase == .active (jf. domain-pack patterns/local-notifications.md og patterns/current-location-regeneration.md).
  • Del soltids-/vindu-beregningen med F-001 og F-003 — ikke dupliser logikken.
  • MVVM, SwiftUI; interruption-nivå .active.

Non-Functional Requirements

  • Re-planlegging ved app-foreground fullfører på < 100 ms (synkron del); ingen merkbar UI-stall.
  • Appen krasjer ikke og viser ingen dead-end hvis notifikasjons-tillatelse er nektet — degraderer til in-app-klokka (F-003) med en CTA for å aktivere varsler.
  • Ingen sensitiv data i notifikasjons-payload (det er ingen — men prinsippet står).

Success Criteria

  • Given notifikasjons-tillatelse gitt og alle tre vinduer på, When et vindu åpner mens appen er i bakgrunnen, Then leveres nøyaktig én notifikasjon for det vinduet, og trykk åpner markeringssjermen for det vinduet.
  • Given et vindu er slått av ELLER allerede markert fullført i dag, When vinduet åpner, Then leveres ingen notifikasjon for det vinduet.
  • Given brukeren flytter seg vesentlig (eller krysser midnatt), When appen kommer i forgrunnen, Then er ventende notifikasjoner re-planlagt mot de nye soltidene, og ingen utdatert notifikasjon gjenstår.
  • Given notifikasjons-tillatelse er nektet, When brukeren åpner appen, Then vises in-app-klokka og en CTA for å aktivere varsler — ingen krasj, ingen tom skjerm.
  • Alle eksisterende tester passerer: xcodebuild test -scheme Akashic exit 0.
  • Ingen nye Swift Package-dependencies i Package.resolved.

Research Plan

No external research needed — the codebase and this brief contain sufficient context for planning. (Soltids-beregning og vindu-modell etableres av F-001, som er en avhengighet; se context.md.)

Open Questions / Assumptions

  • [ANTAKELSE] F-001 (soltids-/vindu-beregning) er ferdig og eksponerer en stabil API for "neste vindu-åpningstider" — denne featuren bygger på den. Hvis F-001 ikke er klar, blokkér.
  • [ANTAKELSE] Standard .active-interruption-nivå er godt nok i v1. Hvis bruker-feedback senere tilsier at varslene drukner i Focus, vurder time-sensitive-entitlement (egen feature).

How to continue

/trekplan --project .claude/projects/2026-06-01-notification-on-window-open/
/trekexecute --project .claude/projects/2026-06-01-notification-on-window-open/