Skip to content

refactor(console): retire legacy pages and simplify scoped routes - #3648

Open
AbigailDeng wants to merge 2 commits into
feat/2026-08-04_workflow-activity-vnextfrom
refactor/2026-09-16_console-canonical-routes
Open

AbigailDeng wants to merge 2 commits into
feat/2026-08-04_workflow-activity-vnextfrom
refactor/2026-09-16_console-canonical-routes

Conversation

@AbigailDeng

@AbigailDeng AbigailDeng commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Problem and Result

The feature branch still exposes the old Teams/Members console alongside the current Workflow Activity experience, and current resource URLs contain the preview name workflow-activity-vnext. This PR makes Workflows, Activity, Channels, and Settings the production console and removes that segment from scoped URLs.

Base: feat/2026-08-04_workflow-activity-vnext.

  • Canonical sections: /scopes/:scopeId/workflows, /scopes/:scopeId/activity, /scopes/:scopeId/channels, and /scopes/:scopeId/settings, including existing create/detail/edit routes.
  • Preserve /workflows account-scope resolution and login/callback recovery. Home aliases open this entry. Safe deep links retain query parameters and fragments.
  • Delete legacy Teams, Members, Studio, Scopes, Chat, Runtime, Services, Governance, Deployments, and old Settings pages, their obsolete tests/navigation helpers, and global console chrome. Backend resources, persisted data, and API contracts are unchanged.
  • Move the canvas/editor components and LLM settings helpers used by the retained experience to shared directories, keeping their coverage. Account-menu Settings now uses the current scope and the editor's unsaved-changes guard on desktop and mobile.
  • Update the frontend routing specification, AGENTS, README, baseline precedence notices, Jest's retired-file inventory, and the CI guard's retired frontend paths.

Old business URLs, including the former vNext namespace, now render 404. No hidden legacy route aliases remain. The existing canvas benchmark stays behind its exact development opt-in. Internal source-directory, query-key, and locale-key names are unchanged.

Local Verification

Focused result: 25 test files / 335 tests passed, counting the successful focused reruns. The first run exposed JSX transform issues in two new/updated tests; the final reruns below passed. Changed-file Biome passed for 39 files.

From apps/aevatar-console-web:

Exact related-test commands
pnpm exec jest --runInBand --runTestsByPath \
  src/app.layout.test.ts \
  src/app.test.tsx \
  src/pages/auth/callback/index.test.tsx \
  src/pages/workflow-activity-vnext/WorkflowActivityVNextShell.test.tsx \
  src/pages/workflow-activity-vnext/WorkflowHomePage.test.tsx \
  src/pages/workflow-activity-vnext/activity/ActivityPage.test.tsx \
  src/pages/workflow-activity-vnext/activity/RunDetailPage.test.tsx \
  src/pages/workflow-activity-vnext/channels/ChannelEditPage.test.tsx \
  src/pages/workflow-activity-vnext/channels/ChannelsPage.test.tsx \
  src/pages/workflow-activity-vnext/channels/TelegramConnectionPage.test.tsx \
  src/pages/workflow-activity-vnext/index.test.tsx \
  src/pages/workflow-activity-vnext/navigation.test.ts \
  src/pages/workflow-activity-vnext/settings/AccountPanel.test.tsx \
  src/pages/workflow-activity-vnext/workflows/NewWorkflowPage.test.tsx \
  src/pages/workflow-activity-vnext/workflows/WorkflowScheduleSurface.test.tsx \
  src/routesConfig.test.ts \
  src/shared/auth/client.test.ts \
  src/shared/auth/session.test.ts \
  src/shared/settings/userLlmSaveObservation.test.ts \
  src/shared/settings/userLlmSelection.test.ts \
  src/shared/ui/ConsoleHeaderActions.test.tsx \
  src/shared/workflowEditor/WorkflowStudioCanvas.test.tsx \
  src/pages/workflow-activity-vnext/channels/ChannelAuthorizedServices.test.tsx \
  src/pages/workflow-activity-vnext/workflows/WorkflowTemplateBrowser.test.ts \
  src/shared/datetime/dateTime.test.ts

# Focused reruns after fixing the new/updated test harnesses:
pnpm exec jest --runInBand --runTestsByPath src/shared/ui/ConsoleHeaderActions.test.tsx src/pages/workflow-activity-vnext/WorkflowActivityVNextShell.test.tsx
pnpm exec jest --runInBand --runTestsByPath src/pages/workflow-activity-vnext/WorkflowActivityVNextShell.test.tsx

