4.8.0-rc.0
Pre-release2022-05-23 · 17 🎉 · 12 🚀 · 56 🐛 · 135 🔍 · 48 👩💻👨💻
🎉 New features
-
Ability for RC server to check the business hour for a specific department (#25436)
-
Add expire index to integration history (#25087)
-
Add new app events for pin, react and follow message (#25337)
-
Add new events after user login, logout and change his status (#25234)
-
Add option to show mentions badge when show counter is disabled (#25329)
-
Add user events for apps (#25165)
-
Adding app button on user dropdown (#25326)
-
Alpha Matrix Federation (#23688)
Experimental support for Matrix Federation with a Bridge
Quick.Example.showing.Matrix.org.mp4
-
Expand Apps Engine's environment variable allowed list (#23870 by @cuonghuunguyen)
-
Federation (Alpha Stabilization) (#25457)
-
Get user's preferred language via apps (#25514)
-
Marketplace new app details page (#24711)
Change the app details page layout for the new marketplace UI. General Task: MKP12 - New UI - App Detail Page
MKP12 - Tab Navigation
New tab navigation layout for the app details page. Now the app details page is divided into three sections, details, logs, and settings, that can each be accessed through a Tabs fuselage component.
MKP12 - Header
Implemented a new header for the marketplaces app details page.
-Changed the size of the app name;
-Implemented the app description field on the header;
-Changed the "metadata" section of the header(The part with the version and author information) now it also shows the last time the app was updated;
-Created a chip that will show when an app is part of one or more bundles and inform which are the bundles;
-Implemented a tooltip for the bundle chips;
-Created a new button + data badge component to substitute the current App Status;
-Changed the title of the "purchase button". Now it shows different text based on the "purchase type" of the app;
-Created a new Pricing & Status display which shows the price when the app is not bought/installed and shows the app status(Enabled/Disabled) when it is bought/installed;
-Changed the way the tabs are rendered, now if the app is not installed(and consequently doesn't have logs and settings tab) it will not render these tabs;MKP12 - Configuration Tab
Delivered together with the tab-navigation task. Changed the app settings from the details of the app to the new settings tab.
Demo image:
MKP12 - Log Tab
Changed the place of the app logs from the page to the new logs tab. Also changed some styles of the logs accordions to fit better with the new container.
MKP12 - Page Header
Changed the design for the page header of the app details page from a title on the left with a save and back button on the right to a back arrow icon on the left side of the title with the save button still on the right. Also changed the title of the page from App details to Back.
Edit: After some design reconsideration, the page title was changed to App Info.
Demo gif:
MKP12 - Detail Tab
Implemented markdown on the description section of the app details page, now the description will show the detailedDescription.rendered (as rendered JSX) information in case it exists and show the description (a.k.a. short description) information in case it doesn't. Unfortunately, as of right now no app has a visual example of a markdown description and because of that, I will not be able to provide a demo image/gif for this PR.
MKP12 - Slider Component
Created an image carousel component on the app details page. This component receives images from the apps/appId/screenshots endpoint and shows them on the content section of the app details of any apps that have screenshots registered, if the app has no screenshots it simply shows nothing where the carousel should be. This component is complete with keyboard arrow navigation on the "open" carousel, hover highlight on the carousel preview and close on esc press.
Demo gif:
-
Message Template React Component (#23971)
Complete rewrite of the messages component in react. Visual changes should be minimal as well as user impact, with no break changes (unless you've customized the blaze template).
In case you encounter any problems, or want to compare, temporarily it is possible to use the old version -
New button for network outage (#25499)
When network outage happens it should be conveyed to the user with special icon. This icon should not be clickable.
Network outage handling is handled in https://app.clickup.com/t/245c0d8 task. -
New stats rewrite (#25078 by @ostjen)
Add the following new statistics (metrics):
-
Total users with TOTP enabled;
-
Total users with 2FA enabled;
-
Total pinned messages;
-
Total starred messages;
-
Total email messages;
-
Total rooms with at least one starred message;
-
Total rooms with at least one pinned message;
-
Total encrypted rooms;
-
Total link invitations;
-
Total email invitations;
-
Logo change;
-
Number of custom script lines;
-
Number of custom CSS lines;
-
Number of rooms inside teams;
-
Number of default (auto-join) rooms inside teams;
-
Number of users created through link invitation;
-
Number of users created through manual entry;
-
Number of imported users (by import type);
-
-
Star message, report and delete message events (#25383)
-
Use setting to determine if initial general channel is needed (#25441)
- Adds flag responsible for overwriting #general channel creation
🚀 Improvements
-
ENTERPRISE: Allow mapping LDAP groups to multiple RC roles (#23849)
- Add support to mapping LDAP groups to multiple roles (by specifying arrays in the "User Data Group Map" enterprise setting.
-
Add OTR Room States (#24565)
Earlier OTR room uses only 2 states, we need more states to support future features.
This adds more states for the OTR contextualBar.- Expired
- Declined
- Error
-
Add tooltip to sidebar room menu (#24405 by @Himanshu664)
-
Added MaxNickNameLength and MaxBioLength constants (#25231 by @aakash-gitdev)
-
Added tooltip options for message menu (#24431 by @Himanshu664)
-
Fix multiple bugs with Matrix bridge (#25318)
-
Improve active/hover colors in account sidebar (#25024 by @Himanshu664)
-
New admin settings Page (#25439)
-
Pass allowDiskUse to channel aggregations on engagement dashboard (#22374)
-
Performance for some Omnichannel features (#25217)
-
Rename upgrade tab routes (#25097)
Change 'upgrade tab' routes names from camelCase ('goFullyFeatured') to kebab-case ('go-fully-featured') due to URL naming consistency. Changed types, main function and test.
-
Unify voip streams into single stream (#25108)
🐛 Bug fixes
-
Add katex render to new message react template (#25239)
-
Add open user card to user avatar (#25445)
-
Add reaction not working in legacy messages (#25222)
-
Added invalid password error message (#24714 by @Himanshu664)
-
Adjust email label in Setup Wizard i18n files (#25260)
- remove 'Company' label on onboarding email keys in certain languages
-
AgentOverview analytics wrong departmentId parameter (#25073 by @paulobernardoaf)
When filtering the analytics charts by department, data would not appear because the object:
{ value: "department-id", label: "department-name" }
was being used in the
departmentId
parameter. -
Change NPS Vote identifier + nps index to unique (#25423)
-
Client disconnection on network loss (#25170)
Agent gets disconnected (or Unregistered) from asterisk in multiple ways. The goal is that agent should remain online
unless agent explicitly logs off.
Agent can stop receiving calls in multiple ways due to network loss. Network loss can happen in following ways.-
User tries to switch the network. User experiences a glitch of disconnectivity. This can be simulated by turning the network off
in the network tab of chrome's dev tool. This can disconnect the UA if the disconnection happens just before the registration refresh. -
Second reason is when computer goes in sleep mode.
-
Third reason is that when asterisk is crashed/in maintenance mode/explicitly stopped.
Solution:
The idea is to detect the network disconnection and start the start the attempts to reconnect.
The detection of the disconnection does not happen in case#1. The SIPUA's UserAgent transport does not
call onDisconnected when network loss of such kind happens. To tackle this problem, window's online and offline event handlers are
used.The number of retries is configurable but ideally it is to be kept at -1. Whenever disconnection happens, it should keep on trying to
reconnect with increasing backoff time. This behaviour is useful when the asterisk is stopped.When the server is disconnected, it should be indicated on the phone button.
-
-
Close room when dismiss wrap up call modal (#25056)
-
Custom sound error toast messages (#24515 by @Himanshu664)
-
Deactivating user breaks if user is the only room owner (#24933 by @sidmohanty11)
Before
deactivating-user-breaks.mp4
After
fix.deactivating-user-breaks-room-with-no-owner.mp4
-
Desktop notification on multi-instance environments (#25220)
-
Dynamic load matrix is enabled and handle failure (#25495)
-
End call button disappearing when on-hold (#24936)
-
Failure to update Integration History index (#25473)
-
Fixing app contextual bar functionality (#25615)
-
Fixing Network connectivity issues with SIP client. (#25391)
The previous PR #25170 did not handle the issues completely.
This PR is expected to handle-
Clearing call related UI when the network is disconnected or switched.
-
Do clean connectivity. There were few issues discovered in earlier implementation. e.g endpoint would randomly
get disconnected after a while. This was due to the fact that the earlier socket disconnection caused the
removal of contact on asterisk. This should be fixed in this PR. -
This PR contains a lot of logs. This will be removed before the final merge.
-
-
FormData uploads not working (#25069)
-
Full error message is visible (#24856 by @Himanshu664)
-
Incorrect websocket url in livechat widget (#25261)
-
Initial User not added to default channel (#25544)
If injecting initial user. The user wasn’t added to the default General channel
-
Integrations avatar attribute misuse (#25283)
-
Invitation links don't redirect to the registration form (#25082)
-
LDAP sync removing users from channels when multiple groups are mapped to it (#25434)
-
Message menu action not working on legacy messages. (#25148)
-
Message menu dropdown not working on Mobile Web (#25616)
-
Message preview not available for queued chats (#25092)
-
NPS never finishing sending results (#25067)
-
One of the triggers was not working correctly (#25409)
-
Ordered and unordered list styles, Line breaks. (#25494)
Also removed the message.md cache from server, since changes in the parser might break messages in the future (and will in this specific case).
-
Pinned Message display cutting off information (#25535)
-
Prevent sequential messages edited icon to hide on hover (#24984)
before
after
-
Proxy settings being ignored (#25022)
Modify Meteor's
HTTP.call
to add back proxy support -
Read receipts show with color gray when not read yet (#25244)
-
Read receipts showing before message read (#25216)
-
Removing user also removes them from Omni collections (#25444)
-
Replace encrypted text to Encrypted Message Placeholder (#24166)
before
after
-
Reply button behavior on broadcast channel (#25175)
Hide reply button for the user that sent the message
-
room creation fails if app framework is disabled (#25200)
-
Rooms' names turn lower case on CSV import (#24612)
-
Change 'Settings' import to not get cached configs
-
Remove update
UI_Allow_room_names_with_special_chars
value
-
-
Sanitize customUserStatus and fix infinite loop (#25449)
Additional improves:
-
usage of RHF to avoid unnecessary Add and Edit components separately and form validation
-
usage of
GenericTableV2
and some hooks to avoid unnecessary code -
fix
IUserStatus
type -
improves in UI design
-
improves empty and loading state
-
improves files structure
-
-
Settings listeners not receiving overwritten values from env vars (#25448)
-
Showing Blank Message Inside Report (#25007 by @nishant23122000)
Desktop.2022.03.31.-.15.58.05.02.mp4
-
Spotlight results showing usernames instead of real names (#25471)
-
Toolbox hiding under contextual bar (#25237)
-
UI/UX issues on Live Chat widget (#25407)
-
Unable to see channel member list by authorized channel roles (#25412)
-
Upgrade tab loader in incorrect position (#25398)
- Add invisible prop to iframe when loading state is active.
-
Upgrade Tab showing for a split second (#25050)
-
Use correct room property for call ended at (#24932)
-
useCurrentChatTags is not a function (#25604)
-
User abandonment setting was not working doe to failing event hook (#25520)
A setting watcher and the query for grabbing abandoned chats were broken, now they're not.
-
UserAutoComplete not rendering UserAvatar correctly (#25055)
before
after
-
UserCard sanitization (#25089)
-
Rewrites the component to TS
-
Fixes some visual issues
before
after
-
-
Video and Audio not skipping forward (#19866)
-
VoIP disabled/enabled sequence puts voip agent in error state (#25230)
Initially it was thought that the issue occurs because of the race condition while changing the client settings vs those settings reflected on server side. So a natural solution to solve this is to wait for setting change event 'private-settings-changed'. Then if 'VoIP_Enabled' is updated and it is true, set voipEnabled to true in useVoipClient.ts (on client side)
It was realised that the race does not happen because of the database or server noticing the changes late. But because of the time taken to establish the AMI connection with Asterisk.
Solution:
-
Change apps/meteor/app/voip/server/startup.ts. When VoIP_Enabled is changed, await for Voip.init() to complete and then broadcast connector.statuschanged with changed value.
-
From apps/meteor/server/modules/listeners/listeners.module.ts use notifyLoggedInThisInstance to notify all logged in users on current instance.
-
in apps/meteor/client/providers/CallProvider/hooks/useVoipClient.ts add the event handler that receives this event. Change voipEnabled from constant to state. Change this state based on the 'value' that is received by the handler.
-
🔍 Minor changes
-
Bump body-parser from 1.19.2 to 1.20.0 in /ee/server/services (#25042 by @dependabot[bot])
-
Bump ejson from 2.2.1 to 2.2.2 (#25057 by @dependabot[bot])
-
Bump eslint-plugin-anti-trojan-source from 1.0.6 to 1.1.0 (#25076 by @dependabot[bot])
-
Bump minimist from 1.2.5 to 1.2.6 in /ee/server/services (#24991 by @dependabot[bot])
-
Bump pino and pino-pretty (#25052)
-
Bump template-file from 6.0.0 to 6.0.1 (#25002 by @dependabot[bot])
-
Chore: Add /v1/video-conference endpoint types (#25278)
-
Chore: Add channel endpoints (rest-typings) (#25279)
-
Chore: Add client folder to CODEOWNERS (#25397)
-
Chore: Add error boundary to message component (#25223)
Not crash the whole application if something goes wrong in the MessageList component.
-
Chore: Add Livechat repo into Monorepo packages (#25312)
-
Chore: Add options to debug stdout and rate limiter (#25336)
-
Chore: Add root package.json to houston files (#25286)
See title
-
Chore: Add typings for /v1/webdav.getMyAccounts (#25276)
-
Chore: Add yarn plugin to check node and yarn version (#25224)
-
Chore: bump fuselage (#25605)
-
Chore: Bump fuselage (#25371)
-
Chore: Bump Fuselage packages (#25259)
-
Chore: Cancel running jobs if PR is updated (#24708)
-
Chore: Chore add validation option to rest endpoints (#25443)
-
Chore: Convert
UserStatusMenu
to TS (#25265) -
Chore: Convert additionalForms (#25586)
-
Chore: Convert Admin -> Rooms to TS (#25348)
-
Chore: Convert admin custom sound to tsx (#25128)
-
Chore: Convert Admin/OAuthApps to TS (#25277)
-
Converts Admin/OAuthApps to TS.
-
migrated forms to react-hook-form
-
-
Chore: Convert AdminSideBar to ts (#25372)
-
Chore: Convert apps/meteor/client/components/UserAutoComplete (#25554)
-
Chore: Convert apps/meteor/client/views/admin/settings (#25565)
-
Chore: Convert apps/meteor/client/views/admin/settings/inputs folder (#25427)
-
Chore: Convert AutoTranslate (#25591)
-
Chore: Convert client/views/admin/settings/groups folder to ts (#25345)
-
Chore: Convert Create Channel (#25589)
-
Chore: Convert customSounds folder to ts (#25274)
-
Chore: Convert customUserStatus folder to ts (#25288)
-
Chore: Convert email inbox feature to TypeScript (#25298)
-
Chore: Convert federationDashboard folder to ts (#25343)
-
Chore: Convert getStatistics (#25342)
-
Chore: convert info to typescript (#25420)
-
Chore: Convert LivechatAgentActivity to raw model and TS (#25123)
-
Chore: Convert Mailer to TS (#25121)
-
Chore: convert marketplace price display component to use typescript (#25504)
-
Chore: Convert NotificationStatus to TS (#25125)
-
Chore: Convert push endpoints to TS (#25347)
-
Chore: Convert RoomForeword, TextCopy and RoomAvatarEditor to TS (#25424)
-
Chore: Convert slashCommands to typescript (#25592 by @eduardofcabrera & @ostjen)
-
Chore: Convert to typescript some functions from app/lib/server/functions (#24519)
Convert to typescript some functions from app/lib/server/functions and transfered theses files to server/lib
-
Chore: Convert to typescript the slash commands help files (#24307 by @eduardofcabrera)
Convert to typescript the slash commands help files
-
Chore: Convert useFileInput to TS (#25426)
-
Chore: Convert useUpdateAvatar to TS and type avatar endpoints (#25430)
-
Chore: Converting orchestrator.js to ts (#25367)
-
Chore: Create README.md for Rest Typings (#25335)
-
Chore: Dedicated package for UI contexts (#25432)
Moving our React contexts to a different package on the monorepo enable us to deliver components from another packages, because they work as a loose connection to the core APIs.
-
Chore: Dependencies upgrade (#25290)
-
Chore: Enable marketplace screenshots endpoint (#25395)
-
Chore: ensure scripts use cross-env and ignore some dirs (ROC-54) (#25218)
-
data and test-failure should be ignored
-
ensure scripts use cross-env
-
-
Chore: Fix return type warnings (#25275)
-
Chore: Livechat change output level (#25522)
-
Chore: Manager Page Rewrite (#25431)
-
Chore: Migrate 15-message-popup from cypress to playwright (#25462)
-
Chore: migrate from cypress to pw 14-setting-permission (#25523)
-
Chore: Migrate NotFoundPage to TS (#25509)
-
Chore: Migrate oauth2server to typescript (#25126)
-
Chore: Migrate retention-policy to ts (#25582)
-
Chore: Migrate spotify to ts (#25507)
-
Chore: migrate-to-pw-adjust-in-intermitences (#25542)
-
Chore: Minor dependency updates (#25269)
-
Chore: Missing keys in APIsDisplay (#24464)
-
Chore: Monorepo (#25074)
-
Chore: Move admin sidebarItems registration to the main file (#25442)
-
Chore: Move ddp-streamer micro service to its own sub-repo (#25246)
-
Chore: move definitions to packages (#25085)
-
Chore: Move markdown message parser to a
callback
(#25413) -
Chore: organize test files and fix code coverage (#24900)
-
Chore: Remove Alpine image deps after using them (#25053)
-
Chore: Remove duplicated useUserRoom (#25180)
-
Chore: Remove old files from removed Omnichannel feature (#25129)
-
Chore: Remove package-lock.json from houston files (#25280)
Houston config in the
package.json
file still mentionedpackage-lock.json
, but it doesn't exist anymore -
Chore: Remove unused Drone CI files (#25124)
-
Chore: Reorder unreleased migrations (#25508)
-
Chore: REST query and body params validation (#25446)
-
Chore: Rewrite 2fa to typescript (#25285)
-
Chore: Rewrite action-links to ts (#25418)
-
Chore: Rewrite autotranslate to ts (#25425)
-
Chore: Rewrite Jitsi Contextualbar to TS (#25303)
-
Chore: Rewrite mail-messages to ts (#25421)
-
Chore: Rewrite some Omnichannel files to TypeScript (#25359)
apps/meteor/client/components/Omnichannel/modals/*
apps/meteor/client/components/Omnichannel/Tags.js -
Chore: solve yarn issues from env var (#25468)
-
Chore: Sync with master (#25284)
-
Chore: Template to generate packages (#25174)
npx hygen package new test
-
Chore: Tests with Playwright (task: All works) (#25122)
-
Chore: Tests with Playwright (task: ROC-25, 06-message) (#25252)
-
Chore: Tests with Playwright (task: ROC-28, 09-channels) (#25196)
-
Chore: Tests with Playwright (task: ROC-31, 12-settings) (#25253)
-
Chore: Tests with Playwright (task: ROC-66, Intermittent resolution in tests) (#25416)
-
Chore: TS conversion folder client (#25031)
-
Chore: TS migration SortList (#25167)
-
Chore: Update Apps-Engine version (#25617)
-
Chore: Update Livechat to the last version (#25257)
-
Chore: Update Livechat version (#25130)
-
Chore: update OTR icon (#24521 by @kibonusp)
I changed the shredder icon in OTR contextual bar to the stopwatch icon, recently added to the fuselage.
-
Chore: Update Volta configuration (#25394)
Volta need some extra configuration to work on monorepos.
-
Chore: User set UTC offset (#25381)
-
i18n: Language update from LingoHub 🤖 on 2022-04-04Z (#25043)
-
Merge master into develop & Set version to 4.7.0-develop (#25028)
-
Regression: Add
isPending
status to message (#25299) -
Regression: Add eslint package to micro services Dockerfile (#25311)
-
Regression: Add select message to system message and thread preview and allow select on legacy template (#25251)
-
Regression: Avatar not loading on first direct message (#25211)
fix avatar not loading on a first direct message
-
Regression: Better MongoDB connection management for micro services (#25323)
-
Regression: bump onboarding-ui version (#25320)
-
Bump to 'next' the onboarding-ui package from fuselage.
-
Update from 'companyEmail' to 'email' adminData usage types
-
-
Regression: Change preference to be default legacy messages (#25255)
-
Regression: CI playwright (#25168)
-
Regression: CI services build (#25555)
-
Regression: eslint not running on packages (#25305)
-
Regression: Fix CI monorepo build (#25107)
-
Regression: Fix clicking on visitor's chat in the sidebar does not display the chat window (#25380)
Fix: livechat room not opening.
-
Regression: Fix English i18n react text (#25368)
Incorrect text in reaction tooltip has been fixed
-
Regression: Fix federation Matrix bridge startup (#25273)
-
Regression: Fix micro services Docker build (#25193)
-
Regression: Fix multi line is not showing an empty line between lines (#25317)
-
Regression: Fix reply button not working when hideFlexTab is enabled (#25306)
-
Regression: Fix services Docker build on CI (#25181)
-
Regression: Fix services-image-build-check (#25519)
-
Regression: Fix size of custom emoji and render emoji on thread message preview (#25314)
-
Regression: Fix the alpine image and dev UX installing matrix-rust-sdk-bindings (#25319)
The package only included a few pre-built which caused all macs to have to compile every time they installed and also caused our alpine not to work.
This temporarily switches to a fork of the matrix-appservice-bridge package.
Made changes to one of its child dependencies
matrix-rust-sdk-bindings
that adds pre-built binaries for mac and musl (for alpine). -
Regression: Messages in new message template Crashing. (#25327)
-
Regression: Revert Bugsnag version (#25313)
-
Regression: Rocket.Chat Webapp not loading. (#25349)
-
Regression: Show username and real name on the message system (#25254)
-
Regression: Shows error if micro service cannot connect to Mongo (#25301)
-
Regression: Use exact Node version on micro services Docker images (#25287)
-
Regression: Validate empty fields for Message template (#25250)
-
Regression: yarn dev triggers build dependencies (#25208)
-
Test: Migrate 13-permissions from cypress to playwright (#25558)
👩💻👨💻 Contributors 😍
- @Himanshu664
- @aakash-gitdev
- @cuonghuunguyen
- @dependabot[bot]
- @eduardofcabrera
- @kibonusp
- @nishant23122000
- @ostjen
- @paulobernardoaf
- @sidmohanty11
👩💻👨💻 Core Team 🤓
- @AllanPazRibeiro
- @KevLehman
- @MarcosSpessatto
- @MartinSchoeler
- @PedroRorato
- @alansikora
- @albuquerquefabio
- @amolghode1981
- @cauefcr
- @d-gubert
- @debdutdeb
- @dougfabris
- @felipe-menelau
- @felipe-rod123
- @filipemarins
- @gabriellsh
- @geekgonecrazy
- @ggazzo
- @guijun13
- @hugocostadev
- @jeanfbrito
- @juliajforesti
- @marceloschmidt
- @matheusbsilva137
- @matheuslc
- @murtaza98
- @pierre-lehnen-rc
- @rique223
- @rodrigok
- @sampaiodiego
- @souzaramon
- @tapiarafael
- @tassoevan
- @tiagoevanp
- @tmontini
- @ujorgeleite
- @weslley543
- @yash-rajpal