claude-threads 1.17.1 → 1.17.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 CHANGED
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.17.3] - 2026-07-01
11
+
12
+ ### Dependencies
13
+ - **Production:** `@hono/node-server` 2.0.5 → 2.0.6, `hono` 4.12.26 → 4.12.27, `semver` 7.8.4 → 7.8.5. (#417)
14
+ - **Dev:** `@types/node` 25 → 26, `typescript-eslint` 8.61.1 → 8.62.1. (#416)
15
+
16
+ ### Changed
17
+ - **Held `js-yaml` on 4.x and added a dependabot ignore for `js-yaml >=5.0.0`.** Dependabot grouped a `js-yaml` 4.x → 5.x major into the production bump, but 5.x is ESM-only and dropped the CommonJS `default` export, breaking our `import yaml from 'js-yaml'` call sites with `Missing 'default' export`. The bump now stays on 4.x until the code migrates to named ESM imports. (#417)
18
+ - **CI:** `actions/checkout` 6 → 7. (#413)
19
+
20
+ ### Security
21
+ - **`@hono/node-server` 2.0.4 → 2.0.5** to resolve GHSA-frvp-7c67-39w9: on Windows, prefix-mounted Serve Static middleware could be bypassed. Only affects Windows deployments using Serve Static. (#408)
22
+
23
+ ### Dependencies
24
+ - **Production:** `hono` 4.12.25 → 4.12.26, `semver` 7.8.1 → 7.8.4. (#408)
25
+ - **Dev:** `@types/node` 25.9.1 → 25.9.3, `@types/react` 19.2.16 → 19.2.17, `eslint` 10.4.1 → 10.5.0, `prettier` 3.8.3 → 3.8.4, `typescript-eslint` 8.60.1 → 8.61.1. (#409)
26
+
10
27
  ## [1.17.1] - 2026-06-19
11
28
 
12
29
  ### Fixed
package/dist/index.js CHANGED
@@ -7203,6 +7203,18 @@ var require_semver = __commonJS((exports, module) => {
7203
7203
  var { safeRe: re, t } = require_re();
7204
7204
  var parseOptions = require_parse_options();
7205
7205
  var { compareIdentifiers } = require_identifiers();
7206
+ var isPrereleaseIdentifier = (prerelease, identifier) => {
7207
+ const identifiers = identifier.split(".");
7208
+ if (identifiers.length > prerelease.length) {
7209
+ return false;
7210
+ }
7211
+ for (let i2 = 0;i2 < identifiers.length; i2++) {
7212
+ if (compareIdentifiers(prerelease[i2], identifiers[i2]) !== 0) {
7213
+ return false;
7214
+ }
7215
+ }
7216
+ return true;
7217
+ };
7206
7218
 
7207
7219
  class SemVer {
7208
7220
  constructor(version, options) {
@@ -7442,8 +7454,9 @@ var require_semver = __commonJS((exports, module) => {
7442
7454
  if (identifierBase === false) {
7443
7455
  prerelease = [identifier];
7444
7456
  }
7445
- if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
7446
- if (isNaN(this.prerelease[1])) {
7457
+ if (isPrereleaseIdentifier(this.prerelease, identifier)) {
7458
+ const prereleaseBase = this.prerelease[identifier.split(".").length];
7459
+ if (isNaN(prereleaseBase)) {
7447
7460
  this.prerelease = prerelease;
7448
7461
  }
7449
7462
  } else {
@@ -8032,20 +8045,22 @@ var require_range = __commonJS((exports, module) => {
8032
8045
  return comp;
8033
8046
  };
8034
8047
  var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
8048
+ var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p);
8035
8049
  var replaceTildes = (comp, options) => {
8036
8050
  return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
8037
8051
  };
8038
8052
  var replaceTilde = (comp, options) => {
8039
8053
  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
8054
+ const z = options.includePrerelease ? "-0" : "";
8040
8055
  return comp.replace(r, (_, M, m, p, pr) => {
8041
8056
  debug("tilde", comp, _, M, m, p, pr);
8042
8057
  let ret;
8043
8058
  if (isX(M)) {
8044
8059
  ret = "";
8045
8060
  } else if (isX(m)) {
8046
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
8061
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
8047
8062
  } else if (isX(p)) {
8048
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
8063
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
8049
8064
  } else if (pr) {
8050
8065
  debug("replaceTilde pr", pr);
8051
8066
  ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
@@ -8091,9 +8106,9 @@ var require_range = __commonJS((exports, module) => {
8091
8106
  debug("no pr");
8092
8107
  if (M === "0") {
8093
8108
  if (m === "0") {
8094
- ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
8109
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
8095
8110
  } else {
8096
- ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
8111
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
8097
8112
  }
8098
8113
  } else {
8099
8114
  ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
@@ -8112,6 +8127,9 @@ var require_range = __commonJS((exports, module) => {
8112
8127
  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
8113
8128
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
8114
8129
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
8130
+ if (invalidXRangeOrder(M, m, p)) {
8131
+ return comp;
8132
+ }
8115
8133
  const xM = isX(M);
8116
8134
  const xm = xM || isX(m);
8117
8135
  const xp = xm || isX(p);
@@ -12269,6 +12269,18 @@ var require_semver = __commonJS((exports, module) => {
12269
12269
  var { safeRe: re, t } = require_re();
12270
12270
  var parseOptions = require_parse_options();
12271
12271
  var { compareIdentifiers } = require_identifiers();
12272
+ var isPrereleaseIdentifier = (prerelease, identifier) => {
12273
+ const identifiers = identifier.split(".");
12274
+ if (identifiers.length > prerelease.length) {
12275
+ return false;
12276
+ }
12277
+ for (let i = 0;i < identifiers.length; i++) {
12278
+ if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
12279
+ return false;
12280
+ }
12281
+ }
12282
+ return true;
12283
+ };
12272
12284
 
12273
12285
  class SemVer {
12274
12286
  constructor(version3, options) {
@@ -12508,8 +12520,9 @@ var require_semver = __commonJS((exports, module) => {
12508
12520
  if (identifierBase === false) {
12509
12521
  prerelease = [identifier];
12510
12522
  }
12511
- if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
12512
- if (isNaN(this.prerelease[1])) {
12523
+ if (isPrereleaseIdentifier(this.prerelease, identifier)) {
12524
+ const prereleaseBase = this.prerelease[identifier.split(".").length];
12525
+ if (isNaN(prereleaseBase)) {
12513
12526
  this.prerelease = prerelease;
12514
12527
  }
12515
12528
  } else {
@@ -13098,20 +13111,22 @@ var require_range = __commonJS((exports, module) => {
13098
13111
  return comp;
13099
13112
  };
13100
13113
  var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
13114
+ var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p);
13101
13115
  var replaceTildes = (comp, options) => {
13102
13116
  return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
13103
13117
  };
13104
13118
  var replaceTilde = (comp, options) => {
13105
13119
  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
13120
+ const z2 = options.includePrerelease ? "-0" : "";
13106
13121
  return comp.replace(r, (_, M, m, p, pr) => {
13107
13122
  debug("tilde", comp, _, M, m, p, pr);
13108
13123
  let ret;
13109
13124
  if (isX(M)) {
13110
13125
  ret = "";
13111
13126
  } else if (isX(m)) {
13112
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
13127
+ ret = `>=${M}.0.0${z2} <${+M + 1}.0.0-0`;
13113
13128
  } else if (isX(p)) {
13114
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
13129
+ ret = `>=${M}.${m}.0${z2} <${M}.${+m + 1}.0-0`;
13115
13130
  } else if (pr) {
13116
13131
  debug("replaceTilde pr", pr);
13117
13132
  ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
@@ -13157,9 +13172,9 @@ var require_range = __commonJS((exports, module) => {
13157
13172
  debug("no pr");
13158
13173
  if (M === "0") {
13159
13174
  if (m === "0") {
13160
- ret = `>=${M}.${m}.${p}${z2} <${M}.${m}.${+p + 1}-0`;
13175
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
13161
13176
  } else {
13162
- ret = `>=${M}.${m}.${p}${z2} <${M}.${+m + 1}.0-0`;
13177
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
13163
13178
  }
13164
13179
  } else {
13165
13180
  ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
@@ -13178,6 +13193,9 @@ var require_range = __commonJS((exports, module) => {
13178
13193
  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
13179
13194
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
13180
13195
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
13196
+ if (invalidXRangeOrder(M, m, p)) {
13197
+ return comp;
13198
+ }
13181
13199
  const xM = isX(M);
13182
13200
  const xm = xM || isX(m);
13183
13201
  const xp = xm || isX(p);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-threads",
3
- "version": "1.17.1",
3
+ "version": "1.17.3",
4
4
  "description": "Share Claude Code sessions live in a Mattermost channel with interactive features",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -63,7 +63,7 @@
63
63
  "package.json"
64
64
  ],
65
65
  "dependencies": {
66
- "@hono/node-server": "2.0.4",
66
+ "@hono/node-server": "2.0.6",
67
67
  "@inkjs/ui": "^2.0.0",
68
68
  "@modelcontextprotocol/sdk": "^1.26.0",
69
69
  "@redactpii/node": "^1.0.16",
@@ -71,13 +71,13 @@
71
71
  "commander": "^14.0.2",
72
72
  "diff": "^8.0.3",
73
73
  "express-rate-limit": "^8.3.0",
74
- "hono": "4.12.25",
74
+ "hono": "4.12.27",
75
75
  "ink": "^6.6.0",
76
76
  "ink-scroll-view": "^0.3.5",
77
77
  "js-yaml": "^4.1.1",
78
78
  "prompts": "^2.4.2",
79
79
  "react": "^19.2.3",
80
- "semver": "7.8.1",
80
+ "semver": "7.8.5",
81
81
  "update-notifier": "^7.3.1",
82
82
  "ws": "8.21.0",
83
83
  "zod": "^4.3.6"
@@ -86,7 +86,7 @@
86
86
  "@eslint/js": "^10.0.1",
87
87
  "@types/bun": "latest",
88
88
  "@types/js-yaml": "^4.0.9",
89
- "@types/node": "^25.0.3",
89
+ "@types/node": "^26.0.1",
90
90
  "@types/prompts": "^2.4.9",
91
91
  "@types/react": "^19.2.7",
92
92
  "@types/semver": "^7.7.1",