@beastmode-develeap/beastmode 0.1.179 → 0.1.180

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.
@@ -15,7 +15,7 @@
15
15
  }
16
16
  </script>
17
17
  <!--BOARD_DATA-->
18
- <script>window.__BUILD_STAMP__ = "20260507-062410-80e7997";</script>
18
+ <script>window.__BUILD_STAMP__ = "20260507-074735-3f990f4";</script>
19
19
  <link rel="preconnect" href="https://fonts.googleapis.com">
20
20
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
21
21
  <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
@@ -2509,6 +2509,21 @@ input[type="range"]::-webkit-slider-thumb {
2509
2509
  .badge-info { background: var(--info-subtle); color: var(--info); }
2510
2510
  .badge-muted { background: var(--surface-elevated); color: var(--text-muted); }
2511
2511
  .badge-accent { background: var(--accent-subtle); color: var(--accent); }
2512
+ .badge-restart {
2513
+ display: inline-block;
2514
+ padding: 2px 6px;
2515
+ border-radius: 3px;
2516
+ font-size: 10px;
2517
+ font-weight: 600;
2518
+ background: rgba(249, 115, 22, 0.15);
2519
+ color: #fb923c;
2520
+ border: 1px solid rgba(249, 115, 22, 0.3);
2521
+ margin-left: 6px;
2522
+ cursor: help;
2523
+ vertical-align: middle;
2524
+ text-transform: uppercase;
2525
+ letter-spacing: 0.5px;
2526
+ }
2512
2527
 
2513
2528
  /* ================================================================
2514
2529
  SKELETON LOADING
@@ -8179,7 +8194,12 @@ function HelpPage() {
8179
8194
  // /api/telemetry/status (proxied to the board, which reads the daemon's
8180
8195
  // last heartbeat). Always renders — shows "Disabled" with a red dot
8181
8196
  // when telemetry is off, full metrics when on. See docs/telemetry.md.
8182
- function TelemetrySettings() {
8197
+ function RestartBadge({field, restartFields}) {
8198
+ if (!restartFields || !restartFields.has(field)) return null;
8199
+ return html`<span class="badge-restart" title="Changing this field requires a daemon restart to take effect">restart required</span>`;
8200
+ }
8201
+
8202
+ function TelemetrySettings({restartFields}) {
8183
8203
  const [status, setStatus] = useState(null);
8184
8204
  const [loading, setLoading] = useState(true);
8185
8205
  const [loadError, setLoadError] = useState(null);
@@ -8196,7 +8216,7 @@ function TelemetrySettings() {
8196
8216
 
8197
8217
  return html`
8198
8218
  <div class="settings-section">
8199
- <h3>Telemetry</h3>
8219
+ <h3 style="display:flex;align-items:center;gap:8px">Telemetry <${RestartBadge} field="telemetry" restartFields=${restartFields} /></h3>
8200
8220
  ${loading ? html`<p style="font-size:13px;color:var(--text-muted);">Loading telemetry status...</p>` : null}
8201
8221
  ${loadError ? html`<p style="font-size:13px;color:var(--danger);">Telemetry status unavailable: ${loadError}</p>` : null}
8202
8222
  ${!loading && !loadError ? html`
@@ -8254,6 +8274,7 @@ function SettingsPage() {
8254
8274
  const [error, setError] = useState(null);
8255
8275
  const [success, setSuccess] = useState(null);
8256
8276
  const [saving, setSaving] = useState(false);
8277
+ const [restartFields, setRestartFields] = useState(new Set());
8257
8278
 
8258
8279
  useEffect(() => {
8259
8280
  api('GET', '/api/config')
@@ -8262,6 +8283,20 @@ function SettingsPage() {
8262
8283
  .finally(() => setLoading(false));
8263
8284
  }, []);
8264
8285
 
8286
+ useEffect(() => {
8287
+ api('GET', '/api/daemon/reload-categories')
8288
+ .then(data => {
8289
+ const cats = (data && data.categories) || {};
8290
+ const fields = new Set(
8291
+ Object.entries(cats)
8292
+ .filter(([_, v]) => v === 'restart')
8293
+ .map(([k]) => k)
8294
+ );
8295
+ setRestartFields(fields);
8296
+ })
8297
+ .catch(() => {});
8298
+ }, []);
8299
+
8265
8300
  const saveConfig = async (forceWrite = false) => {
8266
8301
  try {
8267
8302
  setSaving(true);
@@ -8696,7 +8731,7 @@ function SettingsPage() {
8696
8731
  </div>
8697
8732
 
8698
8733
  <!-- Telemetry Section (Gap 15) -->
8699
- <${TelemetrySettings} />
8734
+ <${TelemetrySettings} restartFields=${restartFields} />
8700
8735
  </div>
8701
8736
  </div>
8702
8737
  `;
@@ -1 +1 @@
1
- 80e79979abd745cd7807b4b463ed0023c13ac768
1
+ 3f990f4d8de08cb374c9645579bf78e12e82bcb1
@@ -1 +1 @@
1
- 20260507-062410-80e7997
1
+ 20260507-074735-3f990f4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beastmode-develeap/beastmode",
3
- "version": "0.1.179",
3
+ "version": "0.1.180",
4
4
  "description": "BeastMode Dark Factory — turn intent into verified software",
5
5
  "type": "module",
6
6
  "bin": {