zames_pro 2.90.12 → 2.90.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,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.90.13] - 2026-10-29
11
+
12
+ ### Fixed
13
+
14
+ - **apply-patch:** start each hunk search where the previous one ended
15
+
10
16
  ## [2.90.12] - 2026-10-29
11
17
 
12
18
  ### Fixed
@@ -168,6 +168,11 @@ export function applyUpdateHunk(content, hunkLines) {
168
168
  const hasCRLF = content.includes('\r\n');
169
169
  const eol = hasCRLF ? '\r\n' : NL;
170
170
  let fileLines = content.split(/\r?\n/);
171
+ // Hunks are ordered top-to-bottom, so the search for the next block must not
172
+ // go back before the end of the previous one. Searching from 0 made a hunk
173
+ // re-find a region an EARLIER hunk had already consumed (or, once that text
174
+ // was gone, fail with "Context not found").
175
+ let searchFrom = 0;
171
176
  for (const block of splitHunks(hunkLines)) {
172
177
  const oldLines = [];
173
178
  const newLines = [];
@@ -198,7 +203,7 @@ export function applyUpdateHunk(content, hunkLines) {
198
203
  error: 'Hunk has no context or removed lines to anchor on.',
199
204
  };
200
205
  }
201
- const at = locateBlock(fileLines, oldLines, block.oldStart, 0);
206
+ const at = locateBlock(fileLines, oldLines, block.oldStart, searchFrom);
202
207
  if (at === -1) {
203
208
  return {
204
209
  ok: false,
@@ -211,6 +216,9 @@ export function applyUpdateHunk(content, hunkLines) {
211
216
  ...newLines,
212
217
  ...fileLines.slice(at + oldLines.length),
213
218
  ];
219
+ // The next block starts after the lines this hunk just produced: its text
220
+ // cannot legitimately live BEFORE them.
221
+ searchFrom = at + newLines.length;
214
222
  }
215
223
  return { ok: true, content: fileLines.join(eol) };
216
224
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.90.12",
3
+ "version": "2.90.13",
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": {