zames_pro 2.82.65 → 2.82.67
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/input/suggest.js +8 -1
- package/dist/tui/edit.js +27 -4
- 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.82.67] - 2026-10-24
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **tui:** Up/Down in a wrapped input keeps the visual column
|
|
15
|
+
|
|
16
|
+
## [2.82.66] - 2026-10-24
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **tui:** append a space when Tab completion lands on a full command name
|
|
21
|
+
|
|
10
22
|
## [2.82.65] - 2026-10-24
|
|
11
23
|
|
|
12
24
|
### Fixed
|
package/dist/input/suggest.js
CHANGED
|
@@ -118,5 +118,12 @@ export function completeSlashCommand(buf, sugg, selected) {
|
|
|
118
118
|
return null;
|
|
119
119
|
if (!prefix.toLowerCase().startsWith(typed))
|
|
120
120
|
return null;
|
|
121
|
-
|
|
121
|
+
if (prefix.length <= buf.length)
|
|
122
|
+
return null;
|
|
123
|
+
// The shared prefix may be a COMPLETE command name (`/config` between
|
|
124
|
+
// `/config` and `/configure`): appending the space makes it ready for its
|
|
125
|
+
// argument, exactly like a single-match completion. A prefix that only
|
|
126
|
+
// extends the typed text stays bare.
|
|
127
|
+
const complete = sugg.some((c) => c.name.toLowerCase() === prefix.toLowerCase());
|
|
128
|
+
return complete ? prefix + ' ' : prefix;
|
|
122
129
|
}
|
package/dist/tui/edit.js
CHANGED
|
@@ -177,14 +177,37 @@ export function moveVisualRows(s, delta, promptStr, cols) {
|
|
|
177
177
|
return s;
|
|
178
178
|
const row = lay.rows[target];
|
|
179
179
|
const rowChars = Array.from(row.text);
|
|
180
|
-
|
|
181
|
-
|
|
180
|
+
// `cursorCol` is the column inside the CURRENT row (prompt + its text). The
|
|
181
|
+
// row above/below has a DIFFERENT indent (`row.start` differs), so the
|
|
182
|
+
// offset must be measured from the CURRENT row's own text, not as a raw
|
|
183
|
+
// `cursorCol - promptW` character count: on a wrapped line that put the
|
|
184
|
+
// caret past the target row's text and onto the NEXT row entirely.
|
|
185
|
+
const curRow = lay.rows[lay.cursorRow];
|
|
186
|
+
const curChars = Array.from(curRow.text);
|
|
187
|
+
let want = 0;
|
|
188
|
+
for (let k = 0; k < lay.cursorCol - visLen(curRow.prefix); k++) {
|
|
189
|
+
want += charWidth(curChars[k]?.codePointAt(0) ?? 32);
|
|
190
|
+
}
|
|
182
191
|
let idx = row.start;
|
|
183
192
|
let w = 0;
|
|
184
|
-
|
|
185
|
-
|
|
193
|
+
// Walk the target row and STOP on the first character that no longer fits.
|
|
194
|
+
// Landing exactly on `row.start + len` is the NEXT row's first character in
|
|
195
|
+
// the layout (`cur === row end` is only kept when it is a wrap boundary),
|
|
196
|
+
// so a caret at the end of a SHORT last row must stay on its last character.
|
|
197
|
+
while (idx < row.start + rowChars.length) {
|
|
198
|
+
const cw = charWidth(rowChars[idx - row.start].codePointAt(0));
|
|
199
|
+
if (w + cw > want)
|
|
200
|
+
break;
|
|
201
|
+
w += cw;
|
|
186
202
|
idx++;
|
|
187
203
|
}
|
|
204
|
+
// Keep the caret INSIDE the target row: the layout moves a caret that sits
|
|
205
|
+
// on the row end onto the next row, which is exactly the "Up jumps two
|
|
206
|
+
// rows" bug.
|
|
207
|
+
if (idx > row.start + rowChars.length)
|
|
208
|
+
idx = row.start + rowChars.length;
|
|
209
|
+
if (idx === row.start + rowChars.length && rowChars.length > 0)
|
|
210
|
+
idx--;
|
|
188
211
|
return { ...s, cursor: idx };
|
|
189
212
|
}
|
|
190
213
|
/** Insert a newline; a trailing «\» before the cursor is removed first. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zames_pro",
|
|
3
|
-
"version": "2.82.
|
|
3
|
+
"version": "2.82.67",
|
|
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": {
|