kanban 0.1.46 → 0.1.47

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,5 +1,9 @@
1
+ import open from "open";
1
2
  type BrowserOpenDeps = {
2
- warn: (message: string) => void;
3
+ warn?: (message: string) => void;
4
+ openUrl?: typeof open;
5
+ platform?: NodeJS.Platform;
6
+ isBinaryAvailable?: (binary: string) => boolean;
3
7
  };
4
8
  export declare function openInBrowser(url: string, deps?: BrowserOpenDeps): void;
5
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/server/browser.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG;IACtB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAYvE"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/server/browser.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,KAAK,eAAe,GAAG;IACtB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAChD,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAgBvE"}
@@ -1,18 +1,20 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="26159cf8-c7ed-582f-bb31-652af21b9852")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="516e5e0e-116c-5712-83f3-a638d7a0f239")}catch(e){}}();
3
3
  import open from "open";
4
+ import { isBinaryAvailableOnPath } from "../terminal/command-discovery.js";
4
5
  export function openInBrowser(url, deps) {
5
- try {
6
- // On Linux the `open` package ships a bundled xdg-open and uses it
7
- // instead of the system one. Force the system xdg-open so PATH-based
8
- // overrides (e.g. BROWSER wrappers, integration test stubs) work.
9
- const options = process.platform === "linux" ? { app: { name: "xdg-open" } } : {};
10
- open(url, options);
11
- }
12
- catch (err) {
13
- const warn = deps?.warn ?? (() => { });
6
+ const warn = deps?.warn ?? (() => { });
7
+ const openUrl = deps?.openUrl ?? open;
8
+ const platform = deps?.platform ?? process.platform;
9
+ const isBinaryAvailable = deps?.isBinaryAvailable ?? isBinaryAvailableOnPath;
10
+ // On Linux the `open` package ships a bundled xdg-open fallback.
11
+ // Prefer system xdg-open when present so PATH-based overrides still work.
12
+ const options = platform === "linux" && isBinaryAvailable("xdg-open")
13
+ ? { app: { name: "xdg-open" } }
14
+ : undefined;
15
+ void openUrl(url, options).catch(() => {
14
16
  warn(`Could not open browser automatically. Open this URL manually: ${url}`);
15
- }
17
+ });
16
18
  }
17
19
  //# sourceMappingURL=browser.js.map
