- 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
3.2 KiB
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_messagingchannel retained forgetPlatformVersion: 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.