Skip to content

[codex] Reorganize frontend screens#130

Merged
Zochory merged 5 commits intomainfrom
architecture/frontend-2
Mar 19, 2026
Merged

[codex] Reorganize frontend screens#130
Zochory merged 5 commits intomainfrom
architecture/frontend-2

Conversation

@Zochory
Copy link
Member

@Zochory Zochory commented Mar 19, 2026

Summary

This PR reorganizes the frontend around explicit screen slices. The immediate issue was that app surfaces, routes, and shared state had drifted across app/, features/, and generic stores, which made it harder to reason about ownership and riskier to change the workspace shell.

Cause and effect on users

For maintainers and anyone extending the UI, that sprawl made it easy to couple unrelated screens and difficult to tell which code paths backed the supported product surfaces (RLM Workspace, Volumes, and Settings). Left alone, that increases regression risk whenever we touch navigation, lazy loading, or websocket-backed state, even when there is no intended user-facing behavior change.

Root cause

The screen boundary was implicit rather than enforced. Route entrypoints, screen-level components, and long-lived state lived in different folders, while some legacy paths still reflected older product surfaces.

Fix

This change groups the supported app surfaces into dedicated screens/* modules, moves the workspace and volumes flows behind clearer entrypoints, aligns screen-specific store ownership, and refreshes the frontend docs to describe the new module boundaries. It also adds the shadcn skill lockfile needed for the updated frontend tooling state.

Validation

I validated the refactor with the frontend check suite:

  • cd src/frontend && pnpm run type-check
  • cd src/frontend && pnpm run lint
  • cd src/frontend && pnpm run build
  • cd src/frontend && pnpm run test:unit

Zochory added 3 commits March 19, 2026 00:45
Move workspace, shell, volumes, and settings code into screen-scoped\nmodules and point routes at lazy screen entrypoints. Split shell,\nworkspace, and volume state into dedicated stores to keep boundaries\nclear without changing the frontend contract.
Update the frontend agent guide to reflect the new screen-first\nlayout, state ownership, and lint boundary rules. This keeps future\nfrontend work aligned with the refactored module contracts.
Record the current shadcn skill source hash in the repository lockfile\nso local skill setup stays explicit and reproducible.
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly refactors the frontend application by transitioning from a feature-centric to a screen-centric architecture. The primary goal is to improve code organization, clarify module ownership, and reduce coupling between different parts of the UI. This change enhances the reasoning about application surfaces, routes, and shared state, making the codebase more robust and easier to extend or modify without introducing regressions.

Highlights

  • Frontend Reorganization: The frontend architecture has been reorganized around explicit screen slices, moving app surfaces like Workspace, Volumes, and Settings into dedicated screens/* modules for better ownership and maintainability.
  • State Management Refinement: Screen-specific state management has been aligned, with new Zustand stores (useWorkspaceUiStore, useVolumesSelectionStore) introduced to manage UI state pertinent to each screen, reducing sprawl in generic stores.
  • Module Boundary Enforcement: New lint rules have been added to vite.config.ts to enforce strict module boundaries, preventing shared UI components from depending on screen-owned modules and ensuring shell modules interact with screens only through top-level contracts.
  • Documentation Updates: The AGENTS.md documentation has been refreshed to reflect the new state management, feature layout, component layout, and linting guidelines, providing clearer guidance for maintainers.
  • Component Consolidation and Removal: Several generic components like BuilderPanel, ChatInput related components, ResolvedChip, and SectionHeader have been removed or inlined, with their functionalities integrated into the new screen-specific components or replaced by shadcn field compositions.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This is a substantial and well-executed refactoring of the frontend architecture, moving from a feature-based structure to a more modular screen-based approach. Co-locating state, components, and types within screen-specific modules and defining clear contracts for shell interaction are excellent improvements for maintainability and scalability. The simplification of routing using TanStack Router's built-in lazy loading is also a great enhancement. My review found one minor, recurring pattern of using inline styles to override typography classes, for which I've provided a suggestion. Overall, this is a high-quality pull request that significantly improves the frontend codebase.

I am having trouble creating individual review comments. Click here to see my feedback.

src/frontend/src/screens/settings/settings-screen.tsx (67-69)

medium

Using an inline style attribute to override the font size from the typo-h3 class is not ideal for maintainability and consistency. It's better to use a more appropriate typography utility class from your design system. If typo-h3 is too large, consider using a smaller heading class or a standard Tailwind class like text-sm font-medium if it matches the desired size. This would keep styling consistent and defined in CSS.

I've noticed this pattern is repeated in other refactored standalone screens as well (login-screen, not-found-screen, etc.).

        <h1 className="text-foreground text-sm font-medium">
          Settings
        </h1>

@Zochory Zochory marked this pull request as ready for review March 19, 2026 01:00
Copilot AI review requested due to automatic review settings March 19, 2026 01:00
@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR restructures the frontend around explicit screens/* slices (workspace, volumes, settings, shell), moving previously scattered route entrypoints, state, and UI modules into clearer ownership boundaries and updating routing/lazy-loading accordingly.

Changes:

  • Introduces screen-scoped model/UI modules (e.g., workspace stores/types, volumes selection store) and updates consumers across the app.
  • Replaces page-layer lazy routing with lazyRouteComponent(...) imports that point directly at screens/*.
  • Adds/updates lint boundary rules and frontend documentation to enforce the new screen ownership contracts.

Reviewed changes

Copilot reviewed 155 out of 172 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/frontend/vite.config.ts Adds lint override rules to enforce screen/module boundaries; updates warmup client files.
src/frontend/tests/e2e/settings-runtime-smoke.spec.ts Adjusts runtime readiness assertion to match new copy.
src/frontend/tests/e2e/frontend-smoke.spec.ts Updates settings navigation assertion for redirected URL.
src/frontend/tests/e2e/execution-canvas-smoke.spec.ts Updates store imports/state wiring for execution canvas e2e.
src/frontend/src/stores/navigationStore.ts Trims navigation store down to shell navigation + canvas concerns.
src/frontend/src/stores/navigation-types.ts Introduces shared NavItem type (moved out of lib/data/types).
src/frontend/src/screens/workspace/workspace-shell-contract.ts Defines shell-facing workspace contracts (history + actions).
src/frontend/src/screens/workspace/workspace-screen.tsx New workspace screen entrypoint (formerly RlmWorkspace).
src/frontend/src/screens/workspace/workspace-canvas-panel.tsx Workspace canvas panel wrapper + title logic.
src/frontend/src/screens/workspace/model/workspace-ui-store.ts New workspace-owned UI/session/inspector state store.
src/frontend/src/screens/workspace/model/workspace-types.ts Moves workspace/chat domain UI types into workspace slice.
src/frontend/src/screens/workspace/model/runtime-types.ts Repoints runtime types to new workspace slice types.
src/frontend/src/screens/workspace/model/run-workbench-types.ts Repoints workbench types to workspace slice types.
src/frontend/src/screens/workspace/model/run-workbench-store.ts Repoints store dependencies to new adapter/types modules.
src/frontend/src/screens/workspace/model/run-workbench-store.test.ts Updates workbench store tests to new import paths.
src/frontend/src/screens/workspace/model/run-workbench-adapter.ts Moves/rewires adapter imports to workspace model modules.
src/frontend/src/screens/workspace/model/prompt-preferences-store.ts Repoints prompt preference types to workspace slice types.
src/frontend/src/screens/workspace/model/daytona-mode.ts Adds Daytona mode normalization/label formatting helpers.
src/frontend/src/screens/workspace/model/chat-store.ts Moves chat store into workspace model slice (session id remains backend-driven).
src/frontend/src/screens/workspace/model/chat-store.test.ts Updates chat store tests for new module location/mocks.
src/frontend/src/screens/workspace/model/chat-history-store.ts Moves chat history store into workspace model slice.
src/frontend/src/screens/workspace/model/chat-history-store.test.ts Updates chat history persistence tests to new module.
src/frontend/src/screens/workspace/model/chat-display-items.ts Rehomes display-item builder types to workspace slice.
src/frontend/src/screens/workspace/model/backend-chat-event-trajectory.ts Repoints backend event parsing utilities to new module paths.
src/frontend/src/screens/workspace/model/backend-chat-event-tool-parts.ts Repoints tool-part normalization to new payload/types modules.
src/frontend/src/screens/workspace/model/backend-chat-event-references.ts Repoints reference attachment logic to workspace types.
src/frontend/src/screens/workspace/model/backend-chat-event-payload.ts Repoints payload parsing helpers to workspace types.
src/frontend/src/screens/workspace/model/backend-chat-event-adapter.ts Rehomes WS frame → message adapter to workspace model slice.
src/frontend/src/screens/workspace/model/backend-artifact-event-adapter.ts Rehomes WS frame → artifacts adapter + store import.
src/frontend/src/screens/workspace/model/artifact-types.ts Introduces workspace-local artifact step type definitions.
src/frontend/src/screens/workspace/model/artifact-store.ts Rehomes artifact store to workspace model slice.
src/frontend/src/screens/workspace/model/artifact-store.test.ts Updates artifact store tests to new module path.
src/frontend/src/screens/workspace/hooks/use-workspace-runtime.ts Rehomes runtime hook and rewires to new stores/adapters.
src/frontend/src/screens/workspace/components/workspace-sidebar.tsx Renames/rehomes conversation history UI as workspace sidebar.
src/frontend/src/screens/workspace/components/workspace-message-list.tsx Rehomes chat message list and rewires to workspace UI store.
src/frontend/src/screens/workspace/components/workspace-composer.tsx Replaces old ChatInput with workspace-specific composer implementation.
src/frontend/src/screens/workspace/components/workspace-composer.test.tsx Updates composer tests to new component and behavior.
src/frontend/src/screens/workspace/components/workbench/RunWorkbench.tsx Rehomes workbench UI to workspace slice + new store/types.
src/frontend/src/screens/workspace/components/workbench/tests/runWorkbenchAdapter.test.ts Updates adapter tests to new module location.
src/frontend/src/screens/workspace/components/workbench/tests/RunWorkbench.test.tsx Updates workbench UI tests and mocks to new module paths.
src/frontend/src/screens/workspace/components/shared/ClarificationCard.tsx Rehomes clarification UI and inlines removed shared wrappers.
src/frontend/src/screens/workspace/components/shared/tests/ClarificationCard.test.tsx Updates clarification card tests to new import paths/types.
src/frontend/src/screens/workspace/components/inspector/utils/inspector-utils.ts Adds small shared inspector status→tone mapping helper.
src/frontend/src/screens/workspace/components/inspector/ui/inspector-ui.tsx Repoints inspector UI to workspace slice models/styles.
src/frontend/src/screens/workspace/components/inspector/tabs/TrajectoryInspectorTab.tsx Updates inspector tab imports to workspace slice modules.
src/frontend/src/screens/workspace/components/inspector/tabs/GraphInspectorTab.tsx Rehomes artifact graph + parsers under workspace inspector.
src/frontend/src/screens/workspace/components/inspector/tabs/ExecutionInspectorTab.tsx Updates execution inspector tab imports to new modules.
src/frontend/src/screens/workspace/components/inspector/tabs/EvidenceInspectorTab.tsx Updates evidence inspector tab imports to new modules.
src/frontend/src/screens/workspace/components/inspector/parsers/artifactPayloadSummaries.ts Rehomes artifact payload summarization to workspace inspector parsers.
src/frontend/src/screens/workspace/components/inspector/parsers/artifactPayloadSchemas.ts Adds zod schemas/parsers for artifact payload normalization.
src/frontend/src/screens/workspace/components/inspector/MessageInspectorPanel.tsx Rehomes message inspector and rewires state to workspace UI store.
src/frontend/src/screens/workspace/components/inspector/inspector-styles.ts Updates style helper docs/import path for new location.
src/frontend/src/screens/workspace/components/inspector/graph-tool-badge.ts Updates graph tool badge helper to new artifact types.
src/frontend/src/screens/workspace/components/inspector/graph-step-node.tsx Rehomes graph node component and dependency imports.
src/frontend/src/screens/workspace/components/inspector/graph-step-node.constants.ts Rehomes graph node constants with new artifact types.
src/frontend/src/screens/workspace/components/inspector/graph-node-detail-parsers.ts Adds detail extractors for graph nodes (errors/trajectory/code).
src/frontend/src/screens/workspace/components/inspector/artifact-graph.visibility.test.tsx Updates artifact graph visibility tests to new module paths.
src/frontend/src/screens/workspace/components/inspector/artifact-graph.tsx Rehomes artifact graph implementation under workspace inspector.
src/frontend/src/screens/workspace/components/inspector/tests/MessageInspectorPanel.test.tsx Updates message inspector tests to workspace stores and graph mock.
src/frontend/src/screens/workspace/components/composer/RuntimeModeDropdown.tsx Rehomes runtime mode dropdown under workspace composer.
src/frontend/src/screens/workspace/components/composer/ExecutionModeDropdown.tsx Rehomes execution mode dropdown under workspace composer.
src/frontend/src/screens/workspace/components/composer/composerActionStyles.ts Adds shared composer action style constants for chips/buttons.
src/frontend/src/screens/workspace/components/composer/AttachmentDropdown.tsx Rehomes attachment dropdown under workspace composer.
src/frontend/src/screens/workspace/components/composer/tests/RuntimeModeDropdown.test.tsx Updates runtime mode dropdown tests to new module.
src/frontend/src/screens/workspace/components/composer/tests/ExecutionModeDropdown.test.tsx Updates execution mode dropdown tests to new module.
src/frontend/src/screens/workspace/components/composer/tests/AttachmentDropdown.test.tsx Updates attachment dropdown tests to new module.
src/frontend/src/screens/workspace/components/chat-shell/WorkspaceChatMessageItem.tsx Repoints message item to workspace slice components/types.
src/frontend/src/screens/workspace/components/chat-shell/WorkspaceChatEmptyState.tsx Simplifies welcome-state icons and updates imports.
src/frontend/src/screens/workspace/components/chat-shell/tracePartRenderers.tsx Repoints trace part renderer types/models to workspace slice.
src/frontend/src/screens/workspace/components/chat-shell/chatMessageStyles.ts Adds shared style objects for prompt-kit rendering.
src/frontend/src/screens/workspace/components/chat-shell/tests/WorkspaceChatMessageItem.test.tsx Updates message item tests to new module paths/types.
src/frontend/src/screens/workspace/components/chat-shell/tests/WorkspaceChatEmptyState.test.tsx Updates empty state tests to new module paths.
src/frontend/src/screens/workspace/components/assistant-content/TrajectoryTimeline.tsx Repoints assistant content timeline to new model/styles.
src/frontend/src/screens/workspace/components/assistant-content/model/types.ts Repoints assistant content model types to workspace slice types/items.
src/frontend/src/screens/workspace/components/assistant-content/model/RuntimeContextBadge.tsx Rehomes runtime context badge styling/types.
src/frontend/src/screens/workspace/components/assistant-content/model/runtimeBadges.ts Rehomes runtime badge helpers to workspace slice types.
src/frontend/src/screens/workspace/components/assistant-content/model/modelUtils.ts Adds shared label humanization + unique string helpers.
src/frontend/src/screens/workspace/components/assistant-content/model/index.ts Adds barrel exports for assistant content model package.
src/frontend/src/screens/workspace/components/assistant-content/model/buildAssistantTrajectoryModel.ts Repoints trajectory model builder to workspace display items.
src/frontend/src/screens/workspace/components/assistant-content/model/buildAssistantContentModel.ts Repoints content model builder to workspace types/items.
src/frontend/src/screens/workspace/components/assistant-content/ExecutionHighlightsGroup.tsx Repoints execution highlight UI to new inspector utils/styles.
src/frontend/src/screens/workspace/components/assistant-content/AssistantTurnContent.tsx Rehomes assistant turn renderer to workspace slice components/types.
src/frontend/src/screens/workspace/components/assistant-content/AssistantSummaryBar.tsx Repoints summary bar types to workspace slice.
src/frontend/src/screens/workspace/components/assistant-content/AssistantPreviewSections.tsx Repoints preview sections to workspace slice styles/types.
src/frontend/src/screens/workspace/components/assistant-content/AssistantAnswerBlock.tsx Adds extracted assistant answer block (with loading shimmer).
src/frontend/src/screens/workspace/components/assistant-content/tests/buildAssistantContentModel.test.ts Updates assistant content model tests to new imports/types.
src/frontend/src/screens/workspace/components/animation-presets.ts Repoints motion config import to new motion util module.
src/frontend/src/screens/workspace/tests/useChatRuntime.daytona-error.test.tsx Updates runtime failure tests to useWorkspaceRuntime and new stores.
src/frontend/src/screens/workspace/tests/RlmWorkspace.session-request.test.tsx Updates session request tests to WorkspaceScreen + workspace UI store.
src/frontend/src/screens/workspace/tests/RlmWorkspace.runtime-warning.test.tsx Updates runtime warning tests to WorkspaceScreen + new runtime status hook.
src/frontend/src/screens/workspace/tests/RlmWorkspace.daytona-workbench.test.tsx Updates Daytona workbench tests to WorkspaceScreen + new composer mocks.
src/frontend/src/screens/workspace/tests/ChatMessageList.prompt-kit.test.tsx Updates message list tests to WorkspaceMessageList + new stores.
src/frontend/src/screens/workspace/tests/ChatMessageList.ai-elements.test.tsx Updates message list tests to WorkspaceMessageList + new stores.
src/frontend/src/screens/workspace/tests/chatDisplayItems.test.ts Repoints display item tests to new workspace model module.
src/frontend/src/screens/workspace/tests/backendChatEventAdapter.test.ts Repoints adapter tests to workspace model adapter/types.
src/frontend/src/screens/workspace/tests/backendArtifactEventAdapter.test.ts Repoints artifact adapter tests to workspace model adapter/store.
src/frontend/src/screens/volumes/volumes-shell-contract.ts Adds shell-facing volumes selection contract (clear selection, etc.).
src/frontend/src/screens/volumes/volumes-screen.tsx Adds volumes screen route entrypoint alias.
src/frontend/src/screens/volumes/volumes-canvas-panel.tsx Adds volumes canvas panel for file preview + empty state.
src/frontend/src/screens/volumes/volumes-browser.tsx Rehomes volumes browser and rewires to new filesystem hook + selection store.
src/frontend/src/screens/volumes/volumes-browser-sections.tsx Rehomes volumes browser sections; rewires utils/types imports.
src/frontend/src/screens/volumes/model/volumes-types.ts Introduces volumes FsNode types in volumes slice.
src/frontend/src/screens/volumes/model/volumes-selection-store.ts Adds volumes file-selection Zustand store.
src/frontend/src/screens/volumes/model/volumes-browser-utils.ts Rehomes volumes browser utilities and rewires FsNode type.
src/frontend/src/screens/volumes/model/mock-filesystem.ts Rehomes mock filesystem data to volumes slice.
src/frontend/src/screens/volumes/hooks/use-volumes-filesystem.ts Rehomes filesystem/query hooks and rewires mock/types imports.
src/frontend/src/screens/volumes/components/volume-file-detail.tsx Rehomes and renames file detail view for volumes preview.
src/frontend/src/screens/volumes/components/volume-file-detail.test.tsx Updates file detail tests to new component/hook imports.
src/frontend/src/screens/shell/standalone/signup-screen.tsx Renames/rehomes signup page to signup screen.
src/frontend/src/screens/shell/standalone/route-error-screen.tsx Renames RouteError page component to screen component.
src/frontend/src/screens/shell/standalone/not-found-screen.tsx Renames/rehomes not-found page to not-found screen.
src/frontend/src/screens/shell/standalone/logout-screen.tsx Renames/rehomes logout page to logout screen.
src/frontend/src/screens/shell/standalone/login-screen.tsx Renames/rehomes login page to login screen.
src/frontend/src/screens/shell/shell-sidepanel.tsx Replaces BuilderPanel with shell sidepanel that routes to screen canvas panels.
src/frontend/src/screens/shell/shell-route-outlet.tsx Replaces ChatPanel with shell route outlet wrapper.
src/frontend/src/screens/shell/shell-header.tsx Renames TopHeader to ShellHeader in shell slice.
src/frontend/src/screens/shell/route-sync.tsx Updates route→nav sync; clears volumes selection via volumes contract.
src/frontend/src/screens/shell/mobile-tab-bar.tsx Rehomes tab bar and switches preloading to router-native preload.
src/frontend/src/screens/shell/mobile-shell.tsx Rehomes mobile shell and rewires to new shell components.
src/frontend/src/screens/shell/login-dialog.tsx Adds new Entra login dialog (desktop dialog + mobile drawer).
src/frontend/src/screens/shell/desktop-shell.tsx Rehomes desktop shell and rewires to new shell components.
src/frontend/src/screens/shell/command-palette.tsx Switches session actions to workspace shell contract and new NavItem type.
src/frontend/src/screens/shell/app-sidebar.tsx Switches sidebar history/actions to workspace shell contract.
src/frontend/src/screens/shell/app-shell-screen.tsx Rehomes root shell screen and rewires to new shell modules.
src/frontend/src/screens/shell/tests/TopHeader.typography.test.tsx Updates header typography test to ShellHeader.
src/frontend/src/screens/shell/tests/MobileShell.canvas-handlers.test.tsx Updates mobile shell tests to new module paths.
src/frontend/src/screens/shell/tests/BuilderPanel.file-detail.test.tsx Updates sidepanel test to use ShellSidepanel and volumes canvas panel mock.
src/frontend/src/screens/shell/tests/BuilderPanel.creation-tabs.test.tsx Updates sidepanel test to ShellSidepanel and workspace canvas panel mock.
src/frontend/src/screens/shell/tests/AppSidebar.sessions.test.tsx Updates sidebar session tests to workspace shell contract mocks.
src/frontend/src/screens/settings/settings-types.ts Adds centralized settings section metadata/types.
src/frontend/src/screens/settings/settings-screen.tsx Rehomes settings screen and rewires imports to new settings slice modules.
src/frontend/src/screens/settings/settings-errors.ts Adds shared error formatting helper for settings.
src/frontend/src/screens/settings/runtime-pane-hydration.ts Adds runtime form hydration predicate helper.
src/frontend/src/screens/settings/hooks/use-runtime-settings.ts Rehomes runtime settings hook and composes shared runtime status query key.
src/frontend/src/screens/settings/tests/useRuntimeSettings.test.ts Updates runtime settings tests to new hook module.
src/frontend/src/screens/settings/tests/RuntimePane.test.tsx Updates runtime pane tests to new module imports and copy.
src/frontend/src/screens/settings/tests/GroupedSettingsPane.test.tsx Updates grouped settings pane tests to new module imports/mocks.
src/frontend/src/routes/signup.tsx Switches signup route to lazyRouteComponent + new error screen.
src/frontend/src/routes/logout.tsx Switches logout route to lazyRouteComponent + new error screen.
src/frontend/src/routes/login.tsx Switches login route to lazyRouteComponent + new error screen.
src/frontend/src/routes/app/workspace.tsx Switches workspace route to lazyRouteComponent pointing at WorkspaceScreen.
src/frontend/src/routes/app/volumes.tsx Switches volumes route to lazyRouteComponent pointing at VolumesScreen.
src/frontend/src/routes/app/settings.tsx Switches settings route to lazyRouteComponent pointing at SettingsScreen.
src/frontend/src/routes/app.tsx Repoints root app route to new shell app screen + new error screen.
src/frontend/src/routes/404.tsx Switches not-found route to lazyRouteComponent pointing at NotFoundScreen.
src/frontend/src/lib/utils/prompt-kit-state.ts Repoints tool-state type import to workspace slice types.
src/frontend/src/lib/utils/motion.ts Updates docs/import references for new motion util path.
src/frontend/src/lib/rlm-api/capabilities.ts Repoints NavItem type import to navigation-types.
src/frontend/src/lib/perf/routePreload.tsx Removes custom lazy preload system (deleted).
src/frontend/src/lib/perf/lazyWithRetry.ts Removes custom chunk retry/preload helpers (deleted).
src/frontend/src/lib/data/types.ts Removes UI/screen-specific types (NavItem/chat/render parts/fsnode) from shared data types.
src/frontend/src/hooks/useRuntimeStatus.ts Adds shared runtime status query hook and shared query key.
src/frontend/src/hooks/useAppNavigate.ts Adds router-native preload helper (preloadNav) and updates NavItem import.
src/frontend/src/features/settings/components/SettingsToggleRow.tsx Removes old settings toggle row wrapper (deleted).
src/frontend/src/features/settings/components/SettingsRow.tsx Removes old settings row wrapper (deleted).
src/frontend/src/features/rlm-workspace/components/SuggestionIcons.tsx Removes custom suggestion icon wrappers (deleted).
src/frontend/src/features/rlm-workspace/components/SectionHeader.tsx Removes SectionHeader wrapper (deleted; inlined).
src/frontend/src/features/rlm-workspace/components/ResolvedChip.tsx Removes ResolvedChip wrapper (deleted; inlined).
src/frontend/src/components/ui/radio-option-card.tsx Repoints motion config import to new motion util module.
src/frontend/src/components/ui/icon-button.tsx Adjusts icon button active styling behavior (now token-driven).
src/frontend/src/components/chat/input/SettingsDropdown.tsx Removes old settings dropdown control (deleted).
src/frontend/src/components/chat/input/SendButton.tsx Removes old send button wrapper (deleted; inlined into composer).
src/frontend/src/components/chat/input/AttachmentChip.tsx Removes old attachment chip wrapper (deleted; inlined into composer).
src/frontend/src/components/chat/input/tests/SettingsDropdown.test.tsx Removes tests for deleted SettingsDropdown (deleted).
src/frontend/src/app/pages/VolumesPage.tsx Removes old page wrapper for volumes (deleted).
src/frontend/src/app/pages/RlmWorkspacePage.tsx Removes old page wrapper for workspace (deleted).
src/frontend/src/app/layout/BuilderPanel.tsx Removes old BuilderPanel implementation (deleted; replaced by ShellSidepanel).
src/frontend/AGENTS.md Updates frontend architecture/docs to describe new screens boundaries and lint enforcement.
skills-lock.json Adds shadcn skill/tooling lockfile for updated frontend tooling state.
Comments suppressed due to low confidence (1)

src/frontend/src/screens/workspace/hooks/use-workspace-runtime.ts:160

  • subscribeToExecutionStream is being keyed off sessionRevision and passed sessionRevision as the session_id query param. The execution stream expects the backend session id used for WS chat frames (the sessionId from useChatStore), so this will either subscribe to a non-existent session or never subscribe at all (since sessionRevision starts at 0 and the effect returns early). Subscribe using sessionId (and depend on it), and avoid gating the initial subscription on sessionRevision.

Comment on lines +122 to +132
files: ["src/components/ui/**/*.{ts,tsx}", "src/components/prompt-kit/**/*.{ts,tsx}"],
rules: {
"no-restricted-imports": [
"error",
{
patterns: [
{
group: ["@/screens/*"],
message: "Shared components must not depend on screen-owned modules.",
},
],
Comment on lines +138 to +147
files: ["src/screens/**/model/**/*.{ts,tsx}"],
rules: {
"no-restricted-imports": [
"error",
{
patterns: [
{
group: ["@/screens/*/components/*"],
message: "Screen model modules must not depend on screen component modules.",
},
Comment on lines +154 to +170
files: ["src/screens/shell/**/*.{ts,tsx}"],
rules: {
"no-restricted-imports": [
"error",
{
patterns: [
{
group: [
"@/screens/workspace/components/*",
"@/screens/workspace/model/*",
"@/screens/workspace/hooks/*",
"@/screens/volumes/components/*",
"@/screens/volumes/model/*",
"@/screens/volumes/hooks/*",
],
message:
"Shell modules must import screen-owned panels through top-level screen contracts only.",
Comment on lines 58 to 65
className={cn(
"rounded-lg focus-visible:ring-2",
resolvedVariant === "ghost" && "border border-transparent bg-transparent",
isActive ? "text-accent" : "text-foreground",
// When active, match the semantic foreground text token.
// This ensures the computed `color` is driven by `--color-text`.
"text-foreground",
className,
)}
@Zochory Zochory merged commit c258f76 into main Mar 19, 2026
15 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.

4 participants