Cherry-pick a7929abad: Discord thread bindings idle + max-age lifecycle#1395
Merged
alexey-pelykh merged 4 commits intomainfrom Mar 15, 2026
Merged
Conversation
…hanks @osolmaz) * refactor discord thread bindings to idle and max-age lifecycle * fix: migrate legacy thread binding expiry and reduce hot-path disk writes * refactor: remove remaining thread-binding ttl legacy paths * fix: harden thread-binding lifecycle persistence * Discord: fix thread binding types in message/reply paths * Infra: handle win32 unknown inode in file identity checks * Infra: relax win32 guarded-open identity checks * Config: migrate threadBindings ttlHours to idleHours * Revert "Infra: relax win32 guarded-open identity checks" This reverts commit de94126. * Revert "Infra: handle win32 unknown inode in file identity checks" This reverts commit 96fc5dd. * Discord: re-read live binding state before sweep unbind * fix: add changelog note for thread binding lifecycle update (openclaw#27845) (thanks @osolmaz) --------- Co-authored-by: Onur Solmaz <[email protected]> (cherry picked from commit a7929ab)
- Rebrand OpenClawConfig → RemoteClawConfig in new session lifecycle test - Use threadId instead of conversation.conversationId (fork structure) - Add required lastActivityAt to test binding records - Rebrand OPENCLAW_STATE_DIR → REMOTECLAW_STATE_DIR in persistence tests
…rules - Delete commands-session-ttl.test.ts (superseded by commands-session-lifecycle.test.ts) - Add back thread binding ttlHours → idleHours migration rules to legacy.rules.ts (these are new rules from the upstream commit, distinct from the pre-existing rules that were cleared during fork gutting)
The migration logic was in legacy.migrations.part-1.ts which was deleted in the fork (all legacy migrations cleared). Add back this specific migration for the ttlHours→idleHours rename introduced by this commit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cherry-pick of upstream
a7929abad.Author: Onur Solmaz (osolmaz)
Upstream PR: openclaw#27845
Summary
Refactors Discord thread binding lifecycle from a single TTL to separate idle timeout + max-age:
sessionTtl/ttlHours→idleHours+maxAgeHours/session ttlcommand →/session idle+/session max-ageexpiresAtbindings auto-migrated to idle/max-age semanticsttlHours→idleHoursFork Adaptations
channels/thread-bindings-messages.ts)🤖prefix (fork branding) in intro/farewell messagesOPENCLAW_STATE_DIR→REMOTECLAW_STATE_DIRin migration testnativeSkillsreferences (gutted in fork)Closes #675 (partial — commit 1/26)
🤖 Generated with Claude Code