Releases: shakaran/whatly
Release list
Whatly v6.4.0
A large feature release — a command palette, smarter notifications, working screen sharing, and a lot of new control over the app.
⌨️ Getting around
- Command palette (
Ctrl+K) — fuzzy-jump to any action, account or saved reply and run it with Enter. - Customisable keyboard shortcuts — remap the app's actions in Settings, with conflict detection.
- Grid tile captions — each tile in the multi-account grid now shows its account name and unread count.
🔔 Notifications
- Do Not Disturb — a daily quiet window that holds popups back (unread badges still update).
- Highlight keywords — always notify when a message contains one, even during Do Not Disturb.
- Quick reply — opening a notification now also puts the caret in the message box, so you can just type.
📞 Calls
- Screen sharing now works. Share requests were being dropped silently (a black screen for the other side). There is now a screen/window picker, and WebRTC capture goes through PipeWire and the desktop portal, so it works on Wayland as well as X11.
⏰ Scheduling
- Recurring scheduled messages — repeat daily, on weekdays or weekly.
- Reminder mode — get a desktop notification at the due time instead of sending a message.
🔒 Privacy & safety
- Focus mode — mask contact names and message previews in the chat list (hover to reveal one) while the open conversation stays readable.
- Lock when the screen locks — with a passcode set, Whatly locks the moment the desktop session does.
- Profile backup & restore — export an entire account (settings, session, addons) to a
.tar.gzand import it back.
🧰 Housekeeping
- Update checker — an opt-out, once-a-day check for a newer release. Whatly never downloads or installs anything itself.
- Storage manager — see the cache size and clear it without signing out.
- Saved replies — keep the texts you send often and insert one from the command palette.
- Accessibility — the new icon-only controls now carry accessible names.
📦 Packaging
.deb and .rpm packages are now built and attached to each release (Qt is bundled, so they install on any distro), alongside the AppImage, Flatpak, Windows and macOS builds.
Downloads: Linux .deb / .rpm / AppImage / Flatpak, Windows x64, and an experimental macOS .dmg below. Also on the Snap Store.
Full Changelog: v6.3.0...v6.4.0
Whatly v6.3.0
A sweep of engine-tuning, connectivity and customisation features, with every existing feature kept intact.
- Performance & Privacy — GPU, process-model, JavaScript-heap and HTTP-cache controls, plus a WebRTC IP-leak shield.
- Network proxy — System, direct, or a manual SOCKS5 / HTTP proxy with credentials.
- Start at login, interface scale, and an optional custom (frameless) window frame.
- Portal notifications for Flatpak, selectable per delivery backend.
- Custom JavaScript addons (sandboxed); custom CSS and addons are now stored per account.
- Grid view to show every in-window account at once, alongside tabs and separate windows.
- First-run setup wizard.
Downloads: Linux AppImage (x86_64) & Flatpak, Windows x64, and an experimental macOS .dmg below.
Full Changelog: v6.2.1...v6.3.0
Whatly 6.2.1
Bug-fix and hardening release.
Fixes & hardening
- Automatic-theme crash fixed — opening Settings → automatic theme on a system with no geolocation backend (headless, or no Qt geo plugin) crashed on close. (#found by the new test suite)
- Graceful shutdown on SIGTERM — Whatly now quits cleanly on
SIGTERM(session managers, systemd,kill) via the Qt-safe pattern. - Quieter terminal — the benign "QThreadStorage: entry … destroyed" teardown noise Qt WebEngine prints is no longer echoed (still kept in the in-app debug log).
- About dialog icons restored — the action buttons render their icons again; two new icons (
heart-line,github-line) were added.
Tests
- A QtTest suite now covers ~92% of the headless logic layer (helpers, injected-script generators, scheduled-message queue, sun calc, identicons, dictionaries, About/Rate assets), plus an integration harness that drives the real binary for ~65% whole-app coverage. Reproduce with
tools/coverage.sh.
Flatpak, AppImage (.zsync), Windows and an experimental macOS .dmg are attached by CI. Also on the Snap Store.
Whatly 6.2.0
Desktop-integration features and finer control, from a sweep of the upstream issue tracker.
Highlights
- Taskbar unread badge via the Unity LauncherEntry D-Bus protocol — KDE Plasma, Dash-to-Dock and others paint the count on Whatly's taskbar button (keshavbhatt#122).
- Interface font size control, separate from the WhatsApp Web zoom (keshavbhatt#76).
- Reload automatically after a crash — optional, no prompt (keshavbhatt#225).
- Network status in the tray tooltip when disconnected (keshavbhatt#208).
- HiDPI/4K:
QT_SCALE_FACTORnow scales the web content too;WHATLY_MAX_FPSlifts the frame-rate cap (keshavbhatt#203, keshavbhatt#221). - Small screens: window and dialog minimums adapt to the display, so Whatly fits on a Linux phone (keshavbhatt#239).
- Build:
-DWHATLY_DICTIONARIES="en-US;es-ES;…"builds only the chosen spell-check dictionaries (keshavbhatt#61). - Windows: optional code signing via the SignPath Foundation OSS programme (keshavbhatt#325).
All new interface strings are translated into the 15 shipped languages.
Downloads
- Linux: Flatpak (
whatly.flatpak), AppImage (.AppImage+.zsync), and the Snap Store. - Windows:
whatly-6.2.0-windows-x64.zip. - macOS (experimental):
Whatly-6.2.0-macos.dmg— unsigned, first launch needs a right-click → Open, and not yet validated at runtime. Community testing welcome (keshavbhatt#119).
Whatly 6.1.1
Bug-fix release.
Sharper notification icons
Native notifications carried their app icon as a 32-pixel image, which looked blurry on desktops that draw large notification popups (for example Cinnamon on Linux Mint). Whatly now hands the notification daemon a 256-pixel icon, so the logo stays crisp at any popup size. Fixes #2.
Flatpak, AppImage (.zsync) and Windows builds are attached automatically by CI once the build jobs finish. Also available on the Snap Store.
Whatly 6.1.0
New features and more ways to install.
- Scheduled messages — write a message and have Whatly send it later; it still goes out on the next launch if the app was closed when it came due (keshavbhatt#250).
- Font family — render WhatsApp Web's text in any font installed on your system (keshavbhatt#219).
- Hide muted status updates — an optional toggle removes the "Muted updates" section of the Status panel (keshavbhatt#242).
- Donations — Wise added alongside Ko-fi and PayPal.
- Packaging — Whatly is now available as a Flatpak and an AppImage (with
.zsyncdelta updates), in addition to the snap, deb and Fedora/COPR configurations. The Flatpak bundle, the AppImage and the Windows build are attached below (built by CI).
All new interface strings are translated into the 15 shipped languages. See the full CHANGELOG for details.
snap install whatly · snap refresh whatly
Whatly 6.0.0
6.0.0 (2026-07-16)
First release of the fork maintained at https://github.com/shakaran/whatly.
Everything below is on top of upstream 5.1.0.
The app is now called Whatly (it was WhatSie). The application id is
net.shakaran.whatly, the binary is whatly, and user data lives under
shakaran/whatly. Existing installs are carried over automatically on first
run — settings and the logged-in session are copied from the old shakaran
namespace and from the previous WhatSie layout, so nobody is logged out by
upgrading. If the automatic copy ever misses something, whatly --migrate-from=whatsie does it by hand (--dry-run to preview first).
🎁 Features
- Multiple WhatsApp accounts. Either as separate windows —
whatly --profile=<name>, each with its own session, settings file and
instance — or as tabs inside one window, added with a + and renamed or
removed from a right-click menu. Every account is a separate Chromium storage
partition, so the sessions never touch; the tray badge sums the unread count
across them all. The default account keeps the exact storage it had, so an
upgrade neither moves it nor logs it out, and the tab bar hides itself when
there is only one account. - Spell checker, working. It was not broken, it was gone — and the build
asserted that the system hunspell package supplied the dictionaries. Qt
WebEngine uses Chromium's spell checker, which reads.bdicand cannot read
hunspell's.dic/.affat all, so the language list was empty on every
distribution. The 31 dictionaries already in the tree are now converted at
build time and installed. - Chat themes. Fourteen of them, recolouring WhatsApp Web itself. Keyed on
the colour values, since WhatsApp's CSS variable names are
compiler-generated and change with each of its deploys. Photos and avatars are
untouched. - Chat wallpaper — your own image behind the messages.
- Custom CSS. Load a .css file to restyle WhatsApp Web — the community
stylesheets (catppuccin and the like) work — applied on top of the chat theme. - Smooth scrolling, as an option.
- Privacy blur. Blurs the chat list and the open conversation until you
hover a row, so someone glancing at the screen cannot read them. Five levels. - Theme and blur buttons inside WhatsApp's own sidebar, above the avatar,
reachable without opening Settings. - Interface translations, with a language picker. 15 languages (Italian was
human-written; the other 14 are machine-translated and unreviewed). - Windows support, behind
Q_OSguards, with a build workflow. - Image paste from a browser's clipboard.
- A connection watchdog that reloads the page when WhatsApp's WebSocket hangs,
capped at three reloads per episode. - Identify as Whatly in the phone's linked-devices list, instead of as Chrome —
reported as a desktop client so the phone shows a computer icon beside the
"Whatly for Linux" label rather than leaving it blank. - Close the emoji panel by clicking outside it (opt-in).
F1opens About; its Report a Bug button fills in the GitHub issue with
the version, commit, memory usage of the whole process tree, and the recent
log — including WhatsApp Web's console.
🐞 Bug Fixes
- Logging out of KDE could stall on Whatly. With close-to-tray on, the
window vetoed every close — including the one the session manager sends at
logout — so the desktop saw an app refusing to quit and waited on it. A
session-end close is now honoured as a real quit. (Reported on KDE; the fix
hooksQGuiApplication::commitDataRequest, which fires only on a real session
logout, so it could not be exercised in a normal run.) - Clearing the cache could delete your home directory. If the profile ever
handed back an empty storage path, the recursive delete ran on.— the
working directory, which is your home when the app is launched from a desktop
or file manager. The delete now refuses any path that is empty, relative, the
home directory, the root, or not inside the app's own storage. (Gentoo dropped
the app over this.) - The theme could not be set to dark in any language but English. The
setting was stored as the combo box's displayed text, which is translated:
running in Spanish wrotewindowTheme=claro, and every comparison in the code
is against"dark". A value written by an older build is repaired at startup. - The permissions dialog did nothing at all — wrong enum, a double-prefixed
settings key, and a signal nothing was connected to. It never once reached the
engine. This is also why voice and video calls appeared not to work: the
microphone and camera could not be granted. - Notifications went to the app's own popup, on the primary monitor, rather
than to the desktop's notification service and the screen the window is on. - Notification avatars had red and blue swapped (a byte-order mismatch between
QImageand the freedesktopimage-datahint). - The window would not restore down from maximized (Wayland reports the
maximized geometry as the normal one). - The theme was reset to light on every exit.
- Pasting an image copied from a browser silently produced "no content".
- Attachments: the desktop's file chooser is used, and the last directory is
remembered. Qt's built-in dialog has no bookmarks, no Recent and no address
bar, so a file outside the directory it happened to open in was unreachable. - Quitting could turn into minimize-to-tray.
- "Restore" in the tray menu could be left permanently disabled, with no way
left to bring the window back. - Logging out hung on the "Logging out" overlay and opened a browser tab.
- Unhandled permission types were denied and the denial was persisted, so they
stayed denied forever once the app learned to ask. - The injected sidebar buttons burned about 40% of a CPU core with the app
idle — a MutationObserver whose own repaints retriggered it. - The User-Agent is derived from the engine, so it always reports the truth.
📦 Packaging (snap)
- Stage
libxcb-shape0:libqxcblinks against it, and without it the snap
does not launch at all. - Drop the
hunspell-dictionariescontent mount andDICPATH. It could never
have fed the spell checker — Chromium reads.bdic, not hunspell's
.dic/.aff— and the dictionaries are shipped inside the snap now.
📖 Documentation
- The build docs describe the actual CMake build. Old Qt or CMake now fails with
an actionable error instead of a confusing one. docs/TRANSLATIONS.md,docs/WINDOWS_BUILD.md.
⚠️ Known limitations
- Screen sharing during a call does not work. Qt WebEngine as packaged
enumerates zero screens and zero windows (measured, on Wayland and on X11
alike); it is built without PipeWire. Nothing in the application can change
that. - Memory use is Chromium's, not the app's: with every injected script disabled,
the renderer still accounts for the great majority of it.