Remove redundant event handling
julianjelfs
released this
21 Feb 12:45
·
5103 commits
to master
since this release
What's Changed
- Split 'handlers' directory into 'queries' and 'updates' by @hpeebles in #1
- Store chats against chat ids by @megrogan in #2
- Add mark_read method and return number of unread messages when calling list_chats by @hpeebles in #3
- Rename from_index to from_id by @hpeebles in #4
- Mg by @megrogan in #5
- Split ChatSummary into DirectChatSummary and GroupChatSummary by @hpeebles in #6
- Split set_username into register_user and update_username by @hpeebles in #7
- Type aliases by @hpeebles in #8
- Hp by @hpeebles in #9
- Use 'page_size' rather than 'to_id' in get_messages by @hpeebles in #10
- Return user details in successful 'register_user' responses by @hpeebles in #11
- Split send_message into direct and create variants by @megrogan in #12
- Add SendMessageResult containing the messageId + timestamp by @hpeebles in #13
- Simplify names of Requests and Results by @megrogan in #14
- Mg by @megrogan in #15
- Additionally return latest_message_id when getting messages by @hpeebles in #16
- send_direct_message now returns the chat_id so that subsequent calls … by @megrogan in #17
- Share code which just works on messages by @megrogan in #19
- Define strongly typed Typescript services to wrap each back end service by @hpeebles in #20
- Use consistent api response pattern + break-up ts services by @megrogan in #21
- Integrate Redux into front end by @hpeebles in #22
- Add getMessagesById action and call into it whenever missing messages… by @hpeebles in #23
- Add basic message sending functionality to UI by @hpeebles in #24
- Add NewDirectChat as a new type of Chat by @hpeebles in #25
- Mg by @megrogan in #26
- Change Timestamp values to be based on number of milliseconds by @hpeebles in #27
- Retrieve any missing messages when a chat is selected by @hpeebles in #28
- Use BigInt for ChatId and string for UserId by @hpeebles in #29
- UI design WIP by @megrogan in #30
- Mg by @megrogan in #31
- Split some components into multiple smaller components by @hpeebles in #32
- New group button by @megrogan in #33
- Convert Timestamp values from BigNumber to number by @hpeebles in #34
- Add DayChangeMarker by @hpeebles in #35
- Use localised Date values rather than Timestamps by @hpeebles in #36
- Add timestamp to CreateGroupChatResponse by @megrogan in #38
- Integrate design by @megrogan in #39
- Add createGroupChat action by @hpeebles in #37
- Add groupChatIcon by @hpeebles in #40
- Fix placeholder text in SideHeader by @hpeebles in #41
- Use identicons by @megrogan in #42
- Send message when the Enter key is pressed by @hpeebles in #43
- Changed get_chats to take a since timestamp by @megrogan in #44
- Various FE changes incl timestamp on messages by @megrogan in #45
- Add background task which checks for new messages at regular intervals by @hpeebles in #46
- Integrate identicons by @megrogan in #47
- Reduce gap between messages that are sent by the same user within 1 minute of each other by @hpeebles in #48
- Dropdown menu on side header by @megrogan in #50
- Don't render remote messages by @hpeebles in #49
- Switch to using classes to define Chat objects by @hpeebles in #51
- When updating chats fall back to matching on userId if no match found… by @hpeebles in #52
- User can select an avatar image from disk by @megrogan in #53
- Simplify usersReducer by using setFunctions by @hpeebles in #54
- Fix file name casing by @hpeebles in #55
- When inserting new messages also remove them from messagesToDownload by @hpeebles in #56
- Add DayChangeMarker where suitable before unconfirmed messages by @hpeebles in #57
- Chats bugfix + minor refactor by @hpeebles in #58
- Add message images and videos to design by @megrogan in #59
- Simplify reducers by using 'immer' by @hpeebles in #60
- Convert back to using plain objects for chats as it works better with… by @hpeebles in #61
- Add participants to group chat by @megrogan in #63
- Simplify code which updates chats in the background by @hpeebles in #62
- Add a few todos by @hpeebles in #64
- Fix sending messages to new group chat by @hpeebles in #65
- Clear text input after menu action by @megrogan in #66
- Add bigmap as a submodule by @hpeebles in #67
- Fix to use correct typescript type guard syntax by @hpeebles in #68
- Add other user to group chat messages + some refactoring by @megrogan in #69
- Re-order menu buttons by @megrogan in #70
- Match on subject if there are any unconfirmed group chats to prevent duplicates being added by @hpeebles in #71
- Set group chat participants as admin by default by @hpeebles in #72
- Set group chat participants as admin by default by @hpeebles in #73
- Only use Redux DevTools when in development mode by @hpeebles in #74
- Run task to get updated chats even if no chats currently exist by @hpeebles in #75
- Add to users dictionary after getting updated chats by @hpeebles in #76
- Only start the task to get updated chats after all chats have been retrieved by @hpeebles in #77
- Fix calculateLatestConfirmedMessageId function by @hpeebles in #78
- Fix chat filter to find UnconfirmedDirectChats by @hpeebles in #79
- Mg by @megrogan in #81
- Remove bigmap submodule by @hpeebles in #80
- Support media messages by @megrogan in #82
- Consolidate message components into a single component by @hpeebles in #83
- Minor refactor by @megrogan in #84
- Renamed MessagePayload to MessageContent by @megrogan in #85
- Support media content in messages by @hpeebles in #86
- Add getData and putData + load data for messages with media content by @hpeebles in #87
- Don't show sender name if message has been merged with previous by @hpeebles in #89
- Send media message by @megrogan in #90
- Fix job which updates chats to take correct chatsSyncedUpTo value by @hpeebles in #91
- Fix message content to / from candid conversion by @hpeebles in #92
- Fixes around sending media messages by @megrogan in #93
- Enable BlobStorge upgrade by @megrogan in #94
- Media message fixes by @hpeebles in #95
- Small clean up of the getData and putData functions by @hpeebles in #96
- Fix getting image messages by @megrogan in #97
- Fixes for video message rendering by @megrogan in #98
- Reduce re-renders by using React.memo and more specific useSelector functions by @hpeebles in #99
- Fix video rendering issue by @megrogan in #100
- Remove the need for each message to be assigned a unique key by @hpeebles in #101
- Confirm an unconfirmed direct chat if getUpdatedChats returns messages for it by @hpeebles in #102
- Show media message straight away rather than only after data has been uploaded by @hpeebles in #103
- Simplify sendMessage action by @megrogan in #104
- Send file added by @megrogan in #105
- Support unread messages anywhere in the list of messages not just at the end by @hpeebles in #106
- Fix issue where DayChangeMarker appears multiple times by @hpeebles in #107
- Further styling of messages by @megrogan in #109
- Focus text box after sending message by @hpeebles in #108
- Allow file messages to be downloaded and fix some styling by @megrogan in #111
- Load more messages as user scrolls up by @hpeebles in #110
- A few minor cleanups by @hpeebles in #112
- Styling improvements of messages by @megrogan in #113
- Mark messages as read as they are scrolled into view by @hpeebles in #114
- Add emojis by @megrogan in #115
- Only mark messages as read after they have been visible for 2 seconds by @hpeebles in #116
- Improve file size formatting by @hpeebles in #117
- Hide emoji picker when clicking outside it by @megrogan in #118
- Show unread message count against chat by @megrogan in #119
- Improve date formatting by @hpeebles in #120
- Show count of chats with unread messages in doc title by @megrogan in #121
- Make day change markers stay visible at the top of the screen as you scroll by @hpeebles in #122
- Show how long since each user has been online by @hpeebles in #124
- Mg by @megrogan in #125
- Integrate contenteditable message box by @megrogan in #126
- Store draft message with each chat on client by @megrogan in #128
- Add a client message Id to each message by @hpeebles in #127
- Support line-breaks in messages by @megrogan in #129
- Placeholder text in message input box by @megrogan in #130
- Use WebRTC to send messages p2p by @hpeebles in #131
- Fix messages display on Safari by @hpeebles in #132
- Fix issue with unread messages count after marking p2p message as read by @hpeebles in #133
- Upgrade by @megrogan in #134
- Fix p2p connectivity issue by @hpeebles in #135
- Store in state whenever remote users are typing by @hpeebles in #136
- Display when a user is typing by @hpeebles in #137
- Use MyProfile rather than UserSummary for "me" + add a fake balance by @megrogan in #138
- Show date on unconfirmed messages by @hpeebles in #139
- There is no nat128 yet by @megrogan in #140
- Only send text messages p2p by @hpeebles in #141
- Add a mock transfer_cycles endpoint to user_mgmt by @megrogan in #142
- Specify mimeType when creating Blobs by @hpeebles in #143
- Add tick to show when a message is confirmed by @hpeebles in #144
- Show who is typing in the chat header and on the side menu by @hpeebles in #145
- Mg by @megrogan in #146
- Simplify and improve 'user is typing' logic by @hpeebles in #147
- Send cycles part 2 by @megrogan in #148
- Add tick to show when each message has been read by all recipients by @hpeebles in #149
- Some UI improvements / fixes by @megrogan in #150
- Fix issue with scroll height jumping after loading media by @hpeebles in #151
- Improve message tick + double tick styling by @hpeebles in #152
- Add green dot to show when a user is online by @hpeebles in #153
- Add STUN servers so that WebRTC connections can be established between remote users by @hpeebles in #154
- Fix file download by @megrogan in #155
- Fix chat list ordering by @hpeebles in #156
- Make all group participants admins by @hpeebles in #157
- Website file reorganisation by @megrogan in #158
- Make group chat participants only able to view messages sent since they joined the group by @hpeebles in #159
- Add missing field to candid file by @hpeebles in #160
- Set message media dimensions so the scroll height is known before the… by @megrogan in #161
- Fix messages list display issue in Firefox by @hpeebles in #162
- Added search_users api endpoint by @megrogan in #164
- Simplify MarkAsReadHandler + sync with server when changing selected chat by @hpeebles in #163
- Add search_all_messages to the chats canister by @hpeebles in #165
- Create direct chat in new side panel by @megrogan in #166
- Add ability to search chats, users + messages by @hpeebles in #167
- Store thumbnail with media messages to display before the data is loaded by @megrogan in #168
- Add new side panel for create group by @megrogan in #169
- Add future-architecture doc by @hpeebles in #170
- Added right panel for "add participant" by @megrogan in #171
- Setup the ability to reply to messages by @hpeebles in #172
- Added "remove participant" functionality by @megrogan in #173
- Integrate with Google Analytics by @hpeebles in #174
- Reduce size of Rust canister wasms by @hpeebles in #175
- Fix loading previous messages after selecting a chat by @hpeebles in #176
- Fix scrolling issue where previous messages wouldn't load by @hpeebles in #177
- Hold message media data against message in FE by @megrogan in #178
- Persist profile images by @megrogan in #180
- Add support for caching of "data" in browser cache by @megrogan in #181
- Integrate Material-UI by @hpeebles in #179
- Different cache policies for different types of data plus cache scave… by @megrogan in #182
- Move colours into the theme by @hpeebles in #183
- Mg by @megrogan in #184
- Convert more components to Material-UI by @hpeebles in #194
- Auth integration by @hpeebles in #195
- Adding login and registration workflow and screens WIP by @megrogan in #196
- Styling fixes by @hpeebles in #197
- Mg by @megrogan in #198
- Fix participants typing display by @hpeebles in #199
- Replace close button with a back button in AddParticipants by @megrogan in #200
- Mg by @megrogan in #201
- Move colours into theme by @hpeebles in #202
- Calculate userOnlineMarker boxShadow rather than needing to pass it via props by @hpeebles in #203
- Icon fixes by @hpeebles in #204
- Wire up SendCycles by @megrogan in #205
- Simplify message text box + some fixes since Material UI by @megrogan in #206
- Add dark theme by @hpeebles in #207
- Improve performance of sending media by re-using original blob url by @megrogan in #208
- Fix user online border colour issue by @hpeebles in #209
- Upgrade ic-cdk to latest version by @hpeebles in #210
- Use 128 bit chat Ids rather than 64 bit by @hpeebles in #211
- Captions and some UI tweaks by @megrogan in #213
- Generate chatIds earlier so that unconfirmed chats also have chatIds by @hpeebles in #212
- Add ability to logout by @hpeebles in #214
- Close draft message panel when new chat selected by @megrogan in #215
- Pass UserSummary in DIRECT_CHAT_CREATED event payload by @hpeebles in #216
- Bump ic-cdk version by @hpeebles in #217
- Use strongly typed canister function calls by @hpeebles in #218
- Migrate to alpha network by @hpeebles in #219
- Remove temporary stylesheet hack by @hpeebles in #220
- Mark service canisters as dependencies of the website canister by @hpeebles in #221
- Mg by @megrogan in #222
- Add ScrollToBottomButton by @hpeebles in #223
- Improved appearance of SendCycles messages by @megrogan in #224
- Split js into 2 bundles to prevent the files from being split by @hpeebles in #225
- Fix ScrollToBottomButton positioning by @hpeebles in #226
- Organised components into a folder structure by @megrogan in #227
- Stop background tasks once the user's session expires by @hpeebles in #228
- Cleanup unused files during build by @hpeebles in #229
- Moved session expiry dialog to the root where it more properly belongs by @megrogan in #230
- Maintain scroll bottom when expanding / collapsing footer by @hpeebles in #231
- If the session expires outside of the "app" component then go to the … by @megrogan in #232
- Simplify message component by @megrogan in #233
- Add a drop down menu to messages by @megrogan in #234
- Add reply to functionality to UI by @megrogan in #235
- Update dfinity agent-js packages by @hpeebles in #236
- Temp hack to fix polling issue in agent-js by @hpeebles in #237
- Fixes and UI improvements around cycles by @megrogan in #238
- Switch to using new identity service by @hpeebles in #239
- Specify exact package version due to breaking changes in later alpha versions by @hpeebles in #240
- Prepare OpenChat for release by @megrogan in #241
- Add validation to create_group_chat by @megrogan in #242
- Prune blobs once used memory reaches a threshold by @megrogan in #243
- Handle deleted blobs in the app by @megrogan in #244
- Added get_stats method to chats canister by @megrogan in #245
- Keep a tally of total byes in BlobStorage and restrict to 1GB by @megrogan in #247
- Make user sessions last 6 hours and display an alert when their session expires by @hpeebles in #246
- Fix identity bug in AppRoot by @hpeebles in #248
- Use exponential backoff in background tasks by @hpeebles in #249
- More release hardening by @megrogan in #250
- Update dfx.json with mainnet configuration by @hpeebles in #251
- Create canisters + configure service for mainnet by @hpeebles in #252
- Switch to using mainnet identity service by @hpeebles in #253
- Hide unimplemented action buttons from messages by @hpeebles in #254
- Use dollars rather than pounds for "send cycles" component by @megrogan in #255
- Missed a GBP -> USD by @megrogan in #256
- Prevent search terms > 25 chars by @megrogan in #257
- Fix USD exchange rate! by @megrogan in #258
- Added stats endpoint to user_mgmt canister by @megrogan in #259
- Expose more granular stats from chats canister by @hpeebles in #260
- Fix header overflow when there are lots of people in a group by @hpeebles in #261
- Allow scrolling through the participants list by @hpeebles in #262
- Catch any errors that occur while sending messages over WebRTC by @hpeebles in #263
- Fix search showing messages from chats that were sent before the user joined the chat by @hpeebles in #264
- Batch calls to send p2p connection details by @hpeebles in #265
- Fix overflow issues in chat list by @megrogan in #266
- Wrap urls in tags by @megrogan in #267
- Various improvements around participants list by @megrogan in #268
- Remove v slow sorting! by @megrogan in #269
- Simplify regex for finding urls in text by @megrogan in #271
- Add ability to join group by invite code by @hpeebles in #270
- Only search chats and messages from main search bar by @hpeebles in #272
- Sort participants case-insensitive + more logic in header by @megrogan in #273
- 'Add participants' -> 'Add participant' by @hpeebles in #274
- Add small margin above day change marker by @hpeebles in #275
- Make sessions last 24 hours by @hpeebles in #276
- Ask users for confirmation before leaving a group by @hpeebles in #277
- Pause the UnreadMessagesHandler when the document is hidden by @hpeebles in #278
- Fix issue whereby newline characters were considered part of url by @megrogan in #279
- Regex for matching urls in messages improved by @megrogan in #280
- Use hashmap to store the chats each user is in by @hpeebles in #281
- Make code safer by removing some 'unwrap's by @hpeebles in #282
- Reset selected chat index after leaving a group by @hpeebles in #283
- Fix/improve participants list in header and sort online first in r-panel by @megrogan in #284
- Mobile friendly by @megrogan in #285
- Improve register and login for mobile by @megrogan in #287
- Unread by @megrogan in #288
- Give option to make chat history visible to new joiners by @hpeebles in #286
- Temporarily disable new features that depend on an update to the chats canister by @hpeebles in #289
- Fix message rendering on mobile by @megrogan in #290
- Fix issue where header or footer could be lost on messages screen on mobile by @megrogan in #291
- Use material-ui breakpoints for "mobile mode" by @megrogan in #292
- Remove 'add_offer' and 'add_answer' as they are no longer used by @hpeebles in #293
- Fix centering issue on desktop by @megrogan in #294
- Responsive image/video scaling by @megrogan in #295
- Feat: chat id in path by @megrogan in #297
- Fix broken build by @megrogan in #298
- Fix 100vh issue affecting some iOS mobile devices by @megrogan in #299
- Candid file fix by @hpeebles in #300
- Stop autofocus of emoji picker in mobile mode by @megrogan in #301
- Hide emoji picker search altogether in mobile mode by @megrogan in #302
- Stop image overflow in DraftMediaMessage by @megrogan in #303
- Remove resize debounce by @megrogan in #304
- Fix bug when user has no chats by @megrogan in #305
- Bug when group participant panel still open for direct chat by @megrogan in #306
- Properly fix DraftMediaMessage by @megrogan in #307
- Allow back button on desktop by @megrogan in #309
- Fix logic for chat.get_messages by @megrogan in #310
- Fix bug trying to go to a message that's not accessible by @megrogan in #311
- Adjust DraftMediaMessage to use innerHeight rather than vh by @megrogan in #312
- Fix typo by @hpeebles in #314
- Fix error when clicking on the participants list by @hpeebles in #315
- Use ByteBuf not Vec for ser/der to/from candid by @megrogan in #316
- v2 initial candid files by @megrogan in #317
- Mg by @megrogan in #319
- V2 frontend skeleton by @julianjelfs in #318
- Fix upgrades by @hpeebles in #321
- Complete transition to new stable state and delete old code by @megrogan in #322
- v2 candid files WIP by @megrogan in #324
- Prevent adding participant if either user blocked by @megrogan in #325
- Revert "Temporarily disable new features that depend on an update to the chats canister (#289)" by @hpeebles in #296
- fixed formatting glitches by @julianjelfs in #320
- Fix remove participant bug by @megrogan in #326
- Bytebuf by @megrogan in #327
- Stop typing notifications from blocked users by @megrogan in #329
- Register process by @julianjelfs in #328
- Error handling by @julianjelfs in #332
- added a basic webmanifest which should facilitate add to home screen by @julianjelfs in #335
- optimised some images by @julianjelfs in #336
- Start implementing 'UserIndex' canister by @hpeebles in #337
- Fix blocking of typing notifications by @megrogan in #338
- Update user_index candid by @megrogan in #339
- Changed canister_creation_status to a variant by @megrogan in #342
- Add 'user_map' which maintains user data integrity by @hpeebles in #340
- Update candid file by @hpeebles in #343
- Consolidate domain model types into model folder by @megrogan in #344
- Replace status endpoint with current_user by @megrogan in #345
- Added CanisterCreationStatus to user by @megrogan in #346
- Added mark_as_online endpoint by @megrogan in #347
- Move queries and updates into their own folder by @megrogan in #348
- Rework of reg process by @julianjelfs in #341
- initial stab at ci by @julianjelfs in #350
- Split testable code from canister/api by @megrogan in #352
- Add tests to user_map by @hpeebles in #351
- testing backend ci stuff by @julianjelfs in #355
- make register stuff lazy loaded by @julianjelfs in #356
- Added user query by @megrogan in #354
- Add tests to 'submit_phone_number' by @hpeebles in #357
- Add tests to 'confirm_phone_number' by @hpeebles in #358
- Add tests to 'resend_code' by @hpeebles in #359
- Add users query and revisit mark_as_online by @megrogan in #360
- Improve a few tests by @hpeebles in #361
- Add 'cargo fmt' to GitHub checks by @hpeebles in #362
- Treat clippy warnings as errors by @hpeebles in #364
- Add tests to 'set_username' by @hpeebles in #363
- Add tests to 'mark_as_online' by @hpeebles in #365
- Routing by @julianjelfs in #366
- Increase user limit to 20,000 by @megrogan in #367
- Add skeleton of each canister by @hpeebles in #368
- Add search method to user_index by @megrogan in #369
- Truncate search term to 25 chars plus added a new test by @megrogan in #370
- Added metrics endpoint to user_index by @megrogan in #371
- Rename Request to Args by @megrogan in #372
- Start implementing 'user' canister by @hpeebles in #374
- Implement 'mark_read' by @hpeebles in #375
- Implement 'get_messages' by @hpeebles in #376
- Getchats by @julianjelfs in #373
- Skip returning usernames which we know haven't changed by @hpeebles in #377
- Implement 'get_messages_by_index' by @hpeebles in #378
- User sync by @julianjelfs in #379
- Added create_canister method to user_index API by @megrogan in #380
- Refactor to remove api.rs by @megrogan in #381
- Pass user principal as install argument to user canister by @megrogan in #384
- Implemented update_wasm method on UserIndex by @megrogan in #385
- Implement upgrade_canister method on the user_index by @megrogan in #386
- Refactor to remove api.rs from user canister by @megrogan in #387
- Implement 'send_message' and 'get_messages' for groups by @hpeebles in #383
- Add notifications canister by @hpeebles in #388
- Deploy / test backend canisters by @megrogan in #390
- Push event to notification canister after sending each message by @hpeebles in #389
- Small fixes by @megrogan in #391
- More progress by @julianjelfs in #382
- Grouping messages by @julianjelfs in #398
- add mechanism for success and failure toasts by @julianjelfs in #399
- Push notifications lambda function by @hpeebles in #393
- add message index to the route - not 100% sure about this yet by @julianjelfs in #400
- Tiny improvement by @hpeebles in #401
- In the User canister replaced "get_chats" query method with "updates" by @megrogan in #402
- Persist the "user notification status" in the chats canister by @megrogan in #403
- Add missing last_updated field to User UpdatesResponse by @megrogan in #404
- Get notifications canister building with DFX by @megrogan in #405
- More push notifications work by @hpeebles in #406
- Update chats by @julianjelfs in #407
- Start implementing group index canister by @hpeebles in #408
- Notify the group index canister when there is activity in a group by @hpeebles in #409
- Define our own Version type by @hpeebles in #410
- Upgrade to latest dfx version and register a dummy service worker by @megrogan in #411
- Clippy v1 backend by @megrogan in #412
- Make 'create_group' go via the user canister by @hpeebles in #413
- Implement 'sms_service' lambda function by @hpeebles in #414
- Split each canister into 2 crates ('api' + 'impl') by @hpeebles in #415
- Fix lambda functions to use updates where necessary by @hpeebles in #416
- Reference 'api' crates for c2c calls by @hpeebles in #417
- More frontend stuff by @julianjelfs in #418
- Update crates by @hpeebles in #420
- convert participants list to virtual list by @julianjelfs in #421
- Indexdb message caching by @julianjelfs in #427
- participant permissions by @julianjelfs in #428
- Register user integration test by @hpeebles in #429
- Send message integration test by @hpeebles in #432
- Change notifications to contain full message + refactoring by @megrogan in #433
- Add v1 notification types to notifications canister and service by @megrogan in #434
- Add sender_name (and group_name) to notifications by @megrogan in #435
- Updated v1 chats to push notifications on send_message by @megrogan in #437
- Switch to storing events rather than messages by @hpeebles in #436
- Only store notifications for users with active subscriptions by @hpeebles in #438
- Consolidate how we handle c2c calls by @hpeebles in #439
- Split shared logic out of notifications_service prior to cmd line app by @megrogan in #440
- Implement 'join_group' by @hpeebles in #441
- Create a client crate for each canister by @hpeebles in #442
- Implement Notification Service CLI by @megrogan in #443
- Add notification subscription to v1 WIP by @megrogan in #444
- Implement 'add_participants' for group chats by @hpeebles in #445
- Fix notifications cli by using a specific web-push commit by @megrogan in #446
- Fix candid files by @hpeebles in #447
- More candid file fixes by @hpeebles in #448
- Add 'latest_read_by_me/them' to chat summaries by @hpeebles in #451
- New group chat creation by @julianjelfs in #449
- Move types into separate package by @hpeebles in #453
- Add candid file by @hpeebles in #455
- Raise user limit to 30,000 + add service worker ts to build by @megrogan in #456
- Raise user limit to 50,000 by @megrogan in #457
- Remove invalid / expired webpush subscriptions by @megrogan in #462
- Ensure webpush subscription exists in backend by @megrogan in #464
- Attach stuff to messages by @julianjelfs in #466
- resize images on demand if necessary by @julianjelfs in #467
- drag and drop files onto the message entry input by @julianjelfs in #468
- Implement 'updates' method on user canister by @hpeebles in #458
- represent audio in the message feed by @julianjelfs in #469
- Notifications wrapped in envelope by @megrogan in #470
- v1 cargo clippy and fmt by @megrogan in #471
- Record audio clips as messages from the user's mic by @julianjelfs in #472
- Fixed defect by @megrogan in #473
- added a progress bar by @julianjelfs in #474
- Create 'libraries' directory by @hpeebles in #475
- Updates by @julianjelfs in #476
- Show message notifications on v1 by @megrogan in #477
- new approach for handling scrolling by @julianjelfs in #478
- Split canister client logic out of 'integration_tests' package by @hpeebles in #480
- Import the 'types' candid file into canister candid files by @hpeebles in #481
- Replace 'timestamp' with 'last_updated' in group chat summary updates by @hpeebles in #482
- Add 'last_updated' to GroupChatSummary by @hpeebles in #485
- Send one notification at a time so payload small by @megrogan in #487
- Add 'testenv_setup' executable by @hpeebles in #486
- More nuanced handling of push event by @megrogan in #488
- lazy loading files, video and audio by @julianjelfs in #484
- Start event index from 0 rather than 1 by @hpeebles in #489
- direct chat created by @julianjelfs in #491
- Use 'inspect_message' in each user canister by @hpeebles in #490
- Notifications by @megrogan in #494
- Add 'canister_installer' executable by @hpeebles in #495
- Enable notifications in prod by @megrogan in #497
- Cache chats by @julianjelfs in #496
- Mg by @megrogan in #498
- Fix package names by @hpeebles in #499
- Give chats canister prod notifications canister id by @megrogan in #500
- Add env_logger to aws notifications_pusher by @megrogan in #501
- Fix deploy-local script by @hpeebles in #502
- Switch notification pusher to run as a long running executable by @hpeebles in #503
- Set user type to created after username is set if canister already created by @hpeebles in #504
- Make rust code match candid by @hpeebles in #505
- Make group description optional and fix 'create group' args by @hpeebles in #506
- Fix integration tests by @hpeebles in #507
- Take account of 'history_visible_to_new_joiners' within groups by @hpeebles in #509
- Tweaks to improve v1 experience by @megrogan in #510
- Wiring up real back end by @julianjelfs in #512
- Rename handle_ methods to c2c_ by @megrogan in #513
- Add remove_participant method to group canister by @megrogan in #514
- sending group chat messages by @julianjelfs in #515
- Added a bunch of methods by @megrogan in #516
- ChatId is now always a wrapped CanisterId by @megrogan in #517
- fix candid by @julianjelfs in #518
- Include all packages in the single workspace by @hpeebles in #519
- Add group_index::search by @megrogan in #523
- Fix GitHub actions by @hpeebles in #524
- Split 'integration_tests' into its own workspace as it causes slow builds by @hpeebles in #525
- Use 'actions/cache' to speed up builds by @hpeebles in #526
- Give each canister a 'client' package + a 'c2c_client' package by @hpeebles in #520
- Direct messages by @julianjelfs in #521
- Reg fixes by @julianjelfs in #530
- Request more cycles from group index when group canisters run low by @hpeebles in #528
- Trap in user canister rather than returning NotAuthorized by @hpeebles in #532
- Add search_messages to group canister by @megrogan in #542
- Mark messages read on a per message basis by @hpeebles in #543
- Fix last_updated value on direct chats by @hpeebles in #546
- Make message_index start from 0 by @hpeebles in #547
- Fix for 'read_by_them' not being updated by @hpeebles in #548
- Add search_messages and search_all_messages to user canister by @megrogan in #545
- Putdata by @julianjelfs in #533
- Use http_request to get blob data by @hpeebles in #544
- Search messages across all groups by @megrogan in #549
- Handle misaligned message indexes in direct chats by @hpeebles in #551
- Serve webpush service worker from reserved path by @megrogan in #552
- Fix how we extract blob_id from the url by @hpeebles in #554
- Add 'Cache-Control: public' response header by @hpeebles in #555
- get blobs via http request by @julianjelfs in #556
- Alternative implementation of BlobStorage by @megrogan in #557
- Split media content into image, video, audio by @megrogan in #558
- Simplify API by removing put_first_chunk by @megrogan in #563
- Implement put_avatar_chunk by @megrogan in #565
- split media content into three by @julianjelfs in #564
- Use message_id rather than event_index to define replies by @hpeebles in #566
- don't mark my own messages as unread + replies by @julianjelfs in #567
- add a couple of candidate logos to the site by @julianjelfs in #570
- Request more cycles from user index when user canisters run low by @hpeebles in #569
- Implement http_request for avatars by @megrogan in #568
- Fix blob streaming defect by @megrogan in #575
- Add file-size to FileContent by @megrogan in #577
- Update group by @megrogan in #576
- Add ability to delete messages by @hpeebles in #578
- Reduce enum size from 280 to 16 bytes by boxing values by @hpeebles in #579
- Add events when group details change by @megrogan in #580
- Add method to iterate through events by @hpeebles in #581
- Set avatars by @megrogan in #583
- Update avatar blob Id in the user_index canister by @hpeebles in #584
- c2c_set_avatar takes non-optional u128 by @megrogan in #586
- set_avatar waits for call to user_index and logs by @megrogan in #587
- Avoid calling 'ic_cdk::caller' while handling reply by @hpeebles in #589
- Fire and forget call to c2c_set_avatar by @megrogan in #588
- setting avatars and editing groups by @julianjelfs in #590
- Implement 'toggle_reaction' by @hpeebles in #582
- Mark group as active after receiving a message reaction by @hpeebles in #591
- Verify unknown users before accepting messages from them by @hpeebles in #592
- Improve reaction handling between user canisters by @hpeebles in #593
- Added webrtc support for direct chats to backend by @megrogan in #594
- Merge DirectMessage and GroupMessage into one by @hpeebles in #595
- Raise v1 user limit to 100_000 by @megrogan in #597
- Removed unused code by @hpeebles in #596
- Add missing field to candid file by @hpeebles in #600
- When returning events additionally return any 'affected_events' by @hpeebles in #601
- Fix from_index when iterating in descending order by @hpeebles in #603
- Always return events in ascending order by @hpeebles in #604
- Simplify webrtc offers + add multi-offer support by @megrogan in #599
- add_webrtc_endpoint checked in inspect_message by @megrogan in #605
- WebRtc support for groups + refactor for direct by @megrogan in #607
- Consolidate code for direct chat and group chat events by @hpeebles in #608
- Fix webrtc backend for direct chats by @megrogan in #609
- Exclude based on the affected event's index by @hpeebles in #610
- Fix candid by @hpeebles in #611
- Return event_index when toggling reactions by @hpeebles in #615
- Increase max reaction length to 6 bytes by @hpeebles in #616
- Reactions by @julianjelfs in #618
- Take account of 'min_visible_event_index' when getting events by @hpeebles in #617
- Use content type rather than a new event type for deleted messages by @hpeebles in #620
- Handle updated / deleted messages in summary updates by @hpeebles in #622
- Delete msg by @julianjelfs in #621
- Enable notification + installable app groundwork by @megrogan in #619
- Fix unread message counts by @hpeebles in #623
- pull canister ids from .dfx by @julianjelfs in #624
- Remove duplicate commands by @hpeebles in #625
- Avoid calling 'ic_cdk::caller' after an async action by @hpeebles in #626
- Delete messages on recipient's canister in direct chats by @hpeebles in #627
- Implement 'edit_message' by @hpeebles in #628
- Fix search by @megrogan in #631
- Implement canister upgrades by @hpeebles in #630
- Store avatar_id in group_index + return in search by @megrogan in #633
- Search by @julianjelfs in #634
- Wire up avatar_id in group index for create case by @megrogan in #635
- Add script for upgrading canisters locally by @hpeebles in #637
- Edit message fixes by @hpeebles in #639
- Edit message work in progress by @julianjelfs in #640
- Tag notifications by @megrogan in #641
- Fix webrtc for direct chats by @megrogan in #643
- Implement mute chat notifications on v1 by @megrogan in #644
- Tiny candid fix by @megrogan in #646
- Case insensitive username uniqueness by @hpeebles in #647
- Add 'is_empty' method by @hpeebles in #648
- Implement "mark all unread" on v1 by @megrogan in #649
- Navigate to chat from notification by @megrogan in #651
- Group canister upgrades by @hpeebles in #650
- Allow marking messages as read by index or id by @hpeebles in #652
- Username validation by @hpeebles in #645
- On select chat, close any notifications for this chat by @megrogan in #658
- basics of Webrtc by @julianjelfs in #659
- Fix closing of notifications for selected chat by @megrogan in #661
- Refactor how replies are handled by @hpeebles in #660
- Unregister notifications service worker on manual sign-out by @megrogan in #674
- Race condition where mark_read is called before message is confirmed by @hpeebles in #662
- Peerjs by @julianjelfs in #673
- Removed webrtc connection brokering from backend by @megrogan in #677
- Compress user and group wasms by @hpeebles in #678
- Fix deploy / upgrade scripts by @hpeebles in #680
- Only store the event index being replied to by @hpeebles in #681
- Rationalise response code when caller not in group by @megrogan in #682
- Reply by @julianjelfs in #683
- Fix group and user canister upgrades by @hpeebles in #684
- web rtc for group chats. by @julianjelfs in #685
- Implement toggle_mute_notifications + Timestamped by @megrogan in #687
- Store read_by_me in user canister for each group by @megrogan in #688
- Collect and expose logs from each canister by @hpeebles in #689
- Limit user to creation of 10 groups by @megrogan in #691
- Limit number of users per group by @megrogan in #692
- couple of small changes by @julianjelfs in #690
- Use u32 rather than u16 for user group limit by @megrogan in #693
- Allow group admins to delete group messages by @megrogan in #695
- Marking read only by index by @julianjelfs in #697
- Add 'events_window' for getting events around a message by @hpeebles in #698
- Fix updates call for group chat by @megrogan in #699
- Switch to using the 'tracing' crate for logs by @hpeebles in #700
- Use canister pool for group_index by @megrogan in #703
- Admin delete by @julianjelfs in #704
- Fix issue with group updates by @megrogan in #708
- Move logging functionality into its own package by @hpeebles in #707
- Limit the canister pool to 10 in dev/test by @megrogan in #709
- remove usersearch state machine by @julianjelfs in #706
- Unread message count by @julianjelfs in #710
- prevent race condition by @julianjelfs in #711
- Use canister_pool for creating users by @megrogan in #714
- Log every update request into canisters when in test mode by @hpeebles in #713
- Manually implement Debug to avoid showing the full byte arrays by @hpeebles in #715
- Remove 'test_mode' from Environment trait by @hpeebles in #716
- Keep clippy happy by @megrogan in #717
- Add metrics to group_index by @megrogan in #720
- Implement ability to deposit and send cycles by @hpeebles in #721
- Push notifications by @julianjelfs in #719
- Add metrics to user_index by @megrogan in #722
- APIs for app to remove notification subscriptions by @megrogan in #731
- Remove unused account_balance field by @hpeebles in #732
- toggle_mute -> mute and unmute by @megrogan in #733
- Dynamically decide when to ask for a cycles top up based on memory usage by @hpeebles in #723
- muting and unmuting chat notifications by @julianjelfs in #734
- Add a max user limit by @megrogan in #738
- remove edit group state machine by @julianjelfs in #741
- Remove dependency on 'phonenumber' crate by @hpeebles in #740
- mark all read & more fixes for unread message counts by @julianjelfs in #737
- Remove all unused dependencies by @hpeebles in #743
- Add 'deploy-prod' and 'upgrade-canister-prod' scripts by @hpeebles in #744
- Improve 'test_mode' arg handling by @hpeebles in #745
- Disable canister pool in test_mode by @megrogan in #748
- Add metrics to group canister by @megrogan in #749
- Initialise each user / group canister with 0.5T cycles by @hpeebles in #750
- Fix 'top_up_canister' by @hpeebles in #751
- removed add group state machine by @julianjelfs in #747
- Refactored group metrics by @megrogan in #754
- Store transactions and return them via new 'transactions' endpoint by @hpeebles in #746
- Only perform cycles balance check when a new canister will be created by @hpeebles in #752
- Add user canister metrics by @megrogan in #759
- Notifications canister metrics by @megrogan in #763
- Replace event_index->message_index in MessageMatch by @megrogan in #764
- add participant search by @julianjelfs in #765
- Ignore deletes, edits, reactions from blocked user by @megrogan in #766
- Implement ability to send ICP by @hpeebles in #758
- load message windows when jumping to distant messages by @julianjelfs in #762
- Allow reactions to be up to 8 bytes in length by @hpeebles in #767
- Ensure canisters don't drop below 0.45T so that upgrades work by @hpeebles in #768
- Block for direct and group chats by @julianjelfs in #769
- Remove old user_index metrics candid API by @megrogan in #770
- make scroll to bottom work reliably by @julianjelfs in #771
- removal of chat machine by @julianjelfs in #783
- For user canister split initial_state from updates by @megrogan in #784
- Enhanced group_index metrics by @megrogan in #781
- Bugs related to delete group by @megrogan in #780
- User preferences by @megrogan in #782
- bringing us up to date with a load of recent back end changes by @julianjelfs in #785
- fix caching for event windows by @julianjelfs in #787
- explain why last admin cannot leave group by @julianjelfs in #788
- Only get participants (+blocked) for selected group by @megrogan in #789
- make sure that we don't end up with duplicate chat summaries in the l… by @julianjelfs in #790
- Use current timestamp when initialising cycles balance last updated date by @hpeebles in #786
- Return participant count with group summary by @megrogan in #796
- Unblock user re-adds them to group by @megrogan in #797
- Revert "Unblock user re-adds them to group (#797)" by @megrogan in #800
- Adding participants can include blocked users by @megrogan in #801
- Ensure unblocked removed when adding participants by @megrogan in #802
- Add caller role to GroupChatSummary and GCSUpdates by @megrogan in #803
- Fix adding blocked users to public groups by @megrogan in #804
- Use serde + MessagePack to serialize to/from stable memory by @hpeebles in #807
- dealing with lazy loaded participants by @julianjelfs in #798
- Delete group - fix to "updates" query in next PR by @megrogan in #808
- small bugfix by @julianjelfs in #809
- Switch to CBOR due to field ordering issues in the MessagePack crate by @hpeebles in #816
- Update ic_cdk to latest by @hpeebles in #814
- tone down the light theme a little and try to make the scroll bar les… by @julianjelfs in #813
- Add OnlineUsersAggregator canister to take load off UserIndex by @hpeebles in #817
- Ensure deleted grps not returned by user canisters by @megrogan in #810
- Fix build scripts for online_users_aggregator by @hpeebles in #818
- Move (de)serialization logic into new 'serializer' package by @hpeebles in #821
- Include removed groups in chats_removed by @megrogan in #824
- Upgrade user canisters on heartbeat by @hpeebles in #825
- User canister alerts by @megrogan in #826
- Allow using the cycles wallet to top up any canister by @hpeebles in #827
- Add candid types for alerts by @megrogan in #828
- Fix create group button by @hpeebles in #829
- Add owner role to groups by @megrogan in #830
- Fix candid for Alert types by @hpeebles in #831
- Ownership transfer & delete group by @julianjelfs in #832
- Fix candid mismatch by @hpeebles in #833
- Include the response when logging trace events by @hpeebles in #834
- Set user_index min cycles balance to 5T by @hpeebles in #835
- couple of bug fixes by @julianjelfs in #837
- Improve ingress message filtering via inspect_message by @hpeebles in #838
- Integrate UserGeek for user analytics by @megrogan in #836
- Add wallet_receive to v1 canisters by @megrogan in #841
- Added "original" theme and made a number of adjustments to all themes by @julianjelfs in #843
- Avoid calling groups which are being upgraded in 'updates' by @hpeebles in #851
- emoji tweaks by @julianjelfs in #846
- Always stop canisters before upgrading them by @hpeebles in #853
- Add a "stats" endpoint for v1 p2p canister + fmt by @megrogan in #854
- chat bubble by @julianjelfs in #852
- Limit the max number of concurrent canister upgrades by @hpeebles in #856
- Use fully qualified names in macros by @hpeebles in #858
- Add to metrics within push_event rather than push_message by @hpeebles in #859
- fixed some regressions from re-theming by @julianjelfs in #855
- Mentions by @megrogan in #860
- Retry sending messages that fail the first time by @hpeebles in #861
- Use custom panic hook which surfaces the error message by @hpeebles in #862
- Use guards where applicable in user canister by @hpeebles in #863
- rehydrate media replies correctly by @julianjelfs in #869
- Add mentions to user::updates response by @megrogan in #871
- be more surgical about updating the affected events by @julianjelfs in #870
- modal closing by @julianjelfs in #872
- Fix integration tests by @hpeebles in #875
- Simplify registering users in integration tests by @hpeebles in #876
- Tweak group changed text by @hpeebles in #877
- Add CODEOWNERS file by @hpeebles in #878
- Add super admin by @megrogan in #879
- More style changes by @julianjelfs in #880
- Reverse chat message list by @julianjelfs in #883
- Integration tests to cover making and removing admins by @hpeebles in #882
- Rename remove_admin to dismiss_admin by @hpeebles in #885
- Give SuperAdmin a fallback role by @megrogan in #886
- Store the wasm_version in each canister by @hpeebles in #887
- Remove super admin by @megrogan in #888
- Remove serde attributes that are no longer needed by @hpeebles in #889
- catching up with recent changes by @julianjelfs in #891
- Validate candid files as a GitHub check by @hpeebles in #892
- Add integration tests for "super admin" + fix bugs by @megrogan in #894
- a few bug fixes by @julianjelfs in #896
- Integration tests for "mentions" feature by @megrogan in #897
- Check candid files match rust types by @hpeebles in #901
- group::summary, group::summary_updates -> c2c_* by @megrogan in #902
- Initial participants can see GroupCreated event by @megrogan in #903
- Validate message content by @hpeebles in #904
- mapping updates by @julianjelfs in #905
- Secure and fix notifications by @megrogan in #908
- Add more tests to create_group by @hpeebles in #909
- Pluralise integration test names by @hpeebles in #910
- Avoid passing user_id to notifications canister by @hpeebles in #913
- Sync online users on every heartbeat + added tests by @hpeebles in #912
- Add integration tests to cover 'send_cycles' by @hpeebles in #911
- Add metrics to online users aggregator by @hpeebles in #915
- Scrolling & caching fix by @julianjelfs in #916
- Fix online_users_aggregator canister upgrade by @hpeebles in #917
- Mapping by @julianjelfs in #906
- fix a couple of problem scenarios by @julianjelfs in #918
- lots of small things by @julianjelfs in #920
- Notification pusher fixes by @hpeebles in #923
- couple of small fixes by @julianjelfs in #924
- Pass notifications canister Ids into user canisters + rename field by @hpeebles in #928
- Stuff by @julianjelfs in #932
- Remove mark_as_online from user_index by @hpeebles in #935
- remove home state machine by @julianjelfs in #938
- Create OpenStorage accounts for new OpenChat users by @hpeebles in #941
- Simplify how we record cycles used while creating canisters by @hpeebles in #942
- Remove OpenStorage code required for first upgrade by @hpeebles in #943
- Wrap sending WebRTC messages in a try / catch by @hpeebles in #950
- Set chatUserIds in ctor for direct chats by @hpeebles in #952
- Design tweaks by @megrogan in #954
- Fix bug where users could be marked as typing forever by @hpeebles in #953
- small fixes by @julianjelfs in #956
- Integrate OpenStorage by @hpeebles in #936
- Partition cache by user by @hpeebles in #955
- Mark messages as confirmed once we receive the send message response by @hpeebles in #957
- Remove all blob functionality by @hpeebles in #958
- Record who triggered the update on events that modify previous events by @hpeebles in #960
- Improve text at start of direct chats + when users are added to a group by @hpeebles in #961
- Simplify and fix image/video messages by @megrogan in #959
- Remove 'put_chunk' from the frontend by @hpeebles in #962
- Remove V1 notifications by @hpeebles in #964
- Make use of the new updated_by field by @hpeebles in #963
- Add c2c prefix by @hpeebles in #965
- Remove test user limit by @hpeebles in #966
- Fix issue where same file cannot be re-attached by @megrogan in #979
- Push notification when user is added to group by @hpeebles in #977
- Show audio or send + ensure message not empty by @megrogan in #981
- Focus back on text input after sending message by @megrogan in #982
- Add tracing to ic calls in notifications by @megrogan in #984
- Fix issues raised by cargo clippy by @hpeebles in #986
- Say 'You' rather than your username in replies by @hpeebles in #983
- Message links underlined + new tab, file new tab by @megrogan in #987
- Address sizing issues with media messages by @megrogan in #988
- Fix notifications and make them use candid by @hpeebles in #985
- Add script to deploy full env (OpenChat, InternetIdentity + OpenStorage) by @hpeebles in #991
- Short circuit if no participants are being added by @hpeebles in #994
- Mark messages sent by us as read if and only if they are not already by @hpeebles in #995
- Fix messages sent by current user being marked as unread in new chats by @hpeebles in #997
- Allow long txt and anchors to wrap inside messages by @megrogan in #1001
- Improve the message drafting UI + other bits by @megrogan in #999
- Set media height dynamically based on calculation by @megrogan in #1002
- Update chat list on each change to the selected chat by @hpeebles in #998
- Isolate draft messages to the chat they were created in by @hpeebles in #1003
- Simplify our code by using DRange by @hpeebles in #1004
- Hide 'Error loading chats' message if we regain connectivity by @hpeebles in #1008
- Add tests back in covering 'rangesAreEqual' and 'indexIsInRanges' by @hpeebles in #1010
- Address media sizing issues by @megrogan in #1005
- Removed a spurious console.log + tiny refactor by @megrogan in #1011
- Fix caching by @hpeebles in #1013
- Bump cache version by @hpeebles in #1015
- Update Rust edition to 2021 by @hpeebles in #1012
- Fix reverse typing bug by @hpeebles in #1016
- attempt to fix height problem by @julianjelfs in #1019
- Update chat list when receiving messages via WebRTC by @hpeebles in #1018
- When chat changes and not mobile, focus on input by @megrogan in #1020
- Fix keyboard issue on installed web app by @megrogan in #1021
- Fix readByThem by @hpeebles in #1023
- Replace markdown with same scheme as v1 for now by @megrogan in #1024
- Audio by @julianjelfs in #1026
- Show small current user header in landscape mode by @megrogan in #1027
- Ensure the events we load are contiguous by @hpeebles in #1022
- Fix issue when emoji is first character entered by @megrogan in #1028
- Get installable app working in a dodgy way by @megrogan in #1029
- Fix error with messageIsEmpty by @megrogan in #1030
- Update chat summaries as messages are confirmed by @hpeebles in #1031
- tiny tweak by @julianjelfs in #1032
- Fix chat ordering and date display by @hpeebles in #1035
- Replace 'viewingEventWindow' with check if within 'FROM_BOTTOM_THRESHOLD' by @hpeebles in #1036
- flip precedence for audio mimetype by @julianjelfs in #1038
- Store messages in cache after sending by @hpeebles in #1039
- Fix canister installer + upgrader by @hpeebles in #1041
- Fix mismatching chatIds when receiving message via WebRTC by @hpeebles in #1049
- Either pass message to chat controller or add to unconfirmed by @hpeebles in #1051
- Leave by @julianjelfs in #1052
- Only return latest message in summary if it is visible to user by @hpeebles in #1050
- make sure that we don't search for users with an empty search term by @julianjelfs in #1053
- Fix typo by @hpeebles in #1054
- improvement that avoids nullchat by @julianjelfs in #1055
- Display sender name in chat summary for group chats by @hpeebles in #1056
- Switch chat list to the 'nice-scrollbar' by @hpeebles in #1058
- npm run format by @hpeebles in #1059
- Remove group from list immediately after leaving it by @hpeebles in #1057
- Skip a load of processing when there are no updates by @hpeebles in #1060
- Prevent stampede by only starting timer once previous run has completed by @hpeebles in #1061
- Fix scrollbar display on Firefox by @hpeebles in #1064
- make sure left panel scrollbar doesn't mess up layout by @julianjelfs in #1065
- Revert by @julianjelfs in #1066
- Make confirmation codes always be 6 digits by @hpeebles in #1067
- Recalculate poller interval after toggling 'hidden' by @hpeebles in #1070
- User better phone number component in register by @julianjelfs in #1072
- Delete group by @julianjelfs in #1069
- Make phone number optional by @hpeebles in #1045
- Remove serialization code required for state change by @hpeebles in #1074
- Remove 'into_iter' from places where it is already implied by @hpeebles in #1075
- refactor identity and register machines to remove xstate by @julianjelfs in #1077
- Setup sms sender by @hpeebles in #1063
- Correctly show "send" or "record audio" button by @megrogan in #1085
- Allow users to register by paying a small fee in cycles by @hpeebles in #1076
- Return phone number for unconfirmed users by @hpeebles in #1088
- Remove unconfirmed users with expired confirmation codes by @hpeebles in #1087
- Remove 'async' package by @hpeebles in #1090
- Return phone number or registration fee for confirmed users by @hpeebles in #1092
- Ignore files generated by didc when running formatter by @hpeebles in #1096
- Cycles transfer registration by @julianjelfs in #1095
- Hack to upgrade UnconfirmedUsers by @hpeebles in #1097
- Fix issue w text disappearing from message bubble by @megrogan in #1098
- Remove code only needed for upgrading by @hpeebles in #1099
- use css animation instead by @julianjelfs in #1100
- Align current user menu nicely by @megrogan in #1101
- Expose counters of how many users register via phone and cycles by @hpeebles in #1102
- add time store to make user status reactive by @julianjelfs in #1103
- Remove code only needed for upgrade by @hpeebles in #1104
- Re-enable markdown by @megrogan in #1106
- Log when a canister wasm version changes + expose version in metrics by @hpeebles in #1105
- Timeout by @julianjelfs in #1108
- Rename 'update_canister_wasm' to 'upgrade_canister_wasm' by @hpeebles in #1107
- Markdown by @julianjelfs in #1112
- Get canisterIds from canister_ids.json rather than env variables by @hpeebles in #1110
- stop firefox throwing errors by @julianjelfs in #1113
- Rollbar by @julianjelfs in #1114
- Small fixes to notifications and markdown by @megrogan in #1116
- Rollbar by @julianjelfs in #1118
- Use markdown for captions & summaries by @megrogan in #1123
- Preview and caption file messages by @megrogan in #1125
- Fix css by @megrogan in #1126
- Set test_mode to false and clear trace messages by @hpeebles in #1128
- Revert "Set test_mode to false and clear trace messages (#1128)" by @hpeebles in #1132
- Allow specifying multiple 'updated_since' values when getting users by @hpeebles in #1129
- Only get regular updates for users we have direct chats with by @hpeebles in #1133
- Cache users in IndexedDb by @hpeebles in #1135
- Cache group chat details in IndexedDb by @hpeebles in #1136
- Reactions tooltip by @megrogan in #1134
- Add event_index and timestamp to notifications by @hpeebles in #1139
- Ensure each Poller instance only runs exactly one instance of its task by @hpeebles in #1140
- couple of small tweaks to reaction tooltip by @julianjelfs in #1138
- Cache user avatar references by @hpeebles in #1141
- Hydrate Mention by @megrogan in #1142
- Update chat summary on receiving a message notification by @hpeebles in #1145
- Mentions by @julianjelfs in #1144
- Add a Content Security Policy by @hpeebles in #1094
- slightly bigger text by @julianjelfs in #1147
- Update users who haven't been updated for over an hour by @hpeebles in #1148
- Use workspace level patches by @hpeebles in #1149
- Update candid to 0.7.9 by @hpeebles in #1150
- Switch to using ic-ledger-types by @hpeebles in #1151
- Simplify how we interact with canister state by @hpeebles in #1152
- Show reactions tooltip with long touch on mobile by @megrogan in #1153
- Allow users to register by paying a small fee in ICP by @hpeebles in #1154
- Fix inline username issue by @megrogan in #1156
- Emoji auto-completion by @julianjelfs in #1157
- Update phone code and registration fee expiry durations by @hpeebles in #1160
- Store user registration fees to be converted to cycles by @hpeebles in #1162
- Allow calls to notify_registration_fee_paid by @hpeebles in #1163
- Change cycles fee payment to ICP fee payment by @julianjelfs in #1164
- Restart the canister in the case of a failed upgrade by @hpeebles in #1165
- increase contrast on logout by @julianjelfs in #1171
- Add users_confirmed_via_icp to metrics by @hpeebles in #1166
- Remove code required for upgrade by @hpeebles in #1172
- Increase max reaction length to allow emojis with long encodings by @hpeebles in #1173
- make sure that we clone the event when we merge reactions by @julianjelfs in #1174
- Fix integration tests by @hpeebles in #1176
- Update the expiry time mentioned in SMS messages by @hpeebles in #1179
- Make type usage consistent when handling ICP by @hpeebles in #1177
- simplify reg & fix spinner by @julianjelfs in #1183
- use the recommended syntax for division by @julianjelfs in #1185
- Fix mentions in notifications by @megrogan in #1184
- Implement 'set_pinned_message' on the backend by @hpeebles in #1180
- Add "hide" flag to notification for future use by @megrogan in #1186
- Update frontend types to match backend by @hpeebles in #1187
- Allow users to preview messages in public groups before joining by @hpeebles in #1188
- Use serde default prior to notifications upgrade by @megrogan in #1190
- Add serde default attribute to new fields by @hpeebles in #1191
- Expose public group summaries by @hpeebles in #1193
- Remove serde defaults by @megrogan in #1192
- Mark all existing messages as read when joining a group by @hpeebles in #1195
- Log more details whenever a canister upgrade fails by @hpeebles in #1196
- Change API to support setting user + group avatars to None by @hpeebles in #1197
- Don't allow links in latest message in chat list by @megrogan in #1199
- Preview by @julianjelfs in #1198
- Record group activity when marking public groups as active by @hpeebles in #1201
- Expose recommended groups from each user canister by @hpeebles in #1202
- Add ability to hide groups from list of recommendations by @hpeebles in #1205
- Hydrate cached groups with latest values by @hpeebles in #1207
- About modal by @megrogan in #1203
- Tiny clean up by @hpeebles in #1208
- Increase user limit to 5000 by @megrogan in #1209
- Recommendations by @julianjelfs in #1210
- Include avatar updates when getting updates by @hpeebles in #1212
- Fix about box in RTL by @megrogan in #1213
- Improve how we handle group avatar updates by @hpeebles in #1214
- Fix group_index upgrade by @hpeebles in #1215
- Another upgrade fix by @hpeebles in #1216
- The best commit by @megrogan in #1218
- couple of small fixes by @julianjelfs in #1220
- Remove code only needed for upgrade by @hpeebles in #1217
- Increase registration fee by @hpeebles in #1219
- small bug fix + remove some compiler warnings by @julianjelfs in #1221
- log if we try to add a duplicate message to the list by @julianjelfs in #1222
- Add forwarded bool to Message so future upgrade wil be seamless by @megrogan in #1224
- If an upgrade fails due to insufficient cycles, top up then retry by @hpeebles in #1223
- Fix new cargo clippy issues now that we are on Rust 1.58.0 by @hpeebles in #1234
- Fix modal bug by @megrogan in #1229
- Fix issue where myRole was incorrectly being set to 'participant' by @hpeebles in #1233
- Use the new Rust string formatting syntax by @hpeebles in #1239
- Bugs by @julianjelfs in #1240
- In group chats only make WebRTC connections between active users by @hpeebles in #1241
- reset the state on group creation by @julianjelfs in #1243
- Remove svelte-markdown by @megrogan in #1244
- Add some basic randomness to the 'hot groups' calculation by @hpeebles in #1242
- Fix a couple glitches by @megrogan in #1245
- Show 20 recommended groups up from 10 by @hpeebles in #1250
- Fix About text by @megrogan in #1254
- Include users being replied to when getting userIds from events by @hpeebles in #1259
- Update main chat window with new messages received via notification by @hpeebles in #1262
- wait until initialised before processing update calls by @julianjelfs in #1264
- Avoid attempting to send notifications whose payloads exceed 4KB by @hpeebles in #1266
- Enable canister pool by @hpeebles in #1267
- prevent a couple of errors that are showing in the logs by @julianjelfs in #1270
- Fix bug closing notifications for selected chat by @megrogan in #1271
- remove new message line for now as it causes an annoying jiggle by @julianjelfs in #1272
- Disable adding people to public groups by @megrogan in #1277
- preserve case of search term in input by @julianjelfs in #1278
- Mark as a mention when a user replies to your message by @hpeebles in #1276
- Clear notifications for curr chat on window focus by @megrogan in #1281
- Revert code only needed for upgrade by @hpeebles in #1282
- Use AWS Pinpoint to send SMS messages rather than SNS by @hpeebles in #1284
- Fix paste issue by @megrogan in #1288
- Debug max recursion message by @julianjelfs in #1286
- catch error loading emoji picker by @julianjelfs in #1290
- Fix multi line messages on firefox by @megrogan in #1289
- Fix add participant still possible for public grps by @megrogan in #1296
- Split crypto sending logic into its own module by @hpeebles in #1295
- Make 'canister_state' macro take the state type as an arg by @hpeebles in #1299
- make sure that the theme system reacts to prefers-color-scheme: dark selector by @julianjelfs in #1300
- copy group url to clipboard by @julianjelfs in #1302
- reinstate markdown parsing by @julianjelfs in #1303
- extract userIds from mentions by @julianjelfs in #1301
- clickable mentions by @julianjelfs in #1304
- Return AlreadyRegistered for confirmed / created users by @hpeebles in #1305
- allow removal of empty direct chat by @julianjelfs in #1306
- Streamline user registration part 1 by @megrogan in #1307
- Populate users for messages received via WebRTC / notification by @hpeebles in #1309
- Set caret to end of range after pasting by @hpeebles in #1312
- make sure that we immediately insert created group into chat list by @julianjelfs in #1311
- Mark online after loading page + don't mark online while idle by @hpeebles in #1316
- confirm/submit phone can happen post registration by @megrogan in #1310
- fix reactivity of chat summary by @julianjelfs in #1318
- prevent the wrong message idx getting marked read by @julianjelfs in #1323
- Get/Set bio on user canister by @megrogan in #1324
- Allow blocking users who are no longer participants by @hpeebles in #1325
- User profile by @julianjelfs in #1326
- add block user option to group chat message by @julianjelfs in #1327
- Short circuit if user has already been blocked by @hpeebles in #1328
- Add 'join_group_v2' which returns the group summary by @hpeebles in #1315
- temporarily disable language selection until we have some alternative… by @julianjelfs in #1330
- remove transition from collapsible card by @julianjelfs in #1331
- Add trace events around canister upgrades by @hpeebles in #1332
- FAQ and roadmap by @megrogan in #1334
- couple of small fixes by @julianjelfs in #1336
- register_user also creates the canister by @megrogan in #1337
- Use the new 'join_group_v2' which returns the group chat summary by @hpeebles in #1338
- Get OpenStorage package from npm by @hpeebles in #1341
- Highlight focused message without layout jiggle by @megrogan in #1339
- overflow fix by @julianjelfs in #1344
- Fix text centering issue on hot groups by @megrogan in #1343
- Faq by @megrogan in #1345
- first cut chinese translations by @julianjelfs in #1346
- chinese language adjustments by @julianjelfs in #1347
- Add 'storageStatus' to data client interface by @hpeebles in #1342
- Include byteLimit and bytesUsed in uploadData response by @hpeebles in #1348
- Fix syncing of new users to OpenStorage by @hpeebles in #1349
- Add byte limit to confirm_phone_number response by @megrogan in #1352
- Add 'storage_upgrade_icp_account' to 'current_user' response by @hpeebles in #1353
- Remove code only needed for upgrade by @hpeebles in #1354
- Repopulate 'phone_status' fields which were set to None during upgrade by @hpeebles in #1355
- Add 'upgrade_storage' by @hpeebles in #1356
- Fix method name by @hpeebles in #1360
- View profile by @megrogan in #1357
- Update generated types for confirm phone response by @megrogan in #1362
- Simplify 'upgrade_storage' by introducing 'refresh_account_balance' by @hpeebles in #1361
- Fix user profile on mobile by @megrogan in #1365
- Transfer registration fees into a single account by @hpeebles in #1364
- Button group by @julianjelfs in #1367
- Remove attributes needed for upgrade by @hpeebles in #1370
- Revert "Repopulate 'phone_status' fields which were set to None durin… by @hpeebles in #1371
- Fix registration fee transfers and enable job in heartbeat by @hpeebles in #1372
- Transfer ICP to central account when charging users by @hpeebles in #1373
- Integrate the frontend with 'ledger.account_balance' by @hpeebles in #1374
- Replace 'process.env.LEDGER_CANISTER' with the env variable value by @hpeebles in #1375
- Hold user ICP in account owned by their canister by @hpeebles in #1376
- Storage upgrade stuff by @julianjelfs in #1368
- Clear pending upgrades when updating the user or group canister wasm by @hpeebles in #1377
- Updated FAQ by @megrogan in #1378
- New langs by @julianjelfs in #1383
- Handle 'upgrade_storage' in 'inspect_message' by @hpeebles in #1384
- Ensure storage limit is an integer by @hpeebles in #1385
- Add scripts and config for new test env on mainnet by @hpeebles in #1386
- Increase default storage limit from 100MB to 0.1GB by @hpeebles in #1388
- Small display tweaks by @hpeebles in #1390
- One time function to increase storage limits by @hpeebles in #1389
- Only trigger user canister upgrades from the user_index by @hpeebles in #1391
- removed some stuff from the registration flow by @julianjelfs in #1392
- Revert "One time function to increase storage limits (#1389)" by @hpeebles in #1393
- make faq translatable and add japanese translation by @julianjelfs in #1396
- Remove old registration flow by @hpeebles in #1395
- better than nothing by @julianjelfs in #1397
- updated with real Spanish translations by @julianjelfs in #1394
- Remove '--no-wallet' arg which is no longer supported by @hpeebles in #1400
- Remove serde attributes needed for upgrade by @hpeebles in #1399
- change_role FE ahead of BE by @megrogan in #1403
- group::change_role by @megrogan in #1404
- Skip deserializing fields which can be calculated in post_upgrade by @hpeebles in #1405
- couple of fixes for vietnamese by @julianjelfs in #1398
- Remove confirmed user branch by @megrogan in #1407
- fix timing issue with delete / leave group by @julianjelfs in #1408
- sort before deduping by @julianjelfs in #1410
- Replace User enum with User struct by @megrogan in #1409
- Removing upgrade code for User enum -> struct by @megrogan in #1411
- Simplify current_user and cleanup unused code by @megrogan in #1412
- Protect register_user with a CAPTCHA by @megrogan in #1414
- Add captcha to frontend by @megrogan in #1416
- Up user limit to 10_000 by @megrogan in #1417
- Translations by @julianjelfs in #1418
- Update rust crates by @megrogan in #1415
- Add root canister by @hpeebles in #1420
- Upgrade user_index via root canister by @hpeebles in #1421
- Fix user_index upgrades by @hpeebles in #1422
- Prevent browser refresh when scrolling messages by @megrogan in #1427
- Initialize canisters with a large cycles balance when running locally by @hpeebles in #1428
- fix fake link by @julianjelfs in #1429
- Add old_role to RoleChanged event by @megrogan in #1431
- adding the owner_id to group chat by @julianjelfs in #1426
- Serde by @julianjelfs in #1432
- Website use changeRole but keep old event handling by @megrogan in #1433
- new translations by @julianjelfs in #1434
- Bump indexDB cache version by @megrogan in #1435
- Only set role_changed to true when the user's own role has changed by @hpeebles in #1436
- Remove make_admin etc and transform old events by @megrogan in #1437
- Remove old serde default by @megrogan in #1439
- Fixed transform_events logic by @megrogan in #1440
- Delete files from OpenStorage when messages get deleted by @hpeebles in #1441
- Fix integration tests by @hpeebles in #1443
- add scripts for different client builds by @julianjelfs in #1442
- Update ic-ledger-types dependency and remove patch by @hpeebles in #1444
- Remove old events completely by @megrogan in #1438
- Fix deploy by @julianjelfs in #1445
- Fix deploy by @julianjelfs in #1446
New Contributors
Full Changelog: https://github.com/dfinity-lab/open-chat/commits/v2.0.124-website