nexo/docs/linux-notification-smoke-evidence-template.md
toki ee2e79b334 docs: Linux 알림 테스트 가이드 및 evidence 템플릿 추가, Windows/Linux 선행 정리 아카이브
- Windows 및 Linux 알림 선행 정리 마일스톤을 아카이브로 이동
- iOS 알림 테스트 마일스톤을 활성 milestone로 변경
- Linux 알림 테스트 가이드 및 smoke evidence 템플릿 추가
- Flutter Test Linux fixture 파일 추가 (open_channel, open_thread)
2026-06-02 10:50:27 +09:00

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.