feat(desktop): Phase D — inline-reply notifications (Windows toast reply box)
Reply to a chat straight from the OS notification, no app switch:
- node-notifier (bundles SnoreToast) renders a native Windows toast with a reply box —
Electron's own Notification can't do Windows inline reply.
- main.js reply-notification handler resolves {text}|{open}|null; preload exposes replyNotify.
- home.html notify() routes chat toasts through it on desktop: a typed reply -> sendReplyTo()
POSTs to /api/messages without opening the app; a click opens the chat. Web/PWA path unchanged.
- Works only in the installed app (needs the installer's AppUserModelID). desktop 0.1.2, build batch21.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+6
-4
@@ -78,10 +78,12 @@ absolute API base if offline-launch or store policy requires it.
|
||||
|
||||
### Phase D — Inline-reply notifications (Teams-style) *(right AFTER packaging)*
|
||||
Reply to a chat directly from the OS notification, without opening the app. Cross-platform:
|
||||
- **Desktop (Windows):** native **Windows Toast** with an `<input>` reply box + action, a
|
||||
registered **AppUserModelID** + Start-menu shortcut (why it needs the installer first), and
|
||||
a toast-activation handler that POSTs the reply to `/api/messages`. (Web `Notification` and
|
||||
Electron's built-in notification can't do Windows text reply; needs a native toast lib.)
|
||||
- [x] **Desktop (Windows):** native Windows toast with a **reply box** via **node-notifier**
|
||||
(bundles SnoreToast). main.js `reply-notification` handler → preload `replyNotify` →
|
||||
home.html `notify()` routes chat toasts through it: a typed reply calls `sendReplyTo`
|
||||
(POST /api/messages) without opening the app; clicking opens the chat. Uses the installer's
|
||||
AppUserModelID, so it only works in the **installed** app. *Needs a live test in the
|
||||
installed app (can't drive a real Windows toast from CI).*
|
||||
- **Android:** notification action with **`RemoteInput`** (direct reply) on the FCM message.
|
||||
- **iOS:** **`UNTextInputNotificationAction`** on the APNs notification category.
|
||||
All three hand the typed text to the same send path. Depends on Phase B push + Phase C packaging.
|
||||
|
||||
Reference in New Issue
Block a user