Repository navigation
feat: add native MiniApp shells and refresh workspace overview #7416
ci.yml
on: pull_request
Build Impact
21s
Shell Deploy Scripts
12s
Matrix: cli-test
Matrix: Impact-selected Linux / Relay Contract / build
Matrix: rust-build-check
DSH Profile Packaging (windows-latest)
1m 19s
Frontend Build
9m 18s
Rust / CLI Validation
9s
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/markdown/remarkStreamingTableLinks.ts#L4
Unnecessary escape character: \[
|
|
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
|
|