@beastmode-develeap/beastmode 0.1.381 → 0.1.383

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__ = "20260606-185533-1b2cd0e";</script>
18
+ <script>window.__BUILD_STAMP__ = "20260607-063424-c8daaad";</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">
@@ -8707,6 +8707,7 @@ function CodebaseGuidePanel({ projectName }) {
8707
8707
  const [expanded, setExpanded] = useState(false);
8708
8708
  const [error, setError] = useState(null);
8709
8709
  const [stale, setStale] = useState(false);
8710
+ const [versionTracked, setVersionTracked] = useState(true);
8710
8711
 
8711
8712
  const fetchStatus = useCallback(async () => {
8712
8713
  try {
@@ -8715,11 +8716,15 @@ function CodebaseGuidePanel({ projectName }) {
8715
8716
  setStatus(next);
8716
8717
  setFailureReason((data && data.failure_reason) || null);
8717
8718
  setStale(Boolean(data && data.stale));
8719
+ // FR-2: a non-git project is signalled by version_tracked === false in the
8720
+ // status response. Default to tracked unless the API explicitly says false.
8721
+ setVersionTracked(!(data && data.version_tracked === false));
8718
8722
  return next;
8719
8723
  } catch (e) {
8720
8724
  setStatus('idle');
8721
8725
  setFailureReason(null);
8722
8726
  setStale(false);
8727
+ setVersionTracked(true);
8723
8728
  return 'idle';
8724
8729
  }
8725
8730
  }, [projectName]);
@@ -8764,6 +8769,7 @@ function CodebaseGuidePanel({ projectName }) {
8764
8769
  setExpanded(false);
8765
8770
  setFailureReason(null);
8766
8771
  setStale(false);
8772
+ setVersionTracked(true);
8767
8773
  await api('POST', '/api/projects/' + projectName + '/analyze?force=true', {});
8768
8774
  setStatus('running');
8769
8775
  } catch (e) {
@@ -8772,8 +8778,13 @@ function CodebaseGuidePanel({ projectName }) {
8772
8778
  };
8773
8779
 
8774
8780
  const isStale = (status === 'complete' || status === 'cached') && stale;
8781
+ // FR-2/FR-5: untracked is a defined, distinct analyzed state. It is mutually
8782
+ // exclusive with stale (a non-git project can never be detected as stale) and
8783
+ // takes precedence over the plain "✓ Analyzed" branch, but NOT over isStale.
8784
+ const isUntracked = (status === 'complete' || status === 'cached') && !isStale && !versionTracked;
8775
8785
  const pillLabel =
8776
8786
  isStale ? '⚠ Stale — HEAD advanced'
8787
+ : isUntracked ? 'ⓘ Not version-controlled'
8777
8788
  : status === 'complete' ? '✓ Analyzed'
8778
8789
  : status === 'cached' ? '✓ Analyzed'
8779
8790
  : status === 'running' ? '⏳ Analyzing…'
@@ -8783,10 +8794,15 @@ function CodebaseGuidePanel({ projectName }) {
8783
8794
  : '—';
8784
8795
  const pillBg =
8785
8796
  isStale ? 'var(--warning)'
8797
+ : isUntracked ? 'var(--muted)'
8786
8798
  : (status === 'complete' || status === 'cached') ? 'var(--success)'
8787
8799
  : status === 'running' ? 'var(--warning)'
8788
8800
  : status === 'failed' ? 'var(--danger)'
8789
8801
  : 'var(--muted)';
8802
+ const pillTitle =
8803
+ isUntracked ? 'This project is not under version control, so guide staleness cannot be detected. Re-analyze manually after the source changes.'
8804
+ : status === 'failed' && failureReason ? ('Failure: ' + failureReason)
8805
+ : '';
8790
8806
  const pillStyle = 'display:inline-block;padding:2px 8px;border-radius:10px;background:' + pillBg + ';color:white;font-size:11px;font-weight:600;';
8791
8807
 
8792
8808
  const canShowContent = (status === 'complete' || status === 'cached');
@@ -8799,8 +8815,9 @@ function CodebaseGuidePanel({ projectName }) {
8799
8815
  <div style="display:flex;align-items:center;justify-content:space-between;gap:8px;">
8800
8816
  <div style="display:flex;align-items:center;gap:8px;">
8801
8817
  <span style="font-size:12px;color:var(--text-secondary);">Codebase Guide</span>
8802
- <span data-testid=${'guide-status-pill-' + projectName} style=${pillStyle} title=${status === 'failed' && failureReason ? ('Failure: ' + failureReason) : ''}>${pillLabel}</span>
8818
+ <span data-testid=${'guide-status-pill-' + projectName} style=${pillStyle} title=${pillTitle}>${pillLabel}</span>
8803
8819
  ${isStale ? html`<span data-testid=${'guide-stale-badge-' + projectName} style="display:none;"></span>` : null}
8820
+ ${isUntracked ? html`<span data-testid=${'guide-untracked-badge-' + projectName} style="display:none;"></span>` : null}
8804
8821
  </div>
8805
8822
  <div style="display:flex;gap:6px;">
8806
8823
  ${canShowContent ? html`
@@ -1 +1 @@
1
- 1b2cd0e0799ed2d5cfc1b36cd85a4fcf989f5709
1
+ c8daaada44888169567e468189c0a5524ac4087c
@@ -1 +1 @@
1
- 20260606-185533-1b2cd0e
1
+ 20260607-063424-c8daaad
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beastmode-develeap/beastmode",
3
- "version": "0.1.381",
3
+ "version": "0.1.383",
4
4
  "description": "BeastMode Dark Factory — turn intent into verified software",
5
5
  "type": "module",
6
6
  "bin": {