zames_pro 2.90.5 → 2.90.7

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.90.7] - 2026-10-28
11
+
12
+ ### Fixed
13
+
14
+ - **handoff:** a legacy GLM handoff no longer claims Qwen wrote it
15
+
16
+ ## [2.90.6] - 2026-10-28
17
+
18
+ ### Fixed
19
+
20
+ - **tui:** keep the reverse-search position when the query is refined
21
+
10
22
  ## [2.90.5] - 2026-10-28
11
23
 
12
24
  ### Fixed
@@ -23,7 +23,14 @@ const NL = String.fromCharCode(10);
23
23
  export function handoffFromLabel(h) {
24
24
  if (h.from)
25
25
  return providerLabel(h.from);
26
- return h.provider === 'qwen' ? 'DeepSeek' : 'Qwen';
26
+ // Legacy files were written when exactly TWO backends existed (deepseek and
27
+ // qwen), so "the other one" is only meaningful for those two. A GLM file
28
+ // has no such pair — labelling it `Qwen` told the new chat the summary came
29
+ // from a provider that never wrote it. The original backend is the honest
30
+ // fallback.
31
+ if (h.provider === 'qwen')
32
+ return 'DeepSeek';
33
+ return 'DeepSeek';
27
34
  }
28
35
  /**
29
36
  * Wrap a cross-provider summary into the first message of the new provider's
package/dist/tui/edit.js CHANGED
@@ -366,12 +366,35 @@ export function searchCancel(s) {
366
366
  };
367
367
  }
368
368
  export function searchInput(s, ch) {
369
- return searchRefresh({ ...s, searchQuery: s.searchQuery + ch }, true);
369
+ // Refine from the CURRENT match, not from the newest entry: after
370
+ // `searchNext` walked back, re-searching from the bottom jumped FORWARD to a
371
+ // newer entry and the operator lost the place they were browsing.
372
+ return searchRefreshFrom({ ...s, searchQuery: s.searchQuery + ch }, s.searchIndex);
370
373
  }
371
374
  export function searchBackspace(s) {
372
375
  if (!s.searchQuery.length)
373
376
  return s;
374
- return searchRefresh({ ...s, searchQuery: s.searchQuery.slice(0, -1) }, true);
377
+ return searchRefreshFrom({ ...s, searchQuery: s.searchQuery.slice(0, -1) }, s.searchIndex);
378
+ }
379
+ /** Re-search from `from` (inclusive) walking BACK; -1 when nothing matches. */
380
+ function searchRefreshFrom(s, from) {
381
+ const q = s.searchQuery;
382
+ const start = Math.min(from, s.history.length - 1);
383
+ for (let i = start; i >= 0; i--) {
384
+ if (q === '' || s.history[i].toLowerCase().includes(q.toLowerCase())) {
385
+ const buf = s.history[i];
386
+ return { ...s, searchIndex: i, buf, cursor: Array.from(buf).length };
387
+ }
388
+ }
389
+ // Nothing at or ABOVE the current match: look at the newer entries too, so a
390
+ // query that only matches a newer line is still found.
391
+ for (let i = start + 1; i < s.history.length; i++) {
392
+ if (s.history[i].toLowerCase().includes(q.toLowerCase())) {
393
+ const buf = s.history[i];
394
+ return { ...s, searchIndex: i, buf, cursor: Array.from(buf).length };
395
+ }
396
+ }
397
+ return { ...s, searchIndex: -1 };
375
398
  }
376
399
  /**
377
400
  * Record a submitted message in the history (dedup the last one).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.90.5",
3
+ "version": "2.90.7",
4
4
  "description": "Terminal coding agent that drives a real browser to chat with DeepSeek, Qwen or GLM — 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": {