zames_pro 2.81.10 → 2.81.12
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 +12 -0
- package/dist/backlog.js +14 -3
- package/dist/commands.js +19 -1
- package/package.json +1 -1
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.81.12] - 2026-10-21
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **backlog:** a priority on its own line is still the priority
|
|
15
|
+
|
|
16
|
+
## [2.81.11] - 2026-10-21
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **commands:** unescapeJsonString never leaves a lone surrogate
|
|
21
|
+
|
|
10
22
|
## [2.81.10] - 2026-10-21
|
|
11
23
|
|
|
12
24
|
### Fixed
|
package/dist/backlog.js
CHANGED
|
@@ -23,17 +23,28 @@ export function parseBacklogNote(note) {
|
|
|
23
23
|
const raw = String(note ?? '');
|
|
24
24
|
let priority = 'P2';
|
|
25
25
|
let body = raw;
|
|
26
|
+
// The token may be followed by a SPACE (one-line form) or a LINE BREAK
|
|
27
|
+
// (`P1` on its own line, e.g. a pasted multi-line note with CRLF). Matching
|
|
28
|
+
// only `P<d> ` made the priority fall back to P2, left the literal `P1` as
|
|
29
|
+
// the title and pushed the real title into the body.
|
|
26
30
|
for (const p of ['P0', 'P1', 'P2', 'P3']) {
|
|
27
|
-
|
|
31
|
+
const m = new RegExp('^' + p + '(?=[ \\t\\r\\n]|$)', 'i').exec(raw);
|
|
32
|
+
if (m) {
|
|
28
33
|
priority = p;
|
|
29
|
-
|
|
34
|
+
// Drop the token, then ALL whitespace up to the first real character
|
|
35
|
+
// (a space, a line break, or a following blank line): the title must
|
|
36
|
+
// start at the real text, and a `P1` on its own line must not leave an
|
|
37
|
+
// empty title.
|
|
38
|
+
body = raw.slice(m[0].length).replace(/^[ \t\r\n]+/, '');
|
|
30
39
|
break;
|
|
31
40
|
}
|
|
32
41
|
}
|
|
33
42
|
// A note typed on Windows (or pasted from one) carries CRLF line endings;
|
|
34
43
|
// the title would keep the trailing `\r` and the heading would get a stray
|
|
35
44
|
// carriage return.
|
|
36
|
-
|
|
45
|
+
// Normalize BOTH line endings first: a lone `\r` (a classic-Mac paste) is
|
|
46
|
+
// a line break too, and `body.split(NL)` kept it inside the title.
|
|
47
|
+
const bodyLines = body.split(/\r\n?|\n/).map((l) => l.replace(/\r$/, ''));
|
|
37
48
|
const title = bodyLines[0];
|
|
38
49
|
const rest = bodyLines.slice(1).join(NL).trim();
|
|
39
50
|
return { priority, title, note: rest || undefined };
|
package/dist/commands.js
CHANGED
|
@@ -417,8 +417,26 @@ export function parseAssistantToolCall(text) {
|
|
|
417
417
|
}
|
|
418
418
|
/** Decode the JSON escape sequences that appear inside a captured string. */
|
|
419
419
|
export function unescapeJsonString(s) {
|
|
420
|
+
// A `\uD800`-style escape that is NOT followed by a low surrogate (a
|
|
421
|
+
// truncated or hand-written payload) would become a LONE surrogate - a
|
|
422
|
+
// broken code point the restored dialogue prints as `?`. Decode a valid PAIR
|
|
423
|
+
// as one code point and drop an unpaired half.
|
|
424
|
+
let pendingHigh = '';
|
|
420
425
|
return String(s || '')
|
|
421
|
-
.replace(/\\u([0-9a-fA-F]{4})/g, (_x, h) =>
|
|
426
|
+
.replace(/\\u([0-9a-fA-F]{4})/g, (_x, h) => {
|
|
427
|
+
const cp = parseInt(h, 16);
|
|
428
|
+
if (cp >= 0xd800 && cp <= 0xdbff) {
|
|
429
|
+
pendingHigh = String.fromCharCode(cp);
|
|
430
|
+
return '';
|
|
431
|
+
}
|
|
432
|
+
if (cp >= 0xdc00 && cp <= 0xdfff) {
|
|
433
|
+
const high = pendingHigh;
|
|
434
|
+
pendingHigh = '';
|
|
435
|
+
return high ? high + String.fromCharCode(cp) : '';
|
|
436
|
+
}
|
|
437
|
+
pendingHigh = '';
|
|
438
|
+
return String.fromCharCode(cp);
|
|
439
|
+
})
|
|
422
440
|
.replace(/\\n/g, NL)
|
|
423
441
|
.replace(/\\r/g, String.fromCharCode(13))
|
|
424
442
|
.replace(/\\t/g, String.fromCharCode(9))
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zames_pro",
|
|
3
|
-
"version": "2.81.
|
|
3
|
+
"version": "2.81.12",
|
|
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": {
|