18
- //# debugId=26159cf8-c7ed-582f-bb31-652af21b9852
20
+ //# debugId=516e5e0e-116c-5712-83f3-a638d7a0f239
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sources":["../../src/server/browser.ts"],"sourceRoot":"","sourcesContent":["import open from \"open\";\n\ntype BrowserOpenDeps = {\n\twarn: (message: string) => void;\n};\n\nexport function openInBrowser(url: string, deps?: BrowserOpenDeps): void {\n\ttry {\n\t\t// On Linux the `open` package ships a bundled xdg-open and uses it\n\t\t// instead of the system one. Force the system xdg-open so PATH-based\n\t\t// overrides (e.g. BROWSER wrappers, integration test stubs) work.\n\t\tconst options =\n\t\t\tprocess.platform === \"linux\" ? { app: { name: \"xdg-open\" } } : {};\n\t\topen(url, options);\n\t} catch (err) {\n\t\tconst warn = deps?.warn ?? (() => {});\n\t\twarn(`Could not open browser automatically. Open this URL manually: ${url}`);\n\t}\n}\n"],"names":[],"mappings":";;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAMxB,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAsB;IAChE,IAAI,CAAC;QACJ,mEAAmE;QACnE,qEAAqE;QACrE,kEAAkE;QAClE,MAAM,OAAO,GACZ,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,iEAAiE,GAAG,EAAE,CAAC,CAAC;IAC9E,CAAC;AACF,CAAC","debugId":"26159cf8-c7ed-582f-bb31-652af21b9852"}
1
+ {"version":3,"file":"browser.js","sources":["../../src/server/browser.ts"],"sourceRoot":"","sourcesContent":["import open from \"open\";\nimport { isBinaryAvailableOnPath } from \"../terminal/command-discovery.js\";\n\ntype BrowserOpenDeps = {\n\twarn?: (message: string) => void;\n\topenUrl?: typeof open;\n\tplatform?: NodeJS.Platform;\n\tisBinaryAvailable?: (binary: string) => boolean;\n};\n\nexport function openInBrowser(url: string, deps?: BrowserOpenDeps): void {\n\tconst warn = deps?.warn ?? (() => {});\n\tconst openUrl = deps?.openUrl ?? open;\n\tconst platform = deps?.platform ?? process.platform;\n\tconst isBinaryAvailable = deps?.isBinaryAvailable ?? isBinaryAvailableOnPath;\n\n\t// On Linux the `open` package ships a bundled xdg-open fallback.\n\t// Prefer system xdg-open when present so PATH-based overrides still work.\n\tconst options =\n\t\tplatform === \"linux\" && isBinaryAvailable(\"xdg-open\")\n\t\t\t? { app: { name: \"xdg-open\" } }\n\t\t\t: undefined;\n\n\tvoid openUrl(url, options).catch(() => {\n\t\twarn(`Could not open browser automatically. Open this URL manually: ${url}`);\n\t});\n}\n"],"names":[],"mappings":";;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAS3E,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAsB;IAChE,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACpD,MAAM,iBAAiB,GAAG,IAAI,EAAE,iBAAiB,IAAI,uBAAuB,CAAC;IAE7E,iEAAiE;IACjE,0EAA0E;IAC1E,MAAM,OAAO,GACZ,QAAQ,KAAK,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC;QACpD,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEd,KAAK,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,iEAAiE,GAAG,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACJ,CAAC","debugId":"516e5e0e-116c-5712-83f3-a638d7a0f239"}
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0651b535-160c-5b6b-8dfa-32d87af4cc8b")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3c3f4955-afff-5d6f-879d-0974fec49e1f")}catch(e){}}();
3
3
  var __defProp = Object.defineProperty;
