Repository navigation
feat(flowchat): stabilize timeline and session pane layout #7074
Triggered via pull request
September 29, 2026 07:30
Status
Cancelled
Total duration
17m 15s
Artifacts
–
ci.yml
on: pull_request
Build Impact
17s
Shell Deploy Scripts
16s
Matrix: cli-test
Matrix: Impact-selected Linux / Relay Contract / build
Waiting for pending jobs
Matrix: rust-build-check
DSH Profile Packaging (windows-latest)
0s
Frontend Build
8m 0s
Rust / CLI Validation
6s
Annotations
9 errors, 9 warnings, and 8 notices
|
Frontend Build
Process completed with exit code 1.
|
|
src/app/global-search/globalSearchArchitecture.test.ts > global search ownership > keeps the shared search presentation outside the session right-panel empty state:
src/web-ui/src/app/global-search/globalSearchArchitecture.test.ts#L27
AssertionError: expected '/**\n * ContentCanvas main container …' to contain '<EmptyState onClose={disablePopOut ? …'
- Expected
+ Received
- <EmptyState onClose={disablePopOut ? undefined : onCollapsePanel}>
+ /**
+ * ContentCanvas main container component.
+ * Shared content surface. The containing scene or panel owns its layout.
+ */
+
+ import React, { useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from 'react';
+ import { EditorArea } from './editor-area';
+ import { AnchorZone } from './anchor-zone';
+ import { MissionControl } from './mission-control';
+ import { EmptyState } from './empty-state';
+ import { useCanvasStore } from './stores';
+ import { useTabLifecycle, useKeyboardShortcuts } from './hooks';
+ import type { AnchorPosition } from './types';
+ import type { CanvasStoreMode } from './stores/canvasStore';
+ import { selectActiveBtwSessionTab, type BtwSessionPanelData } from '@/flow_chat/services/btwSessionPane';
+ import { useCurrentWorkspace } from '@/infrastructure/contexts/WorkspaceContext';
+ import { openMainSession } from '@/flow_chat/services/sessionActivation';
+ import { isSamePath } from '@/shared/utils/pathUtils';
+ import './ContentCanvas.scss';
+ import { flowChatStore } from '@/flow_chat/store/FlowChatStore';
+ export interface ContentCanvasProps {
+ /** Workspace path */
+ workspacePath?: string;
+ /** App mode */
+ mode?: CanvasStoreMode;
+ /** Whether the containing scene is currently visible */
+ isSceneActive?: boolean;
+ /** Interaction callback */
+ onInteraction?: (itemId: string, userInput: string) => Promise<void>;
+ /** Before-close callback */
+ onBeforeClose?: (content: any) => Promise<boolean>;
+ /** Disable transfer and host-close controls for embedded hosts. */
+ disablePopOut?: boolean;
+ /** Override the event this canvas listens to for creating tabs. */
+ createTabEventName?: string;
+ /** Reveal this host after an explicit content-open request. */
+ onReveal?: () => void;
+ /** Hide the containing panel, when this host is collapsible. */
+ onCollapsePanel?: () => void;
+ /** Host-owned layout actions, replacing the group-level close-all button. */
+ toolbarActions?: React.ReactNode;
+ /** Suspend terminal fit/PTY resize while the hosting panel is animating. */
+ terminalResizeSuspended?: boolean;
+ /** Whether this host exposes Mission Control. */
+ missionControlEnabled?: boolean;
+ /** Host-provided content for the no-tabs state. */
+ emptyState?: React.ReactNode;
+ }
+
+ export const ContentCanvas: React.FC<ContentCanvasProps> = ({
+ workspacePath,
+ mode = 'agent',
+ isSceneActive = true,
+ onInteraction,
+ disablePopOut = false,
+ createTabEventName,
+ onReveal,
+ onCollapsePanel,
+ toolbarActions,
+ terminalResizeSuspended = false,
+ missionControlEnabled = true,
+ emptyState,
+ }) => {
+ // Store state — fine-grained selectors so unrelated store changes
+ // (drag state, closed-tab history, ...) do not re-render the whole canvas.
+ const primaryGroup = useCanvasStore(state => state.primaryGroup);
+ const secondaryGroup = useCanvasStore(state => state.secondaryGroup);
+ const tertiaryGroup = useCanvasStore(state => state.tertiaryGroup);
+ const layout = useCanvasStore(state => state.layout);
+ const isMissionControlOpen = useCanvasStore(state => state.isMissionControlOpen);
+ const setAnchorPosition = useCanvasStore(state => state.setAnchorPosition);
+ const setAnchorSize = useCanvasStore(state => state.setAnchorSize);
+ const closeMissionControl = useCanvasStore(state => state.closeMissionControl);
+ const openMissionControl = useCanvasStore(state => state.openMissionControl);
+ const activeBtwSessionTab = useCanvasStore(state => selectActiveBtwSessionTab(state as any));
+ const activeBtwSessionData = activeBtwSessionTab?.content.data as BtwSessionPanelData | undefined;
+ const canvasScopeKey = useCanvasStore(state => state.scopeKey);
+ const { workspace: currentWorkspace } = useCurrentWorkspace();
+ const activeSessionId = useS
|
|
src/infrastructure/markdown/MarkdownRenderer.test.tsx > Markdown file links > commits a browser view and explicitly reveals its inline host:
src/web-ui/src/infrastructure/markdown/MarkdownRenderer.test.tsx#L531
AssertionError: expected "vi.fn()" to be called 1 times, but got 0 times
❯ src/infrastructure/markdown/MarkdownRenderer.test.tsx:531:29
|
|
Rust Build Check (windows-latest)
Canceling since a higher priority waiting request for ci-refs/pull/3247/merge exists
|
|
Rust Build Check (windows-latest)
The operation was canceled.
|
|
Rust Build Check (macos-15)
Canceling since a higher priority waiting request for ci-refs/pull/3247/merge exists
|
|
Rust Build Check (macos-15)
The operation was canceled.
|
|
Rust / CLI Validation
Process completed with exit code 1.
|
|
CI
Canceling since a higher priority waiting request for ci-refs/pull/3247/merge exists
|
|
Frontend Build:
src/web-ui/src/shared/utils/lazyWithRecovery.tsx#L26
Fast refresh only works when a file only exports components. Move your component(s) to a separate file
|
|
Frontend Build:
src/web-ui/src/infrastructure/markdown/remarkStreamingTableLinks.ts#L4
Unnecessary escape character: \[
|
|
Frontend Build:
src/web-ui/src/flow_chat/timeline/readerState.tsx#L127
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Frontend Build:
src/web-ui/src/flow_chat/timeline/readerState.tsx#L122
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Frontend Build:
src/web-ui/src/flow_chat/timeline/readerState.tsx#L118
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Frontend Build:
src/web-ui/src/flow_chat/timeline/readerState.tsx#L113
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Frontend Build:
src/web-ui/src/flow_chat/timeline/readerState.tsx#L94
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Frontend Build:
src/web-ui/src/flow_chat/timeline/readerState.tsx#L84
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Frontend Build:
src/web-ui/src/flow_chat/timeline/readerState.tsx#L75
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Build Impact
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
|
|
Shell Deploy Scripts
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
|
|
Frontend Build
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
|
|
CLI Tests (ubuntu-latest)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
|
|
CLI Tests (macos-15)
Due to capacity constraints, jobs targeting macOS arm64 runners may experience longer queue times.
|
|
Rust Build Check (ubuntu-latest)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
|
|
Rust Build Check (macos-15)
Due to capacity constraints, jobs targeting macOS arm64 runners may experience longer queue times.
|
|
Rust / CLI Validation
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
|