Skip to main content

OpenTalk Controller Community Edition version history


controller v0.19.0

Changelog

🚀 New features

  • Add part-number for chunk upload (!1086)
  • Serve a OpenAPI Swagger page under /swagger (#759, !828)
  • Add subcommand for exporting the OpenAPI specification to stdout or a file (#759, !828)

🐛 Bug fixes

  • Prevent recorder start in breakout rooms (#838, !1094)
  • Clippy v1.80.0 lints (!1073)
  • Interior mutability issue as reported by clippy (!1073)
  • (jobs) Fix storage sync bug where a low amount of assets resulted in a job failure (#842, !1114)
  • (ci) Ignore frontend api yaml file based on name (!1120)
  • (ci) Update markdown linter to allow code blocks (!1113)
  • (ci) Detect only .rs files instead of anything ending on rs (!1118)

📚 Documentation

  • How to setup the recorder client in keycloak (#817, !1105)

📦 Dependencies

  • Update rust crate clap to v4.5.14 (!1092)
  • Update rust crate derive_more to v1 (!1087)
  • Update rust crate diesel-async to 0.5 (!631)
  • Update rust crate serde to v1.0.207 (!1101)
  • Update rust crate serde_json to v1.0.124 (!1102)
  • Update rust crate tokio-cron-scheduler to 0.11 (!1095)

🔨 Refactor

  • Use BTree{Map,Set} in module features for more stable (de-)serialization (!828)
  • Move GET /rooms/{room_id}/invites response to separate struct (!828)
  • Create RecurrencePattern and RecurrenceRule newtypes (!828)

✨ Style

  • Use consistent module file layout (!911)

controller v0.18.0

(found in OpenTalk v24.10.0)

Changelog

🚀 New features

  • Use avatar url if the JWT picture claim is set (#824)

🐛 Bug fixes

  • Override streaming_targets on PATCH /events/{event_id} (#829)

📚 Docs

  • Add documentation for HTTP request handling (#826)
  • Add documentation for OIDC auth (#826)
  • Document the JWT picture field (#824)

🔨 Dependencies

  • Update opentelemetry implementation
  • Update opentelemetry-rs
  • Update rust crate anstream to v0.6.15
  • Update rust crate aws-sdk-s3 to v1.42.0
  • Update rust crate bytes to v1.7.1
  • Update rust crate clap to v4.5.13
  • Update rust crate email_address to v0.2.9
  • Update rust crate env_logger to v0.11.5
  • Update rust crate lapin to v2.5.0
  • Update rust crate rustls to v0.23.12
  • Update rust crate rustls-pemfile to v2.1.3
  • Update rust crate rustls-pki-types to v1.8.0
  • Update rust crate serde_json to v1.0.122
  • Update rust crate syn to v2.0.72
  • Update rust crate sysinfo to v0.31.2
  • Update rust crate tabled to 0.16
  • Update rust crate tokio to v1.39.2
  • Update rust crate vergen to v9

controller v0.17.0

(found in OpenTalk v24.9.0)

Changelog

🚀 New features

  • Syncronize ACL changes via rabbitmq between controllers (!997)
  • Add configuration for terdoc report generation service (#1035)
  • Check openapi specification with stoplight spectral (!1032)
  • Add axum compatibility for the ApiError (#808)
  • Allow recorder to join breakout rooms (#804)

🐛 Bug fixes

  • Delete room assets on event deletion (!977)
  • Clean up force mute state when meeting is closed (#812)
  • Specify usage of the serde feature for the opentalk-types dependency (#1049)

⚙ Miscellaneous

  • Update rust crate async-trait to v0.1.81
  • Update rust crate aws-sdk-s3 to v1.41.0
  • Update rust crate bytes to v1.6.1
  • Update rust crate clap to v4.5.9
  • Update rust crate email_address to v0.2.5
  • Update rust crate lapin to v2.4.0
  • Update rust crate log to v0.4.22
  • Update rust crate moka to v0.12.8
  • Update rust crate phonenumber to v0.3.6
  • Update rust crate redis-args to 0.15
  • Update rust crate serde to v1.0.204
  • Update rust crate serde_json to v1.0.120
  • Update rust crate serde_with to v3.9.0
  • Update rust crate snafu to v0.8.4
  • Update rust crate syn to v2.0.71
  • Update rust crate sysinfo to v0.30.13
  • Update rust crate tokio to v1.38.1
  • Update rust crate uuid to v1.10.0
  • Update rust crate vergen to v8.3.2

📚 Docs

  • Add mail worker protocol schema and examples (#811)
  • Document quota types (#768)

🔨 Refactor

  • Introduce enum for quota types (!1026)

controller v0.16.1

(found in OpenTalk v24.8.1)

Changelog

🐛 Bug fixes

  • Properly delete room assets on event deletion (!977)

controller v0.16.0

(found in OpenTalk v24.8.0)

Changelog

🚀 New features

  • Allow connecting to janus via websocket_url (#786)
  • Add room and room-creator info to the join success message (#779)
  • Add job to sync account states (#776)
  • Extend DELETE rooms & events endpoints, remove DELETE /internal/rooms/{room_id} endpoint (#762)
  • Force disable microphones of participants (#711)
  • Allow lowering of multiple raised hands with a single command (#790)
  • Add shared folder option to PATCH /v1/events/{event_id} (#784)
  • Add streaming target option to PATCH /v1/events/{event_id} (#784)
  • Extend moderator mute so that backend can mute all participants (#798)
  • Add job for deleting disabled users (#777)
  • Include room-id in ticket token (!1000)
  • Do not use rabbitmq for exchange when no redis is configured (!1001)

🐛 Bug fixes

  • Also check the current directory for .git files or folders (!948)
  • Move event_loops field out of janus connection configuration enum (#791)
  • Handle undefined values in volatile storage (#789)
  • Set joined time when joining (#797)
  • Enable serde derives for serde feature instead of client (#799)
  • Show correct package version and optimization level (!946)
  • Fix speaker detection by assuming the unmute is allowed if no unmute allowlist is present and by updating the speaker state when already initialized (#801)
  • Update poll error documentation (#781)

Ci

  • Add lint script for detecting modules that should use mod.rs files
  • Call cargo-deny with --deny unmatched-skip (#803)

Docs

  • Describe required Keycloak settings for enabling user search (#729)

Refactor

  • Add OneOrManyVec and OneOrManyBTreeSet types

Miscellaneous

  • Use opentalk-keycloak-admin from crates.io
  • Fix clippy lints for rustc 1.79.0

Dependencies

  • Update alpine docker tag to v3.20
  • Update curve25519-dalek to fix RUSTSEC-2024-0344
  • Update git.opentalk.dev:5050/opentalk/backend/containers/rust docker tag to v1.79.0
  • Update postgres docker tag to v16
  • Update rabbitmq docker tag to v3.13
  • Update redis docker tag to v7
  • Update rust crate actix to v0.13.5
  • Update rust crate actix-http to v3.8.0
  • Update rust crate actix-rt to v2.10.0
  • Update rust crate actix-web to v4.8.0
  • Update rust crate actix-web-httpauth to v0.8.2
  • Update rust crate aws-sdk-s3 to v1.38.0
  • Update rust crate bigdecimal to v0.4.5
  • Update rust crate cidr to v0.2.3
  • Update rust crate clap to v4.5.8
  • Update rust crate derive_more to v0.99.18
  • Update rust crate either to v1.13.0
  • Update rust crate proc-macro2 to v1.0.86
  • Update rust crate rustc-hash to v2
  • Update rust crate serde_json to v1.0.119
  • Update rust crate serde_with to v3.8.2
  • Update rust crate strum to v0.26.3
  • Update rust crate syn to v2.0.68
  • Update rust crate url to v2.5.2
  • Update rust crate uuid to v1.9.1

controller v0.15.0

(found in OpenTalk v24.7.1, v24.7.0)

Changelog

🚀 New features

  • controller: Allow resetting individual participant's raised hands (#764)
  • mail-worker-protocol: add streaming targets (#650)
  • assets: Save assets in a predefined name format (#763)
  • controller: keep signaling open when sending user from room to waiting room (#740)
  • Include show_meeting_details in POST, PATCH and GET Event (#769)
  • Send error in case of insufficient permissions (!890)
  • Add job to synchronize database assets and storage files (#665)
  • Add job to cleanup orphaned rooms (#727)
  • Add 'disabled_since' flag to users & filter disabled users (#775)
  • Add in memory alternative to redis (!895)

🐛 Bug fixes

  • media: fix speaker detection by updating the speaker state when already initialized (#801)
  • mail-worker-protocol: Enable serde derives for serde feature instead of client (#799)
  • dep: Update curve25519-dalek to fix RUSTSEC-2024-0344
  • Update rust crate proc-macro2 to v1.0.83
  • Update rust crate nix to 0.29
  • Update rust crate actix-http to v3.7.0
  • Update rust crate proc-macro2 to v1.0.84
  • Update rust crate proc-macro2 to v1.0.85
  • Update rust crate etcd-client to 0.13
  • Update rust crate tracing-actix-web to v0.7.11
  • Add notification mail to internal room deletion (#720)
  • Inconsistent features
  • Update rust crate tokio-cron-scheduler to v0.10.2
  • Cleanup closed poll list (!895)

📚 Docs

  • Add manual for deleting a user from the database (#774)
  • Document configuration changes regarding redis

controller v0.14.0

(found in OpenTalk v24.6.1, v24.6.0)

Changelog

🚀 New features

  • recording: make record and stream functionality configurable by module features (#760)
  • controller: Allow polls with multiple choices (#746)
  • Add a distributed JobExecutor system (#422, #424, #425)

🐛 Bug fixes

  • database: Make events.room unique to create one to one relation (#724)
  • Add missing and underspecified asset information
  • controller: only notify once about enabled/disabled waiting room (#757)

Miscellaneous

  • Update mail-worker-protocol metadata for publishing to crates.io (#728)
  • Use lapin-pool from crates.io

Refactor

  • Remove dependency from mail-worker-protocol to db-storage and keycloak-admin (#754)

Ci

  • Enforce conventional commits

controller v0.13.0

(found in OpenTalk v24.5.0)

Changelog

Added

  • controller: Add a websocket-based asset upload interface (currently used for recordings) (#614)
  • controller: Add the ability to show meeting details for a room to all participants (#723)
  • controller: reason field in opentalk-types::signaling::control::Left (#741)

Changed

  • controller: upgrade debian image in ci & container creation to bookworm (#742)
  • controller: improve output structure when an error is encountered (#748)

Fixed

  • controller: display names longer than 100 bytes are rejected (#744)

controller v0.12.1

(found in OpenTalk v24.4.1)

Changelog

Fixed


controller v0.12.0

(found in OpenTalk v24.4.0)

Changelog

Fixed

Added

  • controller: Add signaling messages to send participants to the waiting room (#709)
  • controller: Add the change_display_name command to change the display name of a guest or phone user (#721)

controller v0.11.0

(found in OpenTalk v24.3.0)

Changelog

Fixed

  • types: don't serialize fields in media state if their value would be null (#716)

Added

  • controller: set & enforce maximum storage via max_storage quota (#651)
  • controller: add the option to specify the role of email users when they are invited to an event (#661)
  • controller: Add API endpoint to query assets associated with a user (#670)

controller v0.10.0

(found in OpenTalk v24.2.0)

Changelog

Added

  • controller: add streaming and shared folder information to POST /v1/events (#652)
  • controller: update user related cache entry after calling PATCH /users/me (#660)
  • controller: send update mails for changes to streaming targets and shared folder (#653)

Fixed

  • controller: improve error message if signaling protocol header is not valid or missing.

controller v0.9.1

(found in OpenTalk v24.1.1)

Changelog

Fixed

  • set is_speaking to false on participant mute (#663)

controller v0.9.0

(found in OpenTalk v24.1.0)

Changelog

Added

  • controller: add endpoints for storing room-related streaming targets (#601)
  • mail-worker-protocol: create event update mail tasks when an event instance gets updated (#504)
  • controller: add status filter to event invites endpoint (#610)
  • controller: add reply to hand raise and hand lower (#624)

Changed

  • db-storage: add migration to remove UTIL=XXX from recurrence_pattern field in events (#616)
  • controller/janus-media: let clents communicate their speaking state instead using the detection by janus (#538)

Fixed

  • controller: fixed a bug where the configured default_directives in the logging section could not overwrite the controllers default values (#582)
  • controller: fixed a bug where event instance ID parsing was failing for the patch event instance endpoint (#631)
  • fix(deps): RUSTSEC-2024-0003 by updating h2 to 0.3.24 (#645)

controller v0.7.1

(found in OpenTalk v1.7.1, v1.7.0)

Changelog

Added

  • mail-worker-protocol: added adhoc_retention_seconds field to Events(#591)
  • controller: added external_id_user_attribute_name setting used for searching Keycloak users (#609)

Fixed

  • kustos: Do not exit load policy task if it fails once (!615)
  • chore: ignore RUSTSEC-2023-0071 (!621)
  • chore: update zerocopy to 0.7.31 (!622)

Changed

  • controller: increase user search limit to 20 from 5 (#596)
  • controller: don't send e-mail notification to creators of ad-hoc meetings (#606)

controller v0.7.0

(found in OpenTalk v1.6.2, v1.6.1, v1.6.0)

controller v0.6.3

(found in OpenTalk v1.5.4)

Changelog

Added

  • controller: add the option to specify the role of registered users when they are invited to an event (#507)

Changed

  • controller: handle email addresses in a case-insensitive way (#550)

controller v0.6.2

(found in OpenTalk v1.5.3, v1.5.2, v1.5.1)

Changelog

Fixed

  • Add missing release section in CHANGELOG.md

controller v0.6.1

Changelog

Fixed

  • RUSTEC-2023-0052

controller v0.6.0

(found in OpenTalk v1.5.0)

Changelog

Added

  • controller: add the capability to disable specific features in the config file or via a tariff (#394)
  • controller: add the possibility to disable the call-in feature via config or tariff (#395)
  • controller: add a settings option to prohibit the user from changing the display name (#415)
  • controller: expose enabled features to the frontend (and make them module-specific) (#471)
  • jobs: add subcommand to execute maintenance jobs from the comnand-line interface (#486)

Changed

  • controller: changed the error messages for invalid configurations to be verbose and include the full path to the missing/invalid field (#465)

Fixed

  • controller: fixed a bug where a response from the REST API was missing CORS information when an invalid access token was provided (#436)
  • controller: fixed some issues related to the timer ready state reported to the frontend (#411
  • controller: fixed a bug where a debrief without enough participants led to an error (#429)
  • controller: for static tenant setting, no longer filters users by tenant when searching them by email (#469)
  • controller: fixed a bug where the V27 migration could not be applied when legal-votes without an associated room exist (#494)

controller v0.5.0

(found in OpenTalk v1.4.0)

Changelog

Added

  • controller: add tariff status and handle downgraded tariff (#408)
  • controller: extend JoinSuccess signaling message's Event with EventId field (#399)
  • controller: add event information to JoinSuccess signaling message (#266)
  • controller: add the shared-folder module, allowing users to create and connect a nextcloud share in their conferences (#381)

Changed

  • logging: RUST_LOG environment variable entries override settings from configuration file (#69)
  • controller: don't send mail notifications on deletion of past events (#407)
  • controller: x_grp defaults to empty if not provided (#414)
  • controller: respect operating system CA certificates for all outgoing tls connections (#382)
  • controller: fix signaling for rooms without events (406)
  • db-storage/mail-worker-protocol: added revision field to events to track the number of changes
  • cli: Update fix-cli subcommand, now also fixes access to events and legal-votes (#387)

Fixed

  • controller: Avoid sending unnecessary close frames. (#356)
  • janus-media: discard unhandled ack messages, log them on debug level only (#252)
  • cli: fix a bug where the fix-acl command was not working when too many permissions were added (403)
  • signaling: Consider the enable_phone_mapping config value when trying to match the phone number to a opentalk user

controller v0.4.0

(found in OpenTalk v1.3.3, v1.3.2, v1.3.1, v1.3.0)

Changelog

Added

  • controller: cache access-token check results for a maximum of 5mins, reducing load on both keycloak and postgres (#359)
  • janus-media: add event_loops options to specify how many event-loop the janus instance runs on. Used to send hints to janus on which event-loop to create a new webrtc-session (handle).
  • controller: add debriefing and kicking multiple users at once (#350)
  • controller: always allow one moderator to join a room regardless of participant limit (#352)
  • chat: add private chat history (#327)
  • controller: kick users when the owner deletes the room (#328)

Changed

  • naming: replace initial project code name k3k by opentalk in code, executable names and environment variables (#279)
  • controller: respect operating system CA certificates for all outgoing tls connections (#382)

Fixed

  • controller/db-storage: Email invites now get deleted, when converted to user invites. (#320)
  • controller-settings: Fixed a panic when trying to parse config values for tenants and tariffs, when their assignment was set to static
  • controller: Avoid sending unnecessary close frames. (#356)

Moved

  • types: Move Namespaced to types::signaling::NamespacedCommand
  • types: Move NamespacedOutgoing to types::signaling::NamespacedEvent

controller v0.3.1

(found in OpenTalk v1.2.1)

Changelog

Fixed

  • (backport): controller-settings: Fixed a panic when trying to parse config values for tenants and tariffs, when their assignment was set to static

controller v0.3.0

(found in OpenTalk v1.2.0)

Changelog

Added

  • controller/db-storage: add initial tariff support. Requires JWT claims to include a tariff_id.
  • controller: invite verify response contains a password_required flag (#329)
  • controller: add participant_limit quota to restrict the maximum amount of participants in a room (#332)
  • controller: add enabled_modules (#334), tariff as part of JoinSuccess message, API endpoints for users/me/tariff and rooms/{room_id}/tariff (#331)
  • controller: add time_limit quota to restrict the duration of a meeting (#333)
  • controller/settings: remove http.cors section as CORS is now statically configured to allow any origin
  • controller/settings: add tenants and tariffs sections, which allow configuring how users are assigned to each tenant/tariff.
  • legal-vote: add option to set protocol timezone (#338)
  • janus-media: add resubscribe message to allow clients to restart the webrtc session of a subscription.

Changed

  • controller: authenticated users can join meetings without a password (#335)
  • janus-media: use lapin-pool internally to recover from RabbitMQ connection failures (#343)
  • lapin-pool: consider connection status when picking connections for new channels & reap disconnected connections (#343)
  • controller: Traces are now exported directly via OTLP. The setting was renamed from jaeger_agent_endpoint to otlp_tracing_endpoint (#301).

controller v0.2.1

(found in OpenTalk v1.1.2, v1.1.1)

Changelog

Added

  • (backport): janus-media: add resubscribe message to allow clients to restart the webrtc session of a subscription.

controller v0.2.0

(found in OpenTalk v1.1.0)

Changelog

Added

  • controller: enable accepted participants to skip waiting room when joining or returning from a breakout room (#303)
  • controller: announce available modules in join_success message (#308)

Changed

  • timer: add the kind field to distinguish between a stopwatch and countdown more clearly (#316)
  • timer: add the style field to the start & started messages and let clients tag a timer with a custom style (#316)
  • controller: add support for multi tenancy #286
  • timer: distribute timer handling over all participant runners, allowing timers to finish if the moderator has left (#210)

controller v0.1.0

(found in OpenTalk v1.0.0)

Changelog

Added

  • add license information
  • controller: allow overriding some build-time environment variables (#137)
  • chat: add last_seen_timestamp fields #242
  • legal-vote: add option to automatically create a PDF asset when a vote has ended (#259)
  • legal-vote: add new live_roll_call vote kind which sends out live updates while the vote is running (#285)
  • controller: add config to grant all participants the presenter role by default (#318)

Fixed

  • protocol: fixed the createAuthorIfNotExistsFor API call that always returned the same author id due to a typo in the query
  • janus-media: fixed a permission check for screen-share media session updates
  • protocol: fixed a bug where joining participants got write access by default (#306)
  • protocol: fixed a bug where the etherpad pad was deleted when any user left the room (#319)
  • signaling: fixed a bug which caused rooms to never be destroyed if a participant was joining from the waiting-room (#321)

Changed

  • controller: use derive and attribute macros for conversion to/from redis values (#283)
  • protocol: read/write access level information is now sent to every participant #299
  • chat/ee-chat: merged ee-chat into chat (#265)
  • legal-vote: votes are now token-based, allowing for pseudonymous votings where only the tokens, not the participants are published (#271)
  • updated dependencies

Removed

  • legal-vote: live updates for roll_call and pseudonymous votes, results are instead published with the stopped message (#272)
  • automod: will not be part of the community edition (#257)
  • legal-vote: will not be part of the community edition (#257)