@beastmode-develeap/beastmode 0.1.219 → 0.1.221

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__ = "20260510-082027-2a5bef7";</script>
18
+ <script>window.__BUILD_STAMP__ = "20260510-103957-38c7501";</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">
@@ -5596,22 +5596,25 @@ function ItemDetailSidebar({ item, onClose, onStatusChange, selectedProject, all
5596
5596
  .catch(() => setEnvTimeline(null));
5597
5597
  }, [item && item.id, item && item.extra && item.extra.current_env]);
5598
5598
 
5599
- // FR-4: Fetch SupersededTransition audit events for the selected item.
5600
- // Only fires when the item is in Superseded statusnon-Superseded items
5601
- // never have audit entries and the section is hidden anyway (NFR-4).
5599
+ // Fetch audit events (SupersededTransition + DoneTransition) for the
5600
+ // selected item. Only fires when the item is Superseded or Done other
5601
+ // statuses never have audit entries and the section is hidden anyway.
5602
5602
  useEffect(() => {
5603
- if (!item || item.status !== 'Superseded') {
5603
+ if (!item || (item.status !== 'Superseded' && item.status !== 'Done')) {
5604
5604
  setAuditEvents([]);
5605
5605
  return;
5606
5606
  }
5607
- const proj = selectedProject && selectedProject !== 'all' ? selectedProject : null;
5608
- const qs = proj ? '?board=' + encodeURIComponent(proj) : '';
5607
+ const proj = localStorage.getItem('beastmode-selected-project') || '';
5608
+ const qs = (proj && proj !== 'all') ? '?board=' + encodeURIComponent(proj) : '';
5609
5609
  const sep = qs ? '&' : '?';
5610
- const url = '/api/events' + qs + sep + 'item_id=' + encodeURIComponent(item.id) +
5611
- '&type=SupersededTransition';
5610
+ const url = '/api/events' + qs + sep + 'item_id=' + encodeURIComponent(item.id);
5612
5611
  fetch(url)
5613
5612
  .then(r => r.ok ? r.json() : [])
5614
- .then(events => setAuditEvents(Array.isArray(events) ? events : []))
5613
+ .then(events => {
5614
+ const list = Array.isArray(events) ? events : [];
5615
+ const filtered = list.filter(ev => ev.type === 'SupersededTransition' || ev.type === 'DoneTransition');
5616
+ setAuditEvents(filtered);
5617
+ })
5615
5618
  .catch(() => setAuditEvents([]));
5616
5619
  }, [item && item.id, item && item.status]);
5617
5620
 
@@ -5958,17 +5961,19 @@ function ItemDetailSidebar({ item, onClose, onStatusChange, selectedProject, all
5958
5961
  </div>
5959
5962
  </div>
5960
5963
  `}
5961
- ${item && item.status === 'Superseded' && auditEvents.length > 0 && html`
5964
+ ${item && (item.status === 'Superseded' || item.status === 'Done') && auditEvents.length > 0 && html`
5962
5965
  <div class="detail-section" style="padding:12px 24px 0;" data-testid="audit-trail-section">
5963
5966
  <h4 class="detail-section-title" style="margin:0 0 8px 0;font-size:13px;font-weight:600;">Audit Trail</h4>
5964
5967
  <div class="audit-timeline">
5965
5968
  ${auditEvents.map(ev => {
5966
5969
  const payload = (ev && ev.payload) || {};
5967
5970
  const isCascade = ev.actor === 'cascade';
5971
+ const isDone = ev.type === 'DoneTransition';
5972
+ const actorLabel = isCascade ? 'Auto-cascaded' : isDone ? 'Marked Done' : 'Status changed';
5968
5973
  return html`
5969
5974
  <div class="audit-entry" key=${ev.id} data-testid="audit-entry">
5970
5975
  <div class="audit-entry-header">
5971
- <span class="audit-actor" data-testid="audit-actor">${isCascade ? 'Auto-cascaded' : 'Status changed'}</span>
5976
+ <span class="audit-actor" data-testid="audit-actor">${actorLabel}</span>
5972
5977
  <span class="audit-time" data-testid="audit-time">${timeAgo(ev.timestamp)}</span>
5973
5978
  </div>
5974
5979
  <div class="audit-entry-body">
@@ -1 +1 @@
1
- 2a5bef72296b63070f92f48ee7421a46331f1987
1
+ 38c7501f5811224eedd77b948aee57ea30897325
@@ -1 +1 @@
1
- 20260510-082027-2a5bef7
1
+ 20260510-103957-38c7501
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beastmode-develeap/beastmode",
3
- "version": "0.1.219",
3
+ "version": "0.1.221",
4
4
  "description": "BeastMode Dark Factory — turn intent into verified software",
5
5
  "type": "module",
6
6
  "bin": {