From f4f754dc04aff84b6f5e84b728b7b9a400ee5527 Mon Sep 17 00:00:00 2001 From: BlindMaster24 <375291171150z@gmail.com> Date: Sat, 2 May 2026 21:54:08 +0300 Subject: [PATCH 1/2] chore(release): teamtalk-macros v0.1.3, teamtalk v7.0.0 --- Cargo.toml | 2 +- crates/teamtalk-macros/Cargo.toml | 2 +- crates/teamtalk/Cargo.toml | 2 +- docs/changelog.md | 79 +++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index cf2712e..d3a7243 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ members = [ resolver = "2" [workspace.dependencies] -teamtalk-macros = { version = "0.1.2", path = "crates/teamtalk-macros" } +teamtalk-macros = { version = "0.1.3", path = "crates/teamtalk-macros" } [workspace.lints.rust] warnings = "deny" diff --git a/crates/teamtalk-macros/Cargo.toml b/crates/teamtalk-macros/Cargo.toml index d0d1a48..129a736 100644 --- a/crates/teamtalk-macros/Cargo.toml +++ b/crates/teamtalk-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "teamtalk-macros" -version = "0.1.2" +version = "0.1.3" edition = "2024" authors = ["BlindMaster24"] description = "Proc macros for TeamTalk bot routing" diff --git a/crates/teamtalk/Cargo.toml b/crates/teamtalk/Cargo.toml index a173d99..3e6cda3 100644 --- a/crates/teamtalk/Cargo.toml +++ b/crates/teamtalk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "teamtalk" -version = "6.0.0" +version = "7.0.0" edition = "2024" authors = ["BlindMaster24"] description = "TeamTalk SDK for Rust" diff --git a/docs/changelog.md b/docs/changelog.md index a916a49..1b55717 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,84 @@ # Changelog +## [7.0.0](https://github.com/BlindMaster24/TeamTalkRust/compare/teamtalk-v6.0.0...teamtalk-v7.0.0) - 2026-05-02 + +### Breaking +- [**breaking**] add BanType flags, Port newtype, typed Message source methods - BannedUser.ban_types is now BanType (bitflags) instead of u32. +ServerProperties.tcp_port/udp_port are now Port(u16) instead of i32. +- [**breaking**] add strong ID types, raw() accessors, and Display/From/PartialEq impls - TeamTalkBackend trait methods now take ChannelId, UserId, +FileId, TransferId instead of i32. Bot FSM uses UserId instead of i32 for +source_id. SoundDeviceId, HotkeyId, PlaybackSessionId replace raw i32 params. +Accessing .0 on ID types in library code is replaced by .raw(). + +- Add SoundDeviceId, HotkeyId, PlaybackSessionId newtypes +- Replace i32 with typed IDs in TeamTalkBackend trait (21 methods) +- Replace source_id: i32 with UserId in bot FSM (21 methods) +- Add impl_id_type! macro providing raw(), From, PartialEq, Display for all 9 ID types +- Replace .0 with .raw() on ID types across 19 library source files +- Update MockBackend, FfiBackend, tests, and examples +- [**breaking**] add #[non_exhaustive] to 57 public structs, remove dead deps - All public structs with pub fields are now #[non_exhaustive]. +Struct literal construction no longer works; use new() constructors instead. + +- Add #[non_exhaustive] to 57 public structs across types, client, bot, dispatch +- Add new() constructors for structs previously constructed via struct literals +- Remove unused dirs and evalexpr dependencies from Cargo.toml +- Update all tests to use constructors instead of struct literals +- [**breaking**] replace i32 with CommandId in command method return types - all command methods that previously returned i32 +now return CommandId. Use .is_ok(), .is_zero(), .raw() to inspect. +Comparison with i32 is supported via PartialEq. +- [**breaking**] add #[non_exhaustive] to 16 public enums - downstream match expressions on EventData, +CommandPatternError, DialogStatus, DialogTimeoutPolicy, +JobErrorPolicy, HandlerResult, UnknownCommandPolicy, +RouteMatcher, WaitError, RecordingSampleFormat, +RecordingTarget, SilencePolicy, DispatchFlow, +UserPresence, UserGender, and MessageTarget must include +a wildcard _ arm. +- *(events)* [**breaking**] add #[non_exhaustive] to Event, Error, ConnectionState - downstream match expressions on Event, Error, or +ConnectionState must include a wildcard _ arm. This prevents +future variant additions from being semver-breaking. + +### Added +- *(types)* introduce SecretString and use it for LoginParams password ([#56](https://github.com/BlindMaster24/TeamTalkRust/pull/56)) +- *(events)* add TimeoutKind to classify Error::Timeout by operation ([#55](https://github.com/BlindMaster24/TeamTalkRust/pull/55)) +- *(events)* add SdkErrorCode typed mapping for SDK error integers ([#54](https://github.com/BlindMaster24/TeamTalkRust/pull/54)) +- *(types)* add StreamTypes newtype for stream-kind bit masks ([#52](https://github.com/BlindMaster24/TeamTalkRust/pull/52)) +- *(backoff)* implement full-jitter in ExponentialBackoff jitter parameter ([#51](https://github.com/BlindMaster24/TeamTalkRust/pull/51)) +- expand TeamTalkBackend, add view accessors, typed FFI errors, event replay, Plugin API, StateStore v2, and async scheduler +- *(client)* add file transfer tracking helpers +- *(client)* add safer file and frame helpers + +### Changed +- *(dispatch)* index Client event bus and Dispatcher by event discriminant ([#57](https://github.com/BlindMaster24/TeamTalkRust/pull/57)) +- *(types)* split media_common.rs by media domain ([#50](https://github.com/BlindMaster24/TeamTalkRust/pull/50)) +- *(client)* split hooks/builders.rs by event category ([#49](https://github.com/BlindMaster24/TeamTalkRust/pull/49)) +- *(bot)* split fsm.rs into fsm/{state,status,machine,flow,encoding} ([#48](https://github.com/BlindMaster24/TeamTalkRust/pull/48)) +- *(bot)* split storage.rs into storage/{memory,redis,sqlite,mod} ([#47](https://github.com/BlindMaster24/TeamTalkRust/pull/47)) +- *(client)* dedupe can_issue_logged_in_command into shared guards module ([#44](https://github.com/BlindMaster24/TeamTalkRust/pull/44)) +- *(client)* split bus.rs into bus/{context,subscription,mod} ([#46](https://github.com/BlindMaster24/TeamTalkRust/pull/46)) +- *(client)* extract poll_command_completion helper ([#45](https://github.com/BlindMaster24/TeamTalkRust/pull/45)) +- resolve all clippy pedantic warnings in teamtalk lib +- replace once_cell with std::sync::OnceLock, remove unused dependency +- replace Mutex unwrap_or_else poison pattern with UnpoisonedMutex + +### Fixed +- *(recording)* rewrite audio-block drain loop as while-let ([#40](https://github.com/BlindMaster24/TeamTalkRust/pull/40)) +- correct BanType assertion and Port snapshot in tests +- *(ci)* gate server ffi import on windows + +### Dependencies +- *(deps)* update rusqlite requirement from 0.38 to 0.39 ([#36](https://github.com/BlindMaster24/TeamTalkRust/pull/36)) + +### Other +- add 87 integration tests filling bot + dispatch + events coverage gaps ([#58](https://github.com/BlindMaster24/TeamTalkRust/pull/58)) +- Refresh dependency constraints to current compatible releases +- add mock-based desktop, video, media, StateStore v2, and event replay tests +- Reduce admin-event boilerplate in the client API + +## [0.1.3](https://github.com/BlindMaster24/TeamTalkRust/compare/teamtalk-macros-v0.1.2...teamtalk-macros-v0.1.3) - 2026-05-02 + +### Dependencies +- *(deps)* upgrade quote to 1.0.45 in teamtalk-macros + ## [6.0.0](https://github.com/BlindMaster24/TeamTalkRust/compare/teamtalk-v5.0.0...teamtalk-v6.0.0) - 2026-03-10 ### Changed From a165b744f33e4ff19c1e00079bebd1b94304638a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 2 May 2026 18:54:12 +0000 Subject: [PATCH 2/2] docs: sync version references for release PR --- README.md | 2 +- docs/features.md | 2 +- docs/getting-started.md | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6a61d67..7c50cef 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Add this to your `Cargo.toml`: ```toml [dependencies] -teamtalk = "6.0.0" +teamtalk = "7.0.0" ``` For the latest development version from `main`: diff --git a/docs/features.md b/docs/features.md index 2f2d06e..62f70c4 100644 --- a/docs/features.md +++ b/docs/features.md @@ -6,7 +6,7 @@ Enable features in `Cargo.toml`: ```toml [dependencies] -teamtalk = { version = "6.0.0", features = ["dispatch", "async"] } +teamtalk = { version = "7.0.0", features = ["dispatch", "async"] } ``` ## Available Features diff --git a/docs/getting-started.md b/docs/getting-started.md index b4d9d7f..289a94c 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -9,7 +9,7 @@ Add to `Cargo.toml`: ```toml [dependencies] -teamtalk = "6.0.0" +teamtalk = "7.0.0" ``` For the latest development version from `main`: @@ -162,7 +162,7 @@ Enable async support in `Cargo.toml`: ```toml [dependencies] -teamtalk = { version = "6.0.0", features = ["async"] } +teamtalk = { version = "7.0.0", features = ["async"] } ``` Use the async wrapper when you want stream-style event handling: @@ -315,7 +315,7 @@ Enable `bot-macros` when you want attribute-based handler registration: ```toml [dependencies] -teamtalk = { version = "6.0.0", features = ["bot", "bot-macros"] } +teamtalk = { version = "7.0.0", features = ["bot", "bot-macros"] } ``` ```rust