This repository was archived by the owner on Jan 2, 2026. It is now read-only.
Releases: polyphony-chat/chorus
Releases · polyphony-chat/chorus
v0.20.0
(see #617)
Major changes in this version include:
- An overhaul of how errors are handled and error cases, including JSON error support (#607)
- A new API for ignoring users + updates to the
Relationshipstruct (#606) - Several internal changes and fixes
Public API changes
- changes to
ChorusError:ReceivedErrorCodeis nowReceivedError, which contains a more specific error objectInvalidFormBodyhas been removedInvalidResponsenow contains the response's HTTP status
- due to the ratelimiter changes,
Instancemethods that send API requests now need an&mut selfreference - to avoid cloning
Instances, auth routes (login, register and mfa) now take a clonedShared<Instance>. The best practice way to handleInstances is now to callinto_shared(), storeShared<Instance>instead ofInstanceand call.clone()on theArcwhen creating newChorusUsers - new fields in the
Relationshipstruct:is_spam_request,stranger_request,origin_application_idanduser_ignored
Additions
ChorusUser::bulk_remove_relationshipsChorusUser::ignore_userChorusUser::unignore_user- JSON Error and Api error types
Bugfixes
- #616 -
Instances are no longer cloned when logging into or registering accounts
Internal changes
- #607 (refactoring the internal ratelimiter and request logic, making it support requests without a
ChorusUser) - #608 by @zicklag (updating internal self-updating struct logic, removing an unsafe block for safer code)
- #612 and #613 by @bitfl0wer (improving CI, more checks for security)
- #614 (updating the url of discord userdoccers links in documentation)
- several dependency bumps
v0.19.0
(see #603)
It's been nearly 4 months, but they have been quite busy!
Major additions in this version include:
- the finished guild api (39 new routes + several new entities - #593),
- a robust api for managing sent (fake) telemetry data (adding
X-Super-PropertiesandUser-Agentheaders, bringing us a bit closer to #584 - #590), - an api for awaiting responses to gateway send events (which also adds two pre-made observers for receiving events through
tokiochannels - #591) and - an api for setting the default gateway listeners for spawned gateways from
Instance(#598)
Public API changes
- each
Instancenow contains aclient_propertiesproperty, which lets api consumers set data sent as telemetry to the instance. Settingclient_properties.send_telemetry_headers(the only field which is not directly serialized) to false will disable sending certain headers which contain this data in requests, but sending the very same data when opening a Gateway connection cannot be disabled. Further, disabling this isn't recommended due to privacy reasons. (The server expects to find these headers, which may identify users using your app) - each
Instancenow also contains adefault_gateway_eventsproperty, which is cloned for each new Gateway the Instance spawns. This also makes Gateway Events are clonable. GatewayError::NoResponseas part of the gateway in-place events api- Proper Gateway Intents and Capabilities types (#595 by @Quat3rnion)
- Add
UserStatusvariant "Unknown" (#596 by @bitfl0wer) - changed
read_statein Gateway Ready to an enum which now includes the new way discord.com serializes it as (A Vec ofReadStateEntry) and the old way it did and Spacebar still does - added
GuildFeaturesvariantsActivityFeedDisabledByUser,ChannelIconEmojisGenerated,EnabledModerationExperienceForNonCommunity,Featurable,PrivateThreads - changed
Reaction'sEmojitoPartialEmoji, as per userdoccers - changed
MessageReactionevents to usePartialEmoji, as per userdoccers Guild::get- addwith_countsparameterGuild::create- update schema for new fields, see spacebarchat/server#1251Guild::modify- update schema, addaudit_log_reasonGuild::get_members- update query parameters- rename
Guild::search_memberstoGuild::query_members, since search members is another different route Guild::query_members- update query parametersGuild::modify_member- update fields of schema ( + documentation)Guild::modify_current_member- update fields of schema ( + documentation)Guild::modify_current_member_profile- update fields of schema ( + documentation)- update
Activitytype, make fields and types public
Additions
- #593 - 39 new Guild API routes
- #590 - see
Instance.client_propertiesandClientProperties - #591 -
identify,resume, request_guild_members,update_voice_state,request_last_messagesas methods that can beawaited to receive the response from the server;OneshotEventObserver<T>andBroadcastEventObserver<T> - #598 -
Instance.default_gateway_events
Bugfixes
- #589 (#592)
- fix an issue with
.well-knowndiscovery of Instances not working (ba42169) Guild::get_previewfix: method is GET, not PATCH- fix a few
reprenums not usingSerialize_reprandDeserialize_reprand such causing deserialization errors - changed
Reaction'sEmojitoPartialEmoji, as per userdoccers, to fix a deserialization error - changed
MessageReactionevents to usePartialEmoji, as per userdoccers, to fix a deserialization error
Internal changes
- add methods
with_audit_log_reason,with_maybe_audit_log_reason,with_authorization,with_authorization_for,with_headers_fortoChorusRequest - update license headers, fix missing license headers (84f3415 by @bitfl0wer)
- Add license-header check workflow (7e70029 by @bitfl0wer)
- Try to fix errors in our doctests, so they can actually be tested in the future (testing framework still needs to be updated)
- add
bytesas a dependency, so we can access its types - this does not actually add to compilation, as other important dependencies (http, reqwest, sqlx, tokio_tungstenite, ...) depend on the same version
v0.18.0
(see #576)
Public API changes
- #570: Various entity public api changes
- 644d3be, 85e922b: Add type
OneOrMoreSnowflakes, allowGatewayRequestGuildMembersto request multiple guild and user ids - f65b9c1: Differentiate
PresenceUpdateandGatewayPresenceUpdate - 0e5fd86: Temporarily fix
PresenceUpdatefor Spacebar Client by makinguseroptional - 61ac7d1: Updated
LazyRequest(op 14) to use theSnowflaketype for ids instead of justString
Additions
- #564: MFA implementation, by @xystrive and @kozabrada123
- 4ed68ce: Added Last Messages request and response
- b23fb68: Add
ReadStatetoGatewayReady - #571: Gateway Opcode enum
- #573: Gateway Disconnect Opcode enums
Bugfixes
- #565: Fix sqlx En-/Decoding of
PremiumType - 7460d3f: Fix
GatewayIdentifyConnectionPropsfor Spacebar Client by deriving default on all fields, since the client does not send it - 3d9460f: Derive Default for
MessageReferenceType, assume default reference_type if none is provided - 4baecf9: Fixed a deserialization error related to
presencesinGuildMembersChunkbeing an array, not a single value - 1b20102: Fixed a deserialization error with deserializing
activitiesinPresenceUpdateas an empty array when they are sent asnull - 7feb571: Fixed a deserialization error on discord.com related to experiments (they are not implemented yet, see #578)
- fb94afa: Fixed a deserialization error on discord.com related to
last_viewedinReadStatebeing a version / counter, not aDateTime
Internal changes
v0.17.0
(see #562)
Public API changes
- #561: Add missing fields in
GatewayReadyevent, createGatewayReadyBotfor Bots - #560: Differentiate between instance softwares through /version and /ping endpoints
- #537: Implement 30 user routes
- #565 : Fix sqlx En-/Decoding of PremiumType
- #567
Internal changes
Bugfixes
- #565 : Fix sqlx En-/Decoding of PremiumType
v0.16.0
What's Changed
(See #511)
Major changes:
- Implement gateway options and z-lib-stream compression (#508)
- Countless types updates by @Quat3rnion:
- Remove dependency on
opensslin favor ofrustlsandwebpki_roots(#522) - sqlx feature: Remove MySQL/MariaDB support in favor of PostgreSQL
- sqlx: Convert between Rust u64 and PostgreSQL NUMERIC using sqlx_pg_uint
- Prefer &str over String when possible (#553)
Minor changes:
- Add the repository field to
chorus_macros'cargo.toml(#496) - (Internal) Replace
ObserverandGatewayEventwithpubservecrate (#524) - (Internal, CI) Minor improvements to CI (#498)
- (Internal, CI) #529 Increase CI parallelization, use cargo nextest in linux job
- (Internal, CI) #544 Add cargo doc lints to prs and releases
- sqlx: Snowflake: PgU64 as conversion-base instead of String (#551)
- (Internal, non-WASM) Distinguish between
wsandwsswhen spawning tungstenite connection to backend, not constructing TLS related objects ifwsis used as a connection URL. (#554)
Fixes:
- Fix login and register to only create one gateway connection (#495)
- Add custom deserializer for PermissionOverwriteType (#512)
- Derive
CloneforRelationshipAddevent (#525 and #532) - (Internal) Use a macro to derive WebSocketEvent (#490 and #486)
- (Internal) Move
Shared<T>totypes/mod.rs(#492) - (Internal) Deduplicate code for voice gateway backends (#493)
- #514:
- fix
PATCH /users/@me- It incorrectly returned a required password error, even if the current password was set - fix
GET /users/@me/guilds- It incorrectly sent body parameters instead of query ones - don't log debug! for every successful ratelimited request - use trace! so it's less spamy
- update the max expected compression ratio (several times) from 20 to 200. let's hope that will be enough
- fix deserialization errors relating to guild folders in user settings
- fix a panic in
SqlxBitFlagsif there are extra flags. It now truncates them - update
chorus_macrosto 0.4.1 (due to the above fix) - log (trace!) event data if we fail to parse it or it's unrecognised, for debugging purposes
- fix a deserialization error in the
MessageACKevent - fix
public_flagsin user objects not beingPublicFlagsbitflags
- fix
- #523 caused by #514, fixed in #533
Full Changelog: https://github.com/polyphony-chat/chorus/pull/511/commits
v0.15.0
Release 0.15.0
Changes
- Primitive voice support: #457
- Cleaner code
- Replace
Arc<RwLock<T>>withShared<T>: #466 - More, better documentation
- More tests
- Fix some typos
- Make gateway
close()code cleaner
- Replace
- Remove
#[derive(Eq)]from types which falsely had this trait derived - Change license from AGPL-3 to MPL-2.0: #477
- Bump
whoami,mio,h2to fix CVEs - Bump versions of used GitHub Actions](#487)
More commits
- merge main into dev by @bitfl0wer in #464
- Minor instance updates by @kozabrada123 in #465
- "Self updating structs" API improvements by @bitfl0wer in #467
- Coverage by @bitfl0wer in #468
- Fix a few typos by @striezel in #471
- Bump actions/setup-node in GHA workflow to v4 by @striezel in #472
- Update h2 to 0.3.24 to fix vulnerability RUSTSEC-2024-0003 by @striezel in #474
- Fix example in readme for #456 by @kozabrada123 in #475
- Replace unmaintained actions-rs/toolchain by dtolnay/rust-toolchain by @striezel in #473
- Update github/codeql-action to v3 by @kozabrada123 in #476
- License change by @bitfl0wer in #477
- Move contribution guidelines to CONTRIBUTING.md by @bitfl0wer in #478
- Fix broken luna.gitlab.io links by @kozabrada123 in #480
- Bump mio to fix RUSTSEC-2024-0019 by @kozabrada123 in #482
- Minor docs updates, add Get Private Channels by @kozabrada123 in #483
- ignore unused imports for pub use by @kozabrada123 in #484
- Bump whoami to fix stack buffer overflow by @kozabrada123 in #485
- Fix code scanning alerts on #487 by @kozabrada123 in #488
- Primitive voice implementation (feature/voice) by @kozabrada123 in #457
- Limit test actions to 30 minutes by @kozabrada123 in #489
- Release 0.15.0 by @bitfl0wer in #487
Full Changelog: v0.14.0...v0.15.0
v0.14.0
What's Changed
- Update docs by @bitfl0wer in #453
- Well known required by @bitfl0wer in #456
- merge backend branch into dev by @bitfl0wer in #454
- bump package versions by @bitfl0wer in #458
- Fix gateway heartbeat on WASM by @kozabrada123 in #460
- Version 0.14.0 by @bitfl0wer in #463
Full Changelog: v0.13.0...v0.14.0
Pre-release v0.13.0
Quality of Life
See #452
What's Changed
- Coverage, change register/login by @bitfl0wer in #447
- More derives and impls by @bitfl0wer in #448
- Get URLs from .well-known by @bitfl0wer in #451
- QoL Updates by @bitfl0wer in #452
Full Changelog: v0.12.0...v0.13.0
v.0.12.0 - The WebAssembly Update
Pre-release v0.12.0
- Chorus can now compile to
wasm32-unknown-unknownand run in browser environments! This allows developers to build apps for all sorts of platforms, now including the web, using Chorus. - This release features a bugfix, preventing voice support being implemented for Discord.com.
What's Changed
- Fix: #430 by @bitfl0wer in #440
- Prepare for platform-dependant websockets backend by @SpecificProtagonist in #441
- Prepare for wasm32-unknown-unknown adoption by @bitfl0wer in #442
- initial wasm32 'support' by @bitfl0wer in #443
- Full wasm support with
wasm-bindgen-futuresby @bitfl0wer in #445 - Add WASM tests by @bitfl0wer in #444
Full Changelog: v0.11.0...v0.12.0