Repository navigation
Releases: esl/MongooseIM
Releases · esl/MongooseIM
Release list
MongooseIM 6.10.0
Highlights
- Introduced a new format for Jingle Message Initiation push notifications.
- Improved GraphQL metric queries and last-activity results for online users.
- Hardened atom conversion and Erlang term decoding, and added the SAFE scanner to CI.
- Fixed connection handling, dynamic-domain S2S routing, and run-time ETS table ownership.
Changed
- Jingle push notifications carry JMI session data, use data-only MongoosePush requests, and route to APNs topics ending in
.voip(#4802) - Upgraded
fast_scramto 0.7.3 andfast_pbkdf2to 2.1.0, fixing a potential memory leak (#4816)
Fixed
- Fixed crashes on unusable PROXY protocol headers, including address-less proxy health checks (#4795)
- Fixed crashes when an SSE handler terminates before its state is initialized (#4796)
- Run-time ETS tables now use a dedicated heir process, avoiding unexpected transfer messages to
ejabberd_sup(#4798) - Fixed GraphQL resolver errors for roster subscription states, large Mnesia integer results and metric queries (#4806)
- Dynamic domains and their subdomains are now treated as local when checking S2S routing targets (#4809)
- GraphQL last-activity queries now return the current timestamp and
Onlinestatus for users with available presence (#4814) - Removed a console warning from
nodetool(#4817) - Prevented possible crash errors logged when a client disconnected too early (#4819)
Removed
- Removed the unused StatsD reporter dependency and startup code (#4813)
- Removed unreachable external-authentication cache code and the dead
extauth_cacheoption (#4815)
Other
- Added the SAFE scanner to CircleCI and GitHub Actions, hardened atom conversion and stored MAM message decoding, introduced
ClusterNodeNamevalidation for GraphQL cluster metric queries, and corrected JWT algorithm names (#4783) - Replaced MinIO with RustFS in the test infrastructure and updated HTTP upload documentation (#4797, #4808)
- Expanded unexpected-message tests for
gen_serverprocesses (#4800) - Fixed unexpected errors in tests (#4804, #4805, #4807, #4810)
Commits, merged PRs and closed issues
Special thanks to our contributors
MongooseIM 6.9.0
Highlights
- Added configurable, rule-based push notification handling as an alternative to plugins.
- Push notifications now use routing-time session state instead of the general presence status.
- Fixed
mod_muc_lightpreventing the last admin from leaving a room. - Tightened GraphQL schema nullability and added a
SafeIntscalar for large metric values.
Added
- Added configurable, rule-based push notification handling as an alternative to plugins, with ordered rules and
push/skipactions (#4781)
Changed
mod_event_pusherno longer emits received-message events for non-user targets (#4777)- Push notifications now also fire for CSI-inactive recipients (#4779)
- Tightened GraphQL schema nullability across many fields and arguments (#4772)
Fixed
- Fixed
mod_muc_lightpreventing the last admin from leaving a room whenpromote_on_last_owner_leaveis disabled (#4780)
Other
- Classified expected errors logged during big test runs (#4778)
- Fixed s2s DNS lookup tests depending on the local DNS resolver (#4792)
- CI fixes: a fixed docs build, and an avoided CircleCI timeout in the packages pipeline (#4791, #4793)
Commits, merged PRs and closed issues
MongooseIM 6.8.1
Highlights
- Added configurable default node configuration for the new
mod_pubsub. - Fixed HTTP authentication handling for unexpected service response codes.
- Fixed C2S listener shutdown handling.
- Migrated the documentation build setup to Zensical.
- Removed the deprecated
mod_muc_lightlegacy mode and its XEP-0045 compatibility codec.
Added
- Added
modules.mod_pubsub.default_node_config.access_modelandmodules.mod_pubsub.default_node_config.max_items, allowing deployments to choose default configuration for newly created PEP nodes (#4767)
Changed
- Upgraded CETS to 0.3.2, fixing a long-running retry loop when multiple nodes tried to join at once and failed to acquire the global lock (#4762)
- Migrated the documentation build setup to Zensical (#4763, #4771, #4775, #4776)
Fixed
- HTTP authentication now rejects operations cleanly when the auth service returns unexpected status codes, such as 500 or 503, instead of crashing with a
case_clauseerror (#4764) - Fixed C2S listener shutdown issues (#4770)
Removed
- Removed the deprecated
legacy_modeoption frommod_muc_light, together with the legacy XEP-0045 compatibility codec (#4754)
Other
Commits, merged PRs and closed issues
Special thanks to our contributors
- @JoseClementeSantos for the listener pattern matching fix (#4768)
- @ryblovAV for the original CETS concurrent join retry fix (esl/cets#64)
MongooseIM 6.8.0
Highlights
- Security fix: GraphQL requests could skip the
useandprotecteddirectives, bypassing authorization checks. Deployments exposing the GraphQL API should upgrade. - New performance-focused
mod_pubsub, implementing PEP with selected parts of XEP-0060. The previous implementation is available asmod_pubsub_oldand is deprecated. mod_broadcastlets administrators send announcements to all users of a domain.- Support for Erlang/OTP 29, with OTP 26 no longer supported.
- Multiple MUC and MUC Light improvements, better aligned with XEP-0045.
Added
- New
mod_pubsubimplementing PEP, with user/domain removal and GDPR data retrieval. It uses a new schema with no data migration frommod_pubsub_old(#4731, #4738, #4740) - Support for
max_itemsin PEP, with themax_items_per_nodeserver-imposed limit (#4741, #4742) mod_broadcastfor messaging all users of a domain, managed with the GraphQL Admin API (#4724)listRoomsadmin GraphQL query inmod_muc_light(#4744)- Per-room configuration overrides and the
promote_on_last_owner_leaveoption inmod_muc_light(#4749) - Message hints support for push notifications, including basic Jingle message handling (#4739)
- The
tls_cert_remaining_daysmetric, and support for passing extra arguments to metric probes (#4725) - Database migration scripts for this release (#4748)
Changed
- Added Erlang/OTP 29 support and dropped OTP 26 (#4743)
- Aligned
muc#roomconfig_allowinviteswith XEP-0045, gating invitations by role instead of affiliation (#4733) - Admins can now change reserved nicknames through the MUC member list (#4735)
- Bumped supported XEP versions, and unified
mod_vcard_ldapbehaviour for missing vCards with other backends (#4721) router_no_route_foundis now a global metric, and its log is less severe (#4730)- Updated
mongooseim-docker, where cluster join detection uses a.joinedmarker instead of Mnesia files (#4719) - Updated the
exmlanderlang_doctordependencies (#4737, #4755)
Fixed
- Fixed the default host of
mod_http_upload(#4745) - Fixed an authorization bypass in the GraphQL API: a named operation submitted without
operationNameskipped directive processing, so theuseandprotectedchecks were never applied (#4734) - Added the missing
BareJIDoutput conversion in the GraphQL API, removing unnecessarynoticelogs (#4756) - Fixed
mod_pingsending pings afterping_intervalplusping_req_timeoutinstead of justping_interval(#4761) - Fixed a crash when ordering S2S SRV records, which broke outgoing S2S connections (#4760)
Removed
- Removed
mod_muc_log(#4708) - Removed system message translation support (#4728)
- Deprecated
mod_pubsub_old, the previous PubSub implementation (#4731) - Deprecated the
legacy_modeoption ofmod_muc_light(#4746)
Other
- Improved test coverage, together with the resulting code fixes (#4720, #4747)
- CI improvements: big test presets synced with CircleCI, a fixed codecov uploader script, and a pinned
zazkiaversion (#4717, #4727, #4729, #4751) - Documentation updates: a Docker guide, improved MUC Light docs, and testing guide fix (#4732, #4752, #4753)
Commits, merged PRs and closed issues
Special thanks to our contributors
MongooseIM 6.7.0
Highlights
- Lightweight and performance-focused implementation of entity capabilities, supporting XEP-0115 and XEP-0390.
- Migrated project artifacts to trymongoose.im
- MongooseICE was removed from the documentation and replaced with a guide on integrating MIM with Coturn
- Cleaned up legacy modules
- Various enhancements and bug fixes
Added
- Added dynamic domains support in
mod_push_service_mongoosepush(#4686) - Introduced the
wpool_queue_lengthsmetric (#4657, #4709) - Introduced cross-node error aggregation for better observability (#4680, #4693, #4698, #4701)
Changed
- Reimplemented
mod_caps, supporting XEP-0115 and XEP-0390, and aligning hashing with XEP-0300 and XEP-0414 (#4681) - Migrated artifacts to trymongoose.im (#4697, #4702, #4706, #4710, #4712)
- Improved script portability (#4703)
- Changed the
externalIdGQL field type to ID inmod_external_filter(#4684)
Fixed
- Fixed an issue with removing users from MUC rooms (#4688)
Removed
- Replaced legacy routing module with
mongoose_router(#4695) - Removed
mod_jingle_sip(#4705) - Deprecated
mod_muc_log(#4707) - Removed MongooseICE from documentation and replaced it with a tutorial on how to integrate MIM with Coturn (#4677, #4694)
Other
- Updated big test presets (#4682, #4692)
- Reduced log noise in
mongoose_s2s_in(#4689) - Coverage is now collected separately on each node (#4690)
- Updated OTP and dependencies (#4700, #4704)
Commits, merged PRs and closed issues
MongooseIM 6.6.0
Highlights
mod_external_filterallows MongooseIM to filter messages by sending GraphQL queries to an external service.mod_blocklistallows administrators to block and unblock selected users.- New GraphQL queries provide insight into host types, modules, and services configuration.
- Added support for XEP-0359, XEP-0431, and XEP-0440.
- Refreshed audio-video capabilities.
- Improved event pushing to external services like RabbitMQ and Redis.
- Removed the deprecated REST API and support for the MS SQL database.
Added
- GraphQL:
allDomainsquery,listUserspagination, host types with their configuration, all-stanzas subscription (#4597, #4606, #4607, #4618, #4656) - Prometheus support in anonymized Google Analytics (#4609)
- Event pushing: auto-unarchive broadcast and dynamic domains support in
mod_event_pusher(#4610, #4629) - Official support for full-text search (XEP-0431) (#4627)
- SASL Channel-Binding Type Capability (XEP-0440) (#4631)
- Stable stanza IDs (XEP-0359) (#4633)
- SSLKEYLOGFILE support (#4634)
- Blocklist administration module and API expansion (#4645, #4669)
- External filter module for message delivery checks (#4651, #4658, #4661)
- Additional validation of database configuration (#4659, #4667)
- TURN REST API auth support (#4671)
Changed
- RabbitMQ worker reconnection/refactor and outgoing pool queue limits (#4591, #4594, #4599)
- TLS keyfile validation (#4595)
- Redis connection username support (#4616)
- Docker image improvements (#4617, #4632)
- Reworked configuration for BOSH and WebSocket (#4623)
- Enforced user agent for
mod_fast_auth_token(#4628) - Audio/video capability refresh (#4640, #4650)
- Deprecated
mod_jingle_sip(#4660)
Fixed
- Privacy blocking IQ should not stop stanzas sent by the server (#4600)
- GraphQL API fixes for
cetsandroster(#4614, #4624) - Avoided
noprocerror inmongoose_epmd(#4637) - Fixed mongoose certificates (#4647)
- Fixed global RabbitMQ pool crash (#4648)
Removed
Other
- CI/test reliability and coverage improvements (#4593, #4598, #4601, #4602, #4605, #4612, #4615, #4620, #4621, #4622, #4625, #4630, #4646, #4652, #4654, #4655, #4662, #4663, #4670, #4675)
- Documentation updates for
mod_muc, certificate reloading, and general cleanup (#4596, #4619, #4636, #4653) - Added
.elp.tomlfor easier ELP usage (#4641) - Refactor (#4643, #4673)
Commits, merged PRs and closed issues
Special thanks to our contributors
MongooseIM 6.5.0
Highlights
- Enhanced and enriched implementation of
mod_event_pusher_rabbit - Enabled TLS support for Redis and RabbitMQ connections
- Support for XEP-0402 PEP Native Bookmarks
- Support for Erlang 28 and dropped support for Erlang 26
- Various enhancements and bug fixes
- Refactoring and improvements of tests
Added
- XEP-0402 PEP Native Bookmarks (#4545)
- Implement support for blocking a user for any groupchat (#4548)
- Support Erlang 28 (#4549)
- Enable selected rabbit exchanges (#4576)
- Enable TLS connections to Redis (#4579)
- Support common name prefix/suffix for SASL External (#4580)
- Support durable exchanges in
mod_event_pusher_rabbit(#4582) - Support TLS in RabbitMQ connection pools (#4583)
- Support RabbitMQ virtual hosts (#4585)
Changed
- Use cached affiliations in MUC Light API (#4552)
- Refactor logging to use
c2s_dataconsistently in log messages (#4561) - Separate certfile and keyfile (#4566)
- Deprecate MSSQL backend (#4574)
- Skip all messages without body in
mod_event_pusher_rabbit(#4577) - Use a hook with handlers in
mod_event_pusher(#4578)
Fixed
- Fix and update GraphiQL (#4543)
- Strip Acc when it is buffered to save memory (#4544)
- Fix missing presence unavailable notifications in Stream Management (#4557)
- Fix missing stream tag for connection-timeout errors (#4559)
- Fix TLS error logs (#4565)
- Fix component IsValidFromJid returning non boolean (#4572)
- Fix colon escaping in Redis session backend (#4584)
- Fix race condition in mod_mam create_user_archive (#4592)
Removed
- Drop support for Erlang 26 (#4549)
Other
- Update Debian release and minor OTP versions (#4555)
- Rework tests for invalid stream opening tag/element (#4556)
- Fix documentation of mod_blocking (#4560)
- Use the PGDATA directory in docker-setup-postgres (#4563)
- Fix heading levels in mod_inbox doc (#4570)
- Fix the test runner script (#4573)
- Refactor mod_muc_api:create_instant_room/3 (#4575)
- Refactor sasl_external_SUITE (#4581)
- Enable "Rerun Failed Tests" for Small Tests (#4586)
Commits, merged PRs and closed issues
MongooseIM 6.4.0
Highlights
- Reworked S2S and component listeners
- Added TLS 1.3
tls-exporterchannel binding - Added 0-RTT, and channel binding in FAST authentication
- Unified connection and TLS handling
- Improved XMPP traffic shaper configuration with validation and clearer defaults
- Cleanup of legacy modules and updated dependencies
- Reworked application startup order (start applications only when needed)
- Use system CA certificates if not provided in a file
- Various enhancements and bug fixes
Added
- Support dynamic domains for components (#4450)
- TLS listeners for components (#4453)
- TLS 0-RTT to
mod_fast_auth_token(#4478) - Channel binding in FAST authentication (#4494)
- Option to clear inbox after destroying MUC Light room (#4522)
Changed
- Reworked listeners and TLS (#4452, #4509)
- Reworked component connection handling (#4442)
- Changed component listener naming scheme to match XMPP specification (#4451)
- Reworked S2S listeners (#4455)
- Unified listener TLS configuration via
fast_tlsremoval and channel binding (#4458) - Unified listener handling (#4460)
- Reworked adding dynamic domains to components (#4461)
- Improved consistency of
just_tlsfilters (#4467) - Reworked S2S incoming connections (#4470, #4513)
- Reworked S2S outgoing connections (#4479)
- System certificates are used if CA certs are not provided in a file (#4493)
- Reorganized S2S configuration options (#4515)
- Improved instrumentation consistency (#4517)
- Simplified and unified XMPP metrics (#4520)
- Minor optimizations and cleanups (#4480, #4512, #4514, #4516)
- Increased rate for the default
normalshaper (#4540) - Reworked application startup order and FIPS config (#4524, #4528, #4542)
Fixed
- XMPP traffic shapers configuration and validation (#4527)
max_file_sizeoption inmod_http_upload(#4531)- Fixed incorrect
xmlnsin presences sent bymod_muc(#4539)
Removed
Other
- Upgraded dependencies (#4500, #4519)
- Updated
exometer_labelsconverter function (#4507) - Changed base docker image to
ubuntu-noble(#4537) - Documentation improvements (#4504, #4506, #4525)
- Testing and CI improvements/fixes (#4523, #4529, #4532, #4534)
- Replaced the
ubuntu-oracularpackage withubuntu-plucky(#4536)
Commits, merged PRs and closed issues
MongooseIM 6.3.3
Highlights
- Fixed buffer duplication issue in stream management
- Improved IQ handling for unknown ID formats
- Restored package support for older systems
- Various enhancements and bug fixes
Fixed
- Duplication issue in stream management buffer (#4496, #4498)
- Stream management stanza counting (#4501)
- Improper response when receiving IQ with unknown ID format (#4503)
- Bundled OpenSSL 3.x to restore package support on older systems (#4511)
Removed
- Call to an unsupported MySQL option (#4508)
Other
- Minor refactor of
mod_stream_management(#4497) - Improved type specs for Sid (#4502)
- Documentation improvements (#4495)
- Testing improvements (#4505)
Commits, merged PRs and closed issues
MongooseIM 6.3.2
Highlights
- Added support for XEP-0484: Fast Authentication Streamlining Tokens
- Upgraded to exml 4.1.1
- Deprecated
fast_tls - Improved
just_tlswith distinct client and server options - Various enhancements and bug fixes
Added
- Distinction between client and server options for
just_tls(#4456) - XEP-0484: "Fast Authentication Streamlining Tokens" implementation (#4379)
Changed
- Updated exml to 4.1.1 (#4465, #4471, #4473)
- Update dependencies:
erl_cloudandbase16(#4469) - Deprecated
fast_tlsfor C2S (#4468) - Behavior of PEP discovery to closely match the XEP specification (#4475)
- Migrated GraphiQL to V3 (#4474)
- Translations are now a service (#4481)
- Cleaned up empty GraphQL queries (#4482)
- Updated
elvis.configto exclude modules that do not match linter standards (#4483)
Fixed
- Description of log handler migration (#4454)
- Compilation warnings (#4462)
- Certificates generations for CockroarchDB (#4466)
probe_failederror (#4440)- Wrong namespace when removing IQ handlers in
mod_sic(#4484) - SCRAM hashing issue by upgrading
fast_scramlibrary (#4491)
Other
Known issues and upgrade recommendations
- If you are using MongooseIM 4.1.0 to 6.3.1 with SCRAM authentication and OpenSSL >=3.4.1, hashes for algorithms stronger than SHA-1 are calculated incorrectly. This issue is fixed in this release. See SCRAM hashing issue for details and required actions.
- OpenSSL versions below 3.0 are no longer supported. If you are using OpenSSL 1.x or older, you must upgrade to OpenSSL 3.x before updating MongooseIM, as older versions will not work.