@kenkaiiii/ggcoder 3.4.0 → 3.6.1
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/dist/tools/subagent.js +4 -4
- package/dist/tools/subagent.js.map +1 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +3 -1
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
- package/dist/ui/components/ActivityIndicator.js +2 -4
- package/dist/ui/components/ActivityIndicator.js.map +1 -1
- package/dist/ui/components/CompactionNotice.d.ts.map +1 -1
- package/dist/ui/components/CompactionNotice.js +2 -2
- package/dist/ui/components/CompactionNotice.js.map +1 -1
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +3 -3
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +3 -3
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/Markdown.d.ts.map +1 -1
- package/dist/ui/components/Markdown.js +3 -3
- package/dist/ui/components/Markdown.js.map +1 -1
- package/dist/ui/components/Spinner.d.ts.map +1 -1
- package/dist/ui/components/Spinner.js +4 -4
- package/dist/ui/components/Spinner.js.map +1 -1
- package/dist/ui/components/SplashScreen.d.ts +7 -0
- package/dist/ui/components/SplashScreen.d.ts.map +1 -0
- package/dist/ui/components/SplashScreen.js +113 -0
- package/dist/ui/components/SplashScreen.js.map +1 -0
- package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
- package/dist/ui/components/SubAgentPanel.js +1 -14
- package/dist/ui/components/SubAgentPanel.js.map +1 -1
- package/dist/ui/components/ThinkingIndicator.d.ts.map +1 -1
- package/dist/ui/components/ThinkingIndicator.js +1 -3
- package/dist/ui/components/ThinkingIndicator.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +5 -1
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/hooks/useTerminalSize.d.ts +22 -0
- package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -0
- package/dist/ui/hooks/useTerminalSize.js +60 -0
- package/dist/ui/hooks/useTerminalSize.js.map +1 -0
- package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.js +1 -13
- package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +21 -6
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/spinner-frames.d.ts +3 -0
- package/dist/ui/spinner-frames.d.ts.map +1 -0
- package/dist/ui/spinner-frames.js +7 -0
- package/dist/ui/spinner-frames.js.map +1 -0
- package/package.json +3 -3
package/dist/ui/render.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { render } from "ink";
|
|
3
3
|
import { App } from "./App.js";
|
|
4
|
+
import { SplashScreen } from "./components/SplashScreen.js";
|
|
4
5
|
import { ThemeContext, loadTheme } from "./theme/theme.js";
|
|
5
6
|
export async function renderApp(config) {
|
|
6
7
|
const theme = loadTheme(config.theme ?? "dark");
|
|
@@ -8,6 +9,21 @@ export async function renderApp(config) {
|
|
|
8
9
|
// Clear screen and reserve row 1 for the shimmer line.
|
|
9
10
|
// Set a scroll margin (DECSTBM) so Ink's output stays in rows 2+
|
|
10
11
|
// while row 1 remains pinned — same technique tmux uses for its status bar.
|
|
12
|
+
process.stdout.write("\x1b[2J" + // clear screen
|
|
13
|
+
"\x1b[H" + // cursor to row 1, col 1
|
|
14
|
+
`\x1b[2;${rows}r` + // scroll region: row 2 to bottom
|
|
15
|
+
"\x1b[2;1H");
|
|
16
|
+
// Show animated splash screen before the main app
|
|
17
|
+
await new Promise((resolve) => {
|
|
18
|
+
const { unmount } = render(React.createElement(ThemeContext.Provider, { value: theme }, React.createElement(SplashScreen, {
|
|
19
|
+
version: config.version,
|
|
20
|
+
onDone: () => {
|
|
21
|
+
unmount();
|
|
22
|
+
resolve();
|
|
23
|
+
},
|
|
24
|
+
})));
|
|
25
|
+
});
|
|
26
|
+
// Clear screen again for the main app
|
|
11
27
|
process.stdout.write("\x1b[2J" + // clear screen
|
|
12
28
|
"\x1b[H" + // cursor to row 1, col 1
|
|
13
29
|
`\x1b[2;${rows}r` + // scroll region: row 2 to bottom
|
|
@@ -49,13 +65,12 @@ export async function renderApp(config) {
|
|
|
49
65
|
// exitOnCtrlC is true. Disable it so our InputArea handles Ctrl+C.
|
|
50
66
|
exitOnCtrlC: false,
|
|
51
67
|
});
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
//
|
|
55
|
-
//
|
|
68
|
+
// Resize handling (terminal clear + scroll region reset + Static remount)
|
|
69
|
+
// is done inside the React tree via the useTerminalSize hook, which
|
|
70
|
+
// debounces 300ms then clears screen+scrollback and bumps a resizeKey
|
|
71
|
+
// to force Ink to re-render <Static> content. The render.ts layer only
|
|
72
|
+
// needs to call clear() so Ink forgets its stale line-count tracking.
|
|
56
73
|
const onResize = () => {
|
|
57
|
-
const newRows = process.stdout.rows ?? 24;
|
|
58
|
-
process.stdout.write(`\x1b[2;${newRows}r`);
|
|
59
74
|
clear();
|
|
60
75
|
};
|
|
61
76
|
process.stdout.on("resize", onResize);
|
package/dist/ui/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/ui/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAI7B,OAAO,EAAE,GAAG,EAAsB,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA4B3D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAuB;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;IAEhD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAEvC,uDAAuD;IACvD,iEAAiE;IACjE,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,SAAS,GAAG,eAAe;QACzB,QAAQ,GAAG,yBAAyB;QACpC,UAAU,IAAI,GAAG,GAAG,iCAAiC;QACrD,WAAW,CACd,CAAC;IAEF,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAM,CACrC,KAAK,CAAC,aAAa,CACjB,YAAY,CAAC,QAAQ,EACrB,EAAE,KAAK,EAAE,KAAK,EAAE,EAChB,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC,CACH,EACD;QACE,kEAAkE;QAClE,mEAAmE;QACnE,oDAAoD;QACpD,aAAa,EAAE;YACb,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,CAAC,yBAAyB,CAAC;SACnC;QACD,oEAAoE;QACpE,oEAAoE;QACpE,gEAAgE;QAChE,mEAAmE;QACnE,WAAW,EAAE,KAAK;KACnB,CACF,CAAC;IAEF,sEAAsE;IACtE,
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/ui/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-frames.d.ts","sourceRoot":"","sources":["../../src/ui/spinner-frames.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,UAGkC,CAAC;AAE9D,eAAO,MAAM,gBAAgB,MAAM,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Sparkle character set — gives a more distinctive, playful feel
|
|
2
|
+
// compared to the standard braille dots every other CLI uses.
|
|
3
|
+
export const SPINNER_FRAMES = process.platform === "darwin"
|
|
4
|
+
? ["\u00B7", "\u2726", "\u2733", "\u2217", "\u273B", "\u273D"]
|
|
5
|
+
: ["\u00B7", "\u2726", "*", "\u2217", "\u273B", "\u273D"];
|
|
6
|
+
export const SPINNER_INTERVAL = 120;
|
|
7
|
+
//# sourceMappingURL=spinner-frames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-frames.js","sourceRoot":"","sources":["../../src/ui/spinner-frames.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,8DAA8D;AAC9D,MAAM,CAAC,MAAM,cAAc,GACzB,OAAO,CAAC,QAAQ,KAAK,QAAQ;IAC3B,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC9D,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kenkaiiii/ggcoder",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI coding agent with OAuth authentication for Anthropic and OpenAI",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"marked-terminal": "^7.3.0",
|
|
34
34
|
"react": "^19.2.4",
|
|
35
35
|
"zod": "^4.3.6",
|
|
36
|
-
"@kenkaiiii/gg-agent": "3.
|
|
37
|
-
"@kenkaiiii/gg-ai": "3.
|
|
36
|
+
"@kenkaiiii/gg-agent": "3.6.1",
|
|
37
|
+
"@kenkaiiii/gg-ai": "3.6.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^25.3.3",
|