zames_pro 2.81.11 → 2.81.13

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.81.13] - 2026-10-21
11
+
12
+ ### Fixed
13
+
14
+ - **qwen:** the chat list accepts a bare array
15
+
16
+ ## [2.81.12] - 2026-10-21
17
+
18
+ ### Fixed
19
+
20
+ - **backlog:** a priority on its own line is still the priority
21
+
10
22
  ## [2.81.11] - 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
- if (raw.toUpperCase().startsWith(p + ' ')) {
31
+ const m = new RegExp('^' + p + '(?=[ \\t\\r\\n]|$)', 'i').exec(raw);
32
+ if (m) {
28
33
  priority = p;
29
- body = raw.slice(p.length + 1);
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
- const bodyLines = body.split(NL).map((l) => l.replace(/\r$/, ''));
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 };
@@ -93,7 +93,12 @@ export function scrapeQwenChatMessages(opts) {
93
93
  */
94
94
  export function parseQwenChatList(json) {
95
95
  const root = json;
96
- const data = root && typeof root === 'object' ? root.data : null;
96
+ // A BARE array (no `data` wrapper) is the simplest shape the endpoint can
97
+ // return and the GLM parser already accepts it: reading only `root.data`
98
+ // made /chats print "(none)" for a valid list.
99
+ const data = Array.isArray(json) || root === null || typeof root !== 'object'
100
+ ? json
101
+ : root.data;
97
102
  const arr = Array.isArray(data)
98
103
  ? data
99
104
  : data && typeof data === 'object'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.81.11",
3
+ "version": "2.81.13",
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": {