feat(ux): consolidate Launch Swarm + telemetry UX with minimized strip

- Removed broken LaunchSwarmDialog (formula-based) from TopBar/LeftPanel
- All Rocket buttons (TopBar, LeftPanel, DAG nodes, social cards) now open
  AssignmentPanel (archetype-based) which actually works
- Every Rocket clears taskId first so assignMode && !taskId condition passes
- Conversation button priority: taskId always shows conversation, not assign panel
- Added TelemetryStrip: minimized right sidebar with status dots when non-telemetry
  panel (conversation/assignment) is active
- Live feed has minimize button → restores last taskId or assignMode
- DAG nodes: Signal icon → restores telemetry feed
- Social button on DAG nodes: single router.push to avoid race (setView + setTaskId)
- Fixed social card message button: opens right panel with drawer:closed (no popup)

Co-Authored-By: Oz <oz-agent@warp.dev>
This commit is contained in:
zenchantlive 2026-03-01 18:17:58 -08:00
parent 65d69ecbbc
commit c246ceaf21
165 changed files with 13730 additions and 1132 deletions

View file

@ -63,7 +63,7 @@ test('executeMutation surfaces bridge failures in normalized response', async ()
return {
success: false,
classification: 'non_zero_exit',
command: 'bd.exe',
command: 'bd',
args,
cwd: root,
stdout: '',
@ -93,7 +93,7 @@ test('executeMutation returns successful normalized response', async () => {
return {
success: true,
classification: null,
command: 'bd.exe',
command: 'bd',
args,
cwd: root,
stdout: '{"id":"bb-123"}',
@ -109,3 +109,62 @@ test('executeMutation returns successful normalized response', async () => {
assert.equal(result.operation, 'update');
assert.equal(result.command.success, true);
});
test('executeMutation includes --actor when provided in payload', async () => {
const payload = validateMutationPayload('comment', {
projectRoot: root,
id: 'bb-123',
text: 'Operator note',
actor: 'zenchant',
});
const result = await executeMutation('comment', payload, {
runBdCommand: async ({ args }) => {
assert.deepEqual(args, ['--actor', 'zenchant', 'comments', 'add', 'bb-123', 'Operator note', '--json']);
return {
success: true,
classification: null,
command: 'bd',
args,
cwd: root,
stdout: '{"ok":true}',
stderr: '',
code: 0,
durationMs: 2,
error: null,
};
},
});
assert.equal(result.ok, true);
});
test('executeMutation ignores bdPath and uses default runner contract', async () => {
const payload = validateMutationPayload('update', {
projectRoot: root,
id: 'bb-123',
status: 'in_progress',
bdPath: 'C:/Tools/beads/bd.exe',
});
const result = await executeMutation('update', payload, {
runBdCommand: async (options) => {
assert.equal(options.explicitBdPath, undefined);
assert.deepEqual(options.args, ['update', 'bb-123', '-s', 'in_progress', '--json']);
return {
success: true,
classification: null,
command: 'bd',
args: options.args,
cwd: root,
stdout: '{"ok":true}',
stderr: '',
code: 0,
durationMs: 2,
error: null,
};
},
});
assert.equal(result.ok, true);
});