claude-threads 1.29.0 → 1.29.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/dist/index.js +2658 -2737
- package/dist/mcp/mcp-server.js +722 -722
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,39 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.29.3] - 2026-08-28
|
|
9
|
+
|
|
10
|
+
Re-release of 1.29.2 — no code changes. The 1.29.2 npm publish failed the same
|
|
11
|
+
way as 1.29.1 (npm masked-auth E404): the NPM_TOKEN repository secret had
|
|
12
|
+
expired. The token has been rotated and this version ships what 1.29.2 was
|
|
13
|
+
meant to ship, plus the release.yml retry fix (#496).
|
|
14
|
+
|
|
15
|
+
## [1.29.2] - 2026-08-24
|
|
16
|
+
|
|
17
|
+
Re-release of 1.29.1 — no code changes. The 1.29.1 npm publish step failed
|
|
18
|
+
(the registry rejected the publish with npm's masked-auth E404); the v1.29.1
|
|
19
|
+
tag and GitHub release exist, but the package never reached npm. This version
|
|
20
|
+
re-runs the publish.
|
|
21
|
+
|
|
22
|
+
## [1.29.1] - 2026-08-24
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- **DCM: a channel message addressed to another user no longer starts a session.** With no session running, `@bob did you deploy?` in a direct-channel-mode channel used to start a full Claude session in a human-to-human exchange — the side-conversation guard the active/paused paths already had now covers the new-session path too.
|
|
26
|
+
- **The side-conversation guard now works on Slack.** Slack delivers mentions as raw `<@U0…>` tokens (labeled `<@U0…|name>` included), never `@name`, so the guard (active sessions, paused sessions, and the new DCM path) silently never matched there — every human-to-human aside in a session thread was fed to Claude as a follow-up. A message that *also* @mentions the bot still reaches Claude (it explicitly asks the bot), and on Mattermost a literal `<@…>` token stays ordinary text.
|
|
27
|
+
- **DCM: non-allowlisted members no longer trigger an unauthorized-warning post per message.** The warning now only fires on an explicit @mention — previously every message from a non-allowlisted member produced channel spam, and two bots could warn at each other in a loop on Mattermost.
|
|
28
|
+
- **`!watches` works in direct channel mode again** — only *creation* is refused there; watches that predate a switch to DCM stay listable/pausable/deletable (matches routines).
|
|
29
|
+
- **Slack thread history keeps the newest messages for arbitrarily long threads** — the pagination walk now retains a sliding window instead of stopping after 10 pages with the oldest content, and the truncation warning is honest about what was dropped.
|
|
30
|
+
- **Audit trail: routine/watch creation confirmations now record the user whose reaction decided them** (the requester is carried in the detail) — matching how plan approvals are attributed.
|
|
31
|
+
- **sessions.json and the GitHub-emails store can no longer be wiped by a transient read failure.** Every mutation is a read-modify-write; when the existing file cannot be read faithfully (corruption, EMFILE), reads degrade to empty but writes now refuse — previously the next persist atomically replaced the file with the degraded empty view, destroying every paused session across all platforms. A parseable file that merely lacks the collection key (e.g. a bare `{}`) provably holds nothing and stays writable — as does a zero-length or whitespace-only file, so a crashed first write can never leave a store permanently read-only.
|
|
32
|
+
- Mattermost thread history resolves usernames only for the messages the limit keeps (matches the Slack client).
|
|
33
|
+
- **Slack MCP tools now normalize literal Unicode emoji to shortcodes** for `react_to_post` and interactive-post reactions — `reactions.add` rejects raw 👍; the client path already normalized, the MCP path was the odd one out.
|
|
34
|
+
- **Worktree commands honor `approvals: owner`.** `!worktree` create/switch/remove/cleanup and worktree-prompt disabling now go through the same owner gate as every other owner-gated command: under owner-scoped approvals a platform-allowlisted non-participant could previously switch the session's working directory.
|
|
35
|
+
- **All haiku one-shots (routine/watch parses, watch confirms, memory distillation) now resolve the claude binary like sessions do** — `quickQuery` used a bare `claude` from PATH while sessions fall back to common install locations, so on some hosts sessions worked while every one-shot silently failed.
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
- Internal restructuring after three feature waves: the user-commands module splits by domain (guards/memory/automation), lifecycle sheds the out-of-band metadata-suggestions domain into its own module, and the last two stores (sessions, GitHub emails) migrate onto the shared atomic-write primitives.
|
|
39
|
+
- A wide DRY + dead-code sweep (net −800 lines): shared WebSocket close/permalink formatting/post-list rendering/limit clamping across the platform and MCP layers, one canonical legacy-allowlist helper for the six hand-copied authorization fallbacks, nine MCP tool registrations collapsed into one helper, ~380 lines of dead test helpers deleted, and the client test files adopt the shared fetch harness.
|
|
40
|
+
|
|
8
41
|
## [1.29.0] - 2026-08-24
|
|
9
42
|
|
|
10
43
|
### Added
|