feat(FN-2895): merge fusion/fn-2895
- feat(FN-2895): complete Step 7 — documentation and delivery Fusion-Task-Id: FN-2895
This commit is contained in:
@@ -344,9 +344,6 @@ Options:
|
||||
|
||||
Columns: triage, todo, in-progress, in-review, done, archived
|
||||
Supported file types: png, jpg, gif, webp, txt, log, json, yaml, yml, toml, csv, xml
|
||||
|
||||
The AI engine uses pi (github.com/badlogic/pi-mono) for agent sessions.
|
||||
Requires configured API keys — run "pi" first to set up authentication.
|
||||
`.trim();
|
||||
|
||||
function extractGlobalProjectFlag(argv: string[]): { cleanedArgs: string[]; projectName?: string } {
|
||||
@@ -405,11 +402,10 @@ async function main() {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
if (args.length === 0) {
|
||||
// No subcommand — launch dashboard on the default port.
|
||||
const { runDashboard } = await import("./commands/dashboard.js");
|
||||
await runDashboard(4040);
|
||||
return;
|
||||
// No subcommand (or only flags) — default to the dashboard command so flags
|
||||
// like --no-auth, --port, --host, etc. work without typing `dashboard`.
|
||||
if (args.length === 0 || args[0]!.startsWith("-")) {
|
||||
args.unshift("dashboard");
|
||||
}
|
||||
|
||||
const command = args[0];
|
||||
|
||||
@@ -259,9 +259,9 @@ function SystemPanel({ state, isFocused }: { state: DashboardState; isFocused: b
|
||||
<Text>{formatUptime(Date.now() - info.startTimeMs)}</Text>
|
||||
</Box>
|
||||
{info.authToken && (
|
||||
<Box flexDirection="row" gap={1} flexShrink={1}>
|
||||
<Box flexDirection="row" gap={1} flexShrink={0}>
|
||||
<Text dimColor>Token</Text>
|
||||
<Text wrap="truncate-end" color="yellow">{info.authToken}</Text>
|
||||
<Text color="yellow">{info.authToken}</Text>
|
||||
</Box>
|
||||
)}
|
||||
</Box>
|
||||
@@ -718,7 +718,10 @@ function StatusModeGrid({
|
||||
// System fixed at 4 rows. Bottom row scales with available space.
|
||||
// Logs fills what remains.
|
||||
const middleHeight = Math.max(1, rows - 2);
|
||||
const SYSTEM_HEIGHT = 4;
|
||||
// System panel is normally 4 rows (border 2 + 2 content rows so chips wrap to
|
||||
// a second line). When auth is on, the Token chip is long enough that it
|
||||
// routinely wraps to a third row; bump to 5 so it isn't clipped.
|
||||
const SYSTEM_HEIGHT = state.systemInfo?.authToken ? 5 : 4;
|
||||
const bottomShare = Math.min(10, Math.max(6, Math.floor(middleHeight * 0.35)));
|
||||
const logsShare = Math.max(1, middleHeight - SYSTEM_HEIGHT - bottomShare);
|
||||
// LogsPanel chrome: border 2 + title 1 + filter 1 = 4.
|
||||
@@ -738,7 +741,7 @@ function StatusModeGrid({
|
||||
{/* System: full width, pinned to 4 rows tall (border 2 + 2 content
|
||||
rows so the chips always have room to wrap to a second line if
|
||||
needed). flexShrink=0 so it never shrinks below this height. */}
|
||||
<Box height={4} flexShrink={0} overflow="hidden">
|
||||
<Box height={SYSTEM_HEIGHT} flexShrink={0} overflow="hidden">
|
||||
<SystemPanel state={state} isFocused={focused === "system"} />
|
||||
</Box>
|
||||
{wideLayout ? (
|
||||
|
||||
Reference in New Issue
Block a user