4
4
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
5
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -32027,7 +32027,7 @@ function oPe({ projects: e, isLoadingProjects: t = false, currentProjectId: n, r
32027
32027
  }, [C]), E ? h.jsxs("aside", { className: "flex flex-col items-center min-h-0 overflow-hidden bg-surface-1 relative shrink-0 py-2 gap-1.5", style: { width: $, minWidth: $, borderRight: "1px solid var(--color-divider)" }, children: [h.jsx("div", { onMouseDown: j, className: "absolute top-0 right-0 bottom-0 w-1.5 cursor-ew-resize z-10 hover:bg-accent/20" }), f.map((M) => {
32028
32028
  const G = n === M.id, W = M.name.charAt(0).toUpperCase();
32029
32029
  return h.jsx("button", { type: "button", title: M.name, onClick: () => l(M.id), className: ot("w-8 h-8 rounded-md text-xs font-semibold shrink-0 border-0 cursor-pointer flex items-center justify-center", G ? "bg-accent text-white" : "bg-surface-3 text-text-secondary hover:text-text-primary hover:bg-surface-4"), children: W }, M.id);
32030
- }), h.jsx("button", { type: "button", title: "Add project", onClick: d, disabled: r !== null, className: "w-8 h-8 rounded-md text-xs shrink-0 border-0 cursor-pointer flex items-center justify-center bg-transparent text-text-tertiary hover:text-text-secondary hover:bg-surface-2 mt-auto", children: h.jsx(Va, { size: 16 }) })] }) : h.jsxs("aside", { className: "flex flex-col min-h-0 overflow-hidden bg-surface-1 relative shrink-0", style: { width: _, minWidth: O, maxWidth: A, borderRight: "1px solid var(--color-divider)" }, children: [h.jsx("div", { onMouseDown: j, className: "absolute top-0 right-0 bottom-0 w-1.5 cursor-ew-resize z-10 hover:bg-accent/20" }), h.jsxs("div", { style: { padding: "12px 12px 8px" }, children: [h.jsx("div", { children: h.jsxs("div", { className: "font-semibold text-base flex items-baseline gap-1.5", children: [h.jsx(rPe, { size: 18, className: "text-text-primary shrink-0 self-center" }), "Cline ", h.jsxs("span", { className: "text-text-secondary font-normal text-xs", children: ["v", "0.1.46"] })] }) }), h.jsx("div", { className: "mt-2 rounded-md bg-surface-2 p-1", children: h.jsxs("div", { className: "grid grid-cols-2 gap-1", children: [h.jsx("button", { type: "button", onClick: () => o("projects"), className: ot("cursor-pointer rounded-sm px-2 py-1 text-xs font-medium", i === "projects" ? "bg-surface-4 text-text-primary" : "text-text-secondary hover:text-text-primary"), children: "Projects" }), h.jsx("button", { type: "button", onClick: () => o("agent"), disabled: !s, className: ot("cursor-pointer rounded-sm px-2 py-1 text-xs font-medium", i === "agent" ? "bg-surface-4 text-text-primary" : "text-text-secondary hover:text-text-primary", s ? null : "cursor-not-allowed opacity-50"), children: "Kanban Agent" })] }) }), i === "agent" ? h.jsx("p", { className: "text-text-tertiary text-xs", style: { padding: "8px 4px 0" }, children: "Add tasks, link dependencies, break work down, and manage your board. Try asking to create and link some tasks to get started." }) : null] }), i === "projects" ? h.jsxs(h.Fragment, { children: [h.jsxs("div", { className: "flex-1 min-h-0 overflow-y-auto overscroll-contain flex flex-col gap-1", style: { padding: "4px 12px" }, children: [f.length === 0 && t ? h.jsx("div", { style: { padding: "4px 0" }, children: Array.from({ length: 3 }).map((M, G) => h.jsx(cPe, {}, `project-skeleton-${G}`)) }) : null, f.map((M) => h.jsx(dPe, { project: M, isCurrent: n === M.id, removingProjectId: r, onSelect: l, onRemove: (G) => {
32030
+ }), h.jsx("button", { type: "button", title: "Add project", onClick: d, disabled: r !== null, className: "w-8 h-8 rounded-md text-xs shrink-0 border-0 cursor-pointer flex items-center justify-center bg-transparent text-text-tertiary hover:text-text-secondary hover:bg-surface-2 mt-auto", children: h.jsx(Va, { size: 16 }) })] }) : h.jsxs("aside", { className: "flex flex-col min-h-0 overflow-hidden bg-surface-1 relative shrink-0", style: { width: _, minWidth: O, maxWidth: A, borderRight: "1px solid var(--color-divider)" }, children: [h.jsx("div", { onMouseDown: j, className: "absolute top-0 right-0 bottom-0 w-1.5 cursor-ew-resize z-10 hover:bg-accent/20" }), h.jsxs("div", { style: { padding: "12px 12px 8px" }, children: [h.jsx("div", { children: h.jsxs("div", { className: "font-semibold text-base flex items-baseline gap-1.5", children: [h.jsx(rPe, { size: 18, className: "text-text-primary shrink-0 self-center" }), "Cline ", h.jsxs("span", { className: "text-text-secondary font-normal text-xs", children: ["v", "0.1.47"] })] }) }), h.jsx("div", { className: "mt-2 rounded-md bg-surface-2 p-1", children: h.jsxs("div", { className: "grid grid-cols-2 gap-1", children: [h.jsx("button", { type: "button", onClick: () => o("projects"), className: ot("cursor-pointer rounded-sm px-2 py-1 text-xs font-medium", i === "projects" ? "bg-surface-4 text-text-primary" : "text-text-secondary hover:text-text-primary"), children: "Projects" }), h.jsx("button", { type: "button", onClick: () => o("agent"), disabled: !s, className: ot("cursor-pointer rounded-sm px-2 py-1 text-xs font-medium", i === "agent" ? "bg-surface-4 text-text-primary" : "text-text-secondary hover:text-text-primary", s ? null : "cursor-not-allowed opacity-50"), children: "Kanban Agent" })] }) }), i === "agent" ? h.jsx("p", { className: "text-text-tertiary text-xs", style: { padding: "8px 4px 0" }, children: "Add tasks, link dependencies, break work down, and manage your board. Try asking to create and link some tasks to get started." }) : null] }), i === "projects" ? h.jsxs(h.Fragment, { children: [h.jsxs("div", { className: "flex-1 min-h-0 overflow-y-auto overscroll-contain flex flex-col gap-1", style: { padding: "4px 12px" }, children: [f.length === 0 && t ? h.jsx("div", { style: { padding: "4px 0" }, children: Array.from({ length: 3 }).map((M, G) => h.jsx(cPe, {}, `project-skeleton-${G}`)) }) : null, f.map((M) => h.jsx(dPe, { project: M, isCurrent: n === M.id, removingProjectId: r, onSelect: l, onRemove: (G) => {
32031
32031
  const W = f.find((B) => B.id === G);
32032
32032
  W && g(W);
32033
32033
  } }, M.id)), t ? null : h.jsxs("button", { type: "button", className: "kb-project-row flex cursor-pointer items-center gap-1.5 rounded-md text-text-secondary hover:text-text-primary", style: { padding: "6px 8px" }, onClick: d, disabled: r !== null, children: [h.jsx(Va, { size: 14, className: "shrink-0" }), h.jsx("span", { className: "text-sm", children: "Add Project" })] })] }), h.jsx(uPe, {})] }) : h.jsx("div", { className: "flex flex-1 min-h-0 flex-col", children: h.jsx("div", { className: "flex flex-1 min-h-0 overflow-hidden bg-surface-1 px-2 pb-2 pt-1", children: a ?? h.jsx("div", { className: "flex w-full items-center justify-center rounded-md border border-border bg-surface-2 px-3 text-center text-sm text-text-secondary", children: "Select a project to use the agent." }) }) }), h.jsxs(Cd, { open: m !== null, onOpenChange: (M) => {
@@ -43030,7 +43030,7 @@ function Q3e({ children: e }) {
43030
43030
  const e6e = "https://061e8f494493d1cf3c7c918563cc0783@o4511098366263296.ingest.us.sentry.io/4511098568769536", t6e = "production";
43031
43031
  let Wz = false;
43032
43032
  function n6e() {
43033
- Wz || (G3e({ dsn: e6e, environment: t6e, release: "kanban@0.1.46", sendDefaultPii: false, initialScope: { tags: { app: "kanban", runtime_surface: "web" } } }), Wz = true);
43033
+ Wz || (G3e({ dsn: e6e, environment: t6e, release: "kanban@0.1.47", sendDefaultPii: false, initialScope: { tags: { app: "kanban", runtime_surface: "web" } } }), Wz = true);
43034
43034
  }
43035
43035
  var bX = v.createContext({ client: Jl, bootstrap: void 0 });
43036
43036
  function wX(e, t, n) {
@@ -43100,6 +43100,6 @@ n6e();
43100
43100
  const _X = document.getElementById("root");
43101
43101
  if (!_X) throw new Error("Root element was not found.");
43102
43102
  PJ.createRoot(_X).render(h.jsx(a6e, { children: h.jsx(Q3e, { children: h.jsxs(gre, { children: [h.jsx(YMe, {}), h.jsx(oQ, { theme: "dark", position: "bottom-right", toastOptions: { style: { background: "var(--color-surface-1)", border: "1px solid var(--color-border)", color: "var(--color-text-primary)", fontSize: "13px", whiteSpace: "pre-line" } } })] }) }) }));
43103
- //# sourceMappingURL=index-BB4df_c9.js.map
43103
+ //# sourceMappingURL=index-DGw_f0VG.js.map
43104
43104
 
43105
- //# debugId=0651b535-160c-5b6b-8dfa-32d87af4cc8b
43105
+ //# debugId=3c3f4955-afff-5d6f-879d-0974fec49e1f