Releases: SableClient/Sable
1.15.2 (2026-05-07)
Fixes
- Adds back the message editor toolbar under an optional setting. No longer uses WYSIWYG, just applies markdown. http://localhost:8080/settings/general?focus=composer-formatting-toolbar&moe.sable.client.action=settings (#762 by @7w1)
- Fixed blockquotes needing a double backslash to escape and require a space after the
>in order to form a blockquote. (#758 by @7w1) - Fix empty messages being displayed as broken messages. (#754 by @7w1)
- Reescape arrow brackets when editing a message. (#763 by @7w1)
- Fix extraneous markdown escape characters when editing code blocks. (#762 by @7w1)
- Fixed jumpting to arbitrary events (e.g. reactions, edits, pins, leaves/joins). (#759 by @7w1)
- Fix latex in codeblocks getting parsed. (#758 by @7w1)
- Fixed message links being rendered as full links. (#751 by @7w1)
- Fixed per-message profile proxies not unwrapping and generally just not working. (
f8a9a8f) - Fixed tweak automatic favoriting behavior when entering/leaving the catalog. (#757 by @7w1)
- Fix tweaks not applying on built-in themes. (#756 by @7w1)
- Added the ability to underline using
__underscores__. (#761 by @7w1)
1.15.1 (2026-05-05)
1.15.0 (2026-05-05)
Features
- Add background styling to user profile cards (#712 by @nushea)
- Add preventing url preview cards by surrounding a link in anglebrackets like https://app.sable.moe (#717 by @nushea)
- Reorganize Embed settings and reintroduce multiple embeds (#667 by @nushea)
- Change Misc. data styling in users profile pages (#663 by @nushea)
- add initial support for sending discoverable emojis and sticker (#730 by @dozro)
Themes and tweaks from the catalog (#633 by @7w1)
Themes are pulled from a repo now, so you get the full power of CSS instead of a palette. Tweaks are new: CSS overlays that sit on top of whatever theme you are using.
You'll be prompted to migrate to the new system whenever you update, if you choose not to, you'll be limited to the basic dark/light themes. A few additional themes have been added (Rose Pine variantes, Catpuccin) along with some basic tweaks (circular avatars, monochrome avatars, and square stuff).
You can share themes and tweaks. For themes uploaded online, simply hit the copy button in settings and paste the link in chat. If the setting is enabled, a preview will be generated. Third party themes (as defined by the config.json) have prominent warning banners and fetching is disabled by default.
You can also export and share theme files directly, although no previews are generated for these.
If you're intrested in getting a theme or tweak added to the official catalog, contribute to the themes repo linked above! We're eager to add more!
Markdown parser and render updates (#727 by @7w1)
Migrated markdown parsing and rendering to use marked, which should fix most (all?) markdown issues involving lists/nested structures, inconsistent/inaccurate code blocks, escape sequences, and all the other bugs with literally everything.
Added math rendering support via marked and KaTeX, uses standard $$ and $ delimiters. Only renders a subset of latex tags that will likely need to be expanded so feel free to make issues if needed.
Also adds support for sending markdown tables (although they're rendered rather plainly at the moment), sending valid html directly (such as for colored text), and properly escaping anything with backslashes.
Fixes link previews appearing in code blocks, fixes pmp new line behavior, fixes links not opening in new tabs, and fixes editing arbitrary html messages, probably.
Finally, the old WYSIWYG editor has been completely removed.
Fixes
- Fix spam-clicking abbreviations crashing sable (#665 by @nushea)
- Add cache-control headers in Caddyfile for assets, service worker, and index.html (#609 by @Just-Insane)
- Fix the first pin event in a room looking empty (#685 by @nushea)
- Fix read receipt scrolling not working (#631 by @Septicity)
- Fix status sometimes sticking in member tile (#664 by @nushea)
- Fix apng files not animating. (#737 by @7w1)
- Some fixes to sync requests being spammed on loading screen and for multi-account background syncing, it should also load faster now! (#736 by @7w1)
- Fix other dmed party not being added as a founder by default when creating a dm. (#737 by @7w1)
- Update verbiage in the credits (#728 by @nushea)
- spoilered text now gets replaced with
[Spoiler]in the plain text fallback, as per MSC4454 (#715 by @dozro) - Hide copied settings links on dynamic rows (#695 by @hazre)
- Fix button hover background smearing in virtual list rows by suppressing transform on hover (#614 by @Just-Insane)
- Fix Workbox precaching by removing injectionPoint override that was silently disabling all precache entries (#611 by @Just-Insane)
Change how settings links are shared (#695 by @hazre)
Settings links copied from Sable now stay on the current client URL and include a small Sable marker in the link. That lets Sable recognize settings links copied from other Sable instances without treating unrelated third-party /settings/... links as Sable settings links.
When you send a bare settings link in the composer, Sable now rewrites it into a labeled link so it looks better on non-Sable clients too. For example: [Settings > Account > Display Name](https://client.example/settings/account?focus=display-name&moe.sable.client.action=settings).
Invalid or malformed settings-looking links now stay normal links instead of being shown as settings chips.
If you previously set settingsLinkBaseUrl in config.json, remove it. Sable now derives settings links from the runtime app URL, and the old config key is no longer used.
1.14.0 (2026-04-10)
Features
- Add support for rendering bundled urls per MSC4095 (#590 by @nushea)
- Improve code blocks with faster, more accurate syntax highlighting, broader language support, and separate light and dark theme options. (#576 by @hazre)
- Add statuses to DMs (#644 by @nushea)
- Add custom DM images and descriptions (#644 by @nushea)
- Add statuses to Member Tile (#644 by @nushea)
- Add the ability to set Global Name Colors dependent on the theme (dark/light) (#656 by @nushea)
- Add a setting to collapse sidebar folders by default. (#624 by @7w1)
- Add a "Dismiss" button to command response messages. (#625 by @7w1)
- Update threads: various fixes, browse all room threads, and see live reply counts on messages. (#564 by @Just-Insane)
- Re-introduced custom HTML formatting for long messages (#641 by @Septicity)
- You can now share direct links to specific settings, and opening one takes you to the right section and highlights the target option. (#577 by @hazre)
- Settings now use route-based navigation with improved desktop and mobile behavior, including better back and close handling. (#577 by @hazre)
Fixes
- Use file name instead of "a voice message" for non-voice audio files. (#651 by @mvanhorn)
- Constrain bug report modal to viewport height to prevent overflow. (#652 by @mvanhorn)
- Fix dms navigation not navigating to dms when local storage is messed up. (#653 by @7w1)
- Fix reply button not capturing editor focus. (#623 by @7w1)
- Fixes links not being clickable in formatted messages, including messages that use abbreviations. (#632 by @hazre)
- Fix some zero-width (invisible) names (#640 by @nushea)
- Fix iOS elastic bounce-back overscroll on the root element. (#650 by @mvanhorn)
- Fixed the "sticky scrolling" issue in encrypted rooms with many PMP messages. (#626 by @Septicity)
- Fix blank room timeline when app returns from background. When sliding sync delivers an
initial: trueresponse for the open room, aTimelineResetevent now correctly shows skeleton placeholders while events reload instead of leaving an empty view. (#657 by @Just-Insane) - Image zooming is now centered on the cursor position (#602 by @mini-bomba)
- Image zooming is now multiplicative instead of additive, resulting in a consistent "zooming speed". (#602 by @mini-bomba)
- Image zoom buttons now zoom towards the center of the screen (#602 by @mini-bomba)
- Right clicks no longer drag images in the viewer. (#620 by @Septicity)
- Updated Support links to point to https://opencollective.com/sable (#661 by @7w1)
1.13.1 (2026-03-30)
Fixes
- Add youtube shorts support to stop it from crashing sable. (#578 by @nushea)
- Fix rich-text reply previews and custom-formatted messages so unsafe HTML is filtered more strictly and Matrix colors render correctly. (#571 by @hazre)
- Fix crash when previewing non-video YouTube URLs (channels, @Handles, etc.) that lack query parameters. (#584 by @Just-Insane)
- fix id handling and id generation for Personas (#583 by @dozro)
1.13.0 (2026-03-28)
Features
- Add ability to click on usernames in member and state events to view user info (#536 by @thundertheidiot)
- Add black theme (#437 by @Elec3137)
- added a limited compatibility with
pk;membercommands (#550 by @dozro) - Add /location sharing command, and a /sharemylocation command. (#509 by @nushea)
- added option to use shorthands to send a message with a Persona, for example
✨:test(#550 by @dozro) - Add quick reply keybinds by using ctrl+up / ctrl+down you can now cycle through the message you are replying to with keybinds (#524 by @CodeF53)
- Adds a
/htmlcommand to send HTML messages (#560 by @Vespe-r) - Add room abbreviations with hover tooltips: moderators define term/definition pairs in room settings; matching terms are highlighted in messages. (#514 by @Just-Insane)
- Add support for timestamps, playlists and youtube music links for the youtube embeds (#534 by @thundertheidiot)
- Add settings sync across devices via Matrix account data, with JSON export/import (#515 by @Just-Insane)
Fixes
- Add detailed error messages to forwarding failures. (#532 by @7w1)
- Cap unread badge numbers at
1k+, and something extra :) (#484 by @hazre) - Fix scroll-to-bottom after room navigation, timeline pagination reliability, and URL preview deduplication. (#529 by @Just-Insane)
- Fixes the most recent pmp message in encrypted rooms not consistently rendering the pmp and not grouping with previous pmps. (#526 by @7w1)
- fixed sending sticker and attachments while having a persona selected (#525 by @dozro)
- Fix push notifications missing sender/room avatar and showing stale display names when using event_id_only push format. (#551 by @Just-Insane)
- Sanitize formatted reply previews before rendering to prevent unsafe HTML from being parsed in reply snippets. (#569 by @Just-Insane)
- Fix broken link to Sliding Sync known issues — now points to #39 instead of the old repository. (#519 by @Just-Insane)
- Fix service worker authenticated media requests returning 401 errors after SW restart or when session data is missing/stale. (#516 by @Just-Insane)
- rephrased the command describtion for
/usepmpand made/usepmp resetactually reset the room association of the pmp (#550 by @dozro) - Fix confusing ui with
Client Side Embeds in Encrypted Roomssetting (#535 by @thundertheidiot) - fix forwarding metadata by removing the
nullvalue (#540 by @dozro) - fix forwarding issue for users on synapse homeservers, by removing the relation (#558 by @dozro)
- fixed the syntax issues regarding
/addpmpandusepmp(note that the syntax for/usepmphas changed) (#550 by @dozro) - fix the display of jumbo emojis on messages sent with a persona (#530 by @dozro)
- Fix sidebar notification badge positioning so unread and unverified counts align consistently. (#484 by @hazre)
- Use the browser's native compact number formatting for room and member counts. (#484 by @hazre)
- fix(sentry): scrub percent-encoded Matrix IDs and opaque base64url tokens from Sentry URLs (#531 by @Just-Insane)
Notes
1.12.3 (2026-03-24)
1.12.2 (2026-03-24)
1.12.1 (2026-03-24)
1.12.0 (2026-03-24)
Features
Ctrl + Ksearch menu is now context aware and lists the current space's rooms at the top. (#499 by @7w1)- Add knocking support when attempting to join a room from the directory, an address, a room mention, or space hierarchy, as well as text command support for knocking. Also improves rendering for knock notifications in rooms. (#470 by @polyjitter)
- Add Android/iOS PWA-specific icon variants. (#473 by @Septicity)
- Add support for youtube embeds. (#497 by @thundertheidiot)
- Add sidebar three dot menu for quick access to related settings (#474 by @wolterkam)
- Replies that mention the OP are now indicated by the OP username being prefixed with @ (#465 by @mini-bomba)
- Made pin events show a tally of the messages that are pinned. (#462 by @nushea)
Improve multiline composer and voice recording (#476 by @hazre)
- Add a multiline composer layout for longer drafts.
- Keep the voice recorder between composer actions in multiline mode.
- Show the recorder inside the composer on mobile while recording.
- Prevent the composer from expanding when recording starts.
- Make the recorder footer and waveform fit better across screen sizes.
- Let interrupted mobile recording gestures still stop correctly.
- Stabilize wrap detection around edge cases like narrow widths and trailing spaces.
Fixes
- Added error messages provided by homeserver to unknown login errors. (#496 by @7w1)
- Ensure new updates always reload the page properly. (#502 by @7w1)
- Removed the blocked users moved notice from notifications setting page. (#490 by @7w1)
- Fix recieved encrypted message per-message profiles not triggering rerenders. (#464 by @7w1)
- Add
.m4afiles as a recognized audio type. (#472 by @henk717) - Fix messages disappearing from rooms after reconnects and timeline resets. (#478 by @hazre)
- Fix Camera being enabled by default even when the client has it off pre joining in browsers that permit the video (Electron/Tauri as examples). (#485 by @Rawrington)
- Fix cinny-dark-theme link colors being too dark (#469 by @Elec3137)
- Fix "Default" menu item height in room notification switcher. (#466 by @polyjitter)
- fix the issue of empty displaynames of a persona, causing an empty fallback message, it will now ommit the fallback, if the name is empty or only consists of whitespace (#495 by @dozro)
- Fixed an Android issue where recording a voice message with headphones could leave audio stuck in low-quality mode until the app was restarted. (#476 by @hazre)
- Fixed voice message scrubbing/seeking on Firefox by switching the recorder from WebM (no seek index) to Ogg/Opus. (#476 by @hazre)
- fixes touchpad zooming behaviour (#481 by @integralfunction)
- Fixes width mismatch for the call chat view. (#460 by @polyjitter)
- Fix messages sent from sable showing wrong on other client(s) (#468 by @nushea)