Skip to content

feat: add native MiniApp shells and refresh workspace overview #7416

feat: add native MiniApp shells and refresh workspace overview

feat: add native MiniApp shells and refresh workspace overview #7416

Triggered via pull request October 16, 2026 09:26
Status Failure
Total duration 41m 56s
Artifacts 2

ci.yml

on: pull_request
Build Impact
21s
Build Impact
Shell Deploy Scripts
12s
Shell Deploy Scripts
Matrix: cli-test
Matrix: Impact-selected Linux / Relay Contract / build
Matrix: rust-build-check
DSH Profile Packaging (windows-latest)
1m 19s
DSH Profile Packaging (windows-latest)
Frontend Build
9m 18s
Frontend Build
Rust / CLI Validation
9s
Rust / CLI Validation
Fit to window
Zoom out
Zoom in

Annotations

2 errors, 11 warnings, and 8 notices
Frontend Build
Process completed with exit code 1.
src/app/components/NavPanel/navigationIconIntegration.test.ts > navigation icon integration > uses each MiniApp icon and the standard Skill icon in the overview: src/web-ui/src/app/components/NavPanel/navigationIconIntegration.test.ts#L27
AssertionError: expected 'import React, { useEffect, useLayoutE…' to contain 'leading={renderMiniAppIcon(app.icon |…' - Expected + Received - leading={renderMiniAppIcon(app.icon || 'box', 'lg')} + import React, { useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react'; + import { Button, Icon, ScrollArea, Spinner } from '@openbitfun/ui'; + import { useSubagentAvatarMotion } from '@openbitfun/ui/brand'; + import { useAccountIdentity } from '@/infrastructure/account-identity/useAccountIdentity'; + import { useI18n } from '@/infrastructure/i18n/hooks/useI18n'; + import { useWorkspaceContext } from '@/infrastructure/contexts/WorkspaceContext'; + import { confirmDialog } from '@/infrastructure/confirm-dialog'; + import { getActiveSurfaceScope, onSurfaceActivated } from '@/infrastructure/peer-device/deviceSurface'; + import type { MiniAppMeta } from '@/infrastructure/api/service-api/MiniAppAPI'; + import { useNotification } from '@/shared/notification-system'; + import { createLogger } from '@/shared/utils/logger'; + import { useSceneStore } from '@/app/stores/sceneStore'; + import { useAgentsStore } from '../agents/agentsStore'; + import { useNurseryStore } from '../profile/nurseryStore'; + import { projectMiniAppActivity } from '../miniapps/miniAppActivity'; + import { useMiniAppCreation } from '../miniapps/hooks/useMiniAppCreation'; + import { useSkillsSceneStore, type SkillTab } from '../skills/skillsSceneStore'; + import { summarizeOverviewUsage } from './overviewData'; + import { UsageActivityGrid } from '@/infrastructure/config/components/UsageActivityGrid'; + import { usePersonalOverview } from './usePersonalOverview'; + import { getOverviewIdentity } from './overviewIdentity'; + import { OverviewAccountButton } from './OverviewAccountButton'; + import { OverviewDevicesSection } from './OverviewDevicesSection'; + import { OverviewSplitCard, OverviewSplitCardAction, OverviewSplitCardSection } from './OverviewSplitCard'; + import { OverviewMiniAppLogos } from './OverviewMiniAppLogos'; + import joystickArtwork from '@/flow_chat/assets/subagent-avatars/robot-04.svg?raw'; + import './PersonalOverviewScene.scss'; + + const log = createLogger('PersonalOverviewScene'); + const StandaloneAddSkillDialog = React.lazy(() => import('../skills/components/AddSkillDialog').then(module => ({ default: module.StandaloneAddSkillDialog }))); + const CreateAgentDialog = React.lazy(() => import('../agents/components/CreateAgentDialog')); + const MiniAppGalleryScene = React.lazy(() => import('../miniapps/MiniAppGalleryScene')); + + // Reuse the authored IP and its existing motion rig; no account data enters SVG markup. + const overviewArtwork = joystickArtwork + .replace(/<title\b[^>]*>[\s\S]*?<\/title>/, '') + .replace(/\s(?:aria-labelledby|role)="[^"]*"/g, ''); + + const PersonalOverviewScene: React.FC<{ isActive?: boolean }> = ({ isActive = true }) => { + const { t, formatNumber, resolvedTimeZone } = useI18n('scenes/personal-overview'); + const identity = useAccountIdentity(); + const { usage, agents, miniApps, skills, refresh } = usePersonalOverview(resolvedTimeZone, isActive); + const { creating: creatingMiniApp, createMiniApp } = useMiniAppCreation(); + const surfaceScope = useSyncExternalStore(onSurfaceActivated, getActiveSurfaceScope); + const openTabs = useSceneStore(state => state.openTabs); + const miniAppActivities = useMemo(() => miniApps.status === 'ready' + ? projectMiniAppActivity(miniApps.data.apps, openTabs, miniApps.data.runningWorkerIds) + : [], [miniApps, openTabs]); + const miniAppItems = miniApps.status === 'ready' ? miniApps.data.apps : []; + const catalogCount = (status: string, value: number) => status === 'ready' + ? formatNumber(value) + : t(status === 'loading' ? 'loadingValue' : 'unavailableValue'); + const { assistantWorkspaces, loading: workspacesLoading, createAssistantWorkspace } = useWorkspaceContext(); + const notification = useNotification(); + const [creatingAssistant, setCreatingAssistant] = useState(false); + const [a
Frontend Build: src/web-ui/src/infrastructure/file-export/saveHtmlFile.ts#L5
Unexpected control character(s) in regular expression: \x00, \x1f
Frontend Build: src/web-ui/src/flow_chat/timeline/readerState.tsx#L144
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#L139
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#L135
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#L130
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#L111
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#L101
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#L92
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/panels/content-canvas/CanvasToolbar.tsx#L34
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
Tauri Windows test-loader limitation
The desktop test harness hit upstream Tauri issue #13419 before any Rust test ran. Compilation and the cross-platform product-control contracts remain blocking.
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"
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"
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"
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 (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"

Artifacts

Produced during runtime
Name Size Digest
GCWing~OpenBitFun~9O4IAD.dockerbuild
37.4 KB
sha256:3bd279d4005f9f1edf1ea1f71cbc5e6efcec55b73a6c75def9094382f25fd7cc
GCWing~OpenBitFun~JITE0Z.dockerbuild
36.7 KB
sha256:6439754fc68112818fff789b474ea8c2a85c293dfa0c07946ca42843cf6b1322