Apps: place sidebar sections automatically and add apps place

TE
2d ago
+1248-2

Local apps and new user installs place their sidebar sections at the end of the manifest's default region, including the band below the workspace list. Existing installs receive receipts on first run without any layout change; first-party deployment defaults never auto-place. Saving a newly appearing customize app uses the existing reload path. Placement and its receipt commit together in the sidebar document, so a person's move or removal survives later saves and restarts. cmux apps place APP#SECTION [--region top|middle|bottom] explicitly places or restores one section.

Leo (2026-11-02): "let’s do all these" — "A sidebar panel slot plus ’an agent writes the app, it hot-reloads’. This covers his PR view, makes Session Info extensible, and is mostly built."

The existing v1/v2 schemas already accept defaultRegion: "bottom"; this adds validator coverage. V2 contributions use APP#cmux.section/1, matching the scene provider. Titles remain with that provider for localization. No new watcher or grant policy is introduced.

Design: sidebar spec; daemon contract updated in plans/cmux-next/app-platform.md. Bottom-band rendering and drag forwarding are in #33130. Related prior art: #26713 implements web panes beside chat; this builds on base and does not modify it.

Risk: normal. Placement adds durable personal layout state. Section and receipt share one transaction; existing contributions are adopted in place. Upgrade receipts do not alter the layout. New-install eligibility persists across hidden installs and migration retries. Reconciliation with all receipts present avoids registry writes. Explicit placement is limited to installed, enabled, visible apps on the existing local-only apps door.

Changelog

  • Added: Local apps and new user installs place sidebar sections automatically, and agents can place a section with cmux apps place.

Observed / Not run

  • Formatting and static prepush checks pass.
  • Previous head: focused fleet run passed at a6ae7d3579c1ba1181b55fd2709d87e5bc56c238: cargo test --locked -p cmux-tui-core apps, cargo test --locked -p cmux-app-manifest, and cargo test --locked -p cmux-tui apps_place. The receipt verifies the exact head and source tree. This covers customize first appearance, personal move/removal through reload and restart, hidden/uninstalled apps, explicit restoration, manifest regions and CLI transport.
  • Policy revision d5703f722710f8ab008d38ca4482df9c941948c6: focused fleet validation passed all core app, manifest and CLI tests. Final head 8e948fd2886db402983d8d6b703679e07394f70f: core all-target clippy with -D warnings and focused tests passed, and the crash ratchet passed. Both receipts verify the tested head and source tree. New regression tests cover fresh/legacy defaults, legacy store/local installs without layout changes, hidden installs across restart, migration retries, and reconciliation without registry writes.
  • Not run: interactive sidebar rendering/dragging (separate bottom-band PR), complete app build or end-to-end agent authoring.

Review follow-ups: #33380 (explicit region/scroll), #33383 (temporarily missing local packages), #33382 (initialization retry), #33381 (non-user-origin coverage). Each links the independent review; the implementation owner owns their fix-forward.

Agent session: agent session