@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/styles.css CHANGED
@@ -25,9 +25,9 @@
25
25
  --status-resuming: #3b82f6;
26
26
  --status-skipped: #94a3b8;
27
27
  /* legacy */
28
- --status-in-progress: #f59e0b;
28
+ --status-in-progress: #3b82f6;
29
29
  --status-error: #ef4444;
30
- --status-blocked: #3b82f6;
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-in-progress);
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, #3b82f6);
580
+ background: var(--status-blocked, #f59e0b);
581
581
  }
582
582
 
583
583
  .timing-bar-tools {
584
- background: var(--status-in-progress, #f59e0b);
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.1-rc.5",
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 = 300;
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
  }