Skip to content

Merge pull request #2708 from kev1n77/fmy/ui-sys #5721

Merge pull request #2708 from kev1n77/fmy/ui-sys

Merge pull request #2708 from kev1n77/fmy/ui-sys #5721

Triggered via push August 31, 2026 11:30
Status Failure
Total duration 6m 35s
Artifacts

ci.yml

on: push
Build Impact
23s
Build Impact
Shell Deploy Scripts
22s
Shell Deploy Scripts
Matrix: cli-test
Matrix: Impact-selected Linux / Relay Contract / build
Waiting for pending jobs
Matrix: rust-build-check
DSH Profile Packaging (windows-latest)
DSH Profile Packaging (windows-latest)
Frontend Build
6m 4s
Frontend Build
Rust / CLI Validation
10s
Rust / CLI Validation
Fit to window
Zoom out
Zoom in

Annotations

2 errors and 9 warnings
Frontend Build
Process completed with exit code 1.
src/flow_chat/components/ChatInputWorkspaceStripLayout.test.ts > composer context track layout > shows the current mode icon in the compact add menu while keeping profile icons in the list: src/web-ui/src/flow_chat/components/ChatInputWorkspaceStripLayout.test.ts#L421
AssertionError: expected 'import React, { useCallback, useEffec…' to match /minimal: Scan,[\s\S]*?balanced: Grid2…/ - Expected: /minimal: Scan,[\s\S]*?balanced: Grid2X2,[\s\S]*?ultimate: Grid3X3,/ + Received: "import React, { useCallback, useEffect, useId, useRef, useState } from 'react'; import { createPortal } from 'react-dom'; import { Bot } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { Icon, Menu, MenuItem, MenuSection, MenuSeparator, type IconName } from '@bitfun/ui'; import { Tooltip } from '@/component-library'; import { getAppearanceOverlayHost } from '@/infrastructure/appearance/runtime/AppearanceOverlayHost'; import { notificationService } from '@/shared/notification-system'; import { useAnchoredPopoverPosition } from '@/shared/utils/useAnchoredPopoverPosition'; import { useSideAnchoredPopoverPosition } from '@/shared/utils/useSideAnchoredPopoverPosition'; import './HarnessProfileSelector.scss'; export type HarnessProfileId = KnownHarnessProfileId | (string & {}); export type KnownHarnessProfileId = | 'minimal' | 'balanced' | 'ultimate' | 'creative' | 'other'; export type SelectableHarnessProfileId = 'minimal' | 'balanced' | 'ultimate' | 'creative'; export interface HarnessAgentOption { id: string; name: string; available?: boolean; } export type HarnessNewSessionSelection = | { kind: 'profile'; id: SelectableHarnessProfileId } | { kind: 'agent'; id: string }; export type HarnessProfileSelectorPresentation = 'standalone' | 'menu-item'; interface HarnessProfileSelectorProps { /** Session still runs a legacy fixed mode and cannot switch. */ legacySession?: boolean; /** The Session has accepted its first runtime Turn, so Harness and main Agent are fixed. */ sessionStarted?: boolean; selectedProfile: HarnessProfileId; selectedAgentId?: string; otherAgents?: HarnessAgentOption[]; disabled?: boolean; /** * `standalone` anchors the picker to its own floating trigger. `menu-item` * turns that trigger into a row inside a parent action menu and opens the * secondary picker beside it in the shared overlay layer. */ presentation?: HarnessProfileSelectorPresentation; onSelectProfile: (profileId: SelectableHarnessProfileId) => void | Promise<void>; onSelectAgent?: (agentId: string) => void | Promise<void>; onStartNewSession?: ( selection: HarnessNewSessionSelection, ) => void | Promise<void>; /** Lets a parent action menu close after a terminal selection. */ onSelectionComplete?: () => void; } const PROFILE_IDS: KnownHarnessProfileId[] = [ 'minimal', 'balanced', 'ultimate', 'creative', 'other', ]; type DensityHarnessProfileId = 'minimal' | 'balanced' | 'ultimate'; const PROFILE_GEARS: Record<DensityHarnessProfileId, 1 | 2 | 3> = { minimal: 1, balanced: 2, ultimate: 3, }; const PROFILE_ICONS: Record<SelectableHarnessProfileId, IconName> = { minimal: 'minimal', balanced: 'standard', ultimate: 'ultimate', creative: 'creative', }; function isDensityProfile(profile: KnownHarnessProfileId): profile is DensityHarnessProfileId { return profile === 'minimal' || profile === 'balanced' || profile === 'ultimate'; } function isSelectableProfile( profile: KnownHarnessProfileId, ): profile is SelectableHarnessProfileId { return isDensityProfile(profile) || profile === 'creative'; } function sameAgent(left: string | null | undefined, right: string | null | undefined): boolean { return left?.trim().toLowerCase() === right?.trim().toLowerCase(); } /** Menu rows and the compact add-menu trigger share one mode mark. */ function HarnessProfileMark({ profile, }: { profile: KnownHarnessProfileId; }): React.ReactElement { const densityProfile = isDensityProfile(profile) ? profile : undefined; return ( <span className=\"bitfun-harness-selector__density-mark\" data-harness-profile={profile} data-harness-density={densityProfile ? PROFILE_GEARS[densityProfile] : 0} aria-hidden > {profile === 'other' ? ( <Bot className=\"bitfun-harness-select
Frontend Build: src/web-ui/src/flow_chat/tool-cards/AgentWaitToolCard.tsx#L17
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/components/voice/RealtimeVoiceCallContext.tsx#L32
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/components/voice/RealtimeVoiceCallContext.tsx#L23
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/components/ReasoningPresetSelector.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/components/ReasoningPresetSelector.tsx#L36
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/app/stores/sceneStore.ts#L147
'navCursor' is never reassigned. Use 'const' instead
Frontend Build: src/web-ui/src/app/stores/sceneStore.ts#L146
'navHistory' is never reassigned. Use 'const' instead
Frontend Build: src/web-ui/src/app/components/SceneTopBar/SceneChrome.tsx#L121
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/app/components/NavPanel/components/DeviceArtwork.tsx#L6
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components