Windows: recent-conversations jump list (Dock-menu parity)
Facebook Messenger on your desktop, without the Facebook clutter
Brought to you by:
kristoffer-r
Originally created by: kristofferR
The recent-conversations menu (Ref [#19]) is macOS Dock/tray only. Windows native equivalent is a taskbar jump list. Linux tray menu already gets the list.
Keep implementation research for when this is picked up.
Tickets: #184
Tickets: #187
Tickets: #19
Tickets: #233
Tickets: #59
Originally posted by: kristofferR
Design notes for implementing this, building on the shared action dispatch from [#170]/#176 and their Windows counterpart (#184, CLI flags + carrier:// protocol):
src-tauri/src/jumplist.rs(cfg(target_os = "windows"); not namedwindowsto avoid shadowing thewindowscrate): purejump_list_model(threads) -> Vec<JumpEntry {title, args}>mapping each sanitized recent thread to--thread <id>(unit-testable anywhere via the same cfg trickmenu.rsuses), plusupdate_jump_list(app)doing the COM work:ICustomDestinationList→BeginList→AppendCategory("Conversations", IShellLink items)— each link targetscurrent_exe()withSetArguments("--thread <id>"), icon from the exe, title viaIPropertyStore/PKEY_Title(mandatory: jump-list links have no filename) →AddUserTasks("New Conversation" →--new-conversation, "Settings" →--settings) →CommitList. All failures logged and swallowed — the jump list is best-effort chrome.windowscrate (proper COM support;windows-syswould mean hand-rolled vtables). It's already in the lockfile transitively, and the Windows toast work (#180) wants it too — coordinate on one version/feature set (Win32_System_Com,Win32_UI_Shell+_Common+_PropertiesSystem,Win32_Storage_EnhancedStoragefor PKEY_Title,Win32_Foundation; confirm exact set at implementation).rebuild_recent_menusgains a#[cfg(windows)] update_jump_list(app)call. That one site covers both triggers for free: thecarrier:recent-threadslistener (already dedups unchanged lists — natural debounce) and every settings save viaapply_settings. A module-local last-committed cache skips redundant COM work. Runs on the main thread (already marshalled there; a handful of COM calls, no I/O).recent_threads_for_menualready returns empty when Hide Names & Avatars is on, so the jump list inherits the filtering — and because everyCommitListreplaces the on-disk.customDestinations-msfile, committing the empty list scrubs the persisted entries from disk, which matters since jump lists persist across sessions. Names are already sanitized/truncated upstream (cap 9, 60 chars); the--threadargument is digits-only by construction.action_from_argv→run_app_action(warm), or the cold argv path (app not running). This issue adds no dispatch code — it depends on [#184] landing first.BeginListreturns (skip re-adding user-removed ids this session).Related
Tickets:
#170Tickets:
#184Originally posted by: kristofferR
Completed in PR [#233] and manually verified on Windows 11 during the final QA and fixes in PR [#247]. Recent conversations appear in the taskbar jump list, and warm and cold dispatch open the correct thread. Closing as complete.
Related
Tickets:
#233Tickets:
#247Ticket changed by: kristofferR