nexo/docs/macos-notification-smoke-evidence-template.md
toki 0faa687954 feat: macos notification support and documentation updates
- Add macos notification smoke evidence template and test guide
- Add Fixtures for open_channel and open_thread json
- Update roadmaps for messaging runtime phase and macos notification milestone
- Update flutter-test and messaging_flutter READMEs
2026-06-02 04:32:38 +09:00

3.2 KiB

macOS Notification Smoke Evidence Template

Use this template when collecting macOS notification smoke evidence. Replace every private value with a placeholder before storing output in tracked files.

Run Metadata

  • Date:
  • Operator:
  • Hardware:
  • macOS version:
  • Xcode version:
  • Flutter version:
  • Build mode: Debug | Profile | Release
  • Bundle ID: <redacted-or-placeholder>
  • Signing mode: local ad hoc | Apple Developer | not signed for notification smoke
  • Notarization state: not tested | local placeholder | submitted | accepted | failed

Preflight Inputs

  • macOS bridge registers com.tokilabs.nexo.messaging/notifications: yes | no
  • macOS bridge registers com.tokilabs.nexo.messaging/notification_actions: yes | no
  • Legacy nexo_messaging channel retained for getPlatformVersion: yes | no
  • Local fixture used: open_channel.json | open_thread.json | other
  • Entitlements inspected: yes | no
  • Notification capability present in built app: yes | no | not tested
  • Real signing values kept out of tracked files: yes | no

Permission Evidence

Paste sanitized logs only.

permission_status=<authorized|denied|provisional|not_determined|not_implemented>
request_path=<FlutterFire|UserNotifications|not_implemented>
notes=<redacted-or-placeholder>

Display Evidence

Payload file or sanitized JSON:

{
  "type": "message",
  "server_url": "https://example.invalid",
  "server_id": "server-smoke",
  "channel_id": "channel-smoke",
  "root_id": "",
  "is_crt_enabled": "false",
  "ack_id": "ack-smoke",
  "post_id": "post-smoke"
}

Display path:

  • Local debug injection:
  • Local notification API:
  • Remote push provider:
  • Not tested:

Observed result:

displayed=<yes|no|not_implemented>
notification_title=<redacted-or-placeholder>
notification_body=<redacted-or-placeholder>

Click / Open Routing

Scenario Expected Actual Evidence path
Channel click onNavigateToChannel with server/channel
Thread click onNavigateToThread with server/root
Foreground receipt Raw onNotification event logged
Background click App resumes and emits opened event
Terminated click Launch payload forwarded

Lifecycle Evidence

app_state_before=<foreground|background|terminated|not_tested>
app_state_after=<foreground|background|terminated|not_tested>
event_type=<message|opened|not_implemented>
userInteraction=<true|false|not_set>

ACK, Dismiss, Inline Reply Boundary

Feature Expected for this run Actual Follow-up
ACK gap documented unless implemented by a later plan
Dismiss gap documented unless implemented by a later plan
Inline reply gap documented unless implemented by a later plan

Sanitization Checklist

  • Apple Team ID, signing identity, provisioning profile, certificate, and notarization values removed.
  • Full device token or remote push token removed.
  • Firebase API key, app ID, sender ID, service account details removed if Firebase was used.
  • Private server URL, auth token, signing key, username, channel names removed.
  • Screenshots or recordings contain no private message/user data.