zames_pro 2.82.83 → 2.82.85

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.85] - 2026-10-24
11
+
12
+ ### Fixed
13
+
14
+ - **undo:** never print Invalid Date in /undo-list and /checkpoints
15
+
16
+ ## [2.82.84] - 2026-10-24
17
+
18
+ ### Fixed
19
+
20
+ - **cost:** never print a negative context token count
21
+
10
22
  ## [2.82.83] - 2026-10-24
11
23
 
12
24
  ### Fixed
package/dist/commands.js CHANGED
@@ -209,6 +209,10 @@ export function formatRelativeTime(iso, t = translate('en'), now = Date.now()) {
209
209
  export function renderCost(stats, transcriptFile, tokenUsage = null, t = translate('en')) {
210
210
  const lines = [];
211
211
  lines.push(t('cost.title'));
212
+ // A NEGATIVE count is nonsense (a proxy build wrapping an int, a hand-edited
213
+ // history): printing `~-5 tokens` reads like a real measurement.
214
+ if (typeof tokenUsage === 'number' && tokenUsage < 0)
215
+ tokenUsage = null;
212
216
  if (typeof tokenUsage === 'number') {
213
217
  lines.push(t('cost.context_known', { n: String(tokenUsage) }));
214
218
  }
package/dist/index.js CHANGED
@@ -27,7 +27,7 @@ import { formatConfigList } from './config-commands.js';
27
27
  import { handleConfigCommand as runConfigCommand } from './config-command.js';
28
28
  import { translate, normalizeLocale, localeDisplayName, isLocale, } from './i18n.js';
29
29
  import { Transcript } from './transcript.js';
30
- import { UndoStore } from './undo.js';
30
+ import { UndoStore, undoDateLabel } from './undo.js';
31
31
  import { CheckpointStore, pickRecord as pickCheckpoint, isFullStampSelector, } from './checkpoint.js';
32
32
  import { selfReview, selfDiff, selfApply, selfList } from './self-review.js';
33
33
  import { performCompact } from './compact.js';
@@ -3886,7 +3886,7 @@ async function main() {
3886
3886
  }
3887
3887
  else {
3888
3888
  for (const r of list) {
3889
- const stamp = new Date(r.stamp).toLocaleString();
3889
+ const stamp = undoDateLabel(r.stamp);
3890
3890
  const flag = r.existed ? t('undo.changed') : t('undo.created');
3891
3891
  console.log(theme.system(`${stamp} [${flag}] ${r.originalPath}`));
3892
3892
  }
@@ -3901,7 +3901,7 @@ async function main() {
3901
3901
  else {
3902
3902
  console.log(theme.system(t('rewind.list_title')));
3903
3903
  list.forEach((r, i) => {
3904
- const stamp = new Date(r.stamp).toLocaleString();
3904
+ const stamp = undoDateLabel(r.stamp);
3905
3905
  const label = r.label ? ' [' + t('rewind.label_backup') + ']' : '';
3906
3906
  console.log(theme.system(` ${i + 1}. ${stamp} ${r.workdir}${label}`));
3907
3907
  });
@@ -30,8 +30,11 @@ export function formatStatus(s, t = translate('en')) {
30
30
  lines.push(t('status.goal', { v: s.goal || none }));
31
31
  lines.push(t('status.locale', { v: s.localeName }));
32
32
  lines.push(t('status.mcp', { v: s.mcpToolCount === null ? none : s.mcpToolCount }));
33
+ // A NEGATIVE count is nonsense (a broken provider counter): show "unknown"
34
+ // rather than a number that reads like a real measurement.
35
+ const tokens = s.tokenUsage === null || s.tokenUsage < 0 ? null : s.tokenUsage;
33
36
  lines.push(t('status.tokens', {
34
- v: s.tokenUsage === null ? t('common.unknown') : s.tokenUsage,
37
+ v: tokens === null ? t('common.unknown') : tokens,
35
38
  }));
36
39
  return lines;
37
40
  }
package/dist/undo.js CHANGED
@@ -158,3 +158,17 @@ export class UndoStore {
158
158
  return history.slice(-count).reverse();
159
159
  }
160
160
  }
161
+ /**
162
+ * A display date for an undo record. A record from an older format (no
163
+ * `stamp`) or a hand-edited index (`stamp: "oops"`) made
164
+ * `new Date(...).toLocaleString()` return the literal "Invalid Date", so
165
+ * /undo-list printed a broken row. PURE; exported for tests.
166
+ */
167
+ export function undoDateLabel(stamp) {
168
+ const n = typeof stamp === 'number' ? stamp : Number(stamp);
169
+ if (!Number.isFinite(n) || n <= 0)
170
+ return '(unknown time)';
171
+ const d = new Date(n);
172
+ const label = d.toLocaleString();
173
+ return label.includes('Invalid') ? '(unknown time)' : label;
174
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.82.83",
3
+ "version": "2.82.85",
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": {