diff --git a/.changeset/add-forum-room-type.md b/.changeset/add-forum-room-type.md deleted file mode 100644 index b19c76ad7..000000000 --- a/.changeset/add-forum-room-type.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add the `forum` room type with a dedicated forum view that presents threads as topics. diff --git a/.changeset/add-gif-slash-command.md b/.changeset/add-gif-slash-command.md deleted file mode 100644 index ba6f610dd..000000000 --- a/.changeset/add-gif-slash-command.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -New composer commands: `/gif` opens the GIF picker and `/rainbowme` sends rainbow-formatted action messages (#1109). diff --git a/.changeset/add-mobile-app-icon-selection.md b/.changeset/add-mobile-app-icon-selection.md deleted file mode 100644 index 56089b1db..000000000 --- a/.changeset/add-mobile-app-icon-selection.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add selectable app icons on Android and iOS. diff --git a/.changeset/add-msc4466-profile-propagation.md b/.changeset/add-msc4466-profile-propagation.md deleted file mode 100644 index 9afe3f0ab..000000000 --- a/.changeset/add-msc4466-profile-propagation.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add MSC4466 profile sync controls for supported homeservers. diff --git a/.changeset/add-new-calls.md b/.changeset/add-new-calls.md deleted file mode 100644 index 78db2ba99..000000000 --- a/.changeset/add-new-calls.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add experimental new calls using LiveKit on web, desktop, and supported mobile devices, enabled by a single setting with Element Call as the fallback. diff --git a/.changeset/add-obtainium-app-config.md b/.changeset/add-obtainium-app-config.md deleted file mode 100644 index 40ad03bcf..000000000 --- a/.changeset/add-obtainium-app-config.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Publish an `obtainium.json` app config with every release so Android builds can be installed and auto-updated through Obtainium. diff --git a/.changeset/add-reorderable-composer-buttons.md b/.changeset/add-reorderable-composer-buttons.md deleted file mode 100644 index 0415e6934..000000000 --- a/.changeset/add-reorderable-composer-buttons.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add toggleable, reorderable composer trigger buttons (emoji, gif, sticker) with a drag-and-drop settings list. diff --git a/.changeset/add-settings-search.md b/.changeset/add-settings-search.md deleted file mode 100644 index 886bb6d30..000000000 --- a/.changeset/add-settings-search.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Settings improvements: search the settings sidebar and customize keyboard shortcuts (#1121). diff --git a/.changeset/add_accessibility_tab_and_accessible_color_correction.md b/.changeset/add_accessibility_tab_and_accessible_color_correction.md deleted file mode 100644 index f83fba548..000000000 --- a/.changeset/add_accessibility_tab_and_accessible_color_correction.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add an accessibility settings tab with color correction filters. diff --git a/.changeset/add_persona_picker_in_editor.md b/.changeset/add_persona_picker_in_editor.md deleted file mode 100644 index 7f29687ad..000000000 --- a/.changeset/add_persona_picker_in_editor.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Persona improvements: pick a persona directly in the editor, an account-wide persona toggle, latching shorthands, persona name colors, and a redesigned persona settings menu (#1223, #1264, #1368, #1369, #1435, #1462). diff --git a/.changeset/add_table_styling.md b/.changeset/add_table_styling.md deleted file mode 100644 index 0c3a2ece7..000000000 --- a/.changeset/add_table_styling.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Style tables in formatted messages. diff --git a/.changeset/bottom-sheet-files.md b/.changeset/bottom-sheet-files.md deleted file mode 100644 index c217d47bc..000000000 --- a/.changeset/bottom-sheet-files.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -New bottom sheets across the app: attach files and pick emoji from sheets in the composer, plus a room details sheet on small screens (#1173, #1433). diff --git a/.changeset/cache-sliding-sync-room-metadata.md b/.changeset/cache-sliding-sync-room-metadata.md deleted file mode 100644 index f215036dd..000000000 --- a/.changeset/cache-sliding-sync-room-metadata.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Performance: faster startup and warm syncs by caching room metadata, profile data, and device verification, plus lower memory use by pruning inactive room history (#1127, #1184, #1305, #1466). diff --git a/.changeset/device-display-name.md b/.changeset/device-display-name.md deleted file mode 100644 index 9abc8ab65..000000000 --- a/.changeset/device-display-name.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Update the device display name after login to reflect the current client and build flavor. diff --git a/.changeset/feat-revamp-connection-status-indicator.md b/.changeset/feat-revamp-connection-status-indicator.md deleted file mode 100644 index 55b9546e2..000000000 --- a/.changeset/feat-revamp-connection-status-indicator.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Replaced the connection status top bar with a small styled popup and added a variant that shows sliding sync initial progress. diff --git a/.changeset/fix-auth-homeserver-query-param.md b/.changeset/fix-auth-homeserver-query-param.md deleted file mode 100644 index 1b828acc1..000000000 --- a/.changeset/fix-auth-homeserver-query-param.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Login and account fixes: full-URL homeservers no longer land on an empty room, a retry button when discovery fails, OAuth device verification no longer hangs, identity reset completes, key backup restores on verified devices, and account switch or logout from the offline screen (#1115, #1270, #1348, #1379, #1380). diff --git a/.changeset/fix-encrypted-media-content-type.md b/.changeset/fix-encrypted-media-content-type.md deleted file mode 100644 index 05f9ec678..000000000 --- a/.changeset/fix-encrypted-media-content-type.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Media fixes: encrypted images and GIFs render again, playback works on Firefox, better loading on slow connections, decrypted media is freed from memory, gzipped Lottie support, stickers send reliably, and notification sounds no longer play as media (#1104, #1296, #1331, #1332, #1334, #1353, #1381). diff --git a/.changeset/fix-link-preview-whitespace.md b/.changeset/fix-link-preview-whitespace.md deleted file mode 100644 index 2ea555f55..000000000 --- a/.changeset/fix-link-preview-whitespace.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -# Fix link previews leaving empty space in a message until it is reloaded diff --git a/.changeset/fix-markdown-task-list-rendering.md b/.changeset/fix-markdown-task-list-rendering.md deleted file mode 100644 index 47930fa5b..000000000 --- a/.changeset/fix-markdown-task-list-rendering.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Message formatting fixes: checklists no longer render as raw HTML, spoilers work with proxy tags, maps with malformed coordinates no longer crash the app, and membership reasons are wrapped in parentheses (#1248, #1307, #1470). diff --git a/.changeset/fix-menu-open-toggle-races.md b/.changeset/fix-menu-open-toggle-races.md deleted file mode 100644 index 51cce72c7..000000000 --- a/.changeset/fix-menu-open-toggle-races.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix context menus closing instead of opening, keep the room options sheet open, and let sidebar, space, and image viewer menus open on long-press as well as right-click (#1336, #1358). diff --git a/.changeset/fix-network-switch-sync-recovery.md b/.changeset/fix-network-switch-sync-recovery.md deleted file mode 100644 index d9f1426b8..000000000 --- a/.changeset/fix-network-switch-sync-recovery.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Assorted fixes: popups on start appear one at a time, room leave updates immediately, accepted invites stop reappearing, synced CSS tweaks are restored, the scheduled-messages chip shows again, faster recovery from network switches, plus small visual and formatting fixes (#1114, #1120, #1146, #1200, #1220, #1284, #1514, #1656). diff --git a/.changeset/fix-profile-sheet-surface-color.md b/.changeset/fix-profile-sheet-surface-color.md deleted file mode 100644 index 33cf3be3b..000000000 --- a/.changeset/fix-profile-sheet-surface-color.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Profile fixes: hero colours and full scrolling restored on profile sheets, local time respects the 24-hour setting, devices stay sorted when last-active times are missing, and no crash in room cosmetics before members load (#1298, #1579, #1793). diff --git a/.changeset/fix-sliding-sync-display-names.md b/.changeset/fix-sliding-sync-display-names.md deleted file mode 100644 index ec10bdc53..000000000 --- a/.changeset/fix-sliding-sync-display-names.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix sliding sync issues: missing or stale display names, bridged avatars, blank space icons, sticker and emote packs, subspaces, call updates, and incomplete member lists (#1111, #1112, #1119, #1173, #1530, #1554). diff --git a/.changeset/fix-thread-and-restart-read-markers.md b/.changeset/fix-thread-and-restart-read-markers.md deleted file mode 100644 index c0325986a..000000000 --- a/.changeset/fix-thread-and-restart-read-markers.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Notification and unread fixes: rooms no longer stay unread after a thread reply or restart, the inbox shows real message previews, the page title shows the mention count, and tapping a notification navigates correctly (#1245, #1390). diff --git a/.changeset/fix-timeline-auto-follow.md b/.changeset/fix-timeline-auto-follow.md deleted file mode 100644 index 3ef190b30..000000000 --- a/.changeset/fix-timeline-auto-follow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Timeline fixes: reliably follow new messages, stop loading a room's whole history on open, unstuck pagination, restored polls, and fixed thread rendering, reactions, and replies (#1113, #1358, #1363, #1367, #1373, #1425). diff --git a/.changeset/fix-voice-record-pointercancel.md b/.changeset/fix-voice-record-pointercancel.md deleted file mode 100644 index dc58a6a6e..000000000 --- a/.changeset/fix-voice-record-pointercancel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Fix voice recordings continuing after cancel or rapid taps, and stop the microphone when a recording is interrupted before the permission prompt resolves (#1428). diff --git a/.changeset/impl_msc4461_storing_per_message_profiles_for_users.md b/.changeset/impl_msc4461_storing_per_message_profiles_for_users.md deleted file mode 100644 index fff5f9829..000000000 --- a/.changeset/impl_msc4461_storing_per_message_profiles_for_users.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add per-message profiles (MSC4461): a different name and avatar in each room, with PluralKit import, shorthands, backup and restore, editing sent messages, and profile info on user profiles (#1352, #1479, #1586, #1611, #1651, #1701). diff --git a/.changeset/local-notification-inbox.md b/.changeset/local-notification-inbox.md deleted file mode 100644 index e431e8425..000000000 --- a/.changeset/local-notification-inbox.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -The notifications inbox is now built from push rules evaluated on this device instead of the server's `/notifications` endpoint, so mentions in encrypted rooms are detected correctly. diff --git a/.changeset/option-always-inline-editor.md b/.changeset/option-always-inline-editor.md deleted file mode 100644 index cf0304d86..000000000 --- a/.changeset/option-always-inline-editor.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Add option to always keep the last line of the text editor "inline" with the UI buttons. diff --git a/.changeset/polish-mobile-chat-input.md b/.changeset/polish-mobile-chat-input.md deleted file mode 100644 index d718f804c..000000000 --- a/.changeset/polish-mobile-chat-input.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: patch ---- - -Mobile polish: smoother swipe navigation and drawer, steady keyboard while editing, better touch feedback, chat input and account panel, swipe-to-edit on messages, and fixed swiping in attachments (#1103, #1130, #1131, #1144, #1173, #1267, #1303, #1382, #1754). diff --git a/.changeset/tauri.md b/.changeset/tauri.md deleted file mode 100644 index 93df31f43..000000000 --- a/.changeset/tauri.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -default: minor ---- - -Add beta desktop and mobile builds with a greatly improved mobile experience, UnifiedPush support and more reliable notifications, better desktop shortcuts, updates and window controls, and improved native media handling and sharing. diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f07503ac..32effa06e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,44 @@ # Sable Client Changelog +## 1.21.0 (2026-08-17) + +### Features + +* Add the `forum` room type with a dedicated forum view that presents threads as topics. by @smokku in #980 +* New composer commands: `/gif` opens the GIF picker and `/rainbowme` sends rainbow-formatted action messages (#1109). by @eleboucher in #1573 +* Add selectable app icons on Android and iOS. by @eleboucher in #1594 +* Add MSC4466 profile sync controls for supported homeservers. by @7w1 in #1117 +* Add experimental new calls using LiveKit on web, desktop, and supported mobile devices, enabled by a single setting with Element Call as the fallback. by @eleboucher in #1575 +* Add toggleable, reorderable composer trigger buttons (emoji, gif, sticker) with a drag-and-drop settings list. by @eleboucher in #1261 +* Settings improvements: search the settings sidebar and customize keyboard shortcuts (#1121). by @eleboucher in #1660 +* Add an accessibility settings tab with color correction filters. by @j0lol in #1664 +* Persona improvements: pick a persona directly in the editor, an account-wide persona toggle, latching shorthands, persona name colors, and a redesigned persona settings menu (#1223, #1264, #1368, #1369, #1435, #1462). by @j0lol in #1171 +* Style tables in formatted messages. by @Steffo99 in #1580 +* New bottom sheets across the app: attach files and pick emoji from sheets in the composer, plus a room details sheet on small screens (#1173, #1433). by @eleboucher in #1234 +* Update the device display name after login to reflect the current client and build flavor. by @hazre in #1458 +* Replaced the connection status top bar with a small styled popup and added a variant that shows sliding sync initial progress. by @7w1 in #1200 +* Add per-message profiles (MSC4461): a different name and avatar in each room, with PluralKit import, shorthands, backup and restore, editing sent messages, and profile info on user profiles (#1352, #1479, #1586, #1611, #1651, #1701). by @j0lol in #1589 +* The notifications inbox is now built from push rules evaluated on this device instead of the server's `/notifications` endpoint, so mentions in encrypted rooms are detected correctly. by @eleboucher in #1372 +* Add beta desktop and mobile builds with a greatly improved mobile experience, UnifiedPush support and more reliable notifications, better desktop shortcuts, updates and window controls, and improved native media handling and sharing. by @eleboucher in #1103 + +### Fixes + +* Publish an `obtainium.json` app config with every release so Android builds can be installed and auto-updated through Obtainium. by @eleboucher in #1616 +* Performance: faster startup and warm syncs by caching room metadata, profile data, and device verification, plus lower memory use by pruning inactive room history (#1127, #1184, #1305, #1466). by @7w1 in #1118 +* Login and account fixes: full-URL homeservers no longer land on an empty room, a retry button when discovery fails, OAuth device verification no longer hangs, identity reset completes, key backup restores on verified devices, and account switch or logout from the offline screen (#1115, #1270, #1348, #1379, #1380). by @eleboucher in #1582 +* Media fixes: encrypted images and GIFs render again, playback works on Firefox, better loading on slow connections, decrypted media is freed from memory, gzipped Lottie support, stickers send reliably, and notification sounds no longer play as media (#1104, #1296, #1331, #1332, #1334, #1353, #1381). by @eleboucher in #1271 +* Fix link previews leaving empty space in a message until it is reloaded by @eleboucher in #1827 +* Message formatting fixes: checklists no longer render as raw HTML, spoilers work with proxy tags, maps with malformed coordinates no longer crash the app, and membership reasons are wrapped in parentheses (#1248, #1307, #1470). by @eleboucher in #1354 +* Fix context menus closing instead of opening, keep the room options sheet open, and let sidebar, space, and image viewer menus open on long-press as well as right-click (#1336, #1358). by @eleboucher in #1431 +* Assorted fixes: popups on start appear one at a time, room leave updates immediately, accepted invites stop reappearing, synced CSS tweaks are restored, the scheduled-messages chip shows again, faster recovery from network switches, plus small visual and formatting fixes (#1114, #1120, #1146, #1200, #1220, #1284, #1514, #1656). by @eleboucher in #1399 +* Profile fixes: hero colours and full scrolling restored on profile sheets, local time respects the 24-hour setting, devices stay sorted when last-active times are missing, and no crash in room cosmetics before members load (#1298, #1579, #1793). by @eleboucher in #1503 +* Fix sliding sync issues: missing or stale display names, bridged avatars, blank space icons, sticker and emote packs, subspaces, call updates, and incomplete member lists (#1111, #1112, #1119, #1173, #1530, #1554). by @7w1 in #1170 +* Notification and unread fixes: rooms no longer stay unread after a thread reply or restart, the inbox shows real message previews, the page title shows the mention count, and tapping a notification navigates correctly (#1245, #1390). by @eleboucher in #1816 +* Timeline fixes: reliably follow new messages, stop loading a room's whole history on open, unstuck pagination, restored polls, and fixed thread rendering, reactions, and replies (#1113, #1358, #1363, #1367, #1373, #1425). by @eleboucher in #1105 +* Fix voice recordings continuing after cancel or rapid taps, and stop the microphone when a recording is interrupted before the permission prompt resolves (#1428). by @eleboucher in #1252 +* Add option to always keep the last line of the text editor "inline" with the UI buttons. by @lunar-seal in #1218 +* Mobile polish: smoother swipe navigation and drawer, steady keyboard while editing, better touch feedback, chat input and account panel, swipe-to-edit on messages, and fixed swiping in attachments (#1103, #1130, #1131, #1144, #1173, #1267, #1303, #1382, #1754). by @eleboucher in #1166 + ## 1.20.0 (2026-07-17) ### Security diff --git a/package.json b/package.json index c8171376a..f29ee60e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sable", - "version": "1.20.0", + "version": "1.21.0", "description": "An almost stable Matrix client", "keywords": [], "license": "AGPL-3.0-only", @@ -187,4 +187,4 @@ "@sableclient/tauri-plugin-livekit-mobile" ] } -} +} \ No newline at end of file diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a46ba94d1..0a3d18073 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sable" -version = "1.20.0" +version = "1.21.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 bccd176b9..99690ad2a 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.20.0", + "version": "1.21.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