Dependency selection also used jest --listTests --runInBand --findRelatedTests on navigation, the resource shell, the shared editor surface, and the two moved settings helpers. Global app/auth changes use their direct regression files to avoid a full-suite dependency fanout.

Exact changed-file static-check command
pnpm exec biome check \
  config/routes.ts \
  jest.config.ts \
  src/app.layout.test.ts \
  src/app.test.tsx \
  src/app.tsx \
  src/pages/auth/callback/index.test.tsx \
  src/pages/workflow-activity-vnext/WorkflowActivityVNextShell.test.tsx \
  src/pages/workflow-activity-vnext/WorkflowActivityVNextShell.tsx \
  src/pages/workflow-activity-vnext/WorkflowHomePage.test.tsx \
  src/pages/workflow-activity-vnext/activity/ActivityPage.test.tsx \
  src/pages/workflow-activity-vnext/activity/RunDetailPage.test.tsx \
  src/pages/workflow-activity-vnext/channels/ChannelEditPage.test.tsx \
  src/pages/workflow-activity-vnext/channels/ChannelsPage.test.tsx \
  src/pages/workflow-activity-vnext/channels/TelegramConnectionPage.test.tsx \
  src/pages/workflow-activity-vnext/index.test.tsx \
  src/pages/workflow-activity-vnext/index.tsx \
  src/pages/workflow-activity-vnext/navigation.test.ts \
  src/pages/workflow-activity-vnext/navigation.ts \
  src/pages/workflow-activity-vnext/settings/AccountPanel.test.tsx \
  src/pages/workflow-activity-vnext/settings/SettingsPage.tsx \
  src/pages/workflow-activity-vnext/workflows/NewWorkflowPage.test.tsx \
  src/pages/workflow-activity-vnext/workflows/WorkflowEditorPage.tsx \
  src/pages/workflow-activity-vnext/workflows/WorkflowScheduleSurface.test.tsx \
  src/routesConfig.test.ts \
  src/shared/auth/client.test.ts \
  src/shared/auth/session.test.ts \
  src/shared/auth/session.ts \
  src/shared/settings/userLlmSaveObservation.test.ts \
  src/shared/settings/userLlmSaveObservation.ts \
  src/shared/settings/userLlmSelection.test.ts \
  src/shared/settings/userLlmSelection.ts \
  src/shared/ui/ConsoleHeaderActions.test.tsx \
  src/shared/ui/ConsoleHeaderActions.tsx \
  src/shared/workflowEditor/WorkflowStudioCanvas.test.tsx \
  src/shared/workflowEditor/WorkflowStudioCanvas.tsx \
  src/shared/workflowEditor/WorkflowStudioCanvasRegion.tsx \
  src/shared/workflowEditor/WorkflowStudioEditorSurface.tsx \
  src/shared/workflowEditor/WorkflowStudioEmptyState.tsx \
  src/shared/workflowEditor/WorkflowStudioNodeLibrary.tsx

From the repository root, all passed:

bash tools/ci/test_stability_guards.sh
bash tools/ci/gagent_registry_kind_guard.sh
python3 apps/aevatar-console-web/docs/design-baselines/workflow-activity-vnext/verify-baseline.py
git diff --check
git diff --cached --check

An internal TypeScript import-resolution audit found no remaining imports of retired pages and no missing internal modules. An exact deleted-path reference scan of frontend source/config, tools, and CI found no stale executable references.

Browser smoke check: development compilation succeeded with the configured remote backend. Verified /workflows login recovery, canonical Channels deep-link query/hash preservation, and old Teams URL 404. The local preview had no authenticated session, so live signed-in data operations were not exercised.

Full frontend suite, typecheck, and production build are delegated to GitHub CI under the personal local-validation policy. The repository has no reliable affected typecheck target; no full local fallback was run.

CI Fix And Base Synchronization

CI run 35053289124 failed one test in shard 4: AevatarTooltipImportGuard.test.ts detected a direct Ant Design Tooltip import in ChannelDetailsPage.tsx. The other three test shards passed. The same failure was reproduced locally before this update.

Commit 69c94b035 merges the updated feature base at 3dfb85f27, including the shared-tooltip correction already merged through #3647. It also retains the latest Label/Skill name editing behavior. The new label-save test from that base now expects the canonical channel-detail URL without the retired namespace. No test guard or assertion is disabled.

