Changelog
What's new in each release.
v0.4.6
Recommended0.4.6
- Fixed: can't place outgoing calls on UDP-only SIP servers.
- Fixed: app freeze when hanging up with a USB headset. The audio device is now kept open between calls and released only on exit, instead of being torn down on every hangup.
- Improved: IPv4 media on dual-stack networks. Prevents IPv4-only PBXes rejecting calls with "488 Not Acceptable Here."
- Changed: ICE disabled by default. It added no benefit with supported PBXes and could bloat or fail call setup.
- Added: --sip-debug runtime flag for full SIP/SDP logging without a rebuild.
v0.4.5
Recommended0.4.5
Audio
- Native PipeWire backend. Crystal-clear audio on Ubuntu, Mint, Fedora, Debian, and Arch. No more "robot voice" caused by PulseAudio shim mismatches. Headset hot-swap is instant.
- Conference bridge fixed. When you merge two calls, both parties can now actually hear each other.
- DTMF works in conference. Keypad tones reach every connected leg.
Calls
- Blind transfer is now actually blind. The call hands off the moment the PBX accepts it instead of waiting for the destination to answer.
- Add Call surfaces real errors. If a second call can't be placed, you get a clear in-call message and the original call is restored automatically.
Windows
- Pure Wayland, native window decorations. Dropped the custom title bars in favor of the compositor's own. Drag, resize, minimize, maximize, and close behave like every other native app.
- Call window sizes itself to its content. No more dead bottom strip, no clipping, snaps cleanly between active / incoming / summary states.
- KDE / Hyprland / sway get true compositor-side always-on-top via wlr-layer-shell. Gnome is not supported due to Gnome limitation.
Visual refresh
- Cleaner left-panel call history: bigger names, lighter timestamps, a single divider per row.
- Containerless dial pad and number input.
- New border + 3-tier surface elevation so the windows separate cleanly from any background.
- Section headers with proper breathing room.
v0.3.1
Critical0.3.1
Audio quality
- Much clearer mic pickup. Quieter voices no longer get muted by the noise gate, and the automatic volume level is stronger without clipping on loud syllables.
- Fixed "robot voice" on Debian and Ubuntu. On some Linux distributions, audio was being resampled twice in a row, causing audible aliasing, most noticeable on Opus calls. The whole audio pipeline now runs at a single native rate end-to-end, so you hear the other person clearly.
- Automatic adjustment on older Linux audio systems. The client now detects older PipeWire versions at startup and starts with larger audio buffers on them. If stuttering still occurs, it automatically enlarges the buffer further rather than waiting for a user to report it.
Call window
- Ended-call summary now shows reliably. The brief recap after a call (name, duration, "Rejected" / "Missed" / "Call Ended") previously showed blank or disappeared early in some cases. It now always plays cleanly.
- Tap the summary to dismiss it. Want to make another call immediately? Tap anywhere on the summary and it clears instantly instead of waiting for the animation.
- No more window resize flicker on close. The window no longer grows or flashes on its last frame before closing.
- Window stays on the right screen. If you unplug a monitor or change resolution, the call window no longer ends up off-screen, it validates its position on every change and re-centres on the current display if needed.
- Window can't be cropped by the compositor. On some Linux desktops the window could be squeezed below its intended size, cutting off content. That's now prevented.
Settings
- "Call window always on top" now tells you when it can't work. On GNOME (Wayland), this feature cannot be provided by any Linux desktop app, the desktop itself doesn't support it. Instead of silently doing nothing, the setting is now greyed out with a short explanation and a
pointer to the GNOME extension that adds the capability. Other environments (KDE, X11, Windows) are unchanged.
Under the hood
- Rewrote the call-window lifecycle for reliability. The logic that decides when the window appears, what it shows, and when it closes used to be spread across three separate files; it's now centralized, which eliminated a class of rare display glitches and makes future changes to the call window safer.
- Added diagnostic logging. Call-window state transitions can now be traced with a single env-var flag, making future bug reports faster to diagnose.
v0.3.0
Recommended0.3.0
Microphone Reliability (Linux)
- Fixed a long-standing issue where USB microphones would stop working after idle time. The microphone would appear connected but produce no sound until you unplugged and replugged the device, or fiddled with the system volume. This was caused by a known Linux audio subsystem bug. Meow now automatically installs a one-time system fix on first launch that prevents it from happening at all.
- Fixed an issue where the app would sometimes fail to pick up USB headphones until the microphone volume was manually adjusted.
- Microphone gain is now much louder and more responsive, with improved automatic noise suppression. The other party will hear you clearly without you having to raise your voice.
Audio Quality
- Fixed audio stuttering and brief dropouts that some users experienced during calls, even on stable networks. The audio buffers have been retuned for better compatibility with modern Linux audio systems.
- Fixed false "Connection unstable" warnings that could appear during calls when the network was actually fine.
Audio Device Selection
- The app now correctly maintains your chosen speaker and microphone regardless of changes to your system's audio output. Previously, changing your system output would cause the app to lose its device selection.
- Fixed an issue where the microphone would not be used until the headset was unplugged and reconnected.
Call Window
- Fixed a focus-stealing issue on multi-monitor setups where the call window would grab back focus every time you clicked on another window. The call window now stays visually on top without hijacking your keyboard or interrupting your work.
- Fixed an issue where the main app window couldn't be closed while a call window was open.
- Fixed layout issues where caller info or the Accept/Decline buttons could be cut off, especially when a second call came in during an active call.
- Fixed a rare display glitch where content could appear clipped during window state changes.
- Redesigned the incoming call view for better clarity.
Caller Display
- Fixed a display issue where some PBX systems would show the caller's name and phone number mashed together without a space (e.g., "John Smith0521234567"). The number is now properly separated.
Notifications
- Fixed a bug where desktop notifications for incoming calls would still appear even after you disabled them in Settings.
Update System
- Fixed auto-update on Windows. the installer now runs correctly after download.
- Fixed auto-update on RPM-based Linux distributions (Fedora, openSUSE, RHEL) where updates could fail silently.
- The "Dismiss" button on the update banner now works correctly, hiding the notification for 24 hours.
Wayland Compatibility
- Fixed a crash on certain Linux distributions (e.g. openSUSE) when running under Wayland.
##Branding & Consistency
- Cleaned up inconsistent spelling of "Meow" throughout the app. Existing user data is automatically migrated on first launch.
Downloads & Installation
- Linux packages are now named consistently in lowercase: meow.deb, meow.rpm, meow.AppImage.
- Windows installer is now meow-setup.exe.
- Updated installation instructions on the download page.
v0.2.9
Recommended0.2.9
Contact Name Resolution
- Fixed incoming call contact lookup being overwritten by PBX caller ID. The call manager now does a local contact lookup before accepting the SIP-provided name, preferring saved contacts over PBX data.
- Added contact name enrichment for outgoing calls. when dialing a saved contact, their name shows immediately instead of staying blank.
Call Window
- Fixed runtime toggle. Hide/show cycle forces compositor to re-map the surface with updated flags.
Popup Call Window Setting
- Wired up existing popupCallView setting that was defined but never used.
- When disabled: call window starts minimized, showNormal() calls are suppressed.
- Desktop notifications become mandatory when popup is disabled (only way to answer calls).
- Hidden on Windows where no notification system exists.
- Added toggle in Settings > Appearance with dynamic description.
Zoom/Scaling Overhaul
- All hardcoded pixel values across the entire QML codebase converted to Theme.dp() for proper zoom scaling.
Call Window Performance (Windows)
- Pre-load call window on Windows to eliminate the 3-5 second delay when placing a call. Linux behavior is unchanged.
v0.2.8
RecommendedNew features!
- Removed tooltip from the silence button in the call window
- Added option to keep or remove the call window always on top (Settings > Appearance)
- Added option to enable or disable desktop notifications for incoming calls (Settings > Appearance)
- App now automatically restarts after installing an update
- Fixed rendering issues causing lag and stuttering on Wayland (GNOME) with bundled Qt
- Backup format bumped to v2. Now includes all encrypted and the license.
- Fixed Add to contact icon not showing for some numbers
v0.2.7
RecommendedIncoming Call View
Incoming Call View
- Accept, Decline, and Silence buttons are now uniform circular icons in a single row
- Caller name, number, and status text centered
- Green dot replaced with pulsing mint-colored "Incoming call" text
- New bell-off icon for the Silence button
v0.2.6
CriticalFix call window manager
Not final
- This is not a final change to the window, this will make it work for now.
- Call Window: Fixed not showing on GNOME/Wayland
- Replaced the static CallView with a Loader that creates a fresh window for each call and destroys it after the call.
- Fedora (GNOME/Wayland): window now shows reliably
- Ubuntu (X11/XWayland): no longer fails on second+ calls due to focus-stealing prevention
- Removed redundant visibility Connections in Main.qml that conflicted with CallView's own logic
- Replaced the arbitrary timer with a direct binding to showingEndedSummary.
- ICE Fallback: Fixed sound glitch and window flicker on retry
- Removed unnecessary FBO rendering on call window
v0.2.4
CriticalFix CPU Usage
UI
- Changed the location of the update message to make it less intrusive.
Encryption detection
- better detect call encryption
Performance
- Fixed: High CPU usage on some Linux systems. The audio device monitor and device enumeration were triggering each other in a loop. This caused PipeWire processes to consume up to ~350% CPU even while the app was idle.
v0.2.3
RecommendedNew features
Call Quality Monitoring
- Always-on stats collection: Call statistics (packet loss, jitter, RTT) are now collected continuously during active calls, not only when the stats panel is open.
- Connection quality warning: New "Connection unstable" indicator when packet loss > 5%, jitter > 50ms, or RTT > 300ms. Status dot turns red, and an amber warning banner shows the specific issues (e.g. "High packet loss (8.2%) · High jitter (65 ms)").
Encryption Status Fix
- TLS detection fix: Fixed TLS signaling not being detected because.
Button First-Click Fix
- pressDelay: 0 on all scrollable containers: Added to every Flickable, ListView, and PageScroll in the app to prevent Qt's gesture disambiguation from swallowing the first click on buttons inside scrollable areas.
Account Registration Spinner
- Settings account edit: Clicking "Update" now shows a BusyIndicator spinner with "Registering..." while the SIP registration is in progress. Buttons are disabled during registration. Form auto-closes on completion.
- Setup Wizard: Same spinner and disabled buttons during "Create Account" registration.
Auto-Forward Calls
- Added support to automatically forward incoming calls after x seconds.
Registration Error Handling
- Auth failure stops retrying: Wrong credentials (401/403), account not found (404), and proxy auth required (407) no longer retry endlessly. Server errors (408, 503) and connection failures still retry.
- Error messages: Human-readable error text per account (e.g. "Authentication failed. Check username and password").
- Settings UI: Error text appears in red below the account in the accounts list.
- Sidebar tooltips: Hovering over a failed account name in the sidebar shows the specific error.
Backup & Restore
- Create Backup: Exports the SQLite database and all QSettings into an AES-256-GCM encrypted binary file (FullBackup.meow). Random 32-byte key displayed as base64 with copy button.
- Restore Backup: File picker, key entry field, validation before any destructive action. Wrong key shows an error without touching app state. Correct key replaces database and settings, then restarts the app automatically.
- File format: MEOWBAK magic header, version byte, 12-byte nonce, 16-byte GCM auth tag, encrypted payload.