@beastmode-develeap/beastmode 0.1.244 → 0.1.246
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/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/web/board.html +37 -12
- package/dist/web/build-commit.txt +1 -1
- package/dist/web/build-stamp.txt +1 -1
- package/package.json +1 -1
package/dist/web/board.html
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
}
|
|
16
16
|
</script>
|
|
17
17
|
<!--BOARD_DATA-->
|
|
18
|
-
<script>window.__BUILD_STAMP__ = "20260514-
|
|
18
|
+
<script>window.__BUILD_STAMP__ = "20260514-103241-7d6137c";</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">
|
|
@@ -463,7 +463,7 @@ body {
|
|
|
463
463
|
min-height: 0;
|
|
464
464
|
}
|
|
465
465
|
.page-dashboard-main { min-width: 0; }
|
|
466
|
-
.page-dashboard-sidebar { min-width: 0; }
|
|
466
|
+
.page-dashboard-sidebar { min-width: 0; max-height: calc(100vh - 120px); overflow-y: auto; }
|
|
467
467
|
|
|
468
468
|
.page-centered {
|
|
469
469
|
max-width: 800px;
|
|
@@ -3172,16 +3172,11 @@ input[type="range"]::-webkit-slider-thumb {
|
|
|
3172
3172
|
}
|
|
3173
3173
|
.activity-list-wrapper {
|
|
3174
3174
|
position: relative;
|
|
3175
|
+
max-height: 320px;
|
|
3176
|
+
overflow-y: auto;
|
|
3175
3177
|
}
|
|
3176
3178
|
.activity-list-wrapper::after {
|
|
3177
|
-
|
|
3178
|
-
position: absolute;
|
|
3179
|
-
bottom: 0;
|
|
3180
|
-
left: 0;
|
|
3181
|
-
right: 0;
|
|
3182
|
-
height: 24px;
|
|
3183
|
-
background: linear-gradient(transparent, var(--bg-card));
|
|
3184
|
-
pointer-events: none;
|
|
3179
|
+
display: none;
|
|
3185
3180
|
}
|
|
3186
3181
|
/* Scenario × Environment Matrix */
|
|
3187
3182
|
.scenario-matrix-wrapper {
|
|
@@ -5575,9 +5570,28 @@ function ItemDetailSidebar({ item, onClose, onStatusChange, selectedProject, all
|
|
|
5575
5570
|
const [envTimeline, setEnvTimeline] = useState(null);
|
|
5576
5571
|
const [deployModal, setDeployModal] = useState(null);
|
|
5577
5572
|
const [auditEvents, setAuditEvents] = useState([]);
|
|
5573
|
+
const [pipelineConfig, setPipelineConfig] = useState(null);
|
|
5574
|
+
const [statusError, setStatusError] = useState('');
|
|
5578
5575
|
const sidebarRef = useRef(null);
|
|
5579
5576
|
const topCommentRef = useRef(null);
|
|
5580
5577
|
|
|
5578
|
+
useEffect(() => {
|
|
5579
|
+
api('GET', '/api/pipeline-config')
|
|
5580
|
+
.then(data => setPipelineConfig(data))
|
|
5581
|
+
.catch(() => {});
|
|
5582
|
+
}, []);
|
|
5583
|
+
|
|
5584
|
+
const validStatuses = useMemo(() => {
|
|
5585
|
+
if (!pipelineConfig) return STATUSES;
|
|
5586
|
+
const typeStages = pipelineConfig.type_stages || {};
|
|
5587
|
+
const taskType = item.task_type || 'code';
|
|
5588
|
+
const stages = typeStages[taskType] || typeStages['code'] || STATUSES;
|
|
5589
|
+
const overlays = new Set(pipelineConfig.overlay_statuses || []);
|
|
5590
|
+
const allowed = new Set([...stages, ...overlays, 'Superseded']);
|
|
5591
|
+
if (item.status) allowed.add(item.status);
|
|
5592
|
+
return STATUSES.filter(s => allowed.has(s));
|
|
5593
|
+
}, [pipelineConfig, item.task_type, item.status]);
|
|
5594
|
+
|
|
5581
5595
|
useEffect(() => {
|
|
5582
5596
|
if (!item || !item.extra || !item.extra.current_env) {
|
|
5583
5597
|
setEnvTimeline(null);
|
|
@@ -5806,6 +5820,7 @@ function ItemDetailSidebar({ item, onClose, onStatusChange, selectedProject, all
|
|
|
5806
5820
|
disabled=${item.status === 'Superseded'}
|
|
5807
5821
|
onChange=${async (e) => {
|
|
5808
5822
|
const newStatus = e.target.value;
|
|
5823
|
+
setStatusError('');
|
|
5809
5824
|
if (newStatus === 'Superseded') {
|
|
5810
5825
|
e.target.value = item.status || 'New';
|
|
5811
5826
|
setShowSupersededModal(true);
|
|
@@ -5814,10 +5829,20 @@ function ItemDetailSidebar({ item, onClose, onStatusChange, selectedProject, all
|
|
|
5814
5829
|
try {
|
|
5815
5830
|
await api('PATCH', '/api/board/items/' + item.id, { status: newStatus });
|
|
5816
5831
|
onStatusChange();
|
|
5817
|
-
} catch (err) {
|
|
5832
|
+
} catch (err) {
|
|
5833
|
+
e.target.value = item.status || 'New';
|
|
5834
|
+
const msg = (err && err.message) || 'Status change failed';
|
|
5835
|
+
setStatusError(msg);
|
|
5836
|
+
setTimeout(() => setStatusError(''), 5000);
|
|
5837
|
+
}
|
|
5818
5838
|
}}>
|
|
5819
|
-
${
|
|
5839
|
+
${validStatuses.map(s => html`<option value=${s} selected=${s === (item.status || 'New')}>${s}</option>`)}
|
|
5820
5840
|
</select>
|
|
5841
|
+
${statusError && html`
|
|
5842
|
+
<div role="alert" style="color:var(--danger);font-size:11px;margin-top:4px;" data-testid="status-error">
|
|
5843
|
+
${statusError}
|
|
5844
|
+
</div>
|
|
5845
|
+
`}
|
|
5821
5846
|
|
|
5822
5847
|
<label>Priority</label>
|
|
5823
5848
|
<select value=${item.priority || ''} onChange=${async (e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
7d6137c1ec2a4cae70c081689966638e519ff2e4
|
package/dist/web/build-stamp.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
20260514-
|
|
1
|
+
20260514-103241-7d6137c
|