Skip to content

M2 slice (b): app-bundle — the complete app-graph overlay + the machine-derived M3 port inventory - #487

Merged
aarontrowbridge merged 1 commit into
mainfrom
451-m2-slice-b-app-session-ui
Aug 21, 2026
Merged

M2 slice (b): app-bundle — the complete app-graph overlay + the machine-derived M3 port inventory#487
aarontrowbridge merged 1 commit into
mainfrom
451-m2-slice-b-app-session-ui

Conversation

@aarontrowbridge

@aarontrowbridge aarontrowbridge commented Aug 21, 2026

Copy link
Copy Markdown
Member

Part of #451 (M2 slice (b); not closing).

The scope correction (the finding that drove this slice)

The planned additive-only scope — app + session-ui A-files — does not typecheck, and the failure is informative: ~10 additive app files depend on symbol-level additions in modified files (settings.developer, tabs.openPath, model.pin, QuestionInfo.kind — the typed question cards spanning schema/core/sdk), and the fork's debug-bar deletion forces layout.tsx into the overlay (base layout imports the deleted module). The fork delta is a cross-cutting feature delta, not an app-layer delta.

Corrected scope: the complete fork-vs-base delta of the app's build graphpackages/{app,ui,session-ui,schema,core,sdk} — 422 files + 1 deletion.

The M2/M3 hinge artifact

manifest.json now carries the machine-derived M3 CUTOVER PORT INVENTORY: the 35 server-coupled files (schema/core/sdk) whose types or runtime the canonical server will NOT have. At cutover the bundle hits exactly these gaps — each is a port-upstream / extension-service / drop decision. Recorded, not resolved. The true overlays (home.tsx & co.) ride wholesale — correct for the one-push cutover — with compose-vs-fork decomposition recorded as post-cutover maintenance (manifest.true_overlays is the worklist).

Proofs (all green)

  1. Equivalence — every overlay file byte-identical to the fork's at the pin (round-trip at extraction, hash-verified at materialization; symlink-aware — app/public/amico.svg is a symlink).
  2. Compositionbun install (4,695 pkgs) → schema typecheck → session-ui typecheck → ui tsc build → app tsgo -b typecheck → app vite production build (14.3s, 1,587 assets, Amicode surfaces verified in the emitted bundle) → 103/103 session-ui unit tests on the materialized tree.

Remaining M2

The bundle's CI pin (drift detection against canonical releases) and the consumer flip (deck panes → service origin, CSP/?auth_token= wiring). M3 remains gated on those + the port-inventory decisions.

Summary by CodeRabbit

  • New Features
    • Introduced a chat-first landing experience with rail navigation, session tabs, side panels, context browsing, Vault access, review tools, and split-pane workspaces.
    • Added richer prompt composition, including attachments, file references, comments, model and agent selection, and improved clipboard support.
    • Added connection and context-usage indicators, bug reporting, terminals, project creation, session management, and expanded settings.
    • Added light/dark theme improvements, responsive layouts, and Chinese and Traditional Chinese localization.
  • Bug Fixes
    • Improved session timelines, navigation, drag-and-drop, review comments, status displays, and pane recovery.

…ort inventory machine-derived

M2 slice (b) of #451, with an honest scope correction discovered by the
build proof: the planned additive-only scope (app+session-ui A-files) does
NOT typecheck. ~10 additive files depend on symbol-level additions in
modified files (settings.developer, tabs.openPath, model.pin,
QuestionInfo.kind — the typed question cards spanning schema/core/sdk),
and the debug-bar deletion forces layout.tsx into the overlay (base
layout imports the deleted module). The fork delta is a cross-cutting
FEATURE delta, not an app-layer delta.

Corrected scope: the complete fork-vs-base delta of the app's build graph
(packages/{app,ui,session-ui,schema,core,sdk}) — 422 files + 1 deletion,
per-package: app 94A/105M/1D, ui 142A/22M, session-ui 8A/16M, schema
2A/5M, core 3A/23M, sdk 0A/2M.

