Skip to content

feat: add standalone data migrator and workspace resources panel - #2887

Merged
GCWing merged 2 commits into
mainfrom
gcwing/dev
Sep 8, 2026
Merged

feat: add standalone data migrator and workspace resources panel#2887
GCWing merged 2 commits into
mainfrom
gcwing/dev

Conversation

@GCWing

@GCWing GCWing commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Summary

Ship Data Migrator as a separately versioned offline utility with editable source/destination locations, durable resumable tasks, its own localized UI and theme assets, and independent packaging/signing. Desktop startup, settings, development, and release packaging no longer launch or bundle migration.

Add a persistent workspace resources panel that combines files and terminals while keeping the active conversation or editor open. Terminal ownership follows its creation workspace; opening a saved configuration does not execute it, and closing a regular terminal view detaches without stopping the process.

Type and Areas

Feature, refactor, UI, documentation, and CI. Affects Data Migrator, shared Rust configuration/storage owners, Desktop, Web UI, product definitions, and release workflows.

Motivation / Impact

  • Users can migrate local legacy data independently of the main application's installation and startup, and resume saved tasks without handoff expiry.
  • Workspace file navigation, directory reveal, saved terminal configurations, and explicit terminal start/stop actions share one navigation surface.
  • Extract persisted configuration into config-contracts, reusable storage formats into narrowly selected services-core features, and offline converters into legacy-migration-adapters. Core preserves compatibility exports and runtime ownership; the migrator does not depend on Core or Product Assembly. Existing workspace dependency versions are reused.

Verification

Passed on Windows:

  • pnpm run check:web — type-check, appearance, typography, theme color, and visual governance contracts.
  • pnpm run check:core-boundaries and pnpm run check:core-boundaries:test.
  • pnpm run check:github-config, pnpm run check:repo-hygiene, and pnpm run i18n:audit.
  • pnpm run data-migrator:theme:check.
  • node --test --test-concurrency=1 scripts/data-migrator-tauri-build.test.mjs scripts/desktop-tauri-build.test.mjs scripts/product-customization/resolver.test.mjs scripts/product-customization/projections.test.mjs — 32 tests passed.
  • node --check on scripts/dev.cjs, scripts/data-migrator-release.mjs, and the migrator's ui/app.js, ui/theme.js, and ui/transport.js.
  • git diff origin/main...HEAD --check and node scripts/check-git-object-sizes.mjs --base origin/main --head HEAD.
  • Focused Web UI tests — 12 files, 82 tests passed:
Exact frontend test command
pnpm --dir src/web-ui exec vitest run --maxWorkers=50% src/tools/terminal/services/terminalWorkspaceScope.test.ts src/tools/terminal/services/manualTerminalProfileService.test.ts src/tools/file-system/utils/fileTreeReveal.test.ts src/app/scenes/workspace-resources/workspaceResources.test.ts src/app/scenes/workspace-resources/terminalViewLifecycle.test.tsx src/app/scenes/file-viewer/FileViewerNav.presentation.test.ts src/app/scenes/settings/settingsRegistry.test.ts src/app/services/sessionSceneLifecycle.test.ts src/flow_chat/services/sessionActivation.test.ts src/flow_chat/services/storeSync.test.ts src/app/stores/sceneStore.test.ts src/infrastructure/i18n/core/I18nService.test.ts

Additional focused checks passed on Windows:

  • pnpm run lint:web (no errors), followed by ESLint on the changed runtime files.
  • pnpm --dir src/web-ui exec vitest run --maxWorkers=4 src/infrastructure/design-system/IconUsageIntegration.test.tsx src/app/scenes/browser/BrowserAddressField.presentation.test.ts src/infrastructure/config/components/ModelServiceCollapse.presentation.test.ts src/tools/editor/services/ModelIndentation.test.ts src/app/scenes/workspace-resources/workspaceResources.test.ts src/app/scenes/workspace-resources/terminalViewLifecycle.test.tsx src/tools/terminal/services/terminalWorkspaceScope.test.ts — 37 tests passed.
  • cargo test --locked -p openbitfun-data-migrator -p openbitfun-legacy-migration-adapters -p openbitfun-legacy-migration --lib — 60 tests passed.
  • cargo test --locked -p openbitfun-legacy-migration --test migration_engine_contracts — 9 tests passed.
  • cargo test --locked -p terminal-core --lib workspace_origin_contract_tests — 2 tests passed.
  • cargo test --locked -p openbitfun-config-contracts --lib — 71 tests passed.
  • cargo test --locked -p openbitfun-core --no-default-features --features remote-workspace --lib service::workspace::manager::tests — 2 tests passed. The narrower workspace-runtime test selection could not compile because its filesystem test helpers require the remote workspace module.

The full local Web UI run exposed shared-icon regressions, two CRLF-sensitive source tests, and a cold Monaco setup timeout. The affected cases pass after using catalog icons, normalizing test input line endings, and granting only real Monaco initialization a 60-second timeout (measured at about 20 seconds on Windows). Per-test assertion timeouts are unchanged. The full PR CI workflow and Repository Object Sizes check passed on commit 7f805aefed99be41a245f338efd87fe01c83d445. All 14 checks passed, including the full frontend suite, Linux/macOS/Windows Rust and CLI checks, and Linux x64/ARM64 packaging and installer validation.

Reviewer Notes

  • Preserves legacy migration plans/reports, original configuration import paths, and optional initialCwd response enrichment for older hosts. Keeps the latest macOS process-inventory fix and Windows hidden-child-process behavior.
  • Local automated checks ran on Windows; GitHub CI also passed the applicable Linux, macOS, and Windows jobs. SSH/peer workspace isolation and old terminal payloads have contract coverage; live remote workspace, Remote Control, Peer Device Mode, and Detached Dispatch were not exercised. Data Migrator runs only on the data-owning local computer.
  • Native visual verification, browser automation, E2E, cross-platform packaging, and broad Rust builds were not run locally. These checks do not establish rendered visual fidelity.
  • AI-assisted. Testing level: focused local automated checks and the full PR CI workflow passed.

Checklist

  • Change scope and verification limitations are recorded.
  • No secrets, transient prompts, or local build artifacts are included.
  • User-facing strings, documentation, and locales are updated.

@GCWing
GCWing merged commit 9f2f576 into main Sep 8, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant