@worca/ui 0.3.1-rc.5 → 0.5.0
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/app/favicon-global.svg +5 -0
- package/app/favicon-project.svg +5 -0
- package/app/index.html +1 -0
- package/app/main.bundle.js +644 -609
- package/app/main.bundle.js.map +3 -3
- package/app/styles.css +24 -5
- package/package.json +2 -1
- package/server/app.js +10 -0
- package/server/ws-beads-watcher.js +1 -1
- package/server/ws-message-router.js +6 -0
package/app/styles.css
CHANGED
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
--status-resuming: #3b82f6;
|
|
26
26
|
--status-skipped: #94a3b8;
|
|
27
27
|
/* legacy */
|
|
28
|
-
--status-in-progress: #
|
|
28
|
+
--status-in-progress: #3b82f6;
|
|
29
29
|
--status-error: #ef4444;
|
|
30
|
-
--status-blocked: #
|
|
30
|
+
--status-blocked: #f59e0b;
|
|
31
31
|
|
|
32
32
|
/* Log viewer */
|
|
33
33
|
--log-bg: #0f172a;
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
/* Shoelace token mapping */
|
|
48
48
|
--sl-color-primary-600: var(--accent);
|
|
49
49
|
--sl-color-success-600: var(--status-completed);
|
|
50
|
-
--sl-color-warning-600: var(--status-
|
|
50
|
+
--sl-color-warning-600: var(--status-blocked);
|
|
51
51
|
--sl-color-danger-600: var(--status-error);
|
|
52
52
|
--sl-color-neutral-600: var(--status-pending);
|
|
53
53
|
--sl-border-radius-medium: var(--radius);
|
|
@@ -577,11 +577,11 @@ h1, h2, h3, h4, h5, h6 {
|
|
|
577
577
|
}
|
|
578
578
|
|
|
579
579
|
.timing-bar-thinking {
|
|
580
|
-
background: var(--status-blocked, #
|
|
580
|
+
background: var(--status-blocked, #f59e0b);
|
|
581
581
|
}
|
|
582
582
|
|
|
583
583
|
.timing-bar-tools {
|
|
584
|
-
background: var(--status-in-progress, #
|
|
584
|
+
background: var(--status-in-progress, #3b82f6);
|
|
585
585
|
}
|
|
586
586
|
|
|
587
587
|
.timing-bar-rest {
|
|
@@ -2323,6 +2323,21 @@ sl-option.template-grouped::part(suffix) {
|
|
|
2323
2323
|
padding: 0 0 4px;
|
|
2324
2324
|
}
|
|
2325
2325
|
|
|
2326
|
+
/* Fix contrast on selected/current option description */
|
|
2327
|
+
sl-option.template-grouped[aria-selected="true"]::part(suffix),
|
|
2328
|
+
sl-option.template-grouped:focus::part(suffix) {
|
|
2329
|
+
color: inherit;
|
|
2330
|
+
opacity: 0.85;
|
|
2331
|
+
}
|
|
2332
|
+
|
|
2333
|
+
/* Selected template description below dropdown */
|
|
2334
|
+
.template-description {
|
|
2335
|
+
font-size: 12px;
|
|
2336
|
+
color: var(--muted);
|
|
2337
|
+
margin-top: 6px;
|
|
2338
|
+
line-height: 1.5;
|
|
2339
|
+
}
|
|
2340
|
+
|
|
2326
2341
|
/* Plan file autocomplete */
|
|
2327
2342
|
.plan-autocomplete {
|
|
2328
2343
|
position: relative;
|
|
@@ -2598,6 +2613,10 @@ sl-option.template-grouped::part(suffix) {
|
|
|
2598
2613
|
border-style: dashed;
|
|
2599
2614
|
}
|
|
2600
2615
|
|
|
2616
|
+
.beads-kanban-card--in_progress {
|
|
2617
|
+
border-color: var(--status-in-progress);
|
|
2618
|
+
}
|
|
2619
|
+
|
|
2601
2620
|
.beads-kanban-card-header {
|
|
2602
2621
|
display: flex;
|
|
2603
2622
|
align-items: center;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@worca/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Pipeline monitoring UI for worca-cc",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Sinisha Djukic",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"server/*.js",
|
|
27
27
|
"!server/*.test.js",
|
|
28
28
|
"!server/test/",
|
|
29
|
+
"app/favicon-*.svg",
|
|
29
30
|
"app/index.html",
|
|
30
31
|
"app/main.bundle.js",
|
|
31
32
|
"app/main.bundle.js.map",
|
package/server/app.js
CHANGED
|
@@ -427,6 +427,16 @@ export function createApp(options = {}) {
|
|
|
427
427
|
);
|
|
428
428
|
}
|
|
429
429
|
|
|
430
|
+
// ─── Dynamic favicon ──────────────────────────────────────────────────
|
|
431
|
+
// Serve mode-specific favicon before express.static so it takes precedence.
|
|
432
|
+
app.get('/favicon.svg', (_req, res) => {
|
|
433
|
+
const faviconFile = projectRoot
|
|
434
|
+
? 'favicon-project.svg'
|
|
435
|
+
: 'favicon-global.svg';
|
|
436
|
+
res.setHeader('Content-Type', 'image/svg+xml');
|
|
437
|
+
res.sendFile(faviconFile, { root: appDir });
|
|
438
|
+
});
|
|
439
|
+
|
|
430
440
|
app.use(express.static(appDir));
|
|
431
441
|
app.get('/{*splat}', (_req, res) => {
|
|
432
442
|
res.sendFile('index.html', { root: appDir });
|
|
@@ -8,7 +8,7 @@ import { existsSync, watch } from 'node:fs';
|
|
|
8
8
|
import { join, resolve } from 'node:path';
|
|
9
9
|
import { listIssues } from './beads-reader.js';
|
|
10
10
|
|
|
11
|
-
const BEADS_DEBOUNCE_MS =
|
|
11
|
+
const BEADS_DEBOUNCE_MS = 500;
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* @param {{ worcaDir: string, broadcaster: { broadcast: Function }, projectId?: string }} deps
|
|
@@ -614,6 +614,12 @@ export function createMessageRouter({
|
|
|
614
614
|
return;
|
|
615
615
|
}
|
|
616
616
|
const issues = await listIssuesByLabel(beadsDbPath, `run:${runId}`);
|
|
617
|
+
console.log(
|
|
618
|
+
'[list-beads-by-run] runId=%s count=%d statuses=%o',
|
|
619
|
+
runId,
|
|
620
|
+
issues.length,
|
|
621
|
+
issues.map((i) => i.status),
|
|
622
|
+
);
|
|
617
623
|
ws.send(JSON.stringify(makeOk(req, { issues, runId })));
|
|
618
624
|
return;
|
|
619
625
|
}
|