claude-threads 1.17.1 → 1.17.2

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,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.17.2] - 2026-06-19
11
+
12
+ ### Security
13
+ - **`@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)
14
+
15
+ ### Dependencies
16
+ - **Production:** `hono` 4.12.25 → 4.12.26, `semver` 7.8.1 → 7.8.4. (#408)
17
+ - **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)
18
+
10
19
  ## [1.17.1] - 2026-06-19
11
20
 
12
21
  ### 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,6 +8045,7 @@ 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
  };
@@ -8091,9 +8105,9 @@ var require_range = __commonJS((exports, module) => {
8091
8105
  debug("no pr");
8092
8106
  if (M === "0") {
8093
8107
  if (m === "0") {
8094
- ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
8108
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
8095
8109
  } else {
8096
- ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
8110
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
8097
8111
  }
8098
8112
  } else {
8099
8113
  ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
@@ -8112,6 +8126,9 @@ var require_range = __commonJS((exports, module) => {
8112
8126
  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
8113
8127
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
8114
8128
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
8129
+ if (invalidXRangeOrder(M, m, p)) {
8130
+ return comp;
8131
+ }
8115
8132
  const xM = isX(M);
8116
8133
  const xm = xM || isX(m);
8117
8134
  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,6 +13111,7 @@ 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
  };
@@ -13157,9 +13171,9 @@ var require_range = __commonJS((exports, module) => {
13157
13171
  debug("no pr");
13158
13172
  if (M === "0") {
13159
13173
  if (m === "0") {
13160
- ret = `>=${M}.${m}.${p}${z2} <${M}.${m}.${+p + 1}-0`;
13174
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
13161
13175
  } else {
13162
- ret = `>=${M}.${m}.${p}${z2} <${M}.${+m + 1}.0-0`;
13176
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
13163
13177
  }
13164
13178
  } else {
13165
13179
  ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
@@ -13178,6 +13192,9 @@ var require_range = __commonJS((exports, module) => {
13178
13192
  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
13179
13193
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
13180
13194
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
13195
+ if (invalidXRangeOrder(M, m, p)) {
13196
+ return comp;
13197
+ }
13181
13198
  const xM = isX(M);
13182
13199
  const xm = xM || isX(m);
13183
13200
  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.2",
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.5",
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.26",
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.4",
81
81
  "update-notifier": "^7.3.1",
82
82
  "ws": "8.21.0",
83
83
  "zod": "^4.3.6"