taskchef 6.1.0 → 6.1.2
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/assets/taskchef-dark.svg
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none">
|
|
2
2
|
<rect x="2" y="2" width="44" height="44" rx="11" fill="#F59E0B"/>
|
|
3
3
|
<path d="M15 37V27.5C11.9 26.3 10 23.6 10 20.5C10 16.4 13.4 13 17.5 13C19 10 21.2 8.5 24 8.5C26.8 8.5 29 10 30.5 13C34.6 13 38 16.4 38 20.5C38 23.6 36.1 26.3 33 27.5V37H15Z" fill="#FFFBEB"/>
|
|
4
|
-
<path d="
|
|
5
|
-
<path d="M24 28V32M24 32H19M24 32H29" stroke="#78350F" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
|
-
<circle cx="19" cy="32" r="2" fill="#78350F"/>
|
|
7
|
-
<circle cx="29" cy="32" r="2" fill="#78350F"/>
|
|
4
|
+
<path d="M18.5 20H29.5M24 20V31" stroke="#78350F" stroke-width="3.5" stroke-linecap="round"/>
|
|
8
5
|
<path d="M15 37H33" stroke="#78350F" stroke-width="3" stroke-linecap="round"/>
|
|
9
6
|
</svg>
|
package/assets/taskchef.svg
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none">
|
|
2
2
|
<rect x="2" y="2" width="44" height="44" rx="11" fill="#D97706"/>
|
|
3
3
|
<path d="M15 37V27.5C11.9 26.3 10 23.6 10 20.5C10 16.4 13.4 13 17.5 13C19 10 21.2 8.5 24 8.5C26.8 8.5 29 10 30.5 13C34.6 13 38 16.4 38 20.5C38 23.6 36.1 26.3 33 27.5V37H15Z" fill="#FFF7ED"/>
|
|
4
|
-
<path d="
|
|
5
|
-
<path d="M24 28V32M24 32H19M24 32H29" stroke="#7C2D12" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
|
-
<circle cx="19" cy="32" r="2" fill="#7C2D12"/>
|
|
7
|
-
<circle cx="29" cy="32" r="2" fill="#7C2D12"/>
|
|
4
|
+
<path d="M18.5 20H29.5M24 20V31" stroke="#7C2D12" stroke-width="3.5" stroke-linecap="round"/>
|
|
8
5
|
<path d="M15 37H33" stroke="#7C2D12" stroke-width="3" stroke-linecap="round"/>
|
|
9
6
|
</svg>
|
package/package.json
CHANGED
package/src/dashboard/actions.js
CHANGED
package/src/dashboard/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<meta name="color-scheme" content="light dark">
|
|
7
|
-
<title>TaskChef
|
|
7
|
+
<title>TaskChef Dashboard</title>
|
|
8
8
|
<link rel="stylesheet" href="/styles.css">
|
|
9
9
|
<script src="/app.js" type="module"></script>
|
|
10
10
|
</head>
|
|
@@ -12,7 +12,13 @@
|
|
|
12
12
|
<header class="site-header">
|
|
13
13
|
<div>
|
|
14
14
|
<p class="eyebrow">TaskChef</p>
|
|
15
|
-
<
|
|
15
|
+
<div class="title-row">
|
|
16
|
+
<picture class="dashboard-icon" aria-hidden="true">
|
|
17
|
+
<source srcset="/assets/taskchef-dark.svg" media="(prefers-color-scheme: dark)">
|
|
18
|
+
<img src="/assets/taskchef.svg" alt="" width="48" height="48">
|
|
19
|
+
</picture>
|
|
20
|
+
<h1>TaskChef Dashboard</h1>
|
|
21
|
+
</div>
|
|
16
22
|
<p class="subtitle">Latest delegated work, updated as TaskChef reports change.</p>
|
|
17
23
|
</div>
|
|
18
24
|
<div class="connection" role="status" aria-live="polite">
|
package/src/dashboard/styles.css
CHANGED
|
@@ -45,6 +45,11 @@ h1 { margin-bottom: 6px; font-size: clamp(2rem, 5vw, 3.4rem); line-height: 1; le
|
|
|
45
45
|
h2 { line-height: 1.2; }
|
|
46
46
|
h3 { margin-bottom: 8px; font-size: 0.84rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
|
|
47
47
|
|
|
48
|
+
.title-row { display: flex; align-items: center; gap: clamp(10px, 2vw, 16px); margin-bottom: 6px; }
|
|
49
|
+
.title-row h1 { margin-bottom: 0; }
|
|
50
|
+
.dashboard-icon { display: block; flex: none; width: clamp(38px, 6vw, 48px); aspect-ratio: 1; }
|
|
51
|
+
.dashboard-icon img { display: block; width: 100%; height: 100%; object-fit: contain; }
|
|
52
|
+
|
|
48
53
|
.eyebrow { margin-bottom: 10px; color: var(--accent); font-size: 0.78rem; font-weight: 750; letter-spacing: 0.15em; text-transform: uppercase; }
|
|
49
54
|
.subtitle, .task-project, time { color: var(--muted); }
|
|
50
55
|
.subtitle { margin-bottom: 0; }
|
|
@@ -120,6 +125,7 @@ pre { max-height: 280px; margin: 0; padding: 14px; overflow: auto; border-radius
|
|
|
120
125
|
|
|
121
126
|
@media (max-width: 650px) {
|
|
122
127
|
.site-header { align-items: flex-start; padding-top: 32px; }
|
|
128
|
+
.title-row { align-items: flex-start; }
|
|
123
129
|
.toolbar { align-items: stretch; flex-direction: column; }
|
|
124
130
|
.toolbar label, .toolbar select { width: 100%; }
|
|
125
131
|
.task-count { margin: 0; }
|
package/src/dashboard.js
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
|
|
20
20
|
const TASKS_FILE_NAME = "tasks.jsonl";
|
|
21
21
|
const STATIC_ROOT = fileURLToPath(new URL("./dashboard/", import.meta.url));
|
|
22
|
+
const ASSET_ROOT = fileURLToPath(new URL("../assets/", import.meta.url));
|
|
22
23
|
const LOOPBACK_HOSTS = new Set(["127.0.0.1", "::1"]);
|
|
23
24
|
const DEFAULT_MAX_FILE_BYTES = 16 * 1024 * 1024;
|
|
24
25
|
const DEFAULT_MAX_TASKS = 2_000;
|
|
@@ -36,11 +37,13 @@ const CONTENT_SECURITY_POLICY = [
|
|
|
36
37
|
].join("; ");
|
|
37
38
|
|
|
38
39
|
const STATIC_FILES = new Map([
|
|
39
|
-
["/", ["index.html", "text/html; charset=utf-8"]],
|
|
40
|
-
["/actions.js", ["actions.js", "text/javascript; charset=utf-8"]],
|
|
41
|
-
["/app.js", ["app.js", "text/javascript; charset=utf-8"]],
|
|
42
|
-
["/state.js", ["state.js", "text/javascript; charset=utf-8"]],
|
|
43
|
-
["/styles.css", ["styles.css", "text/css; charset=utf-8"]],
|
|
40
|
+
["/", [path.join(STATIC_ROOT, "index.html"), "text/html; charset=utf-8"]],
|
|
41
|
+
["/actions.js", [path.join(STATIC_ROOT, "actions.js"), "text/javascript; charset=utf-8"]],
|
|
42
|
+
["/app.js", [path.join(STATIC_ROOT, "app.js"), "text/javascript; charset=utf-8"]],
|
|
43
|
+
["/state.js", [path.join(STATIC_ROOT, "state.js"), "text/javascript; charset=utf-8"]],
|
|
44
|
+
["/styles.css", [path.join(STATIC_ROOT, "styles.css"), "text/css; charset=utf-8"]],
|
|
45
|
+
["/assets/taskchef-dark.svg", [path.join(ASSET_ROOT, "taskchef-dark.svg"), "image/svg+xml"]],
|
|
46
|
+
["/assets/taskchef.svg", [path.join(ASSET_ROOT, "taskchef.svg"), "image/svg+xml"]],
|
|
44
47
|
]);
|
|
45
48
|
|
|
46
49
|
export function dashboardAuthority(host, port) {
|
|
@@ -494,7 +497,7 @@ export async function createDashboardServer({
|
|
|
494
497
|
if (isCodexThreadDeepLinkId(task.threadId)) {
|
|
495
498
|
if (openThread) await openThread(task.threadId);
|
|
496
499
|
else await openThreadInCodex(task.threadId);
|
|
497
|
-
sendJson(response, 202, {
|
|
500
|
+
sendJson(response, 202, {});
|
|
498
501
|
return;
|
|
499
502
|
}
|
|
500
503
|
const trustedProject = (await readConfig(monitor.workspace, { checkPaths: false })).projects
|
|
@@ -539,8 +542,8 @@ export async function createDashboardServer({
|
|
|
539
542
|
sendJson(response, 404, { message: "Not found." });
|
|
540
543
|
return;
|
|
541
544
|
}
|
|
542
|
-
const [
|
|
543
|
-
const body = await readFile(
|
|
545
|
+
const [filePath, contentType] = staticFile;
|
|
546
|
+
const body = await readFile(filePath);
|
|
544
547
|
response.writeHead(200, securityHeaders(contentType));
|
|
545
548
|
response.end(method === "HEAD" ? undefined : body);
|
|
546
549
|
};
|