Originally created by: kristofferR
Carrier is developed primarily on macOS, but CI builds all six targets and it ships for Windows and Linux too. This issue tracks a separate hands-on pass for each platform.
The Windows pass was completed on a real Windows 11 VM against release 1.12.0 and the QA builds finalized in PR [#247]. Linux remains pending.
Permission recovery follow-up (Ref [#257], [#275])
Implementation merged in [#275]. Automated tests and cross-platform CI passed; the following live checks remain pending.
- [ ] On macOS, test microphone-only, camera-only, and combined requests through first permission prompts, denial, and later recovery
- [ ] On macOS, verify separate OS statuses, explicit Allow access and Open Settings actions, and status refresh after returning from System Settings
- [ ] On Windows, test microphone-only, camera-only, and combined requests; verify camera/microphone privacy links open only after an explicit click
- [ ] On Linux, test microphone-only, camera-only, and combined requests; verify manual guidance and honest unavailable OS status
- [ ] Verify missing or busy hardware gets accurate guidance, independent failures survive partial recovery, and success or dismissal clears the appropriate recovery state
- [ ] Verify keyboard access, light/dark themes, narrow windows, and that recovery never reloads or interrupts an active call
- [ ] Verify live Messenger emoji, sticker, GIF, reaction, people, and thread-info popovers do not activate media-viewer chrome
- [ ] Verify image, gallery, video, and group-chat viewers across light/dark themes, narrow/wide windows, and 30–200% zoom on macOS, Windows, and Linux
- [ ] Verify closing, hiding, replacing, and reopening viewers clears stale markers and offsets without disturbing nested pickers
Windows
Install and launch
- [x] NSIS installer installs and launches
- [x] Portable
.exe launches
- [x] Window opens chrome-stripped and loads
facebook.com/messages
- [x] Tray icon is present and its menu works
- [x] Hide on Close moves Carrier to the tray and the tray reopens it
Login
- [x] Standard Facebook login works, including 2FA and the E2EE history PIN
- [x] Session and E2EE history persist across restarts without another PIN prompt
Theme
- [x] Forced light and dark themes apply to the page and window chrome
- [x] System theme changes apply live to the page, main window, Settings, and native chrome
- [x] Theme changes do not introduce broken reload or relaunch behavior
- [x] Monochrome tray icon follows the taskbar theme and display scaling
Window chrome and menus
- [x] Native menu bar renders
- [x] Settings, Hide, and Exit actions work
- [x] New Conversation, New Window, and Close actions work
- [x] Reload, theme, zoom, conversation info, Hide Names & Avatars, and Always on Top actions work
- [x] Minimize and Zoom/Maximize actions work
- [x] Keyboard Shortcuts and Report an Issue actions work
- [ ] About dialog displays its app and version details (the dialog opens, but its content is blank)
- [ ] Edit menu actions work without a page-level clipboard permission prompt
- [ ] Clear Cache & Restart works (not run to preserve the authenticated QA session)
- [x] Zoom keyboard shortcuts work
- [x] Image viewer works
- [x] Settings window opens and persists changes
Notifications and taskbar integration
- [x] Native new-message notifications fire
- [x] Sender profile pictures render as notification avatars
- [x] Carrier icon renders crisply in the notification header
- [x] Notifications group per conversation in Action Center
- [x] Action Center activation works after the banner times out
- [x] Opening a conversation clears its notification group
- [x] Reply and Open controls render, and the reply-timeout fallback works
- [x] Mute and Hide Preview notification privacy options are respected
- [x] Unread taskbar badges render the
5 and 9+ buckets and clear correctly
- [x] Optional taskbar flash works while Carrier is unfocused
- [x] Recent-conversation jump list renders and dispatches to the correct thread
CLI, protocol, and portable behavior
- [x] Warm and cold CLI actions work
- [x] Warm and cold
carrier:// launches work
- [x] NSIS registers
carrier:// at install time and removes only its own registration on uninstall
- [x] Portable builds self-register
carrier:// and the toast identity
Navigation and downloads
- [x] Off-site links open in the default browser while Carrier stays on Messenger
- [x] Media downloads work
- [x] Executable downloads are blocked
Updater
- [x] Update from 1.11.0 to 1.12.0 completes and relaunches successfully
Findings
- Light-mode login can show cosmetic black side columns.
- The E2EE right pane is not blurred by Hide Names & Avatars.
- About opens, but the dialog content is blank.
- Edit-menu Paste and Paste and Match Style trigger a
facebook.com clipboard permission prompt; Ctrl+V works normally.
Linux
Wayland startup and renderer fallback (Ref [#255])
- [ ] Pure Niri session launches with
WAYLAND_DISPLAY set and DISPLAY / GDK_BACKEND unset or empty
- [ ] Niri automatic safe mode renders the login page, conversations, and media without blank or unstable surfaces
- [ ]
CARRIER_LINUX_WEBKIT_SAFE_MODE=1 and =0 work after restart; explicit GTK and WebKit overrides remain respected
- [ ] GNOME Wayland, KDE Wayland, XWayland-capable sessions, and X11 retain working startup and rendering
- [ ] Compare CPU use and rendering with compositing enabled and disabled on the same workload
Install and launch
- [ ] App installs and launches from the
.deb, .AppImage, and .rpm bundles
- [ ] Window opens chrome-stripped and loads
facebook.com/messages
- [ ] Tray icon is present and its menu works
Login
- [ ] Login flow works
- [ ] Session persists across restarts
Theme
- [ ] Forced light and dark themes apply to the page and window chrome
- [ ] Theme switching behaves correctly without broken reload or relaunch artifacts
- [ ] System theme tracks OS appearance changes
Window chrome and menus
- [ ] Native menu bar renders and all menu actions work
- [ ] View-menu toggles work, including the info panel and Hide Names & Avatars
- [ ] Zoom shortcuts work
- [ ] Image viewer works
- [ ] Settings window opens and persists changes
Notifications
- [ ] New-message notifications fire natively
- [ ] Sender avatar renders where supported
- [ ] Mute and Hide Preview notification privacy options are respected
- [ ] Unread badge updates
Navigation and downloads
- [ ] Off-site links open in the default browser
- [ ] Media downloads work
- [ ] Executable downloads are blocked
Updater
- [ ] Update check runs and applies correctly
Originally posted by: kristofferR
Added the live permission-recovery checklist for [#257], implemented in merged PR [#275] (
ffb74e7). It covers microphone-only, camera-only, and combined requests on macOS, Windows, and Linux; explicit permission/settings actions; recovery after partial success; and accessibility and active-call protection.Automated tests and cross-platform CI passed. The new hands-on checks remain unchecked because native prompts, settings launches, and live call recovery have not yet been verified. This issue remains open.
Related
Tickets:
#257Tickets:
#275Ticket changed by: kristofferR