diff --git a/.changeset/allow_swiping_away_in_app_notifications_on_mobile.md b/.changeset/allow_swiping_away_in_app_notifications_on_mobile.md deleted file mode 100644 index 2d248a8ac..000000000 --- a/.changeset/allow_swiping_away_in_app_notifications_on_mobile.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Allow swiping away in-app notifications on mobile diff --git a/.changeset/configurable-gif-provider.md b/.changeset/configurable-gif-provider.md deleted file mode 100644 index c05f06433..000000000 --- a/.changeset/configurable-gif-provider.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add a configurable gif provider (Tenor, Giphy or Klipy) and send gifs through the media proxy diff --git a/.changeset/embedded-unifiedpush-distributor.md b/.changeset/embedded-unifiedpush-distributor.md deleted file mode 100644 index 0ac9f4a97..000000000 --- a/.changeset/embedded-unifiedpush-distributor.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add a built-in UnifiedPush distributor so Android push works without Google Play Services or a separate distributor app, support MSC4174 so the homeserver can deliver web push directly, and decrypt push previews through the Rust crypto engine. diff --git a/.changeset/enable-gif-sticker-triggers.md b/.changeset/enable-gif-sticker-triggers.md deleted file mode 100644 index d82e1e4d1..000000000 --- a/.changeset/enable-gif-sticker-triggers.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Show the gif and sticker composer buttons by default, keeping only emoji while typing on mobile. diff --git a/.changeset/fix-android-emote-backspace-keyboard.md b/.changeset/fix-android-emote-backspace-keyboard.md deleted file mode 100644 index 95af104ff..000000000 --- a/.changeset/fix-android-emote-backspace-keyboard.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix the Android keyboard flickering when backspacing a native emote. diff --git a/.changeset/fix-android-keyboard-viewport-height.md b/.changeset/fix-android-keyboard-viewport-height.md deleted file mode 100644 index a0d71e273..000000000 --- a/.changeset/fix-android-keyboard-viewport-height.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix the app not resizing above the on-screen keyboard on Android. diff --git a/.changeset/fix-avatar-blinking.md b/.changeset/fix-avatar-blinking.md deleted file mode 100644 index 0940b6ff7..000000000 --- a/.changeset/fix-avatar-blinking.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix avatars flickering and sometimes staying broken: a retry now re-requests the image on the web, loads without dropping the fallback, and stays cached once it succeeds. diff --git a/.changeset/fix-crypto-mismatch-reload.md b/.changeset/fix-crypto-mismatch-reload.md deleted file mode 100644 index 13db8be7e..000000000 --- a/.changeset/fix-crypto-mismatch-reload.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix devices randomly becoming unverified: clear the account's crypto stores on forced logout, and reload instead of retrying in place after a store mismatch. diff --git a/.changeset/fix-device-names-resetting.md b/.changeset/fix-device-names-resetting.md deleted file mode 100644 index d8d836ba7..000000000 --- a/.changeset/fix-device-names-resetting.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix device names being reset every time the client is opened. Also makes the device rename field set the default name when left empty. diff --git a/.changeset/fix-duplicate-crypto-client.md b/.changeset/fix-duplicate-crypto-client.md deleted file mode 100644 index 5e22d025c..000000000 --- a/.changeset/fix-duplicate-crypto-client.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Stop a second Matrix client from opening the same crypto store, which could corrupt device keys and leave a device looking unverified to other clients. diff --git a/.changeset/fix-emoji-autocomplete-focus.md b/.changeset/fix-emoji-autocomplete-focus.md deleted file mode 100644 index 5b90218b8..000000000 --- a/.changeset/fix-emoji-autocomplete-focus.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix a crash when emoji autocomplete results reappear while typing. diff --git a/.changeset/fix-flatpak-cef-cache-lock.md b/.changeset/fix-flatpak-cef-cache-lock.md deleted file mode 100644 index f37c2dde3..000000000 --- a/.changeset/fix-flatpak-cef-cache-lock.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix the Flatpak app failing to launch after a previous run, where a leftover CEF cache lock was mistaken for a running instance. diff --git a/.changeset/fix-forum-event-timeline.md b/.changeset/fix-forum-event-timeline.md deleted file mode 100644 index 454f95396..000000000 --- a/.changeset/fix-forum-event-timeline.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix the forum room "Event Timeline" developer entry bouncing straight back to the forum view. diff --git a/.changeset/fix-forum-routing.md b/.changeset/fix-forum-routing.md deleted file mode 100644 index 6584e60e0..000000000 --- a/.changeset/fix-forum-routing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix forum rooms opening in the normal chat view and improve forum post and thread navigation. diff --git a/.changeset/fix-ios-loopback-media-after-background.md b/.changeset/fix-ios-loopback-media-after-background.md deleted file mode 100644 index 15d1e93d9..000000000 --- a/.changeset/fix-ios-loopback-media-after-background.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix media failing to load after the app has been in the background, which previously needed an app restart to recover. diff --git a/.changeset/fix-mobile-composer-keyboard.md b/.changeset/fix-mobile-composer-keyboard.md deleted file mode 100644 index 6b7864174..000000000 --- a/.changeset/fix-mobile-composer-keyboard.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix the mobile keyboard staying open over the room list after swiping out of a room. diff --git a/.changeset/fix-mobile-image-tap-keyboard.md b/.changeset/fix-mobile-image-tap-keyboard.md deleted file mode 100644 index 68bbc51fe..000000000 --- a/.changeset/fix-mobile-image-tap-keyboard.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix the mobile keyboard reopening when tapping a timeline image. diff --git a/.changeset/fix-mobile-sheet-keyboard.md b/.changeset/fix-mobile-sheet-keyboard.md deleted file mode 100644 index 8de0a4a22..000000000 --- a/.changeset/fix-mobile-sheet-keyboard.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Dismiss the mobile keyboard when opening composer sheets (emoji, attachments, personas) and keep it dismissed after they close. diff --git a/.changeset/fix-recovery-key-cross-signing.md b/.changeset/fix-recovery-key-cross-signing.md deleted file mode 100644 index 33b04faa7..000000000 --- a/.changeset/fix-recovery-key-cross-signing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Restore cross-signing device trust when unlocking encryption backup with a recovery key. diff --git a/.changeset/fix-recovery-verification-persistence.md b/.changeset/fix-recovery-verification-persistence.md deleted file mode 100644 index 1f1cec7e7..000000000 --- a/.changeset/fix-recovery-verification-persistence.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix recovery-key verified devices becoming unverified after an app refresh. diff --git a/.changeset/fix-sent-message-draft.md b/.changeset/fix-sent-message-draft.md deleted file mode 100644 index 8e800e720..000000000 --- a/.changeset/fix-sent-message-draft.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix a sent message coming back in the composer, and stop undo restoring cleared content. diff --git a/.changeset/fix-slow-first-encrypted-send.md b/.changeset/fix-slow-first-encrypted-send.md deleted file mode 100644 index 4ff51140c..000000000 --- a/.changeset/fix-slow-first-encrypted-send.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix sending the first message after startup taking up to 40 seconds in encrypted rooms: outgoing crypto requests and key backup checks now coalesce instead of queueing one full run per caller, and repeated undecryptable events no longer re-request the key backup version from the server. diff --git a/.changeset/fix-space-preview-back-navigation.md b/.changeset/fix-space-preview-back-navigation.md deleted file mode 100644 index 2b915bf3d..000000000 --- a/.changeset/fix-space-preview-back-navigation.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix being unable to back out of a space preview opened by address, and give Tauri webview back/swipe somewhere to land on deep-linked launches. diff --git a/.changeset/fix-sso-redirect-url-on-older-webviews.md b/.changeset/fix-sso-redirect-url-on-older-webviews.md deleted file mode 100644 index 6f0f0f026..000000000 --- a/.changeset/fix-sso-redirect-url-on-older-webviews.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix the login page crashing with "Invalid URL" on Android WebView below 130 diff --git a/.changeset/fix-tauri-avatar-token-rotation.md b/.changeset/fix-tauri-avatar-token-rotation.md deleted file mode 100644 index 736513782..000000000 --- a/.changeset/fix-tauri-avatar-token-rotation.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix room and user avatars disappearing on desktop after an access-token rotation. diff --git a/.changeset/fix-tauri-file-downloads.md b/.changeset/fix-tauri-file-downloads.md deleted file mode 100644 index 437e85b90..000000000 --- a/.changeset/fix-tauri-file-downloads.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix downloading files other than images in the desktop and mobile apps. diff --git a/.changeset/fix-tauri-media-loading.md b/.changeset/fix-tauri-media-loading.md deleted file mode 100644 index e13bfaa05..000000000 --- a/.changeset/fix-tauri-media-loading.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix avatars, images and videos disappearing or reloading on desktop and mobile. diff --git a/.changeset/fix-unread-divider.md b/.changeset/fix-unread-divider.md deleted file mode 100644 index 7997a2317..000000000 --- a/.changeset/fix-unread-divider.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Keep the new messages divider visible when opening a room with unread messages. diff --git a/.changeset/reimplement_responsive_composer_layout.md b/.changeset/reimplement_responsive_composer_layout.md deleted file mode 100644 index 096a84ec8..000000000 --- a/.changeset/reimplement_responsive_composer_layout.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Reimplement responsive composer layout diff --git a/.changeset/show-all-timestamps.md b/.changeset/show-all-timestamps.md deleted file mode 100644 index 7fb415be9..000000000 --- a/.changeset/show-all-timestamps.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add a setting to show all timestamps, including on grouped messages from the same sender diff --git a/.changeset/update_msc4461_support_to_v3.md b/.changeset/update_msc4461_support_to_v3.md deleted file mode 100644 index 37b5ba3f3..000000000 --- a/.changeset/update_msc4461_support_to_v3.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Update MSC4461 (Persona) support to v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 32effa06e..782c838a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,44 @@ # Sable Client Changelog +## 1.22.0 (2026-08-30) + +### Features + +* Allow swiping away in-app notifications on mobile by @blueberrymuffin3 in #1863 +* Add a configurable gif provider (Tenor, Giphy or Klipy) and send gifs through the media proxy by @eleboucher in #1918 +* Add a built-in UnifiedPush distributor so Android push works without Google Play Services or a separate distributor app, support MSC4174 so the homeserver can deliver web push directly, and decrypt push previews through the Rust crypto engine. by @eleboucher in #1607 +* Show the gif and sticker composer buttons by default, keeping only emoji while typing on mobile. by @eleboucher in #1862 +* Add a setting to show all timestamps, including on grouped messages from the same sender by @cwyptt in #1942 +* Update MSC4461 (Persona) support to v3 by @blueberrymuffin3 in #1923 + +### Fixes + +* Fix the Android keyboard flickering when backspacing a native emote. by @eleboucher in #1871 +* Fix the app not resizing above the on-screen keyboard on Android. by @eleboucher in #1921 +* Fix avatars flickering and sometimes staying broken: a retry now re-requests the image on the web, loads without dropping the fallback, and stays cached once it succeeds. by @eleboucher in #1910 +* Fix devices randomly becoming unverified: clear the account's crypto stores on forced logout, and reload instead of retrying in place after a store mismatch. by @eleboucher in #1868 +* Fix device names being reset every time the client is opened. Also makes the device rename field set the default name when left empty. by @RoootTheFox in #1939 +* Stop a second Matrix client from opening the same crypto store, which could corrupt device keys and leave a device looking unverified to other clients. by @eleboucher in #1945 +* Fix a crash when emoji autocomplete results reappear while typing. by @eleboucher in #1886 +* Fix the Flatpak app failing to launch after a previous run, where a leftover CEF cache lock was mistaken for a running instance. by @eleboucher in #1989 +* Fix the forum room "Event Timeline" developer entry bouncing straight back to the forum view. by @eleboucher in #1857 +* Fix forum rooms opening in the normal chat view and improve forum post and thread navigation. by @7w1 in #1839 +* Fix media failing to load after the app has been in the background, which previously needed an app restart to recover. by @eleboucher in #1914 +* Fix the mobile keyboard staying open over the room list after swiping out of a room. by @eleboucher in #1862 +* Fix the mobile keyboard reopening when tapping a timeline image. by @eleboucher in #1871 +* Dismiss the mobile keyboard when opening composer sheets (emoji, attachments, personas) and keep it dismissed after they close. by @eleboucher in #1866 +* Restore cross-signing device trust when unlocking encryption backup with a recovery key. by @eleboucher in #1911 +* Fix recovery-key verified devices becoming unverified after an app refresh. by @eleboucher in #1902 +* Fix a sent message coming back in the composer, and stop undo restoring cleared content. by @eleboucher in #1862 +* Fix sending the first message after startup taking up to 40 seconds in encrypted rooms: outgoing crypto requests and key backup checks now coalesce instead of queueing one full run per caller, and repeated undecryptable events no longer re-request the key backup version from the server. by @eleboucher in #1998 +* Fix being unable to back out of a space preview opened by address, and give Tauri webview back/swipe somewhere to land on deep-linked launches. by @eleboucher in #1868 +* Fix the login page crashing with "Invalid URL" on Android WebView below 130 by @eleboucher in #1924 +* Fix room and user avatars disappearing on desktop after an access-token rotation. by @eleboucher in #1864 +* Fix downloading files other than images in the desktop and mobile apps. by @eleboucher in #1911 +* Fix avatars, images and videos disappearing or reloading on desktop and mobile. by @eleboucher in #1862 +* Keep the new messages divider visible when opening a room with unread messages. by @eleboucher in #1906 +* Reimplement responsive composer layout by @Septicity in #1865 + ## 1.21.0 (2026-08-17) ### Features diff --git a/package.json b/package.json index d80b87563..cda87a91b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sable", - "version": "1.21.0", + "version": "1.22.0", "description": "An almost stable Matrix client", "keywords": [], "license": "AGPL-3.0-only", @@ -180,4 +180,4 @@ } }, "packageManager": "pnpm@11.18.0+sha512.33d83c77da82f49fba836925c6f1b841181ec3132b670639bd012f7075f5c7cf634c5f870147c19aae7478fac01df09d8892e880454896edd23ee9b33757563c" -} +} \ No newline at end of file diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index ddbbf1d75..8cf1e5381 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sable" -version = "1.21.0" +version = "1.22.0" description = "Yet another matrix client but better" authors = ["Sable Maintainers"] license = "AGPL-3.0-or-later" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 5e2427503..91f9d4f23 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "Sable", - "version": "1.21.0", + "version": "1.22.0", "identifier": "moe.sable.client", "build": { "frontendDist": "../dist", @@ -64,7 +64,9 @@ }, "plugins": { "updater": { - "endpoints": ["https://github.com/SableClient/Sable/releases/latest/download/latest.json"], + "endpoints": [ + "https://github.com/SableClient/Sable/releases/latest/download/latest.json" + ], "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEM0NDc2QkI0NjdCODlEQUUKUldTdW5iaG50R3RIeFBQeGFwcDZNcGhCQ2Y4UFgzVnptRmNRZjRoVDl0MkdOZmREdC9pTUZrZnAK" }, "typegen": { @@ -78,11 +80,17 @@ }, "deep-link": { "desktop": { - "schemes": ["sable", "moe.sable.app"] + "schemes": [ + "sable", + "moe.sable.app" + ] }, "mobile": [ { - "scheme": ["sable", "moe.sable.app"], + "scheme": [ + "sable", + "moe.sable.app" + ], "appLink": false } ] @@ -104,4 +112,4 @@ ] } } -} +} \ No newline at end of file