Focused follow-up result: 9 suites / 67 tests passed. Biome passed for the nine source/test/locale files brought in by the synchronization, and the test stability guard passed.

# Repository root; analyzer ran before committing the synchronization
python3 /Users/abigaildeng/.codex/skills/frontend-incremental-pr/scripts/frontend_change_scope.py --repo . --base HEAD

pnpm --dir apps/aevatar-console-web exec jest --listTests --runInBand --findRelatedTests src/pages/workflow-activity-vnext/channels/ChannelDetailsPage.tsx src/pages/workflow-activity-vnext/channels/ChannelEditPage.tsx src/shared/api/channelBotsApi.ts src/shared/api/channelRuntimeConfigApi.ts

pnpm --dir apps/aevatar-console-web exec jest --runInBand --runTestsByPath src/shared/ui/AevatarTooltipImportGuard.test.ts src/pages/workflow-activity-vnext/channels/ChannelsPage.test.tsx src/pages/workflow-activity-vnext/channels/ChannelEditPage.test.tsx src/pages/workflow-activity-vnext/channels/TelegramConnectionPage.test.tsx src/pages/workflow-activity-vnext/channels/ChannelAuthorizedServices.test.tsx src/shared/api/channelBotsApi.test.ts src/shared/api/channelRuntimeConfigApi.test.ts src/locales/catalog.test.ts src/locales/hardcodedCopyAudit.test.ts

pnpm --dir apps/aevatar-console-web exec biome check src/locales/channelMessages.en-US.ts src/locales/channelMessages.zh-CN.ts src/pages/workflow-activity-vnext/channels/ChannelDetailsPage.tsx src/pages/workflow-activity-vnext/channels/ChannelEditPage.test.tsx src/pages/workflow-activity-vnext/channels/ChannelEditPage.tsx src/shared/api/channelBotsApi.test.ts src/shared/api/channelBotsApi.ts src/shared/api/channelRuntimeConfigApi.test.ts src/shared/api/channelRuntimeConfigApi.ts

bash tools/ci/test_stability_guards.sh
git diff --check
git diff --cached --check

Dependency preflight selected seven suites. Six directly cover Channels and its API adapters; the broad index suite has no Channel cases and was excluded from this follow-up. The targeted Tooltip guard and two locale audits complete the nine-suite selection. Internal import audit still finds no missing modules or imports of retired pages, and source/config tests contain no old scoped vNext URL literals.

Full frontend suite, typecheck, and production build remain delegated to GitHub CI; no full local verification was run.

Design Baseline

  • Baseline: apps/aevatar-console-web/docs/design-baselines/workflow-activity-vnext/
  • Primary: aevatar-workflow-activity-vnext.excalidraw
  • SHA-256: 30e74d7b410ae72c4c91432355436679033679c54c10b1702908435b001577de
  • Contract and user paths: 2026-08-04-workflow-activity-vnext-design.md and 2026-08-04-workflow-activity-vnext-user-paths.md.
  • Current route/retirement decision: 2026-09-16-console-route-consolidation.md, which supersedes original namespace isolation and legacy-page preservation.
  • Schedule reference: aevatar-workflow-schedule-design.excalidraw, SHA-256 cd5c84c45ffb0cdb253af31b7e1b7616504b35520298f01773026e3b76882d8a; supplements 2026-08-11-workflow-schedule-design.md and 2026-08-21-workflow-schedule-history-design.md.
  • Existing auth/session/returnTo and Umi localization behavior is preserved.
  • Production data comes only from real APIs and acknowledged user actions, with no mock fallback.
  • Baseline integrity: 17 main frames, seven Schedule frames and standalone PNGs, deterministic generators all passed. Visual assets are unchanged.

@codecov

codecov Bot commented Sep 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.55%. Comparing base (e4bf75a) to head (69c94b0).
⚠️ Report is 23 commits behind head on feat/2026-08-04_workflow-activity-vnext.

@@                             Coverage Diff                             @@
##           feat/2026-08-04_workflow-activity-vnext    #3648      +/-   ##
===========================================================================
- Coverage                                    84.56%   84.55%   -0.02%     
===========================================================================
  Files                                         1503     1503              
  Lines                                       140015   140015              
  Branches                                     17180    17180              
===========================================================================
- Hits                                        118403   118388      -15     
- Misses                                       13747    13762      +15     
  Partials                                      7865     7865              
Flag Coverage Δ
ci 84.55% <ø> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 4 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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