- uploadContent: bounded retry (max 3) reusing rateLimitedActions' capped
exponential backoff; retries only transient failures (network/429/5xx), never 4xx.
- Robust MatrixError construction from UploadResponse / unknown error shapes.
- addRoomIdToMDirect/removeRoomIdFromMDirect: drop `as any`, use typed
EventType.Direct + MDirectContent.
- usePresenceUpdater: keep fetch({keepalive}) for the unload offline-presence
update (sendBeacon can't set the auth header) and log redacted warnings instead
of silently swallowing presence errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- matrix.ts: rateLimitedActions fallback delay now uses capped exponential
backoff (min(1000 * 2^n, 30s)) instead of flat 3000ms when server omits
Retry-After; server header still takes precedence
- RenderMessageContent: add objectFit:cover + 100% fill to video thumbnail
<Image> so thumbnails fill their container without letterboxing (P5-6)
- CreateRoomModal, CreateSpaceModal: apply useModalStyle(480) for fullscreen
on mobile
- LOTUS_BUGS: mark usePan memory leak + httpStatus check as FALSE POSITIVE;
mark rateLimitedActions backoff as FIXED
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Glassmorphism: the sidebar is a flex sibling of the room view, so
backdrop-filter had nothing behind it to blur. Fix: apply the active
chat background to document.body when glassmorphismSidebar is on
(cleaned up when it's turned off or the component unmounts). Now the
sidebar blurs through the same background pattern as the room view,
making the frosted-glass effect obvious.
Image upload cleanup: delete the pre-uploaded original MXC from the
homeserver after the compressed version is successfully uploaded
(Synapse 1.97+ DELETE /_matrix/client/v1/media/{server}/{mediaId}).
Also delete on cancel when a successful upload is removed by the user.
Both are best-effort — failures are swallowed so UX is unaffected.
Added tryDeleteMxcContent() utility to src/app/utils/matrix.ts.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Suppress Ctrl+P browser print dialog via SuppressPrintShortcut in
ClientNonUIFeatures (no UI opened, just preventDefault)
- mxcUrlToHttp: build URL manually instead of delegating to SDK.
The SDK forces allow_redirect=true when useAuthentication=true;
Synapse's /_matrix/client/v1/media/thumbnail rejects that with 400.
Manual construction omits allow_redirect entirely.
- Gallery: redesign using folds color tokens (color.Surface.*) instead
of non-existent CSS custom properties; add ThumbState so broken
images show an icon placeholder; use useAuthentication for thumbnails
now that the URL builder is fixed; "Load More" always visible.
- PollCreator: replace raw <button> with folds Button components so the
Single/Multiple choice toggle renders with actual visual difference.
- PollContent: support multiple-choice polls end-to-end —
myVote:string → myVotes:Set<string>; computeVotes collects all
m.selections (not just [0]); toggle-select for multi, radio for
single; checkbox/radio indicator icons next to each option;
"◉ Poll · Multiple choice" / "Single choice" label in header;
sends full selections array on every vote event.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Synapse's thumbnail endpoint returns 400 Bad Request when the
allow_redirect=true query parameter is present (added by matrix-js-sdk
41.x for authenticated media). Default allowRedirects to false in our
mxcUrlToHttp wrapper so the parameter is never appended.
Also extend the downloadMedia legacy-URL fallback to cover 400 in
addition to 401, catching any encrypted-media fetches that still carry
the old URL shape after a cache refresh.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
downloadMedia: on 401 (SW session race or allow_redirect hop stripping
auth), retry via /_matrix/media/v3/ which is public on this homeserver
(allow_public_access_to_media_repo: true). Fixes images not loading
after sending, and avatar 401s in call prescreen tiles.
CallEmbed: inject flex-centering CSS for EC 0.19.4 participant avatar
container so the initial letter is correctly centered in its circle.
CSS class names are scoped to _avatarContainer_1mrho_40 in EC 0.19.4.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the server returns a 4xx/5xx, downloadMedia was silently returning
the error response body as a blob. decryptAttachment would then fail with
a misleading 'Mismatched SHA-256 digest' instead of surfacing the real
HTTP error. Now throws immediately so callers (useAsyncCallback) can
show the correct error state.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Resolves all TS2345/TS2347/TS7006 type errors introduced by stricter TypeScript 5.x.
Fix Icons.Settings to Icons.Setting, cast account data returns, fix implicit any.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* WIP - support room version 12
* add room creators hook
* revert changes from powerlevels
* improve use room creators hook
* add hook to get dm users
* add options to add creators in create room/space
* add member item component in member drawer
* remove unused import
* extract member drawer header component
* get room creators as set only if room version support them
* add room permissions hook
* support room v12 creators power
* make predecessor event id optional
* add info about founders in permissions
* allow to create infinite powers to room creators
* allow everyone with permission to create infinite power
* handle additional creators in room upgrade
* add option to follow space tombstone
* add new create room
* rename create room modal file
* default restrict access for space children in room create modal
* move create room kind selector to components
* add radii variant to sequence card component
* more more reusable create room logic to components
* add create space
* update address input description
* add new space modal
* fix add room button visible on left room in space lobby
* kick-ban all members by servername
* Add command for deleting multiple messages
* remove console logs and improve ban command description
* improve commands description
* add server acl command
* fix code highlight not working after editing in dev tools
* WIP - add room settings dialog
* join rule setting - WIP
* show emojis & stickers in room settings - WIP
* restyle join rule switcher
* Merge branch 'dev' into new-room-settings
* add join rule hook
* open room settings from global state
* open new room settings from all places
* rearrange settings menu item
* add option for creating new image pack
* room devtools - WIP
* render room state events as list
* add option to open state event
* add option to edit state event
* refactor text area code editor into hook
* add option to send message and state event
* add cutout card component
* add hook for room account data
* display room account data - WIP
* refactor global account data editor component
* add account data editor in room
* fix font style in devtool
* show state events in compact form
* add option to delete room image pack
* add server badge component
* add member tile component
* render members in room settings
* add search in room settings member
* add option to reset member search
* add filter in room members
* fix member virtual item key
* remove color from serve badge in room members
* show room in settings
* fix loading indicator position
* power level tags in room setting - WIP
* generate fallback tag in backward compatible way
* add color picker
* add powers editor - WIP
* add props to stop adding emoji to recent usage
* add beta feature notice badge
* add types for power level tag icon
* refactor image pack rooms code to hook
* option for adding new power levels tags
* remove console log
* refactor power icon
* add option to edit power level tags
* remove power level from powers pill
* fix power level labels
* add option to delete power levels
* fix long power level name shrinks power integer
* room permissions - WIP
* add power level selector component
* add room permissions
* move user default permission setting to other group
* add power permission peek menu
* fix weigh of power switch text
* hide above for max power in permission switcher
* improve beta badge description
* render room profile in room settings
* add option to edit room profile
* make room topic input text area
* add option to enable room encryption in room settings
* add option to change message history visibility
* add option to change join rule
* add option for addresses in room settings
* close encryption dialog after enabling
* chore: Bump matrix-js-sdk to 34.4.0
* feat: Authenticated media support
* chore: Use Vite PWA for service worker support
* fix: Fix Vite PWA SW entry point
Forget this. :P
* fix: Also add Nginx rewrite for sw.js
* fix: Correct Nginx rewrite
* fix: Add Netlify redirect for sw.js
Otherwise the generic SPA rewrite to index.html would take effect, breaking Service Worker.
* fix: Account for subpath when regisering service worker
* chore: Correct types
* support room via server params and eventId
* change copy link to matrix.to links
* display matrix.to links in messages as pill and stop generating url previews for them
* improve editor mention to include viaServers and eventId
* fix mention custom attributes
* always try to open room in current space
* jump to latest remove target eventId from url
* add create direct search options to open/create dm with url
* load room on url change
* add direct room list
* render space room list
* fix css syntax error
* update scroll virtualizer
* render subspaces room list
* improve sidebar notification badge perf
* add nav category components
* add space recursive direct component
* use nav category component in home, direct and space room list
* add empty home and direct list layout
* fix unread room menu ref
* add more navigation items in room, direct and space tab
* add more navigation
* fix unread room menu to links
* fix space lobby and search link
* add explore navigation section
* add notifications navigation menu
* redirect to initial path after login
* include unsupported room in rooms
* move router hooks in hooks/router folder
* add featured explore - WIP
* load featured room with room summary
* fix room card topic line clamp
* add react query
* load room summary using react query
* add join button in room card
* add content component
* use content component in featured community content
* fix content width
* add responsive room card grid
* fix async callback error status
* add room card error button
* fix client drawer shrink
* add room topic viewer
* open room card topic in viewer
* fix room topic close btn
* add get orphan parent util
* add room card error dialog
* add view featured room or space btn
* refactor orphanParent to orphanParents
* WIP - explore server
* show space hint in room card
* add room type filters
* add per page item limit popout
* reset scroll on public rooms load
* refactor explore ui
* refactor public rooms component
* reset search on server change
* fix typo
* add empty featured section info
* display user server on top
* make server room card view btn clickable
* add user server as default redirect for explore path
* make home empty btn clickable
* add thirdparty instance filter in server explore
* remove since param on instance change
* add server button in explore menu
* rename notifications path to inbox
* update react-virtual
* Add notification messages inbox - WIP
* add scroll top container component
* add useInterval hook
* add visibility change callback prop to scroll top container component
* auto refresh notifications every 10 seconds
* make message related component reusable
* refactor matrix event renderer hoook
* render notification message content
* refactor matrix event renderer hook
* update sequence card styles
* move room navigate hook in global hooks
* add open message button in notifications
* add mark room as read button in notification group
* show error in notification messages
* add more featured spaces
* render reply in notification messages
* make notification message reply clickable
* add outline prop for attachments
* make old settings dialog viewable
* add open featured communities as default config option
* add invite count notification badge in sidebar and inbox menu
* add element size observer hook
* improve element size observer hook props
* improve screen size hook
* fix room avatar util function
* allow Text props in Time component
* fix dm room util function
* add invitations
* add no invites and notification cards
* fix inbox tab unread badge visible without invite count
* update folds and change inbox icon
* memo search param construction
* add message search in home
* fix default message search order
* fix display edited message new content
* highlight search text in search messages
* fix message search loading
* disable log in production
* add use space context
* add useRoom context
* fix space room list
* fix inbox tab active state
* add hook to get space child room recursive
* add search for space
* add virtual tile component
* virtualize home and directs room list
* update nav category component
* use virtual tile component in more places
* fix message highlight when click on reply twice
* virtualize space room list
* fix space room list lag issue
* update folds
* add room nav item component in space room list
* use room nav item in home and direct room list
* make space categories closable and save it in local storage
* show unread room when category is collapsed
* make home and direct room list category closable
* rename room nav item show avatar prop
* fix explore server category text alignment
* rename closedRoomCategories to closedNavCategories
* add nav category handler hook
* save and restore last navigation path on space select
* filter space rooms category by activity when it is closed
* save and restore home and direct nav path state
* save and restore inbox active path on open
* save and restore explore tab active path
* remove notification badge unread menu
* add join room or space before navigate screen
* move room component to features folder and add new room header
* update folds
* add room header menu
* fix home room list activity sorting
* do not hide selected room item on category closed in home and direct tab
* replace old select room/tab call with navigate hook
* improve state event hooks
* show room card summary for joined rooms
* prevent room from opening in wrong tab
* only show message sender id on hover in modern layout
* revert state event hooks changes
* add key prop to room provider components
* add welcome page
* prevent excessive redirects
* fix sidebar style with no spaces
* move room settings in popup window
* remove invite option from room settings
* fix open room list search
* add leave room prompt
* standardize room and user avatar
* fix avatar text size
* add new reply layout
* rename space hierarchy hook
* add room topic hook
* add room name hook
* add room avatar hook and add direct room avatar util
* space lobby - WIP
* hide invalid space child event from space hierarchy in lobby
* move lobby to features
* fix element size observer hook width and height
* add lobby header and hero section
* add hierarchy room item error and loading state
* add first and last child prop in sequence card
* redirect to lobby from index path
* memo and retry hierarchy room summary error
* fix hierarchy room item styles
* rename lobby hierarchy item card to room item card
* show direct room avatar in space lobby
* add hierarchy space item
* add space item unknown room join button
* fix space hierarchy hook refresh after new space join
* change user avatar color and fallback render to user icon
* change room avatar fallback to room icon
* rename room/user avatar renderInitial prop to renderFallback
* add room join and view button in space lobby
* make power level api more reusable
* fix space hierarchy not updating on child update
* add menu to suggest or remove space children
* show reply arrow in place of reply bend in message
* fix typeerror in search because of wrong js-sdk t.ds
* do not refetch hierarchy room summary on window focus
* make room/user avatar un-draggable
* change welcome page support button copy
* drag-and-drop ordering of lobby spaces/rooms - WIP
* add ASCIILexicalTable algorithms
* fix wrong power level check in lobby items options
* fix lobby can drop checks
* fix join button error crash
* fix reply spacing
* fix m direct updated with other account data
* add option to open room/space settings from lobby
* add option in lobby to add new or existing room/spaces
* fix room nav item selected styles
* add space children reorder mechanism
* fix space child reorder bug
* fix hierarchy item sort function
* Apply reorder of lobby into room list
* add and improve space lobby menu items
* add existing spaces menu in lobby
* change restricted room allow params when dragging outside space
* move featured servers config from homeserver list
* removed unused features from space settings
* add canonical alias as name fallback in lobby item
* fix unreliable unread count update bug
* fix after login redirect
* fix room card topic hover style
* Add dnd and folders in sidebar spaces
* fix orphan space not visible in sidebar
* fix sso login has mix of icon and button
* fix space children not visible in home upon leaving space
* recalculate notification on updating any space child
* fix user color saturation/lightness
* add user color to user avatar
* add background colors to room avatar
* show 2 length initial in sidebar space avatar
* improve link color
* add nav button component
* open legacy create room and create direct
* improve page route structure
* handle hash router in path utils
* mobile friendly router and navigation
* make room header member drawer icon mobile friendly
* setup index redirect for inbox and explore server route
* add leave space prompt
* improve member drawer filter menu
* add space context menu
* add context menu in home
* add leave button in lobby items
* render user tab avatar on sidebar
* force overwrite netlify - test
* netlify test
* fix reset-password path without server redirected to login
* add message link copy button in message menu
* reset unread on sync prepared
* fix stuck typing notifications
* show typing indication in room nav item
* refactor closedNavCategories atom to use userId in store key
* refactor closedLobbyCategoriesAtom to include userId in store key
* refactor navToActivePathAtom to use userId in storage key
* remove unused file
* refactor openedSidebarFolderAtom to include userId in storage key
* add context menu for sidebar space tab
* fix eslint not working
* add option to pin/unpin child spaces
* add context menu for directs tab
* add context menu for direct and home tab
* show lock icon for non-public space in header
* increase matrix max listener count
* wrap lobby add space room in callback hook
* add commands hook
* add commands in editor
* add command auto complete menu
* add commands in room input
* remove old reply code from room input
* fix video component css
* do not auto focus input on android or ios
* fix crash on enable block after selection
* fix circular deps in editor
* fix autocomplete return focus move editor cursor
* remove unwanted keydown from room input
* fix emoji alignment in editor
* test ipad user agent
* refactor isAndroidOrIOS to mobileOrTablet
* update slate & slate-react
* downgrade slate-react to 0.98.4
0.99.0 has breaking changes with ReactEditor.focus
* add sql to readable ext mimetype
* fix empty editor formatting gets saved as draft
* add option to use enter for newline
* remove empty msg draft from atom family
* prevent msg ctx menu from open on text selection
* add func to parse html to editor input
* add plain to html input function
* re-construct markdown
* fix missing return
* fix falsy condition
* fix reading href instead of src of emoji
* add message editor - WIP
* fix plain to editor input func
* add save edit message functionality
* show edited event source code
* focus message input on after editing message
* use del tag for strike-through instead of s
* prevent autocomplete from re-opening after esc
* scroll out of view msg editor in view
* handle up arrow edit
* handle scroll to message editor without effect
* revert prev commit: effect run after editor render
* ignore relation event from editable
* allow data-md tag for del and em in sanitize html
* prevent edit without changes
* ignore previous reply when replying to msg
* fix up arrow edit not working sometime
* fix intersection & resize observer
* add binary search util
* add scroll info util
* add virtual paginator hook - WIP
* render timeline using paginator hook
* add continuous pagination to fill timeline
* add doc comments in virtual paginator hook
* add scroll to element func in virtual paginator
* extract timeline pagination login into hook
* add sliding name for timeline messages - testing
* scroll with live event
* change message rending style
* make message timestamp smaller
* remove unused imports
* add random number between util
* add compact message component
* add sanitize html types
* fix sending alias in room mention
* get room member display name util
* add get room with canonical alias util
* add sanitize html util
* render custom html with new styles
* fix linkifying link text
* add reaction component
* display message reactions in timeline
* Change mention color
* show edited message
* add event sent by function factory
* add functions to get emoji shortcode
* add component for reaction msg
* add tooltip for who has reacted
* add message layouts & placeholder
* fix reaction size
* fix dark theme colors
* add code highlight with prismjs
* add options to configure spacing in msgs
* render message reply
* fix trim reply from body regex
* fix crash when loading reply
* fix reply hover style
* decrypt event on timeline paginate
* update custom html code style
* remove console logs
* fix virtual paginator scroll to func
* fix virtual paginator scroll to types
* add stop scroll for in view item options
* fix virtual paginator out of range scroll to index
* scroll to and highlight reply on click
* fix reply hover style
* make message avatar clickable
* fix scrollTo issue in virtual paginator
* load reply from fetch
* import virtual paginator restore scroll
* load timeline for specific event
* Fix back pagination recalibration
* fix reply min height
* revert code block colors to secondary
* stop sanitizing text in code block
* add decrypt file util
* add image media component
* update folds
* fix code block font style
* add msg event type
* add scale dimension util
* strict msg layout type
* add image renderer component
* add message content fallback components
* add message matrix event renderer components
* render matrix event using hooks
* add attachment component
* add attachment content types
* handle error when rendering image in timeline
* add video component
* render video
* include blurhash in thumbnails
* generate thumbnails for image message
* fix reactToDom spoiler opts
* add hooks for HTMLMediaElement
* render audio file in timeline
* add msg image content component
* fix image content props
* add video content component
* render new image/video component in timeline
* remove console.log
* convert seconds to milliseconds in video info
* add load thumbnail prop to video content component
* add file saver types
* add file header component
* add file content component
* render file in timeline
* add media control component
* render audio message in room timeline
* remove moved components
* safely load message reply
* add media loading hook
* update media control layout
* add loading indication in audio component
* fill audio play icon when playing audio
* fix media expanding
* add image viewer - WIP
* add pan and zoom control to image viewer
* add text based file viewer
* add pdf viewer
* add error handling in pdf viewer
* add download btn to pdf viewer
* fix file button spinner fill
* fix file opens on re-render
* add range slider in audio content player
* render location in timeline
* update folds
* display membership event in timeline
* make reactions toggle
* render sticker messages in timeline
* render room name, topic, avatar change and event
* fix typos
* update render state event type style
* add room intro in start of timeline
* add power levels context
* fix wrong param passing in RoomView
* fix sending typing notification in wrong room
Slate onChange callback was not updating with react re-renders.
* send typing status on key up
* add typing indicator component
* add typing member atom
* display typing status in member drawer
* add room view typing member component
* display typing members in room view
* remove old roomTimeline uses
* add event readers hook
* add latest event hook
* display following members in room view
* fetch event instead of event context for reply
* fix typo in virtual paginator hook
* add scroll to latest btn in timeline
* change scroll to latest chip variant
* destructure paginator object to improve perf
* restore forward dir scroll in virtual paginator
* run scroll to bottom in layout effect
* display unread message indicator in timeline
* make component for room timeline float
* add timeline divider component
* add day divider and format message time
* apply message spacing to dividers
* format date in room intro
* send read receipt on message arrive
* add event readers component
* add reply, read receipt, source delete opt
* bug fixes
* update timeline on delete & show reason
* fix empty reaction container style
* show msg selection effect on msg option open
* add report message options
* add options to send quick reactions
* add emoji board in message options
* add reaction viewer
* fix styles
* show view reaction in msg options menu
* fix spacing between two msg by same person
* add option menu in other rendered event
* handle m.room.encrypted messages
* fix italic reply text overflow cut
* handle encrypted sticker messages
* remove console log
* prevent message context menu with alt key pressed
* make mentions clickable in messages
* add options to show and hidden events in timeline
* add option to disable media autoload
* remove old emojiboard opener
* add options to use system emoji
* refresh timeline on reset
* fix stuck typing member in member drawer