moflo 4.9.23 → 4.9.24

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.
@@ -94,7 +94,7 @@ Practical floors:
94
94
  | Namespace | Contents | Written by | Read by |
95
95
  |-----------|----------|------------|---------|
96
96
  | `scheduled-spells` | `SpellSchedule` records (id, spellName, timing, nextRunAt, enabled, args) | `flo spell schedule create`, definition load | Scheduler poll loop, `flo spell schedule list` |
97
- | `schedule-executions` | `ScheduleExecution` audit records (startedAt, completedAt, success, error, duration, manualRun) | Scheduler at execute-start and execute-end | The Arcane Console, `flo spell schedule executions` |
97
+ | `schedule-executions` | `ScheduleExecution` audit records (startedAt, completedAt, success, error, duration, manualRun) | Scheduler at execute-start and execute-end | The Luminarium, `flo spell schedule executions` |
98
98
 
99
99
  When debugging "did my schedule fire?", read `schedule-executions` directly via `mcp__moflo__memory_list namespace=schedule-executions` if the CLI is unavailable.
100
100
 
@@ -4,7 +4,7 @@ Phase-by-phase notes for the full `/flo <issue>` run. Phase 2 (Ticket) lives in
4
4
 
5
5
  ## Phase 0: Record run start (Flo Runs dashboard)
6
6
 
