claude-threads 1.18.2 → 1.19.0
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 +24 -0
- package/dist/index.js +3991 -3505
- package/dist/mcp/mcp-server.js +3082 -2469
- package/docs/CONFIGURATION.md +2 -0
- package/package.json +12 -9
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,30 @@ 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.19.0] - 2026-07-27
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Per-message user attribution (`userAttribution`, default on for shared threads).** When enabled, every genuine user turn in NEW sessions is prefixed with `[@username]:` (the platform login) right before it is handed to Claude, so Claude can distinguish speakers in a multi-participant session. The flag defaults to `true`, but the prefix is only actually applied once a session has **more than one participant** (after `!invite`, or another user reviving a paused session) — a solo thread is left untouched, because there the prefix would name the only person who could have spoken. Set `userAttribution: false` in `config.yaml` (also offered as an onboarding question) to disable the feature outright. The prefix is composed only at the send boundary — the sender identity is carried separately and never baked into the stored prompt — so it never leaks into thread titles, git branch-name suggestions, or persisted session state. Attribution covers every real send path: in-thread follow-ups, resumed turns, the initial mid-thread prompt, post-`!cd` re-sends, the thread-context-prompt paths, and worktree re-sends. System/control sends (slash-command passthrough, plan approval, question/approval completion) are deliberately left unattributed. When the flag is on, a system-prompt note tells Claude to treat the prefix as speaker metadata and not to echo it in replies or commit messages; when off, the note is omitted too, so Claude is never taught a prefix that doesn't arrive. The flag is persisted per session (a session keeps its behavior across bot restarts); persisted sessions from before the flag existed stay unattributed. (#437, #446)
|
|
12
|
+
|
|
13
|
+
## [1.18.4] - 2026-07-27
|
|
14
|
+
|
|
15
|
+
> Version 1.18.3 was bumped but never tagged or published — releasing it needed a
|
|
16
|
+
> local machine with the `gh` CLI, which is the very gap `release.yml` (below)
|
|
17
|
+
> closes. Its contents ship here instead; no 1.18.3 artifact ever existed.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- **CI is green again on `main`.** Two jobs had been failing on the daily scheduled run without any code change, both because an unpinned tool pulled a newer release. (#441)
|
|
21
|
+
- **Knip (`lint` job).** A knip release started flagging every barrel-file re-export as an unused export (86 findings) plus the `eslint`/`husky`/`lint-staged`/`tsc` tooling. Knip is now pinned to an exact version as a devDependency (matching how Bun and the Claude CLI are pinned so a release can't silently break CI), run via `bun run knip`. `knip.json` treats `src/**/index.ts` as entry points so public barrel exports are no longer false positives, and the tooling deps/binaries are ignored the same way `prettier` already is. One genuinely dead re-export (`clearAllTimers` from `session/types.ts`) was removed.
|
|
22
|
+
- **Trivy + `bun audit` (`security` job).** Cleared HIGH advisories by bumping `js-yaml` to `^4.3.0` (CVE-2026-59869) and raising the `fast-uri` override to `>=3.1.4` (CVE-2026-13676, CVE-2026-16221). With Trivy passing, the previously-skipped `bun audit` step now runs; its newly-surfaced advisories are cleared by raising the `shell-quote` override to `>=1.10.0` (GHSA-395f-4hp3-45gv) and adding a `brace-expansion` `>=5.0.7` override (GHSA-3jxr-9vmj-r5cp, GHSA-mh99-v99m-4gvg).
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
- **Releases can be cut without a local machine.** A new `release.yml` workflow fires when a version change lands on `main` (or on demand via `workflow_dispatch`), re-runs typecheck/lint/knip/tests/build, then creates the tag, creates the GitHub release, and publishes to npm. Previously a release needed someone at a terminal with the `gh` CLI to run `gh release create`. The job publishes in-process rather than handing off to `publish.yml`, because a release created with `GITHUB_TOKEN` does not emit a `release: published` event that can start another workflow — the alternative would be storing a long-lived PAT. It exits before tagging when the current version's tag already exists, so re-runs and unrelated `package.json` edits are no-ops. `publish.yml` is unchanged and still handles releases a human creates by hand.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
- **Dependency updates.** `hono` 4.12.30 → 4.12.31 and `@hono/node-server` 2.0.9 → 2.0.11, the latter carrying a fix for an unauthenticated memory-leak DoS via aborted WebSocket handshake (GHSA-9mqv-5hh9-4cgg). (#434)
|
|
29
|
+
- **`body-parser` 2.2.2 → 2.3.0.** (#436)
|
|
30
|
+
- **Dev tooling updates.** `eslint` 10.7.0 → 10.8.0, `lint-staged` 17.0.8 → 17.2.0, `prettier` 3.9.5 → 3.9.6, `typescript-eslint` 8.64.0 → 8.65.0. Dependabot maintains `package-lock.json` only, so `bun.lock` was regenerated alongside it — CI installs with Bun, and without that sync the bumps would not actually reach CI. (#442)
|
|
31
|
+
|
|
8
32
|
## [1.18.2] - 2026-07-17
|
|
9
33
|
|
|
10
34
|
### Changed
|