@runfusion/fusion 0.2.1 → 0.2.3

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.
Files changed (2) hide show
  1. package/dist/bin.js +27 -30
  2. package/package.json +2 -2
package/dist/bin.js CHANGED
@@ -136551,7 +136551,7 @@ function SplashScreen({ loadingStatus }) {
136551
136551
  ] });
136552
136552
  }
136553
136553
  function MiniLogo() {
136554
- return /* @__PURE__ */ jsx(Box, { flexDirection: "row", gap: 0, children: /* @__PURE__ */ jsx(Text, { color: "cyanBright", bold: true, children: "FUSION" }) });
136554
+ return /* @__PURE__ */ jsx(Box, { flexDirection: "row", gap: 0, flexShrink: 0, children: /* @__PURE__ */ jsx(Text, { color: "cyanBright", bold: true, wrap: "truncate-end", children: "FUSION" }) });
136555
136555
  }
136556
136556
  function Panel({ title, isFocused, children, flexGrow, flexShrink, width }) {
136557
136557
  return /* @__PURE__ */ jsxs(
@@ -137003,51 +137003,40 @@ function StatusBar({ state, controller: _controller }) {
137003
137003
  }
137004
137004
  function MainHeader({ state }) {
137005
137005
  const inInteractive = state.mode === "interactive";
137006
- const focused = state.activeSection;
137007
137006
  const interactiveView = state.interactiveView;
137008
137007
  const { stdout } = useStdout();
137009
137008
  const cols = stdout?.columns ?? 80;
137010
137009
  const rows = stdout?.rows ?? 24;
137011
- const interactiveTabs = [
137012
- { key: "b", label: "Board", view: "board" },
137013
- { key: "a", label: "Agents", view: "agents" },
137014
- { key: "g", label: "Settings", view: "settings" },
137015
- { key: "t", label: "Git", view: "git" },
137016
- { key: "e", label: "Explorer", view: "files" }
137010
+ const tabs = [
137011
+ { key: "m", label: "Main", kind: "main" },
137012
+ { key: "b", label: "Board", kind: "interactive", view: "board" },
137013
+ { key: "a", label: "Agents", kind: "interactive", view: "agents" },
137014
+ { key: "g", label: "Settings", kind: "interactive", view: "settings" },
137015
+ { key: "t", label: "Git", kind: "interactive", view: "git" },
137016
+ { key: "e", label: "Explorer", kind: "interactive", view: "files" }
137017
137017
  ];
137018
137018
  if (rows < 10) return null;
137019
137019
  const showHelpHint = cols >= 110;
137020
- const compactInteractive = cols < 100;
137021
- const compactSections = cols < 90;
137022
- const minimal = cols < 70;
137020
+ const fullLabels = cols >= 90;
137023
137021
  const tiny = cols < 50;
137022
+ const compact = !fullLabels && !tiny;
137023
+ const isActive = (t) => t.kind === "main" ? !inInteractive : inInteractive && t.view === interactiveView;
137024
137024
  if (tiny) {
137025
- const activeSectionIdx = inInteractive ? -1 : SECTION_ORDER.indexOf(focused);
137026
- const activeSectionLabel = activeSectionIdx >= 0 ? SECTION_ORDER[activeSectionIdx].charAt(0).toUpperCase() + SECTION_ORDER[activeSectionIdx].slice(1) : null;
137027
- const activeInteractive = inInteractive ? interactiveTabs.find((t) => t.view === interactiveView) ?? null : null;
137025
+ const active = tabs.find(isActive);
137028
137026
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "row", gap: 1, paddingX: 1, children: [
137029
137027
  /* @__PURE__ */ jsx(MiniLogo, {}),
137030
- activeSectionLabel && /* @__PURE__ */ jsx(Text, { backgroundColor: "cyan", color: "black", bold: true, children: ` ${activeSectionIdx + 1} ${activeSectionLabel} ` }),
137031
- activeInteractive && /* @__PURE__ */ jsx(Text, { backgroundColor: "cyan", color: "black", bold: true, children: ` ${activeInteractive.key} ${activeInteractive.label} ` })
137028
+ active && /* @__PURE__ */ jsx(Box, { flexShrink: 0, children: /* @__PURE__ */ jsx(Text, { backgroundColor: "cyan", color: "black", bold: true, children: ` ${active.key} ${active.label} ` }) })
137032
137029
  ] });
137033
137030
  }
137034
137031
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "row", gap: 1, paddingX: 1, paddingY: 0, children: [
137035
137032
  /* @__PURE__ */ jsx(MiniLogo, {}),
137036
- !minimal && /* @__PURE__ */ jsx(Text, { dimColor: true, children: "\u2502" }),
137037
- SECTION_ORDER.map((section, i) => {
137038
- const isActive = !inInteractive && section === focused;
137039
- const label = section.charAt(0).toUpperCase() + section.slice(1);
137040
- if (minimal && !isActive) return null;
137041
- return /* @__PURE__ */ jsx(Box, { marginRight: 1, children: isActive ? /* @__PURE__ */ jsx(Text, { backgroundColor: "cyan", color: "black", bold: true, children: compactSections ? ` ${i + 1} ${label} ` : ` [${i + 1}] ${label} ` }) : compactSections ? /* @__PURE__ */ jsx(Text, { dimColor: true, children: `[${i + 1}]` }) : /* @__PURE__ */ jsx(Text, { dimColor: true, children: `[${i + 1}] ${label}` }) }, section);
137042
- }),
137043
- !minimal && /* @__PURE__ */ jsx(Text, { dimColor: true, children: "\u2502" }),
137044
- interactiveTabs.map(({ key, label, view }) => {
137045
- const isActive = inInteractive && view === interactiveView;
137046
- if (minimal && !isActive) return null;
137047
- return /* @__PURE__ */ jsx(Box, { marginRight: 1, children: isActive ? /* @__PURE__ */ jsx(Text, { backgroundColor: "cyan", color: "black", bold: true, children: compactInteractive ? ` ${key} ${label} ` : ` [${key}] ${label} ` }) : compactInteractive ? /* @__PURE__ */ jsx(Text, { dimColor: true, children: `[${key}]` }) : /* @__PURE__ */ jsx(Text, { dimColor: true, children: `[${key}] ${label}` }) }, view);
137033
+ /* @__PURE__ */ jsx(Box, { flexShrink: 0, children: /* @__PURE__ */ jsx(Text, { dimColor: true, children: "\u2502" }) }),
137034
+ tabs.map((t) => {
137035
+ const active = isActive(t);
137036
+ return /* @__PURE__ */ jsx(Box, { marginRight: 1, flexShrink: 0, children: active ? /* @__PURE__ */ jsx(Text, { backgroundColor: "cyan", color: "black", bold: true, children: compact ? ` ${t.key} ` : ` [${t.key}] ${t.label} ` }) : compact ? /* @__PURE__ */ jsx(Text, { dimColor: true, children: `[${t.key}]` }) : /* @__PURE__ */ jsx(Text, { dimColor: true, children: `[${t.key}] ${t.label}` }) }, t.key);
137048
137037
  }),
137049
137038
  /* @__PURE__ */ jsx(Box, { flexGrow: 1 }),
137050
- showHelpHint && /* @__PURE__ */ jsx(Text, { dimColor: true, children: "[?] help [q] quit" })
137039
+ showHelpHint && /* @__PURE__ */ jsx(Box, { flexShrink: 0, children: /* @__PURE__ */ jsx(Text, { dimColor: true, children: "[?] help [q] quit" }) })
137051
137040
  ] });
137052
137041
  }
137053
137042
  function columnLabel(col) {
@@ -137935,6 +137924,14 @@ function SettingsInteractiveView({ state }) {
137935
137924
  setDetailFocused((f) => !f);
137936
137925
  return;
137937
137926
  }
137927
+ if (key.leftArrow) {
137928
+ setDetailFocused(false);
137929
+ return;
137930
+ }
137931
+ if (key.rightArrow) {
137932
+ setDetailFocused(true);
137933
+ return;
137934
+ }
137938
137935
  if (!detailFocused) {
137939
137936
  if (key.upArrow || input === "k") {
137940
137937
  setSelectedIndex((i) => Math.max(0, i - 1));
@@ -139112,7 +139109,7 @@ function DashboardApp({ controller }) {
139112
139109
  controller.setInteractiveView("files");
139113
139110
  return;
139114
139111
  }
139115
- if (input === "s" || input === "S") {
139112
+ if (input === "m" || input === "s") {
139116
139113
  if (state.mode === "interactive") {
139117
139114
  controller.setMode("status");
139118
139115
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runfusion/fusion",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "license": "MIT",
5
5
  "description": "Fusion CLI: HTTP API server, daemon, dashboard launcher, and task tooling for the Fusion AI coding agent.",
6
6
  "homepage": "https://github.com/Runfusion/Fusion#readme",
@@ -75,9 +75,9 @@
75
75
  "typescript": "^5.7.0",
76
76
  "vitest": "^3.1.0",
77
77
  "yaml": "^2.8.3",
78
- "@fusion/dashboard": "0.1.0",
79
78
  "@fusion/core": "0.1.0",
80
79
  "@fusion/pi-claude-cli": "0.3.1",
80
+ "@fusion/dashboard": "0.1.0",
81
81
  "@fusion/engine": "0.1.0"
82
82
  },
83
83
  "repository": {