@co0ontty/wand 4.71.0 → 4.71.2-beta.ga589bb6
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/browser-extension/icons/wand.svg +1 -0
- package/browser-extension/manifest.json +12 -2
- package/browser-extension/src/options.css +8 -0
- package/browser-extension/src/options.html +7 -3
- package/browser-extension/src/popup.css +9 -0
- package/browser-extension/src/popup.html +7 -3
- package/dist/build-info.json +4 -4
- package/dist/server-workspace-routes.js +9 -6
- package/dist/storage.d.ts +9 -0
- package/dist/storage.js +31 -0
- package/dist/wand-task-sync.js +21 -5
- package/dist/web-ui/brand-identity.d.ts +3 -0
- package/dist/web-ui/brand-identity.js +13 -0
- package/dist/web-ui/brand-logo-data.d.ts +24 -0
- package/dist/web-ui/brand-logo-data.js +32 -0
- package/dist/web-ui/content/scripts.js +676 -159
- package/dist/web-ui/content/styles.css +1 -1
- package/dist/web-ui/content/tailwind.css +4 -0
- package/dist/web-ui/embedded-assets.js +2 -2
- package/dist/web-ui/index.js +2 -1
- package/dist/web-ui/session-activity.d.ts +23 -0
- package/dist/web-ui/session-activity.js +30 -0
- package/package.json +3 -1
package/dist/web-ui/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { EMBEDDED_WEB_ASSETS } from "./embedded-assets.js";
|
|
4
4
|
import { getCSSStyles } from "./styles.js";
|
|
5
5
|
import { getScriptContent } from "./scripts.js";
|
|
6
|
+
import { WAND_FAVICON_URL } from "./brand-identity.js";
|
|
6
7
|
// Use String.fromCharCode to avoid template literal interpretation of </script>
|
|
7
8
|
const scriptClose = String.fromCharCode(60, 47) + "script>";
|
|
8
9
|
const scriptOpen = "<" + "script";
|
|
@@ -21,7 +22,7 @@ export function renderApp(configPath) {
|
|
|
21
22
|
<meta charset="utf-8" />
|
|
22
23
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover, interactive-widget=resizes-content" />
|
|
23
24
|
<title>Wand Console</title>
|
|
24
|
-
<link rel="icon"
|
|
25
|
+
<link rel="icon" type="image/svg+xml" href="${WAND_FAVICON_URL}" />
|
|
25
26
|
<meta name="description" content="Local CLI Console for Vibe Coding - Manage terminal sessions from your browser" />
|
|
26
27
|
<meta name="theme-color" content="#f1eadf" media="(prefers-color-scheme: light)" />
|
|
27
28
|
<meta name="theme-color" content="#17120f" media="(prefers-color-scheme: dark)" />
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Shared activity semantics for React chrome and imperative session controls. */
|
|
2
|
+
export interface SessionActivitySource {
|
|
3
|
+
readonly sessionKind?: string;
|
|
4
|
+
readonly runner?: string;
|
|
5
|
+
readonly status?: string;
|
|
6
|
+
readonly provider?: string;
|
|
7
|
+
readonly ptyBusy?: boolean;
|
|
8
|
+
readonly providerCliActive?: boolean;
|
|
9
|
+
readonly archived?: boolean;
|
|
10
|
+
readonly permissionBlocked?: boolean;
|
|
11
|
+
readonly structuredState?: {
|
|
12
|
+
readonly inFlight?: boolean;
|
|
13
|
+
} | null;
|
|
14
|
+
}
|
|
15
|
+
export interface SessionActivity {
|
|
16
|
+
readonly active: boolean;
|
|
17
|
+
readonly inFlight: boolean;
|
|
18
|
+
readonly ptyRunning: boolean;
|
|
19
|
+
readonly permissionBlocked: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function ptyTurnActive(session: SessionActivitySource | null | undefined): boolean;
|
|
22
|
+
export declare function computeRunningSignal(session: SessionActivitySource | null | undefined): SessionActivity;
|
|
23
|
+
export declare function formatElapsedShort(ms: number): string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const PROVIDER_CLI_IDS = new Set(["claude", "codex", "opencode", "grok", "qoder", "pi"]);
|
|
2
|
+
function isStructured(session) {
|
|
3
|
+
return session.sessionKind === "structured" || session.runner === "claude-cli-print";
|
|
4
|
+
}
|
|
5
|
+
export function ptyTurnActive(session) {
|
|
6
|
+
if (!session || session.status !== "running" || isStructured(session))
|
|
7
|
+
return false;
|
|
8
|
+
return session.provider && PROVIDER_CLI_IDS.has(session.provider) ? session.ptyBusy === true : true;
|
|
9
|
+
}
|
|
10
|
+
export function computeRunningSignal(session) {
|
|
11
|
+
if (!session || session.archived) {
|
|
12
|
+
return { active: false, inFlight: false, ptyRunning: false, permissionBlocked: false };
|
|
13
|
+
}
|
|
14
|
+
const permissionBlocked = Boolean(session.permissionBlocked);
|
|
15
|
+
const inFlight = isStructured(session) && Boolean(session.structuredState?.inFlight);
|
|
16
|
+
const ptyRunning = ptyTurnActive(session) && session.providerCliActive !== false;
|
|
17
|
+
return { active: inFlight || ptyRunning || permissionBlocked, inFlight, ptyRunning, permissionBlocked };
|
|
18
|
+
}
|
|
19
|
+
export function formatElapsedShort(ms) {
|
|
20
|
+
const seconds = Math.max(0, Math.floor(ms / 1000));
|
|
21
|
+
if (seconds < 60)
|
|
22
|
+
return `${seconds}s`;
|
|
23
|
+
const minutes = Math.floor(seconds / 60);
|
|
24
|
+
const remainingSeconds = seconds % 60;
|
|
25
|
+
if (minutes < 60)
|
|
26
|
+
return `${minutes}m${remainingSeconds ? ` ${remainingSeconds}s` : ""}`;
|
|
27
|
+
const hours = Math.floor(minutes / 60);
|
|
28
|
+
const remainingMinutes = minutes % 60;
|
|
29
|
+
return `${hours}h${remainingMinutes ? ` ${remainingMinutes}m` : ""}`;
|
|
30
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@co0ontty/wand",
|
|
3
|
-
"version": "4.71.
|
|
3
|
+
"version": "4.71.2-beta.ga589bb6",
|
|
4
4
|
"description": "A web console for Claude Code, Codex, OpenCode, and other local CLI tools.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
"check": "node scripts/bundle-tailwind.js && node scripts/bundle-xterm.js && node scripts/bundle-browser.js && npm run generate:web-assets && tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.browser.json && tsc --noEmit -p tsconfig.react.json",
|
|
25
25
|
"test": "node --test --import tsx tests/*.test.ts",
|
|
26
26
|
"check:bundle-budget": "node scripts/check-bundle-budget.js",
|
|
27
|
+
"sync:brand-assets": "node scripts/sync-brand-assets.js",
|
|
28
|
+
"check:brand-assets": "node scripts/sync-brand-assets.js --check",
|
|
27
29
|
"audit:remnants": "node scripts/audit-legacy-remnants.js",
|
|
28
30
|
"prepublishOnly": "VER=${WAND_PUBLISH_VERSION:-$(git tag --sort=-v:refname --list 'v*' | head -1)} && VER=${VER#v} && npm version \"$VER\" --no-git-tag-version --allow-same-version && npm run build",
|
|
29
31
|
"bundle:tailwind": "node scripts/bundle-tailwind.js"
|