zames_pro 2.82.72 → 2.82.74

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,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.82.74] - 2026-10-24
11
+
12
+ ### Fixed
13
+
14
+ - **commands:** collapse dynamic slash hints that differ only by case
15
+
16
+ ## [2.82.73] - 2026-10-24
17
+
18
+ ### Fixed
19
+
20
+ - **telemetry:** do not average a missing block duration as zero
21
+
10
22
  ## [2.82.72] - 2026-10-24
11
23
 
12
24
  ### Fixed
package/dist/commands.js CHANGED
@@ -1203,6 +1203,11 @@ export function buildSlashCommandHints(opts) {
1203
1203
  for (const d of opts.dynamic ?? []) {
1204
1204
  if (known.has(d.name.toLowerCase()))
1205
1205
  continue;
1206
+ // Remember the DYNAMIC name too: two entries that differ only by case
1207
+ // (`/foo` and `/FOO`) were both added, so the operator saw the same
1208
+ // command twice and the second was unreachable (a slash command is
1209
+ // resolved case-insensitively).
1210
+ known.add(d.name.toLowerCase());
1206
1211
  base.push(d);
1207
1212
  }
1208
1213
  return base;
@@ -55,7 +55,11 @@ export function summarizeSends(events, now = Date.now()) {
55
55
  // build, a hand-edited file): a numeric string is accepted so the average
56
56
  // is not silently 0 for a file that records the block.
57
57
  const blocks = events
58
- .map((e) => Number(e.blockMs))
58
+ // `Number(null)`/`Number(undefined)` — 0/NaN, and 0 IS a finite
59
+ // non-negative number: an event that carries no block duration (the
60
+ // rate-limit event only records `blockedAt`) was averaged as a ZERO-length
61
+ // block, halving the reported average. Only a REAL value counts.
62
+ .map((e) => e.blockMs === null || e.blockMs === undefined ? NaN : Number(e.blockMs))
59
63
  .filter((n) => Number.isFinite(n) && n >= 0);
60
64
  const avgBlockMs = blocks.length
61
65
  ? Math.round(blocks.reduce((a, b) => a + b, 0) / blocks.length)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.82.72",
3
+ "version": "2.82.74",
4
4
  "description": "Terminal coding agent that drives a real browser to chat with DeepSeek, Qwen and other web LLMs — no API key required. Reads and edits files, runs commands, commits to git, like Claude Code / Codex CLI.",
5
5
  "type": "module",
6
6
  "bin": {