kanban 0.1.21 → 0.1.22
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CACvC;AAwDD,qBAAa,UAAU;IAQrB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IARjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAwBP,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAS,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,sBAAsB,GAAG,UAAU;IAoB7G,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAIrC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIlC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAWnF,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,IAAI;IAId,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAO/C,cAAc,IAAI,OAAO;CAGzB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as pty from "node-pty";
|
|
2
|
-
import { buildShellCommandLine } from "../core/shell.js";
|
|
3
2
|
const MAX_HISTORY_BYTES = 1024 * 1024;
|
|
3
|
+
const SAFE_WINDOWS_CMD_TOKEN_PATTERN = /^[A-Za-z0-9_./:\\@%+=,-]+$/;
|
|
4
4
|
function normalizeOutputChunk(data) {
|
|
5
5
|
if (typeof data === "string") {
|
|
6
6
|
return Buffer.from(data, "utf8");
|
|
@@ -23,6 +23,18 @@ function resolveWindowsComSpec() {
|
|
|
23
23
|
const comSpec = process.env.ComSpec?.trim() || process.env.COMSPEC?.trim();
|
|
24
24
|
return comSpec || "cmd.exe";
|
|
25
25
|
}
|
|
26
|
+
function quoteWindowsCmdToken(value) {
|
|
27
|
+
if (value.length === 0) {
|
|
28
|
+
return '""';
|
|
29
|
+
}
|
|
30
|
+
if (SAFE_WINDOWS_CMD_TOKEN_PATTERN.test(value)) {
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
return `"${value.replaceAll('"', '""')}"`;
|
|
34
|
+
}
|
|
35
|
+
function buildWindowsCmdCommandLine(binary, args) {
|
|
36
|
+
return [binary, ...args].map((part) => quoteWindowsCmdToken(part)).join(" ");
|
|
37
|
+
}
|
|
26
38
|
function shouldUseWindowsShellLaunch(binary) {
|
|
27
39
|
if (process.platform !== "win32") {
|
|
28
40
|
return false;
|
|
@@ -69,7 +81,7 @@ export class PtySession {
|
|
|
69
81
|
const useWindowsShellLaunch = shouldUseWindowsShellLaunch(binary);
|
|
70
82
|
const spawnBinary = useWindowsShellLaunch ? resolveWindowsComSpec() : binary;
|
|
71
83
|
const spawnArgs = useWindowsShellLaunch
|
|
72
|
-
? ["/d", "/s", "/c",
|
|
84
|
+
? ["/d", "/s", "/c", buildWindowsCmdCommandLine(binary, args)]
|
|
73
85
|
: args;
|
|
74
86
|
const ptyOptions = {
|
|
75
87
|
name: terminalName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,
|
|
1
|
+
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AACtC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAoBpE,SAAS,oBAAoB,CAAC,IAAoB;IACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAoB;IAChD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC3B,UAAU,CAAC,IAAI,EAAE,CAAC;IAClB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACR,kEAAkE;QACnE,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3E,OAAO,OAAO,IAAI,SAAS,CAAC;AAC7B,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;AAC3C,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAc,EAAE,IAAc;IACjE,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAc;IAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,UAAU,KAAK,qBAAqB,EAAE,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,OAAO,UAAU;IAQJ;IACA;IARD,UAAU,CAAW;IACrB,aAAa,GAAa,EAAE,CAAC;IACtC,YAAY,GAAG,CAAC,CAAC;IACjB,WAAW,GAAG,KAAK,CAAC;IAE5B,YACC,UAAoB,EACH,cAAwC,EACxC,cAA8C;QAD9C,mBAAc,GAAd,cAAc,CAA0B;QACxC,mBAAc,GAAd,cAAc,CAAgC;QAE/D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,MAAwE,CAAC,CAAC,IAAI,EAAE,EAAE;YAClG,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC;YACtC,OAAO,IAAI,CAAC,YAAY,GAAG,iBAAiB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,MAAM;gBACP,CAAC;gBACD,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAChC,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAA0B;QAC/F,MAAM,YAAY,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC;QACvF,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7E,MAAM,SAAS,GAAG,qBAAqB;YACtC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9D,CAAC,CAAC,IAAI,CAAC;QACR,MAAM,UAAU,GAAwB;YACvC,IAAI,EAAE,YAAY;YAClB,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,QAAQ,EAAE,IAAI;SACd,CAAC;QAEF,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACjE,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAqB;QAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,IAAY,EAAE,UAAmB,EAAE,WAAoB;QAC3E,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;gBAClC,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,WAAW;aACnB,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,MAAM;QACL,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,OAAmC;QACvC,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,cAAc;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;CACD","sourcesContent":["import * as pty from \"node-pty\";\n\nconst MAX_HISTORY_BYTES = 1024 * 1024;\nconst SAFE_WINDOWS_CMD_TOKEN_PATTERN = /^[A-Za-z0-9_./:\\\\@%+=,-]+$/;\n\nexport interface PtyExitEvent {\n\texitCode: number;\n\tsignal?: number;\n}\n\nexport interface SpawnPtySessionRequest {\n\tbinary: string;\n\targs?: string[];\n\tcwd: string;\n\tenv?: Record<string, string | undefined>;\n\tcols: number;\n\trows: number;\n\tonData?: (chunk: Buffer) => void;\n\tonExit?: (event: PtyExitEvent) => void;\n}\n\ntype PtyOutputChunk = string | Buffer | Uint8Array;\n\nfunction normalizeOutputChunk(data: PtyOutputChunk): Buffer {\n\tif (typeof data === \"string\") {\n\t\treturn Buffer.from(data, \"utf8\");\n\t}\n\treturn Buffer.isBuffer(data) ? data : Buffer.from(data);\n}\n\nfunction terminatePtyProcess(ptyProcess: pty.IPty): void {\n\tconst pid = ptyProcess.pid;\n\tptyProcess.kill();\n\tif (process.platform !== \"win32\" && Number.isFinite(pid) && pid > 0) {\n\t\ttry {\n\t\t\tprocess.kill(-pid, \"SIGTERM\");\n\t\t} catch {\n\t\t\t// Best effort: process group may already be gone or inaccessible.\n\t\t}\n\t}\n}\n\nfunction resolveWindowsComSpec(): string {\n\tconst comSpec = process.env.ComSpec?.trim() || process.env.COMSPEC?.trim();\n\treturn comSpec || \"cmd.exe\";\n}\n\nfunction quoteWindowsCmdToken(value: string): string {\n\tif (value.length === 0) {\n\t\treturn '\"\"';\n\t}\n\tif (SAFE_WINDOWS_CMD_TOKEN_PATTERN.test(value)) {\n\t\treturn value;\n\t}\n\treturn `\"${value.replaceAll('\"', '\"\"')}\"`;\n}\n\nfunction buildWindowsCmdCommandLine(binary: string, args: string[]): string {\n\treturn [binary, ...args].map((part) => quoteWindowsCmdToken(part)).join(\" \");\n}\n\nfunction shouldUseWindowsShellLaunch(binary: string): boolean {\n\tif (process.platform !== \"win32\") {\n\t\treturn false;\n\t}\n\tconst normalized = binary.trim().toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (normalized === \"cmd\" || normalized === \"cmd.exe\") {\n\t\treturn false;\n\t}\n\treturn normalized !== resolveWindowsComSpec().toLowerCase();\n}\n\nexport class PtySession {\n\tprivate readonly ptyProcess: pty.IPty;\n\tprivate readonly outputHistory: Buffer[] = [];\n\tprivate historyBytes = 0;\n\tprivate interrupted = false;\n\n\tprivate constructor(\n\t\tptyProcess: pty.IPty,\n\t\tprivate readonly onDataCallback?: (chunk: Buffer) => void,\n\t\tprivate readonly onExitCallback?: (event: PtyExitEvent) => void,\n\t) {\n\t\tthis.ptyProcess = ptyProcess;\n\t\t(this.ptyProcess.onData as unknown as (listener: (data: PtyOutputChunk) => void) => void)((data) => {\n\t\t\tconst chunk = normalizeOutputChunk(data);\n\t\t\tthis.outputHistory.push(chunk);\n\t\t\tthis.historyBytes += chunk.byteLength;\n\t\t\twhile (this.historyBytes > MAX_HISTORY_BYTES && this.outputHistory.length > 0) {\n\t\t\t\tconst shifted = this.outputHistory.shift();\n\t\t\t\tif (!shifted) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tthis.historyBytes -= shifted.byteLength;\n\t\t\t}\n\t\t\tthis.onDataCallback?.(chunk);\n\t\t});\n\t\tthis.ptyProcess.onExit((event) => {\n\t\t\tthis.onExitCallback?.(event);\n\t\t});\n\t}\n\n\tstatic spawn({ binary, args = [], cwd, env, cols, rows, onData, onExit }: SpawnPtySessionRequest): PtySession {\n\t\tconst terminalName = env?.TERM?.trim() || process.env.TERM?.trim() || \"xterm-256color\";\n\t\tconst useWindowsShellLaunch = shouldUseWindowsShellLaunch(binary);\n\t\tconst spawnBinary = useWindowsShellLaunch ? resolveWindowsComSpec() : binary;\n\t\tconst spawnArgs = useWindowsShellLaunch\n\t\t\t? [\"/d\", \"/s\", \"/c\", buildWindowsCmdCommandLine(binary, args)]\n\t\t\t: args;\n\t\tconst ptyOptions: pty.IPtyForkOptions = {\n\t\t\tname: terminalName,\n\t\t\tcwd,\n\t\t\tenv,\n\t\t\tcols,\n\t\t\trows,\n\t\t\tencoding: null,\n\t\t};\n\n\t\tconst ptyProcess = pty.spawn(spawnBinary, spawnArgs, ptyOptions);\n\t\treturn new PtySession(ptyProcess, onData, onExit);\n\t}\n\n\tget pid(): number {\n\t\treturn this.ptyProcess.pid;\n\t}\n\n\tgetOutputHistory(): readonly Buffer[] {\n\t\treturn this.outputHistory;\n\t}\n\n\twrite(data: string | Buffer): void {\n\t\tthis.ptyProcess.write(typeof data === \"string\" ? data : data.toString(\"utf8\"));\n\t}\n\n\tresize(cols: number, rows: number, pixelWidth?: number, pixelHeight?: number): void {\n\t\tif (pixelWidth !== undefined && pixelHeight !== undefined) {\n\t\t\tthis.ptyProcess.resize(cols, rows, {\n\t\t\t\twidth: pixelWidth,\n\t\t\t\theight: pixelHeight,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.ptyProcess.resize(cols, rows);\n\t}\n\n\tpause(): void {\n\t\tthis.ptyProcess.pause();\n\t}\n\n\tresume(): void {\n\t\tthis.ptyProcess.resume();\n\t}\n\n\tstop(options?: { interrupted?: boolean }): void {\n\t\tif (options?.interrupted) {\n\t\t\tthis.interrupted = true;\n\t\t}\n\t\tterminatePtyProcess(this.ptyProcess);\n\t}\n\n\twasInterrupted(): boolean {\n\t\treturn this.interrupted;\n\t}\n}\n"]}
|
|
@@ -16707,7 +16707,7 @@ function lW({ children: e, className: t }) {
|
|
|
16707
16707
|
const cW = "https://github.com/cline/kanban";
|
|
16708
16708
|
function uW({ projects: e, isLoadingProjects: t = false, currentProjectId: n, removingProjectId: r, onSelectProject: o, onRemoveProject: i, onAddProject: l }) {
|
|
16709
16709
|
const c = [...e].sort((g, x) => g.path.localeCompare(x.path)), [u, f] = v.useState(null), h = u !== null && r === u.id, p = u ? u.taskCounts.backlog + u.taskCounts.in_progress + u.taskCounts.review + u.taskCounts.trash : 0;
|
|
16710
|
-
return m.jsxs("aside", { className: "flex flex-col min-h-0 overflow-hidden bg-surface-1", style: { width: "20%", borderRight: "1px solid var(--color-divider)" }, children: [m.jsx("div", { style: { padding: "12px 12px 8px" }, children: m.jsxs("div", { children: [m.jsxs("div", { className: "font-semibold text-base", children: ["kanban", " ", m.jsxs("span", { className: "text-text-secondary font-normal text-xs", children: ["v", "0.1.
|
|
16710
|
+
return m.jsxs("aside", { className: "flex flex-col min-h-0 overflow-hidden bg-surface-1", style: { width: "20%", borderRight: "1px solid var(--color-divider)" }, children: [m.jsx("div", { style: { padding: "12px 12px 8px" }, children: m.jsxs("div", { children: [m.jsxs("div", { className: "font-semibold text-base", children: ["kanban", " ", m.jsxs("span", { className: "text-text-secondary font-normal text-xs", children: ["v", "0.1.22"] })] }), m.jsx("a", { href: cW, target: "_blank", rel: "noopener noreferrer", className: "text-accent-hover text-xs hover:underline", children: "View on GitHub" })] }) }), m.jsxs("div", { className: "flex items-center justify-between", style: { padding: "4px 12px" }, children: [m.jsx("span", { className: "text-text-tertiary text-xs font-medium uppercase tracking-wide", children: "Projects" }), m.jsx(Te, { variant: "ghost", size: "sm", icon: m.jsx(kl, { size: 14 }), onClick: l, "aria-label": "Add project", disabled: r !== null })] }), m.jsxs("div", { className: "flex-1 min-h-0 overflow-y-auto overscroll-contain flex flex-col gap-1", style: { padding: "4px 0" }, children: [c.length === 0 ? t ? m.jsx("div", { style: { padding: "4px 0" }, children: Array.from({ length: 3 }).map((g, x) => m.jsx(mW, {}, `project-skeleton-${x}`)) }) : m.jsx("div", { className: "text-center", style: { padding: "24px 12px" }, children: m.jsx("span", { className: "text-text-secondary", children: "No projects yet" }) }) : null, c.map((g) => m.jsx(gW, { project: g, isCurrent: n === g.id, removingProjectId: r, onSelect: o, onRemove: (x) => {
|
|
16711
16711
|
const w = c.find((b) => b.id === x);
|
|
16712
16712
|
w && f(w);
|
|
16713
16713
|
} }, g.id))] }), m.jsx(hW, {}), m.jsxs("a", { href: "https://cline.bot", target: "_blank", rel: "noopener noreferrer", className: "text-text-tertiary hover:text-text-primary text-center block transition-colors", style: { padding: "6px 12px", fontSize: 10 }, children: ["Made with ", m.jsx(zD, { size: 10, fill: "currentColor", className: "inline-block" }), " by Cline"] }), m.jsxs(Fu, { open: u !== null, onOpenChange: (g) => {
|
package/dist/web-ui/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
href='data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22><path fill=%22%23AAB0B7%22 d=%22M15 0H1C.45 0 0 .45 0 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM6 4H3c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm7 0h-3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z%22/></svg>'
|
|
9
9
|
/>
|
|
10
10
|
<title>Kanban</title>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-DBFyjndU.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/xterm-vendor-x1-S2SBl.js">
|
|
13
13
|
<link rel="stylesheet" crossorigin href="/assets/xterm-vendor-GVL3fBIr.css">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="/assets/index-DFW2wcAT.css">
|