* chore(vite): use vite
* fix(vite): alias lib directory
* chore(vite): set type: module
* chore: update vite and MUI
* fix(vite): make MUI components load
* fix: use node path resolution
* chore(vite): add svg support
* fix(vite): polyfill global
* fix(vite): use import.meta
* fix(vite): use correct svg module resolution
* chore(vite): migrate to vitest
* fix(vite): remove PUBLIC_URL
* fix(tests): mock audio service
* chore(deps): upgrade to react test library 14
* refactor(tests): simplify room test setup
* refactor(tests): make Date.now() mockable
* refactor(vite): remove bootstrap shim
* chore(deps): drop react-scripts
* chore(deps): remove source-map-explorer
Source maps do not currently work with MUI and Vite:
https://github.com/vitejs/vite/issues/15012
Because of this, source map utilities are currently removed.
* refactor(vite): use TypeScript for Vite config
* chore(actions): update actions config for new paths
* fix(service-worker): use VITE_HOMEPAGE for service worker resolution
* fix(vercel): use quotes for build command
* fix(vite): use import.meta.env.MODE
* fix(service-worker): use correct definition for publicUrl
* feat(vite): use vite-plugin-pwa
* fix(pwa): make update prompt work
* fix(types): use vite/client types
* docs(readme): update building instructions
* refactor(vite): simplify theme loading workaround
* refactor(vite): use manifest object
* docs(readme): update tool references
* chore(deps): run `npm audit fix`
* fix(vite): make syntax highlighter work consistently
See: https://github.com/react-syntax-highlighter/react-syntax-highlighter/issues/513
* fix(pwa): remove manifest.json references
* refactor(deps): remove jest references
* refactor(types): remove react-scripts reference
* chore(deps): use TypeScript 5
* refactor(tests): improve persisted storage mocking
* feat(sdk): render iframe in chat-room component
* fix(ci): install optional dependencies
* feat(sdk): allow subset of attributes
* feat(sdk): accept root-domain attribute
* feat(sdk): accept custom room name or use sane default
* feat(sdk): set allowed features
* feat(sdk): add sdk instructions to embed code dialog
* fix(sdk): use dynamic rootUrl
* fix(sdk): use static defaultRoot
* feat(sdk): send config from SDK to chat
* fix(sdk): expire poller
* fix(sdk): pass parent domain to iframe via query param
* refactor(sdk): type message event data
* feat(sdk): send user id to chat frame
* feat(sdk): handle some attribute updates
* chore(package): add build:sdk:watch script
* refactor(sdk): move more code to updateIframeAttributes
* feat(sdk): support changing rooms
* feat(sdk): support more user settings
* docs(sdk): add SDK section to README
* feat(sdk): render root-url in embed code if necessary
* refactor(sdk): use map for chat room attributes
* fix(sdk): unbind event listener when chat-room is disconnected
* fix(sdk): properly tear down receipt listener
* fix(sdk): send config when frame reloads
* feat(sdk): listen for config updates
* feat(sdk): request config from sdk instead of sending it repeatedly
* refactor(sdk): use type guard for config message
* fix(sdk): use settings from SDK when there is no preexisting persisted data
* fix(sdk): observe all iframe attributes
* refactor(sdk): simplify bootup logic
* feat(sdk): improve embed code display
* feat(typing-indicator): wire up handleMessageChange
* feat(typing-indicator): send typing: true status
* feat(typing-indicator): expire typing state
* feat(typing-indicator): update typing state received from peers
* refactor(shell): add updatePeer utility
* feat(typing-indicator): display peer typing status
* feat(typing-indicator): reset typing status when a message is sent
* feat(typing-indicator): move indicator below message form
* feat(typing-indicator): keep status text to one line
* feat(ConnectionTest): track tracker state
* feat(ConnectionTest): show tracker searching state
* chore(deps): use github:jeremyckahn/trystero#feature/get-tracker-connections
* feat(connection-test): hide network indicator in non-room routes
* feat(connection-test): show peer searching status
* feat(connection-test): hide peer searching UI when not in a room
* feat: [#86] encrypt torrent data before upload
* feat: [#86] decrypt torrent data after download
* feat: [#86] use room ID as encryption key
* feat: [#86] show alerts for encryption activity
* feat: [#86] show progress indicator while encrypting files
* Move room tools to top of page to use full width
Allow messages to be hidden while video is displaying
Allow video display to utilise all available width
Track unread messages while they are hidden
* Better portrait behaviour
* Show room controls by default
* Show room controls at same time as app bar
Improve video height calc.
Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>