62 Commits

Author SHA1 Message Date
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
7bceba5acb
feat(ui) [closes #160] Move transcript scrollbar to content window edge (#212)
* feat(ui): [closes #160] move transcript scrollbar to edge of container
* feat(ui): prevent controls from obscuring transcript
* feat(ui): hide unnecessary hide controls button
2023-11-23 12:26:07 -06:00
Jeremy Kahn
6b942c1025 feat(connectivity): increase trackerRedundancy to 4 2023-08-21 20:53:03 -05:00
Jeremy Kahn
3413f37d8c feat(typing-indicator): add setting to disable typing indicator 2023-07-28 09:50:03 -05:00
Jeremy Kahn
e597a667a1
feat(chat): [closes #13] Active typing indicators (#133)
* 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
2023-07-27 21:06:35 -05:00
Jeremy Kahn
83e9f7dbdd fix(connection): [#126] set trackerRedundancy to 3 2023-06-30 09:21:27 -05:00
Nasal Daemon
8493ddade5
Give video display as much space as possible (#84)
* 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>
2023-01-23 21:50:14 -06:00
Jeremy Kahn
5d3d019cd6
feat: [closes #33] Render inline media (#73)
* refactor: pass inline media upload data to useRoom
* feat: render inline media
* fix: don't rescind inline media file offers
* refactor: send file offer metadata object
* fix: enable re-seeding of inline media files
* feat: show loading indicator for inline media
* feat: rescind any evicted inline media
* feat: display media rendering failure message
* feat: prevent user from uploading file if message is sending
2022-11-28 21:18:41 -06:00
Jeremy Kahn
8ec721bc2f feat: add label for room tools 2022-11-26 09:43:28 -06:00
Jeremy Kahn
f006e76e80
feat: [closes #21] File sharing (#72)
* feat: [#21] stand up file sharing controls UI
* feat: [#21] implement basic file transfer
* feat: [#21] save transferred file
* feat: [#21] transfer file via WebTorrent
* fix: use external streamsaver assets
* feat: [#21] initiate download by receiver click
* fix: enable re-downloading of shared files
* feat: [#21] implement sharing of multiple files
* chore: enable offline development
* feat: cache torrents in IndexedDB
* feat: show alert when download is aborted
* feat: [#21] clean up torrent data when principal offerer rescinds it
* feat: clean up cached torrents on page unload
* feat: show file transfer progress
* fix: download files sequentially
* feat: clean up file transfers when leaving the room
* feat: clean up broken downloads upon leaving the page
* fix: allow download animation to complete
* feat: show tooltip for download button
* feat: make file transfers work in browser private modes
* feat: disable file share controls while creating offer
2022-11-24 00:16:34 -06:00
Jeremy Kahn
75a804abbd
feat: [closes #67] Screen sharing (#68)
* feat: [#67] stand up useRoomScreenShare hook
* feat: [#67] stand up RoomScreenShareControls
* feat: [#67] display screen share streams
* fix: [#67] don't flip screen share preview
* feat: don't display screen share controls in unsupported environments
* fix: [#67] always remove media streams for exiting peers
2022-11-13 17:11:09 -06:00
Jeremy Kahn
19d0faaccc refactor: move video stream data into new room context 2022-11-06 20:49:48 -06:00
Jeremy Kahn
828e3c12b9
feat: [closes #20] Video support (#64)
* refactor: nest ChatTranscript
* feat: set up video controls
* feat: show self video
* feat: show peer video
* feat: improve audio/video controls display
* feat: flip self video
* feat: improve device selection labels
2022-11-06 13:36:15 -06:00
Jeremy Kahn
8947bace94
refactor: Room audio (#61)
* Revert "Revert "refactor: move room audio controls to their own component""

This reverts commit 219e0670ca2c0c5e7bb1c25d4928cdc787934c09.

* fix: prevent duplicate hook handlers
* refactor: PeerRoom cleanup
2022-11-03 21:36:30 -05:00
Jeremy Kahn
a87b0d3367 Revert "refactor: move room audio controls to their own component"
This reverts commit bbabb1d389985ae1dacea53e9c7bb0e7c87bf950.
2022-11-03 09:39:27 -05:00
Jeremy Kahn
bbabb1d389 refactor: move room audio controls to their own component 2022-11-03 09:33:17 -05:00
Jeremy Kahn
f219218d02
feat: (closes #19) Audio calls (#60)
* feat: [#19] set up voice call UI
* feat: [#19] get audio calls
* feat: [#19] implement audio device selection
2022-10-30 16:07:32 -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
58326ecbb8
refactor: Room logic (#34)
* refactor: move room logic to usePeerRoom hook
* refactor: make peer room hooks private
2022-10-04 22:00:16 -05:00
Jeremy Kahn
ebb80c3e6c chore: use trystero@0.11.4 2022-10-04 09:14:34 -05:00
Flaykz
26618c0309
feat: [closes #14] Display peer list (#28)
* feat: [#14] Display peer list

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>
2022-10-04 09:08:38 -05:00
Jeremy Kahn
630a7aa398 refactor: [#7] move audio logic to new Audio service 2022-09-30 09:13:07 -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
8cd2ce3f45 refactor: move trackerUrls to its own file 2022-09-10 18:22:36 -05:00
Jeremy Kahn
d277820961 refactor: move rtcConfig to its own file 2022-09-10 17:52:53 -05:00
Jeremy Kahn
cebb8dc93a fix: prevent large transcripts from affecting input performance 2022-09-08 21:35:50 -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
899286369e feat: hide and show peer counter 2022-09-01 21:28:45 -05:00
Jeremy Kahn
0468977072 feat: add app drawer with home button 2022-08-31 21:44:00 -05:00
Jeremy Kahn
839628dc75 feat: improve shell and room display 2022-08-31 19:26:38 -05:00
Jeremy Kahn
2a09eddb7d fix: remove double "has" from alert messages 2022-08-31 10:09:49 -05:00
Jeremy Kahn
6bc8bf8b88 feat: show alerts when someone joins or leaves the room 2022-08-31 09:55:57 -05:00
Jeremy Kahn
70ac4f34da feat: use relay servers when necessary 2022-08-30 09:38:14 -05:00
Jeremy Kahn
caaa59d014 feat: show number of peers in the room 2022-08-29 22:05:56 -05:00
Jeremy Kahn
2e30f53b39 chore: use local tracker for development 2022-08-29 19:21:14 -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
cd3f1b0fd7 feat: allow multiline messages with shift+enter 2022-08-27 19:40:51 -05:00
Jeremy Kahn
7e107e8290 feat: improve sending UI layout 2022-08-27 19:06:54 -05:00
Jeremy Kahn
fd9998fc2c feat: improve layout of room 2022-08-26 09:39:01 -05:00
Jeremy Kahn
254ebf2580 refactor: get roomId from props 2022-08-23 21:15:58 -05:00
Jeremy Kahn
0d28df82c2 feat: show animation when message is successfully sent 2022-08-22 21:57:45 -05:00
Jeremy Kahn
3be1f2e88a feat: improve message styling 2022-08-21 10:44:01 -05:00
Jeremy Kahn
499a0ef193 feat: show full message transcript 2022-08-20 22:23:43 -05:00
Jeremy Kahn
d4bc49f096 refactor: allow for full trystero configuration 2022-08-20 17:14:50 -05:00
Jeremy Kahn
74f11dae2a feat: assign userId 2022-08-20 14:20:51 -05:00
Jeremy Kahn
09d039d806 feat: assign ids to messages 2022-08-19 09:42:14 -05:00
Jeremy Kahn
3bbe8b1430 test: validate message sending UX 2022-08-18 21:36:13 -05:00