bullswarm 0.28.4 → 0.28.5

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/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # bullswarm changelog
2
2
 
3
+ ## 0.28.5 — narrow-terminal detail panes use the whole screen
4
+
5
+ - tui: on a narrow terminal (under 100 columns, e.g. a phone over SSH) the
6
+ agent detail, workflow technical details and planner overview panes wrapped
7
+ their text to the width they would have beside the 34-column sidebar, so a
8
+ 60-column screen showed 22-character lines inside a 58-character panel. The
9
+ text now wraps to the pane it occupies: full width when narrow, the right
10
+ column otherwise. Regression test at 60 columns.
11
+
3
12
  ## 0.28.4 — the skill says how, the schema file says what
4
13
 
5
14
  - skill: the method and the schema are now separate files. `skill/SKILL.md`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bullswarm",
3
- "version": "0.28.4",
3
+ "version": "0.28.5",
4
4
  "description": "Route work across coding-agent CLI subscriptions — paced by live quota meters, verified by content, never trusting exit codes.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -572,16 +572,15 @@ export function renderWorkflowTui(row, {
572
572
  // readable and explicit back navigation preserves the same hierarchy.
573
573
  const leftWidth = Math.min(SIDEBAR_WIDTH, Math.max(1, width - 3));
574
574
  const rightWidth = Math.max(1, width - leftWidth);
575
- const orchestrationLines = orchestratorDetailLines(
576
- model,
577
- Math.max(20, (orchestratorDetail ? width : rightWidth) - 4),
578
- spinnerFrame,
579
- { verbose: orchestratorVerbose },
580
- );
581
- const detail = orchestratorDetail
582
- ? orchestrationLines
583
- : agentDetailLines(model, Math.max(20, rightWidth - 4), spinnerFrame);
584
- const technical = workflowTechnicalLines(model, Math.max(20, rightWidth - 4));
575
+ // The detail text is wrapped once, before the layout below picks a body, so
576
+ // it must wrap to the pane it will actually occupy: the full width on a
577
+ // narrow terminal (one pane at a time), the right column beside the sidebar
578
+ // otherwise. Wrapping to the right column on a 60-column phone left every
579
+ // line at 22 characters inside a 58-character panel.
580
+ const paneWidth = Math.max(20, (narrow ? width : rightWidth) - 4);
581
+ const orchestrationLines = orchestratorDetailLines(model, paneWidth, spinnerFrame, { verbose: orchestratorVerbose });
582
+ const detail = orchestratorDetail ? orchestrationLines : agentDetailLines(model, paneWidth, spinnerFrame);
583
+ const technical = workflowTechnicalLines(model, paneWidth);
585
584
  const contentHeight = bodyHeight - 2;
586
585
  const scrollSource = workflowVerbose ? technical : detail;
587
586
  const maxScroll = Math.max(0, scrollSource.length - contentHeight);