From a184ee0221f40ade176443fec78c5053bac37111 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Wed, 1 Jul 2026 10:04:03 -0400 Subject: [PATCH] docs: document desktop features (Tier A + B) across catalog/README/TODO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LOTUS_FEATURES.md: new "Desktop App Features" section (+ TOC) covering all desktop capabilities — no-sleep, jump list, thumbbar, SMTC, network awareness, rich notifications, Focus Assist, window chrome, update toast, toolbar reorder, draft indicator, recursive folder DnD. - README.md: "Desktop-Specific Features" bullets under the Desktop App section. - LOTUS_TODO.md: P5-35/41/56 → [~] IMPLEMENTED (Tier B); P5-48 → [~] (recursive folder upload; .lnk/Send-To scoped-out with rationale). Co-Authored-By: Claude Opus 4.8 --- LOTUS_FEATURES.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++- LOTUS_TODO.md | 8 +++---- README.md | 14 ++++++++++++ 3 files changed, 73 insertions(+), 5 deletions(-) diff --git a/LOTUS_FEATURES.md b/LOTUS_FEATURES.md index 3018363d8..75284624c 100644 --- a/LOTUS_FEATURES.md +++ b/LOTUS_FEATURES.md @@ -25,7 +25,8 @@ Last updated: June 2026. 16. [Notifications](#notifications) 17. [Server Integration](#server-integration) 18. [Infrastructure](#infrastructure) -19. [Key Custom Files](#key-custom-files) +19. [Desktop App Features](#desktop-app-features) +20. [Key Custom Files](#key-custom-files) --- @@ -1161,6 +1162,59 @@ The `encUrlPreview` setting defaults to `true` rather than `false`. A security a --- +## Desktop App Features + +Native capabilities of the Lotus Chat **Tauri v2** desktop app (Windows, macOS, Linux) on top of the shared web client. Web hooks live in `src/app/hooks/useTauri*.ts` (each no-ops in the browser) and call Rust commands in `cinny-desktop/src-tauri/src/native/*`. Windows-only pieces are `#[cfg(target_os = "windows")]`, compile-verified in CI (Windows runners). + +### Call Continuity — No-Sleep (P5-46) + +Holds the system awake (`SetThreadExecutionState`) while a voice/video call is active; releases on end. `useTauriCallPower` ↔ `native/power.rs`. + +### Windows Jump List (P5-36) + +Right-click the taskbar icon → a **Recent Rooms** list of your most-active rooms; each entry opens that room via the `matrix:` deep-link. `useTauriJumpList` ↔ `native/jumplist.rs` (`ICustomDestinationList`). + +### Taskbar Thumbnail Toolbar (P5-44) + +Hover the taskbar preview during a call → **Mute / Deafen / End Call** buttons. `useTauriThumbbar` ↔ `native/thumbbar.rs` (`ITaskbarList3` + a window subclass for `THBN_CLICKED`). + +### System Media Transport Controls — SMTC (P5-43) + +Exposes call status + a mute control to the Windows volume-flyout / media overlay (WinRT `SystemMediaTransportControls`). `useTauriSmtc` ↔ `native/smtc.rs`. _Experimental — may require an active audio session to surface._ + +### Network Awareness (P5-49) + +Detects Windows connectivity changes (`INetworkListManager`) and nudges the Matrix client to reconnect (`retryImmediately`). `useTauriNetwork` ↔ `native/network.rs`. + +### Native Rich Notifications (P5-41 / P5-35) + +Windows toasts with **click-to-open-room** and **inline quick reply** (WinRT `ToastNotification`, in-process `Activated` event). Falls back to the standard toast otherwise. `useTauriToastActions` ↔ `native/toast.rs`; the desktop notification bridge routes room notifications to it. + +### Focus Assist Sync (P5-56) + +When Windows Focus Assist / Quiet Hours is active, Lotus suppresses its own notifications + sounds (reuses the quiet-hours gate). `useTauriFocusAssist` + `focusAssistActiveAtom` ↔ `native/focus_assist.rs` (`SHQueryUserNotificationState`). + +### Custom Window Chrome (P5-47) + +Opt-in (Settings → General → **Custom Window Chrome**): replaces the OS title bar with a TDS-styled titlebar (min / max / close + drag region), runtime-reversible via `set_decorations`. `features/desktop/TitleBar.tsx` + `useTauriWindowChrome` ↔ `native/chrome.rs`. + +### Proactive Update Toast (P5-40) + +Checks for a new desktop release every 12h and offers a one-click update. `TauriUpdateFeature` (ClientNonUIFeatures) + `useTauriUpdater`. + +### Cross-platform composer niceties + +- **Composer toolbar drag-reorder (P5-55)** — drag to reorder the composer buttons (Settings → General), via `@atlaskit/pragmatic-drag-and-drop`. +- **Draft-saved indicator (P5-57)** — a subtle cue in the composer when the current room has a persisted draft. +- **Recursive folder drag-drop (P5-48)** — drop a folder to upload every file inside it (all nesting levels), `utils/fileEntries.ts`. + +### Files + +- Web: `src/app/hooks/useTauri*.ts`, `src/app/components/TauriDesktopFeatures.tsx`, `src/app/features/desktop/TitleBar.tsx`, `src/app/features/room/DraftIndicator.tsx`, `src/app/utils/fileEntries.ts`, `src/app/state/{customWindowChrome,focusAssist}.ts`. +- Native (`cinny-desktop`): `src-tauri/src/native/{power,jumplist,thumbbar,smtc,network,chrome,toast,focus_assist}.rs` + `native/mod.rs` (registered in `lib.rs`). + +--- + ## Key Custom Files | File | Purpose | diff --git a/LOTUS_TODO.md b/LOTUS_TODO.md index be1c212b6..af34930e5 100644 --- a/LOTUS_TODO.md +++ b/LOTUS_TODO.md @@ -334,7 +334,7 @@ Features: --- -### [ ] P5-35 · Desktop — Notification Click Opens Room (DEFERRED) +### [~] P5-35 · Desktop — Notification Click Opens Room — IMPLEMENTED (Tier B, via the P5-41 WinRT toast: click → open room, reply → send); native CI-compile-pending, runtime-verify on Windows **What:** Clicking a system tray notification navigates to the relevant room. Quick-reply from the notification toast would send the reply without opening the window. **Status:** Deferred (Tier B). Note: the "can't compile-test without a Windows build environment" premise is **outdated** — CI now compiles Windows (Gitea self-hosted `windows` runner + GitHub `windows-latest`), and `windows`-crate/COM code already ships (e.g. `set_badge_count`, and the Tier A jump list). This still depends on P5-41 (the WinRT toast + custom activator), so it rides with that; it was not part of the Tier A wave. @@ -352,7 +352,7 @@ Features: --- -### [ ] P5-41 · Desktop — Native WinRT Toast Notifications +### [~] P5-41 · Desktop — Native WinRT Toast Notifications — IMPLEMENTED (Tier B; ToastNotification + reply input + in-process Activated; falls back to tauri-plugin-notification); native CI-compile-pending. Runtime needs a Start-menu shortcut + matching AppUserModelID to surface **What:** Replace emulated notifications with native WinRT Toast notifications. **Approach:** Implement native WinRT Toast integration using `windows-rs` to enable full Action Center integration, including native Quick Reply functionality. @@ -382,7 +382,7 @@ Features: **What:** Replace system titlebar with custom Lotus TDS chrome. **Approach:** Configure Tauri window (`decorations: false`) and implement custom, TDS-token compliant titlebar controls (Close/Max/Min) for a cohesive UI. -### [ ] P5-48 · Desktop — Native File System Drag-and-Drop Improvements +### [~] P5-48 · Desktop — Native File System Drag-and-Drop Improvements — IMPLEMENTED (recursive folder upload, web-verified: tsc/build/tests). SCOPED-OUT: `.lnk` shortcut resolution (webview never exposes a dropped file's OS path → native can't resolve the target) and "Send To" (installer/registry shell integration) — deferred **What:** Enhance drag-and-drop support for Windows. **Approach:** Improve handling for Windows file shortcuts, recursive folder uploads, and shell-integrated "Send To" context menu actions. @@ -418,7 +418,7 @@ Features: **What:** Allow users to reorder toolbar icons via drag-and-drop. **Approach:** Extend the current settings-based toolbar toggle system to include a drag-and-drop UI mode in the composer settings, allowing users to personalize their icon order. -### [ ] P5-56 · Desktop — Windows "Focus Assist" (DND) Sync +### [~] P5-56 · Desktop — Windows "Focus Assist" (DND) Sync — IMPLEMENTED (Tier B; SHQueryUserNotificationState poll → suppresses notifications+sounds via the quiet-hours gate); native CI-compile-pending, runtime-verify on Windows **What:** Automatically toggle notification state based on Windows Focus Assist. **Approach:** Integrate with the Windows `NotificationCenter` / `Focus` state via Tauri/Rust to automatically enable/disable Lotus Chat's internal notification suppression mode when Windows Focus Assist is toggled. diff --git a/README.md b/README.md index 339479d49..915d574e6 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,20 @@ When you first run the installer on Windows, you may see a popup that says **"Wi After the first install, automatic in-app updates handle all future versions — you will not see this prompt again for updates. +### Desktop-Specific Features + +Beyond the web client, the desktop app adds native OS integration (Windows-focused; graceful no-ops elsewhere). See [`LOTUS_FEATURES.md`](./LOTUS_FEATURES.md#desktop-app-features) for detail. + +- **Native rich notifications** — Windows toasts you can click to open the room or reply to inline, right from the toast. +- **Focus Assist sync** — Lotus silences its own notifications while Windows Focus Assist / Quiet Hours is on. +- **Windows Jump List** — right-click the taskbar icon for quick access to your most-active rooms. +- **Taskbar call controls** — Mute / Deafen / End Call buttons on the taskbar thumbnail during a call, plus call status in the volume flyout (SMTC). +- **Stays awake in calls** — the system won't sleep or dim during a voice/video call. +- **Network awareness** — reconnects promptly when Windows connectivity changes. +- **Custom window chrome** (opt-in) — a Lotus-styled title bar in place of the OS one. +- **Recursive folder drag-drop** — drop a whole folder onto the composer to upload everything inside it. +- **Automatic background updates** with a one-click update toast. + --- ## For Developers