@kenkaiiii/ggcoder 4.2.44 → 4.2.46

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.
Files changed (35) hide show
  1. package/dist/cli.js +126 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/tools/edit-diff.test.d.ts +2 -0
  4. package/dist/tools/edit-diff.test.d.ts.map +1 -0
  5. package/dist/tools/edit-diff.test.js +67 -0
  6. package/dist/tools/edit-diff.test.js.map +1 -0
  7. package/dist/tools/edit.test.d.ts +2 -0
  8. package/dist/tools/edit.test.d.ts.map +1 -0
  9. package/dist/tools/edit.test.js +93 -0
  10. package/dist/tools/edit.test.js.map +1 -0
  11. package/dist/tools/path-utils.test.d.ts +2 -0
  12. package/dist/tools/path-utils.test.d.ts.map +1 -0
  13. package/dist/tools/path-utils.test.js +49 -0
  14. package/dist/tools/path-utils.test.js.map +1 -0
  15. package/dist/tools/read.test.d.ts +2 -0
  16. package/dist/tools/read.test.d.ts.map +1 -0
  17. package/dist/tools/read.test.js +81 -0
  18. package/dist/tools/read.test.js.map +1 -0
  19. package/dist/tools/truncate-utils.test.d.ts +2 -0
  20. package/dist/tools/truncate-utils.test.d.ts.map +1 -0
  21. package/dist/tools/truncate-utils.test.js +93 -0
  22. package/dist/tools/truncate-utils.test.js.map +1 -0
  23. package/dist/tools/write.test.js +65 -52
  24. package/dist/tools/write.test.js.map +1 -1
  25. package/dist/ui/components/Footer.d.ts.map +1 -1
  26. package/dist/ui/components/Footer.js +3 -3
  27. package/dist/ui/components/Footer.js.map +1 -1
  28. package/dist/ui/components/InputArea.d.ts.map +1 -1
  29. package/dist/ui/components/InputArea.js +3 -3
  30. package/dist/ui/components/InputArea.js.map +1 -1
  31. package/dist/ui/hooks/useTerminalSize.d.ts +7 -7
  32. package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
  33. package/dist/ui/hooks/useTerminalSize.js +14 -10
  34. package/dist/ui/hooks/useTerminalSize.js.map +1 -1
  35. package/package.json +3 -3
@@ -20,9 +20,12 @@ export function TerminalSizeProvider({ children }) {
20
20
  const onResize = useCallback(() => {
21
21
  if (!stdout)
22
22
  return;
23
- // Update dimensions immediately for responsive layout
24
- setSize({ columns: stdout.columns ?? 80, rows: stdout.rows ?? 24 });
25
- // Debounce the resizeKey bump only fires after the user stops dragging
23
+ // Do NOT update dimensions immediately doing so triggers React
24
+ // re-renders on every resize event (many per drag), but Ink's internal
25
+ // line-tracking still assumes the old width, so each re-render at the
26
+ // new width is positioned incorrectly, leaving ghost/duplicate copies
27
+ // of the input area in the terminal. Instead, debounce everything so
28
+ // we update once after the user finishes dragging.
26
29
  if (debounceRef.current)
27
30
  clearTimeout(debounceRef.current);
28
31
  debounceRef.current = setTimeout(() => {
@@ -32,6 +35,7 @@ export function TerminalSizeProvider({ children }) {
32
35
  stdout.write("\x1b[2J" + // clear visible screen
33
36
  "\x1b[3J" + // clear scrollback buffer
34
37
  "\x1b[H");
38
+ setSize({ columns: stdout.columns ?? 80, rows: stdout.rows ?? 24 });
35
39
  setResizeKey((k) => k + 1);
36
40
  }, 300);
37
41
  }, [stdout]);
@@ -51,14 +55,14 @@ export function TerminalSizeProvider({ children }) {
51
55
  /**
52
56
  * Returns { columns, rows, resizeKey } from the nearest TerminalSizeProvider.
53
57
  *
54
- * `columns` and `rows` update immediately on every resize event so layout
55
- * stays responsive while the user drags.
58
+ * All values (`columns`, `rows`, `resizeKey`) update together after resize
59
+ * events settle (300ms debounce). Updating dimensions immediately would
60
+ * trigger React re-renders on every resize event while Ink's internal
61
+ * line-tracking still assumes the old width, causing ghost/duplicate renders.
56
62
  *
57
- * `resizeKey` increments once after resize events settle (300ms debounce).
58
- * Use it as a React `key` on the root content wrapper to force a full
59
- * remount this is the only reliable way to make Ink re-render <Static>
60
- * content that was already printed to scrollback and got corrupted by
61
- * terminal text reflow.
63
+ * `resizeKey` can be used as a React `key` to force a full remount — this
64
+ * is the only reliable way to make Ink re-render <Static> content that was
65
+ * already printed to scrollback and got corrupted by terminal text reflow.
62
66
  */
63
67
  export function useTerminalSize() {
64
68
  const ctx = useContext(TerminalSizeContext);
@@ -1 +1 @@
1
- {"version":3,"file":"useTerminalSize.js","sourceRoot":"","sources":["../../../src/ui/hooks/useTerminalSize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAQhC,MAAM,mBAAmB,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAAiC;IAC9E,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;QAC9B,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE;KACzB,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAEvE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,sDAAsD;QACtD,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAEpE,yEAAyE;QACzE,IAAI,WAAW,CAAC,OAAO;YAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3D,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,qEAAqE;YACrE,sEAAsE;YACtE,iBAAiB;YACjB,MAAM,CAAC,KAAK,CACV,SAAS,GAAG,uBAAuB;gBACjC,SAAS,GAAG,0BAA0B;gBACtC,QAAQ,CACX,CAAC;YACF,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/B,IAAI,WAAW,CAAC,OAAO;gBAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAE/E,OAAO,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"useTerminalSize.js","sourceRoot":"","sources":["../../../src/ui/hooks/useTerminalSize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAQhC,MAAM,mBAAmB,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAAiC;IAC9E,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;QAC9B,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE;KACzB,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAEvE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,iEAAiE;QACjE,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,sEAAsE;QACtE,mDAAmD;QACnD,IAAI,WAAW,CAAC,OAAO;YAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3D,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,qEAAqE;YACrE,sEAAsE;YACtE,iBAAiB;YACjB,MAAM,CAAC,KAAK,CACV,SAAS,GAAG,uBAAuB;gBACjC,SAAS,GAAG,0BAA0B;gBACtC,QAAQ,CACX,CAAC;YACF,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YACpE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/B,IAAI,WAAW,CAAC,OAAO;gBAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAE/E,OAAO,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kenkaiiii/ggcoder",
3
- "version": "4.2.44",
3
+ "version": "4.2.46",
4
4
  "type": "module",
5
5
  "description": "CLI coding agent with OAuth authentication for Anthropic and OpenAI",
6
6
  "license": "MIT",
@@ -36,8 +36,8 @@
36
36
  "string-width": "^8.2.0",
37
37
  "wrap-ansi": "^10.0.0",
38
38
  "zod": "^4.3.6",
39
- "@kenkaiiii/gg-agent": "4.2.44",
40
- "@kenkaiiii/gg-ai": "4.2.44"
39
+ "@kenkaiiii/gg-ai": "4.2.46",
40
+ "@kenkaiiii/gg-agent": "4.2.46"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^25.5.0",