The correction yields the M2/M3 hinge artifact: manifest.json now carries
the machine-derived M3 CUTOVER PORT INVENTORY — the 35 server-coupled
files (schema/core/sdk) whose types/runtime the canonical server will NOT
have. Every app feature touching them is a cutover decision (port
upstream / extension service / drop). The true overlays ride wholesale
(correct for one-push cutover); compose-vs-fork decomposition is recorded
as post-cutover maintenance (manifest.true_overlays).

Tooling: symlink-aware extraction round-trip + materialization (the
amico.svg → ui-asset symlink), archive batching for the larger file set.

Proofs (all green): bun install (4,695 pkgs) → schema + session-ui
typechecks → ui tsc build → app tsgo -b typecheck → app VITE PRODUCTION
BUILD (14.3s, 1,587 assets, Amicode surfaces verified in the emitted
bundle) → 103/103 session-ui unit tests on the materialized tree.
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7abbb350-c2a9-4024-9eab-75c3435cb617

📥 Commits

Reviewing files that changed from the base of the PR and between f684c3f and 8ef4bee.

⛔ Files ignored due to path filters (6)
  • packages/app-bundle/overlay/packages/app/public/amico.svg is excluded by !**/*.svg
  • packages/app-bundle/overlay/packages/app/public/assets/Aero-Regular.ttf is excluded by !**/*.ttf
  • packages/app-bundle/overlay/packages/app/public/assets/JuliaMono-Regular.woff2 is excluded by !**/*.woff2
  • packages/app-bundle/overlay/packages/app/public/assets/RacingSansOne-Regular.woff2 is excluded by !**/*.woff2
  • packages/app-bundle/overlay/packages/sdk/js/src/v2/gen/sdk.gen.ts is excluded by !**/gen/**
  • packages/app-bundle/overlay/packages/sdk/js/src/v2/gen/types.gen.ts is excluded by !**/gen/**
📒 Files selected for processing (256)
  • packages/app-bundle/README.md
  • packages/app-bundle/manifest.json
  • packages/app-bundle/overlay/packages/app/CONTEXT.md
  • packages/app-bundle/overlay/packages/app/docs/adr/0001-chat-first-landing.md
  • packages/app-bundle/overlay/packages/app/docs/adr/0002-brain-as-chat-background.md
  • packages/app-bundle/overlay/packages/app/docs/adr/0003-context-tree-top-panel.md
  • packages/app-bundle/overlay/packages/app/docs/adr/0004-context-tree-to-side-panel.md
  • packages/app-bundle/overlay/packages/app/docs/design/agentic-surfaces.md
  • packages/app-bundle/overlay/packages/app/e2e/regression/chrome-surfaces.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/regression/home-open-chat-empty-projects.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/regression/pane-boot-watch.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/regression/project-picker-recent-search.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/regression/review-line-comment.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/regression/session-timeline-tool-projection.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/regression/tab-navigate-mousedown.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/regression/workbench-drops.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/regression/workbench-panes.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/smoke/session-timeline.spec.ts
  • packages/app-bundle/overlay/packages/app/e2e/utils/waits.ts
  • packages/app-bundle/overlay/packages/app/index.html
  • packages/app-bundle/overlay/packages/app/playwright.config.ts
  • packages/app-bundle/overlay/packages/app/public/oc-theme-preload.js
  • packages/app-bundle/overlay/packages/app/src/amicode/inspector/device-inspector.tsx
  • packages/app-bundle/overlay/packages/app/src/amicode/inspector/inspector-bridge.ts
  • packages/app-bundle/overlay/packages/app/src/amicode/inspector/inspector-context.tsx
  • packages/app-bundle/overlay/packages/app/src/amicode/inspector/run-inspector.tsx
  • packages/app-bundle/overlay/packages/app/src/app.tsx
  • packages/app-bundle/overlay/packages/app/src/components/amicode-default-model-value.ts
  • packages/app-bundle/overlay/packages/app/src/components/amicode-default-model.test.ts
  • packages/app-bundle/overlay/packages/app/src/components/amicode-default-model.tsx
  • packages/app-bundle/overlay/packages/app/src/components/amicode-defaults-capsule.tsx
  • packages/app-bundle/overlay/packages/app/src/components/amicode-file-ref-bridge.tsx
  • packages/app-bundle/overlay/packages/app/src/components/connection-banner.tsx
  • packages/app-bundle/overlay/packages/app/src/components/dialog-new-project.tsx
  • packages/app-bundle/overlay/packages/app/src/components/pane-bridge.tsx
  • packages/app-bundle/overlay/packages/app/src/components/prompt-input-clipboard-structure.test.ts
  • packages/app-bundle/overlay/packages/app/src/components/prompt-input-v2.tsx
  • packages/app-bundle/overlay/packages/app/src/components/prompt-input.tsx
  • packages/app-bundle/overlay/packages/app/src/components/prompt-input/attachments.ts
  • packages/app-bundle/overlay/packages/app/src/components/prompt-input/clipboard-bridge.test.ts
  • packages/app-bundle/overlay/packages/app/src/components/prompt-input/clipboard-bridge.ts
  • packages/app-bundle/overlay/packages/app/src/components/prompt-input/placeholder.ts
  • packages/app-bundle/overlay/packages/app/src/components/prompt-project-selector.tsx
  • packages/app-bundle/overlay/packages/app/src/components/report-bug-button.css
  • packages/app-bundle/overlay/packages/app/src/components/report-bug-button.stories.tsx
  • packages/app-bundle/overlay/packages/app/src/components/report-bug-button.tsx
  • packages/app-bundle/overlay/packages/app/src/components/session-context-usage.tsx
  • packages/app-bundle/overlay/packages/app/src/components/session/context-warning-banner.tsx
  • packages/app-bundle/overlay/packages/app/src/components/session/index.ts
  • packages/app-bundle/overlay/packages/app/src/components/session/panel-menu.tsx
  • packages/app-bundle/overlay/packages/app/src/components/session/session-chats-dropdown.test.ts
  • packages/app-bundle/overlay/packages/app/src/components/session/session-context-tab.tsx
  • packages/app-bundle/overlay/packages/app/src/components/session/session-header.tsx
  • packages/app-bundle/overlay/packages/app/src/components/session/session-new-view.tsx
  • packages/app-bundle/overlay/packages/app/src/components/session/session-preview-tab.tsx
  • packages/app-bundle/overlay/packages/app/src/components/session/use-context-warning.ts
  • packages/app-bundle/overlay/packages/app/src/components/settings-dialog.tsx
  • packages/app-bundle/overlay/packages/app/src/components/settings-v2/data-storage-controller.ts
  • packages/app-bundle/overlay/packages/app/src/components/settings-v2/data-storage.tsx
  • packages/app-bundle/overlay/packages/app/src/components/settings-v2/developer-tools-controller.ts
  • packages/app-bundle/overlay/packages/app/src/components/settings-v2/developer-tools.tsx
  • packages/app-bundle/overlay/packages/app/src/components/settings-v2/dialog-settings-v2.tsx
  • packages/app-bundle/overlay/packages/app/src/components/settings-v2/general.tsx
  • packages/app-bundle/overlay/packages/app/src/components/settings-v2/permissions.tsx
  • packages/app-bundle/overlay/packages/app/src/components/settings-v2/settings-v2.css
  • packages/app-bundle/overlay/packages/app/src/components/split-frame.tsx
  • packages/app-bundle/overlay/packages/app/src/components/status-popover-body.tsx
  • packages/app-bundle/overlay/packages/app/src/components/status-popover-model.test.ts
  • packages/app-bundle/overlay/packages/app/src/components/status-popover-model.ts
  • packages/app-bundle/overlay/packages/app/src/components/status-popover.tsx
  • packages/app-bundle/overlay/packages/app/src/components/terminal.tsx
  • packages/app-bundle/overlay/packages/app/src/components/titlebar-channel.test.ts
  • packages/app-bundle/overlay/packages/app/src/components/titlebar-channel.ts
  • packages/app-bundle/overlay/packages/app/src/components/titlebar-tab-nav.css
  • packages/app-bundle/overlay/packages/app/src/components/titlebar-tab-strip.tsx
  • packages/app-bundle/overlay/packages/app/src/components/titlebar.tsx
  • packages/app-bundle/overlay/packages/app/src/components/vault-browser-model.test.ts
  • packages/app-bundle/overlay/packages/app/src/components/vault-browser-model.ts
  • packages/app-bundle/overlay/packages/app/src/components/vault-browser.tsx
  • packages/app-bundle/overlay/packages/app/src/components/vault-panel.tsx
  • packages/app-bundle/overlay/packages/app/src/components/workbench-panel.tsx
  • packages/app-bundle/overlay/packages/app/src/context/command.tsx
  • packages/app-bundle/overlay/packages/app/src/context/directory-sync.ts
  • packages/app-bundle/overlay/packages/app/src/context/global-sync/bootstrap.test.ts
  • packages/app-bundle/overlay/packages/app/src/context/global-sync/child-store.ts
  • packages/app-bundle/overlay/packages/app/src/context/global-sync/event-reducer.test.ts
  • packages/app-bundle/overlay/packages/app/src/context/global-sync/event-reducer.ts
  • packages/app-bundle/overlay/packages/app/src/context/global-sync/session-cache.test.ts
  • packages/app-bundle/overlay/packages/app/src/context/global-sync/session-cache.ts
  • packages/app-bundle/overlay/packages/app/src/context/global-sync/types.ts
  • packages/app-bundle/overlay/packages/app/src/context/language.tsx
  • packages/app-bundle/overlay/packages/app/src/context/layout-tabs.ts
  • packages/app-bundle/overlay/packages/app/src/context/layout.tsx
  • packages/app-bundle/overlay/packages/app/src/context/local-agent.test.ts
  • packages/app-bundle/overlay/packages/app/src/context/local-agent.ts
  • packages/app-bundle/overlay/packages/app/src/context/local.tsx
  • packages/app-bundle/overlay/packages/app/src/context/models.tsx
  • packages/app-bundle/overlay/packages/app/src/context/platform.tsx
  • packages/app-bundle/overlay/packages/app/src/context/server-sdk.test.ts
  • packages/app-bundle/overlay/packages/app/src/context/server-sdk.tsx
  • packages/app-bundle/overlay/packages/app/src/context/server-session.ts
  • packages/app-bundle/overlay/packages/app/src/context/server.tsx
  • packages/app-bundle/overlay/packages/app/src/context/settings.tsx
  • packages/app-bundle/overlay/packages/app/src/context/split.tsx
  • packages/app-bundle/overlay/packages/app/src/context/tabs.tsx
  • packages/app-bundle/overlay/packages/app/src/context/vault-panel.ts
  • packages/app-bundle/overlay/packages/app/src/context/workbench.tsx
  • packages/app-bundle/overlay/packages/app/src/context/zoom-keybind.test.ts
  • packages/app-bundle/overlay/packages/app/src/design-polish.css
  • packages/app-bundle/overlay/packages/app/src/desktop-menu.ts
  • packages/app-bundle/overlay/packages/app/src/entry.tsx
  • packages/app-bundle/overlay/packages/app/src/i18n/ar.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/br.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/bs.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/da.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/de.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/en.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/es.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/fr.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/ja.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/ko.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/no.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/pl.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/ru.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/th.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/tr.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/uk.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/zh.ts
  • packages/app-bundle/overlay/packages/app/src/i18n/zht.ts
  • packages/app-bundle/overlay/packages/app/src/index.css
  • packages/app-bundle/overlay/packages/app/src/pages/error.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/home-projects.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/home-projects.ts
  • packages/app-bundle/overlay/packages/app/src/pages/home-session-archive.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/home-session-archive.ts
  • packages/app-bundle/overlay/packages/app/src/pages/home.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/home/home-sessions-view.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/layout-new.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/layout.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/layout/session-tab-avatar.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/layout/sidebar-items.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/layout/sidebar-workspace.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/new-session.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/new-session/new-session-draft-controller.ts
  • packages/app-bundle/overlay/packages/app/src/pages/new-session/new-session-view.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/bug-dock-controller.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/bug-dock-controller.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/bug-dock.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/report-bug.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/report-bug.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-bug-dock.stories.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-bug-dock.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-composer-controls.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-composer-region-controller.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-composer-region.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-composer-state.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-question-dock.helpers.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-question-dock.helpers.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-question-dock.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/composer/session-revert-dock.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/helpers.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/helpers.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/session-panel-width.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/session-panel-width.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/session-side-panel-structure.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/session-side-panel.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/timeline/last-prompt-bubble.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/timeline/message-timeline.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/use-amicode-commands.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/use-amicode-commands.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/use-session-commands.tsx
  • packages/app-bundle/overlay/packages/app/src/pages/session/v2/accumulate-diffs.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/v2/accumulate-diffs.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/v2/review-panel-v2-state.test.ts
  • packages/app-bundle/overlay/packages/app/src/pages/session/v2/review-panel-v2-state.ts
  • packages/app-bundle/overlay/packages/app/src/utils/amicode-bridge.ts
  • packages/app-bundle/overlay/packages/app/src/utils/amicode-bug-report.test.ts
  • packages/app-bundle/overlay/packages/app/src/utils/amicode-bug-report.ts
  • packages/app-bundle/overlay/packages/app/src/utils/amicode-fetch.ts
  • packages/app-bundle/overlay/packages/app/src/utils/amicode-hidden-project.test.ts
  • packages/app-bundle/overlay/packages/app/src/utils/amicode-hidden-project.ts
  • packages/app-bundle/overlay/packages/app/src/utils/amicode-pane.ts
  • packages/app-bundle/overlay/packages/app/src/utils/amicode-route-info.ts
  • packages/app-bundle/overlay/packages/app/src/utils/chrome-dropdown.ts
  • packages/app-bundle/overlay/packages/app/src/utils/global-clipboard.test.ts
  • packages/app-bundle/overlay/packages/app/src/utils/global-clipboard.ts
  • packages/app-bundle/overlay/packages/app/src/utils/pane-bridge.ts
  • packages/app-bundle/overlay/packages/app/src/utils/serialize-session.test.ts
  • packages/app-bundle/overlay/packages/app/src/utils/serialize-session.ts
  • packages/app-bundle/overlay/packages/app/src/utils/server-compat.ts
  • packages/app-bundle/overlay/packages/app/src/utils/start-prompt.ts
  • packages/app-bundle/overlay/packages/app/src/utils/web-zoom.test.ts
  • packages/app-bundle/overlay/packages/app/src/utils/web-zoom.ts
  • packages/app-bundle/overlay/packages/app/src/utils/webview-context-menu.ts
  • packages/app-bundle/overlay/packages/app/src/wsl/settings-model.test.ts
  • packages/app-bundle/overlay/packages/app/src/wsl/settings-model.ts
  • packages/app-bundle/overlay/packages/core/schema.json
  • packages/app-bundle/overlay/packages/core/src/config.ts
  • packages/app-bundle/overlay/packages/core/src/database/database.ts
  • packages/app-bundle/overlay/packages/core/src/database/migration.gen.ts
  • packages/app-bundle/overlay/packages/core/src/database/migration/20260813162312_shocking_karnak.ts
  • packages/app-bundle/overlay/packages/core/src/database/schema.gen.ts
  • packages/app-bundle/overlay/packages/core/src/flag/flag.ts
  • packages/app-bundle/overlay/packages/core/src/models-dev.ts
  • packages/app-bundle/overlay/packages/core/src/observability/otlp.ts
  • packages/app-bundle/overlay/packages/core/src/permission.ts
  • packages/app-bundle/overlay/packages/core/src/permission/provider-saved.ts
  • packages/app-bundle/overlay/packages/core/src/permission/sql.ts
  • packages/app-bundle/overlay/packages/core/src/provider-permission.ts
  • packages/app-bundle/overlay/packages/core/src/session.ts
  • packages/app-bundle/overlay/packages/core/src/session/runner/llm.ts
  • packages/app-bundle/overlay/packages/core/src/tool/bash.ts
  • packages/app-bundle/overlay/packages/core/src/tool/edit.ts
  • packages/app-bundle/overlay/packages/core/src/tool/glob.ts
  • packages/app-bundle/overlay/packages/core/src/tool/grep.ts
  • packages/app-bundle/overlay/packages/core/src/tool/question.ts
  • packages/app-bundle/overlay/packages/core/src/tool/read.ts
  • packages/app-bundle/overlay/packages/core/src/tool/webfetch.ts
  • packages/app-bundle/overlay/packages/core/src/tool/websearch.ts
  • packages/app-bundle/overlay/packages/core/src/tool/write.ts
  • packages/app-bundle/overlay/packages/core/src/v1/session.ts
  • packages/app-bundle/overlay/packages/core/test/tool-question.test.ts
  • packages/app-bundle/overlay/packages/schema/src/index.ts
  • packages/app-bundle/overlay/packages/schema/src/prompt.ts
  • packages/app-bundle/overlay/packages/schema/src/provider-permission.ts
  • packages/app-bundle/overlay/packages/schema/src/question.ts
  • packages/app-bundle/overlay/packages/schema/src/v1/question.ts
  • packages/app-bundle/overlay/packages/schema/src/v1/session.ts
  • packages/app-bundle/overlay/packages/schema/test/question.test.ts
  • packages/app-bundle/overlay/packages/session-ui/package.json
  • packages/app-bundle/overlay/packages/session-ui/src/components/group-parts.test.ts
  • packages/app-bundle/overlay/packages/session-ui/src/components/markdown-file-refs.test.ts
  • packages/app-bundle/overlay/packages/session-ui/src/components/markdown-file-refs.ts
  • packages/app-bundle/overlay/packages/session-ui/src/components/markdown-stream.test.ts
  • packages/app-bundle/overlay/packages/session-ui/src/components/markdown-stream.ts
  • packages/app-bundle/overlay/packages/session-ui/src/components/markdown.css
  • packages/app-bundle/overlay/packages/session-ui/src/components/markdown.tsx
  • packages/app-bundle/overlay/packages/session-ui/src/components/message-part-css.test.ts
  • packages/app-bundle/overlay/packages/session-ui/src/components/message-part-groups.ts
  • packages/app-bundle/overlay/packages/session-ui/src/components/message-part-skill.test.ts
  • packages/app-bundle/overlay/packages/session-ui/src/components/message-part-skill.ts
  • packages/app-bundle/overlay/packages/session-ui/src/components/message-part.css
  • packages/app-bundle/overlay/packages/session-ui/src/components/message-part.tsx
  • packages/app-bundle/overlay/packages/session-ui/src/components/session-retry.tsx
  • packages/app-bundle/overlay/packages/session-ui/src/components/session-turn.css
  • packages/app-bundle/overlay/packages/session-ui/src/components/tool-error-card.tsx
  • packages/app-bundle/overlay/packages/session-ui/src/components/tool-status-title.tsx
  • packages/app-bundle/overlay/packages/session-ui/src/util/clipboard.ts
  • packages/app-bundle/overlay/packages/session-ui/src/v2/components/prompt-input/attachments.ts
  • packages/app-bundle/overlay/packages/session-ui/src/v2/components/prompt-input/index.tsx
  • packages/app-bundle/overlay/packages/session-ui/src/v2/components/session-review-file-preview-v2.tsx
  • packages/app-bundle/overlay/packages/session-ui/src/v2/components/session-review-v2.css
  • packages/app-bundle/overlay/packages/session-ui/src/v2/components/session-review-v2.tsx
  • packages/app-bundle/scripts/extract_overlay.mjs
  • packages/app-bundle/scripts/materialize.mjs

📝 Walkthrough

Walkthrough

This PR replaces the previous UI-only overlay with a complete cross-package app-graph delta spanning app, session-ui, schema, core, and SDK packages. It rewrites the Amicode application shell, contexts, and components under a chat-first layout, adds core session/permission/tool services, updates schemas, adds a session-ui package, and updates overlay extraction/materialization tooling and manifests.

Changes

Complete App-Graph Overlay

Layer / File(s) Summary
Overlay tooling and manifest
packages/app-bundle/scripts/extract_overlay.mjs, packages/app-bundle/scripts/materialize.mjs, packages/app-bundle/manifest.json, packages/app-bundle/README.md
Tooling computes and verifies a six-package overlay including symlinks. The manifest and README record the schema-4 complete app-graph scope, server-coupled ports, true overlays, and file hashes.
Design documentation and ADRs
packages/app-bundle/overlay/packages/app/CONTEXT.md, .../docs/adr/*, .../docs/design/agentic-surfaces.md
Adds terminology and ADRs for the chat-first landing, Brain background, context-tree panel, and vault panel.
Playwright E2E and smoke tests
.../app/e2e/**, .../app/playwright.config.ts
Adds regression and smoke tests covering vault, review comments, workbench drag/drop, panes, tab navigation, and session timelines.
Application entry, bootstrap and routing
.../app/index.html, .../app/src/entry.tsx, .../app/src/app.tsx, .../app/src/pages/error.tsx, .../app/src/pages/layout-new.tsx, .../app/src/desktop-menu.ts, .../app/src/index.css, .../app/src/design-polish.css
Adds the web entry point, provider composition, connection gating, routing, error page, and global styling.
Application state contexts
.../app/src/context/**
Adds contexts for commands, sync (global/directory), language, layout/tabs, local model/agent selection, models, platform, server SDK/session, server connections, settings, split panes, tabs, and workbench mirroring.
Pulse Inspector components
.../app/src/amicode/inspector/**
Adds the inspector bridge, context, and run/device inspector UI.
Titlebar, tab strip and terminal
.../app/src/components/titlebar*.{tsx,css}, .../app/src/components/terminal.tsx
Adds the titlebar, tab strip drag/drop, and terminal PTY component.
Split-frame workbench and panes
.../app/src/components/split-frame.tsx, .../app/src/components/workbench-panel.tsx
Adds the pane-based workbench and sessions sidebar panel.
Status popover, connections and vault browser
.../app/src/components/status-popover*.{tsx,ts}, .../app/src/components/vault-*.{tsx,ts}
Adds server/directory/global status popovers and the vault mount browser and panel.
Settings V2 dialog and sections
.../app/src/components/settings-v2/**, .../app/src/components/settings-dialog.tsx
Adds the V2 settings dialog with data-storage, developer-tools, general, and permissions sections.
Prompt input composer and session header
.../app/src/components/prompt-input*.{tsx,ts}, .../app/src/components/prompt-project-selector.tsx, .../app/src/components/amicode-*, .../app/src/components/session/**
Adds the V1/V2 prompt composers, attachment/clipboard handling, project selector, Amicode compute capsule, and session header.
Session pages
.../app/src/pages/**, .../app/src/wsl/settings-model.ts
Adds home/new-session pages, composer docks, session helpers, side panel, timeline bubble logic, and WSL settings model.
Shared utilities
.../app/src/utils/**
Adds Amicode bridges, clipboard fallback, server-compat V1 adapter, and web-zoom utilities.
Core package: session runtime, tools, permissions
packages/app-bundle/overlay/packages/core/**
Adds the SQLite schema/migrations, config service, database consolidation, models.dev catalog, permission V2 service, session V2 service, LLM runner, and built-in tools.
Schema package
packages/app-bundle/overlay/packages/schema/**
Adds prompt, provider-permission, and question schemas for V1/V2.
session-ui package
packages/app-bundle/overlay/packages/session-ui/**
Adds markdown streaming/rendering, message-part grouping, and V2 prompt input/session review components.

Estimated code review effort: 5 (Critical) | ~180 minutes

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 451-m2-slice-b-app-session-ui

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge merged commit a03ec96 into main Aug 21, 2026
6 of 7 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