Releases: SableClient/Sable
1.15.3 (2026-05-09)
Fixes
- Self-hosted deployments can set optional
settingsDefaultsinconfig.jsonto override built-in client settings. See the README for details. (#785 by @7w1) - Updated the math detection to avoid accidental detection when talking about math or spamming dollar signs. (#779 by @7w1)
- Added a couple new settings for max incoming inline image height and default height for unspecified. http://localhost:8080/settings/appearance?focus=incoming-inline-images-default-height&moe.sable.client.action=settings (#772 by @7w1)
- Fixed links with suppressed previews not having the arrow brackets readded when editing a message. (#772 by @7w1)
- Added the ability to cap preview embed size. http://localhost:8080/settings/appearance?focus=link-preview-image-max-height&moe.sable.client.action=settings (#783 by @7w1)
- Fix the inconsistent sizing for the read receipt dialog boxes. (#772 by @7w1)
- Fixed room avatars set in the settings cosmetics menu not applying. (#772 by @7w1)
- Fix room names being overriden when only 1 other person is in a room. (#784 by @7w1)
- Fix small text being parsed in code blocks and not being escapeable. (#782 by @7w1)
- Fixed the hang when a message that replies to a message has a reply, and you attempt to start a thread on that message. (#778 by @7w1)
- Fix RTL/LTR mixed text formatting and alignment in messages (#743 by @sinasadeghi83)
- Readded various missing settings from the settings sharing list. (#765 by @7w1)
- Various small adjustments to the themed profiles for better consistency. (#777 by @7w1)
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)