- Windows 및 Linux 알림 선행 정리 마일스톤을 아카이브로 이동 - iOS 알림 테스트 마일스톤을 활성 milestone로 변경 - Linux 알림 테스트 가이드 및 smoke evidence 템플릿 추가 - Flutter Test Linux fixture 파일 추가 (open_channel, open_thread)
3.4 KiB
3.4 KiB
Linux Notification Smoke Evidence Template
Use this template when collecting Linux notification smoke evidence. Replace every private value with a placeholder before storing output in tracked files.
Run Metadata
- Date:
- Operator:
- Hardware or VM:
- Distribution and version:
- Desktop environment:
- Session type: X11 | Wayland | headless | other
- Notification daemon:
- Desktop portal available: yes | no | not tested
- Flutter version:
- Build mode: Debug | Profile | Release
- Package/runtime dependency path: D-Bus | desktop portal | libnotify | debug injection | other
Preflight Inputs
- Linux platform registered in
packages/messaging_flutter/pubspec.yaml: yes | no - Linux plugin scaffold present: yes | no
- Linux test host scaffold present: yes | no
- Linux bridge registers
com.tokilabs.nexo.messaging/notifications: yes | no - Linux bridge registers
com.tokilabs.nexo.messaging/notification_actions: yes | no - Local fixture used:
open_channel.json|open_thread.json| other - Real account, private host, token, and machine-identifying values kept out of tracked files: yes | no
Environment Evidence
Paste sanitized logs only.
distribution=<redacted-or-placeholder>
desktop_environment=<GNOME|KDE|XFCE|other|not_tested>
session_type=<X11|Wayland|headless|not_tested>
notification_daemon=<redacted-or-placeholder|not_detected|not_tested>
portal_status=<available|missing|not_tested>
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:
- D-Bus notification daemon:
- Desktop portal notification:
- libnotify wrapper:
- Not tested:
Observed result:
displayed=<yes|no|not_implemented>
notification_title=<redacted-or-placeholder>
notification_body=<redacted-or-placeholder>
action_data_present=<yes|no|not_implemented>
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 | ||
| Cold start click | Launch payload forwarded |
Lifecycle Evidence
app_state_before=<foreground|background|not_running|not_tested>
app_state_after=<foreground|background|not_running|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
- Private host, username, channel name, and machine-identifying values removed.
- Full device token or remote push token removed.
- Private server URL, auth token, signing key, username, channel names removed.
- Screenshots or recordings contain no private message/user data.
- Distribution, daemon, and desktop details are sanitized when they identify a private environment.