Commit Graph

45 Commits

Author SHA1 Message Date
Jeremy Kahn
ea34058fa7
chore: Migrate from Create React App to Vite (#231)
* 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
2024-03-12 21:44:43 -05:00
Jeremy Kahn
94a4b2fb2e
refactor(services): Standardize services and lib organization (#226)
* refactor(Notification): use instance methods
* refactor(Audio): move to lib layer
* refactor(EncryptionService): rename instance to encryption
* refactor(ConnectionTest): move to lib
* refactor(FileTransfer): move to lib
* refactor(PeerRoom): move to lib
* refactor(sleep): move to lib
* refactor(type-guards): move to lib
* refactor(SerializationService): use standard instance name
* refactor(SettingsService): use standard instance name
2024-01-28 20:46:59 -06:00
Jeremy Kahn
e962c403a5
feat(profile) [closes #219] Import and export user profile (#220)
* feat(profile): implement profile export
* feat(profile): load user-selected file
* feat(profile): import loaded profile
* feat(profile): validate public/private keys
* refactor(settings): remove unnecessary theme functions
* refactor(settings): use theme hook
* feat(settings): show error alert if profile export fails
2023-12-10 19:43:32 -06:00
Jeremy Kahn
6cbfaacf1a
feat(verification): [closes #209] Verified peers (#216)
* refactor(bootstrap): add BootstrapShim
* feat(security): [#209] generate public/private keys
* refactor(encryption): move encryption utils to a service
* feat(encryption): [wip] implement convertCryptoKeyToString
* fix(user-settings): serialize crypto keys to strings
* feat(user-settings): deserialize user settings from IndexedDB
* feat(user-settings): upgrade persisted settings on boot
* feat(user-settings): automatically migrate persisted user settings
* refactor(encryption): simplify CryptoKey stringification
* refactor(encryption): DRY up EncryptionService
* feat(verification): send public key to new peers
* refactor(encryption): use class instance
* refactor(serialization): use class instance
* refactor(verification): [wip] create usePeerVerification hook
* feat(verification): encrypt verification token
* feat(verification): send encrypted token to peer
* feat(verification): verify peer
* refactor(verification): use enum for verification state
* feat(verification): expire verification requests
* fix(updatePeer): update with fresh state data
* feat(verification): display verification state
* refactor(usePeerVerification): store verification timer in Peer
* feat(verification): present tooltips explaining verification state
* feat(ui): show full page loading indicator
* feat(init): present bootup failure reasons
* refactor(init): move init to its own file
* feat(verification): show errors upon verification failure
* refactor(verification): move workaround to usePeerVerification
* feat(verification): present peer public keys
* refactor(verification): move peer public key rendering to its own component
* refactor(verification): only pass publicKey into renderer
* feat(verification): show user's own public key
* refactor(naming): rename Username to UserInfo
* refactor(loading): encapsulate height styling
* feat(verification): improve user messaging
* refactor(style): improve formatting and variable names
* feat(verification): add user info tooltip
* docs(verification): explain verification
2023-12-09 17:47:05 -06:00
Jeremy Kahn
b9b452167b feat(sdk): improve embedding instructions 2023-10-28 17:49:58 -05:00
Jeremy Kahn
f6a3e30da2
feat(sdk): Implement Chitchatter SDK (#183)
* 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
2023-10-28 11:42:58 -05:00
Jeremy Kahn
c170edb692
feat(ui): Add copy button for code (#178)
* feat(ui): stand up CopyableBlock component
* feat(ui): implement clipboard writing
* feat(ui): make code blocks copyable
* refactor(imports): use SyntaxHighlighter directly
* feat(ui): make copy button slightly transparent
* feat(ui): tweak copy alert text
2023-10-11 21:18:28 -05:00
Jeremy Kahn
ff988d9da5 feat(syntax-hightlighting): lazy load language files 2023-10-11 09:47:11 -05:00
Jeremy Kahn
1370b9d197 feat(embed): enable fullscreen 2023-10-09 09:42:12 -05:00
Jeremy Kahn
0911c29729 refactor(EmbedCodeDialog): don't use markdown renderer 2023-10-08 16:58:29 -05:00
Jeremy Kahn
7a7ddf80fc refactor(home): move EmbedCodeDialog to its own file 2023-10-08 16:54:49 -05:00
Jeremy Kahn
7acf267558
feat(embed): [closes #92] Embed support (#177)
* feat(embed): [#92] hide unnecessary UI when embedded
* feat(embed): [#92] provide embed code
2023-10-08 13:19:46 -05:00
Jeremy Kahn
3413f37d8c feat(typing-indicator): add setting to disable typing indicator 2023-07-28 09:50:03 -05:00
Jeremy Kahn
442f5406ec feat: improve Home screen display 2023-03-08 09:36:15 -06:00
Jeremy Kahn
0fc4ad040b feat: do not obscure join room buttons with tooltip 2023-03-08 09:09:16 -06:00
Jeremy Kahn
dfe510e642
feat: [closes #76] Custom usernames (#93)
* feat: add Username component
* feat: set custom username state
* feat: update custom username on input blur
* feat: inform peers of username updates
* feat: display username for peers
* feat: show static name in parentheses
* feat: use display name in message notification
* feat: remove username display from Shell Drawer
* feat: persist customUsername
2023-03-04 12:55:37 -06:00
Nasal Daemon
fcec242194
[closes #75] Easier sharing of private rooms (#81)
* Add URL secret reading logic
* Add private url share dialog
* Salt password hash with roomId
* Don't allow incorrect password to be entered

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>
2023-01-08 14:37:30 -06:00
krayste
237fc0e6df
Add end adornment icon to refresh the room uuid() (#62)
* Add end adornment icon to refresh room uuid()
* Make mobile compatible
2022-11-05 10:40:42 -05:00
Jeremy Kahn
a5a61b0cb0 feat: set messageTranscriptSizeLimit to 150 2022-10-29 13:25:31 -05:00
Jeremy Kahn
95d6ed6f11 fix: [closes #59] prevent users from using empty room names 2022-10-29 12:54:40 -05:00
Jeremy Kahn
73e09041cc
feat: (closes #3) Private rooms (#51)
* feat: present password submit UI as a form
* fix: don't connect to room without password
* feat: password-protect room connections
* feat: disable transcript backfilling for private rooms
2022-10-27 22:21:35 -05:00
Jeremy Kahn
9480d8cc17 feat: add link to community room list 2022-10-26 09:44:56 -05:00
Jeremy Kahn
10b061e36a
feat: [closes #22] implement message backfilling (#45)
* feat: [#22] implement message backfilling
* feat: scroll to latest backfilled message
* feat: document transcript backfilling
2022-10-25 21:00:28 -05:00
Jeremy Kahn
ee7d528f01
feat: [closes #40] Disclaimer (#42)
* feat: [#40] stand up disclaimer page
* chore: use mui-markdown for disclaimer copy
* feat: [#40] add more disclaimer copy
* feat: style lists in messages
* refactor: author About page with Markdown
* feat: improve About page formatting
2022-10-16 21:49:04 -05:00
Jeremy Kahn
b4decae69c
feat: [closes #6] Show notifications for messages recieved in the background (#31)
* feat: [#6] show notification when message is received
* feat: [#6] add setting for enabling/disabling notifications
* refactor: [#6] decouple PeerNameDisplay from funAnimalName
* feat: [#6] disable notifications setting when notifications are unavailable
2022-09-29 21:56:28 -05:00
Flaykz
492cfa58ce
feat: [#7] Play a sound on new message (#25)
* feat: [#7] Play a sound on new message

* fix: [#7] Since this mock is a no-op, I think we can omit the argument to mockImplementation

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* fix: [#7] lazy initialization of this state

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* fix: [#7] More accurate error message

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* fix: [#7] Replace then with await

* [closes #24]  Settings UI (#26)

* feat: [#24] wire up settings page
* feat: [#24] stand up settings UI
* feat: [#24] implement storage deletion
* feat: [#24] confirm deletion of settings data

* feat: [#7] Add play sound switch in settings

* feat: [#7] avoid typescript warning

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* feat: [#7] more straighforward wording

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* feat: [#7] remove useless usestate

* feat: [#7] avoid new settings to be undefined in persisted storage

* feat: [#7] creating a chat section in settings

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>
2022-09-26 08:10:31 -05:00
Jeremy Kahn
e259196942
[closes #24] Settings UI (#26)
* feat: [#24] wire up settings page
* feat: [#24] stand up settings UI
* feat: [#24] implement storage deletion
* feat: [#24] confirm deletion of settings data
2022-09-23 17:40:34 -05:00
Jeremy Kahn
20d8337082 refactor: move routes to an enum 2022-09-20 14:22:39 -05:00
Jeremy Kahn
2fabd4d974 feat: [closes #17] add About page 2022-09-17 12:39:16 -05:00
Jeremy Kahn
cba8bc47df feat: improve home screen messaging 2022-09-17 11:20:56 -05:00
Jeremy Kahn
1ea67e2c3a
feat: [closes #1] display logo (#10)
* feat: display logo
* chore: credit ramyashreeshetty for logo
2022-09-11 17:27:16 -05:00
Jeremy Kahn
9a159e5787 feat: improve home screen display 2022-09-05 18:59:59 -05:00
Jeremy Kahn
82673d54fd refactor: move ShellContext to contexts directory 2022-09-05 12:17:10 -05:00
Jeremy Kahn
38378f0dfb feat: simplify and improve UI layout 2022-09-05 12:12:54 -05:00
Jeremy Kahn
71ecc37d89 feat: render top bar 2022-08-28 21:25:49 -05:00
Jeremy Kahn
707e090f8b refactor: use Box instead of div 2022-08-27 21:48:22 -05:00
Jeremy Kahn
254ebf2580 refactor: get roomId from props 2022-08-23 21:15:58 -05:00
Jeremy Kahn
74f11dae2a feat: assign userId 2022-08-20 14:20:51 -05:00
Jeremy Kahn
be160cf29b refactor: use sx prop for styling instead of tailwind 2022-08-17 09:32:18 -05:00
Jeremy Kahn
40b0b7047e refactor: use absolute module paths 2022-08-16 09:21:33 -05:00
Jeremy Kahn
b24fe12a50 feat: implement navigation to public room from home 2022-08-10 22:15:50 -05:00
Jeremy Kahn
36d059329c feat: add room name input text field 2022-08-10 09:42:15 -05:00
Jeremy Kahn
65196ae9c4 feat: wire up public room 2022-08-09 22:14:59 -05:00
Jeremy Kahn
3b1a55067d feat: add basic home content 2022-08-09 21:57:29 -05:00
Jeremy Kahn
be4947a80b feat: stand up Home page 2022-08-09 21:28:46 -05:00