7
- Before research, write a row to the `tasklist` namespace so the Arcane Console "Flo Runs" tab shows this run live and after the next session restart (#968). Skip this phase ONLY when `--epic-branch` is set — the epic orchestrator owns the parent record and the per-story spell engine writes its own row.
7
+ Before research, write a row to the `tasklist` namespace so the Luminarium "Flo Runs" tab shows this run live and after the next session restart (#968). Skip this phase ONLY when `--epic-branch` is set — the epic orchestrator owns the parent record and the per-story spell engine writes its own row.
8
8
 
9
9
  Compute and **remember** for Phase 5:
10
10
  - `runId` — `flo-<issue-number-or-"new">-<startedAt-ms>` (sortable, unique).
@@ -125,7 +125,7 @@ npx flo spell schedule executions --schedule <schedule-id> 2>&1
125
125
 
126
126
  `executions` reads from the daemon-written `schedule-executions` namespace and shows started time, status (success/failed/running), duration, and whether the run was manual. This is the only command that proves a schedule actually fired — `flo spell schedule list` only shows the schedule definition.
127
127
 
128
- If the user wants to wait for the first fire (interval ≤ 5m), poll `flo spell schedule executions --schedule <id>` or watch The Arcane Console (the daemon's localhost UI). Otherwise, summarize and exit:
128
+ If the user wants to wait for the first fire (interval ≤ 5m), poll `flo spell schedule executions --schedule <id>` or watch The Luminarium (the daemon's localhost UI). Otherwise, summarize and exit:
129
129
 
130
130
  ```
131
131
  Scheduled: <schedule-id>
package/README.md CHANGED
@@ -419,7 +419,7 @@ flo daemon status # shows whether the service is registered AND running
419
419
 
420
420
  `flo spell schedule create` warns when the daemon isn't installed so you don't quietly miss runs.
421
421
 
422
- **Monitoring.** **The Arcane Console** (the moflo daemon's localhost UI) surfaces live schedules, recent executions, and per-schedule controls (disable / re-enable / run now). It starts alongside the daemon at `http://localhost:3117` (override with `--dashboard-port` or disable with `--no-dashboard`).
422
+ **Monitoring.** **The Luminarium** (the moflo daemon's localhost UI) surfaces live schedules, recent executions, and per-schedule controls (disable / re-enable / run now). It starts alongside the daemon at `http://localhost:3117` (override with `--dashboard-port` or disable with `--no-dashboard`).
423
423
 
424
424
  For full configuration (`scheduler:` block in `moflo.yaml`), event types, and the catch-up window after restarts, see [docs/SPELLS.md#scheduling](docs/SPELLS.md#scheduling).
425
425
 
@@ -128,7 +128,7 @@ const startCommand = {
128
128
  `Max Concurrent: ${status.config.maxConcurrent}`,
129
129
  `Max CPU Load: ${status.config.resourceThresholds.maxCpuLoad}`,
130
130
  `Min Free Memory: ${status.config.resourceThresholds.minFreeMemoryPercent}%`,
131
- ...(dashboard ? [`The Arcane Console: http://localhost:${dashboard.port}`] : []),
131
+ ...(dashboard ? [`The Luminarium: http://localhost:${dashboard.port}`] : []),
132
132
  ].join('\n'), 'Daemon Status');
133
133
  output.writeln();
134
134
  output.writeln(output.bold('Scheduled Workers'));
@@ -215,10 +215,10 @@ async function attachDaemonServices(daemon, opts) {
215
215
  schedulerEnabledInConfig: schedulerConfig.enabled,
216
216
  });
217
217
  if (opts.verbose)
218
- output.printSuccess(`The Arcane Console: http://localhost:${dashboard.port}`);
218
+ output.printSuccess(`The Luminarium: http://localhost:${dashboard.port}`);
219
219
  }
220
220
  catch (err) {
221
- logWarn(`The Arcane Console failed to start: ${errorDetail(err)}`);
221
+ logWarn(`The Luminarium failed to start: ${errorDetail(err)}`);
222
222
  }
223
223
  }
224
224
  if (!schedulerConfig.enabled) {
@@ -378,7 +378,7 @@ async function startBackgroundDaemon(projectRoot, quiet, maxCpuLoad, minFreeMemo
378
378
  if (!quiet) {
379
379
  output.printSuccess(`Daemon started in background (PID: ${pid})`);
380
380
  if (!noDashboard) {
381
- output.printInfo(`The Arcane Console: http://localhost:${dashboardPort ?? DEFAULT_DASHBOARD_PORT}`);
381
+ output.printInfo(`The Luminarium: http://localhost:${dashboardPort ?? DEFAULT_DASHBOARD_PORT}`);
382
382
  }
383
383
  output.printInfo(`Logs: ${logFile}`);
384
384
  output.printInfo(`Stop with: claude-flow daemon stop`);
@@ -1,7 +1,7 @@
1
1
  /**
2
- * The Arcane Console — Lightweight localhost HTTP server
2
+ * The Luminarium — Lightweight localhost HTTP server
3
3
  *
4
- * Serves the moflo Arcane Console (read-only daemon view) for status,
4
+ * Serves the moflo Luminarium (read-only daemon view) for status,
5
5
  * scheduled spells, executions, and memory stats. Binds to 127.0.0.1
6
6
  * only (no auth needed).
7
7
  *
@@ -560,10 +560,10 @@ const DASHBOARD_HTML = `<!DOCTYPE html>
560
560
  <head>
561
561
  <meta charset="utf-8">
562
562
  <meta name="viewport" content="width=device-width, initial-scale=1">
563
- <title>The Arcane Console</title>
564
- <meta name="description" content="The Arcane Console — moflo daemon, scheduled spells, and live event stream">
565
- <meta property="og:title" content="The Arcane Console">
566
- <meta property="og:description" content="The Arcane Console — moflo daemon, scheduled spells, and live event stream">
563
+ <title>The Luminarium</title>
564
+ <meta name="description" content="The Luminarium — moflo daemon, scheduled spells, and live event stream">
565
+ <meta property="og:title" content="The Luminarium">
566
+ <meta property="og:description" content="The Luminarium — moflo daemon, scheduled spells, and live event stream">
567
567
  <link rel="preconnect" href="https://fonts.googleapis.com">
568
568
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
569
569
  <link href="https://fonts.googleapis.com/css2?family=Cinzel+Decorative:wght@700;900&display=swap" rel="stylesheet">
@@ -575,13 +575,18 @@ const DASHBOARD_HTML = `<!DOCTYPE html>
575
575
  title still reads "arcane" if the user is offline or behind a font-CDN
576
576
  block (Georgia ships everywhere; serif is the universal fallback). */
577
577
  h1 { font-family: 'Cinzel Decorative', 'Cinzel', 'Trajan Pro', 'Palatino Linotype', 'Book Antiqua', Georgia, serif; font-weight: 900; letter-spacing: 0.04em; margin-bottom: 4px; font-size: 1.85rem; }
578
- /* Per-word arcane palette. Hues chosen at L≈45-50%, S≈60-70% so they read on
579
- both #0d1117 (dark) and #ffffff (light) WCAG-AA at large-text size on
580
- both. Each word's shadow matches its own hue so the glow doesn't bleed
581
- a single color across all three. */
582
- h1 .w-the { color: #8b5cf6; text-shadow: 0 0 18px rgba(139, 92, 246, 0.18); }
583
- h1 .w-arcane { color: #2563eb; text-shadow: 0 0 18px rgba(37, 99, 235, 0.18); }
584
- h1 .w-console { color: #059669; text-shadow: 0 0 18px rgba(5, 150, 105, 0.18); }
578
+ /* Luminous gradient flowing across the whole title (amber pale gold → pale
579
+ cyan). background-clip: text paints the gradient through the glyphs;
580
+ color: transparent reveals it. text-shadow doesn't paint on transparent
581
+ text, so the glow uses filter: drop-shadow which respects rendered
582
+ glyph shape. Mid-gradient hue chosen for the glow tint. */
583
+ h1 .luminarium-title {
584
+ background: linear-gradient(90deg, #f59e0b 0%, #fde68a 50%, #67e8f4 100%);
585
+ -webkit-background-clip: text;
586
+ background-clip: text;
587
+ color: transparent;
588
+ filter: drop-shadow(0 0 14px rgba(253, 230, 138, 0.22));
589
+ }
585
590
  h2 { color: #8b949e; font-size: 1.1rem; margin: 16px 0 12px; border-bottom: 1px solid #21262d; padding-bottom: 6px; }
586
591
  .header { display: flex; align-items: baseline; gap: 12px; margin-bottom: 16px; }
587
592
  .subtitle { color: #8b949e; font-size: 0.85rem; }
@@ -629,7 +634,7 @@ const DASHBOARD_HTML = `<!DOCTYPE html>
629
634
  </head>
630
635
  <body>
631
636
  <div class="header">
632
- <h1><span class="w-the">The</span> <span class="w-arcane">Arcane</span> <span class="w-console">Console</span></h1>
637
+ <h1><span class="luminarium-title">The Luminarium</span></h1>
633
638
  <span class="subtitle">moflo daemon &bull; localhost</span>
634
639
  </div>
635
640
  <div id="status-bar" class="status-bar"><div class="empty">Loading...</div></div>
@@ -2,5 +2,5 @@
2
2
  * Auto-generated by build. Do not edit manually.
3
3
  * Source of truth: root package.json → scripts/sync-version.mjs
4
4
  */
5
- export const VERSION = '4.9.23';
5
+ export const VERSION = '4.9.24';
6
6
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "moflo",
3
- "version": "4.9.23",
3
+ "version": "4.9.24",
4
4
  "description": "MoFlo — AI agent orchestration for Claude Code. A standalone, opinionated toolkit with semantic memory, learned routing, gates, spells, and the /flo issue-execution skill.",
5
5
  "main": "dist/src/cli/index.js",
6
6
  "type": "module",
@@ -84,7 +84,7 @@
84
84
  "@typescript-eslint/eslint-plugin": "^7.18.0",
85
85
  "@typescript-eslint/parser": "^7.18.0",
86
86
  "eslint": "^8.0.0",
87
- "moflo": "^4.9.22",
87
+ "moflo": "^4.9.23",
88
88
  "tsx": "^4.21.0",
89
89
  "typescript": "^5.9.3",
90
90
  "vitest": "^4.0.0"