v10.7.1-nightly-003
Pre-releaseDisCatSharp v10.7.1-nightly-003
Third nightly, and this one is the big one :3
A massive reliability and correctness pass across gateway, REST, interactivity, application commands, entities, and more. Also a breaking rename on the ban API — install DisCatSharp.Analyzer 1.0.3 and it will fix named-argument call sites for you automatically.
Note: The Sentry / telemetry rework already shipped in
nightly-002. Everything else below is new innightly-003.
Gateway reliability
- fixed heartbeat counter reset (was a no-op before — missed beats could silently accumulate)
- prevented task leaks from zombie heartbeat loops on reconnect
- synchronized session state across reconnects to prevent stale reads
- guarded all
GuildsInternalindexer accesses that could NRE on cache miss - null-guarded socket lock init and
guild_stickers_updateon uncached guild - thread-safe
ReadyGuildIdstracking
REST
- capped
retry_afterto prevent runaway backoff - cleaned up request linearization and response processing
- fixed
TaskSchedulerusage in async continuations
Interactivity
28 bug fixes across thread-safety, resource leaks, and crashes:
ComponentCollectRequest.Collectedis now properly initialized (was NRE before)ComponentPaginatorusesConcurrentDictionaryfor thread-safe request trackingIPaginatornow extendsIDisposableInteractivityExtensionproperly disposes its internal componentsGetCancellationTokenno longer leaksCancellationTokenSourceinstances
Application commands
- fixed equality checks — localizations now compared by value, not reference
- fixed thread-safety on shared static collections
- fixed shard ownership check order in interaction dedup
- fixed string choice comparison (
"01"and"1"are no longer treated as equal) - fixed command matching to use both name and type (not just name)
Entities & cache
- added guild collectibles to
DiscordMember - fixed stale cache in
GUILD_MEMBER_UPDATE - audited and fixed
NullValueHandlinginconsistencies across REST payloads
Ban API ⚠️
deleteMessageDays has been renamed to deleteMessageSeconds on BanAsync and BanMemberAsync to match what the Discord API actually expects.
Install DisCatSharp.Analyzer 1.0.3 — DCS1102 will detect and fix named-argument call sites automatically.
Configuration
ShardId/ShardCountnow validated inConnectAsyncLargeThresholdis now clamped to the Discord-allowed range (50–250)Validate()moved from constructor toConnectAsyncso DI/hosting setup still works
Sharding
- sharding rework part 1: session and shard lifecycle improvements
Sentry / telemetry (already in nightly-002)
- full telemetry rework with cleaner abstraction
- 429 responses no longer reported
- duplicate reports deduplicated
Misc fixes
- fixed version check crash when the latest GitHub release is a pre-release tag
- null-guard for
guild_stickers_updateon uncached guild - removed duplicate invite client assignment
What's Changed
- fix: sharding rework part 1 by @Lulalaby in #803
- refactor: remove duplicate invite Discord client assignment by @sentry[bot] in #805
- feat: add guild collectibles to members and fix stale cache in GUILD_MEMBER_UPDATE by @sentry[bot] in #807
- refactor: rework built-in Sentry telemetry and diagnostics by @Lulalaby in #804
- fix: ApplicationCommands equality, thread-safety, and validation audit by @Copilot in #810
- fix: address 28 interactivity audit findings (thread-safety, resource leaks, crashes) by @Copilot in #809
- fix(core): core library audit fixes by @Lulalaby in #811
New Contributors
Full Changelog: v10.7.1-nightly-001...v10.7.1-nightly-003