Skip to content

T-H3RG-publish-as-secondary-view

State: planning/proposed · Impact: medium · Complexity: medium

The note page’s full publish detail — state and dry-run preview — lives behind a primary stage tab (“Publish results”) that replaces the editor instead of sitting beside it. This task moves that detail into one secondary-pane view, ApPublishView.vue, so the editor stays on screen while a reader checks or acts on publish state — the placement half of render-publish-status-desktop.md’s tracking work; the data half stays there.

LocationRole today
solutions/determined/experiences/agent-pants/app/pages/apps/agent-pants/notes/[...path].vue#stageUTabs v-model="stage" switches the whole column between the MdSurface editor and a full ApPublishStatusPanel + ApPublishPreviewPanel pair; no Install action exists on this page for any kind
solutions/determined/experiences/agent-pants/app/components/ApPublishStatusPanel.vueReads a real destination root’s state (current/stale/conflict/unknown) once a root is typed; used only inside the results stage tab
solutions/determined/experiences/agent-pants/app/components/ApPublishPreviewPanel.vueThe dry-run preview; a layout="compact" mode is used in the aux pane today, a full mode in the results tab
solutions/determined/experiences/agent-pants/app/components/ApInstallModal.vueInstall-with-preview dialog, already scoped by an optional path prop; used from plugins/[...path].vue and index.vue, not from the note page
solutions/determined/experiences/agent-pants/app/utils/publishVerdict.tsThe one verdict/label logic both preview panels share
solutions/agent-pants/docs/vault/tasks/render-publish-status-desktop.mdNames ApPublishPreviewPanel.vue and ApInstallModal.vue as the callers to change once the real status query is wired in; tracks the data half, not placement

ApPublishView.vue renders in the secondary pane for every publishable note (skill, command, agent, plugin — PUBLISHABLE_KINDS) and shows real publish state, the dry-run preview, and — for the first time on this page — an Install action that opens the existing ApInstallModal.vue. notes/[...path].vue drops its stage UTabs; the editor is the whole column, and the aux pane’s compact Publish section is replaced by the full ApPublishView.vue. A plugin note is a container, so its ApPublishView.vue also links to the existing marketplace-wide Build flow (there is no per-plugin build); a marketplace note stays non-publishable and keeps its “no per-destination layout” message.

  1. Extract ApPublishView.vue from the current results stage tab markup: status panel, preview panel (its existing full, non-compact mode), and an Install button that opens ApInstallModal.vue scoped to the open note’s path.
  2. In notes/[...path].vue, delete the stage ref, stageTabs, the UTabs, and the conditional results branch; the MdSurface editor renders unconditionally. Replace the aux “Publish” ApPanel (today’s compact preview only) with ApPublishView.vue.
  3. For a plugin note (data.kind === 'plugin'), add a “Build…” link in ApPublishView.vue to the existing marketplace build flow (ApBuildPanel.vue / build.vue) — open decision: link to the standalone /apps/agent-pants/build route, or open ApBuildPanel.vue inline; resolve by checking how much vertical room the secondary pane leaves once the editor owns the main column.
  4. Update the Playwright authoring spec: assert the editor is on screen with no stage tab strip, and that the secondary Publish section offers Install for a skill/command/agent/plugin note.
AreaNote
solutions/determined/experiences/agent-pants/app/components/ApPublishView.vueSecondary-pane publish state, preview and Install/Build actions
solutions/determined/experiences/agent-pants/app/pages/apps/agent-pants/notes/[...path].vueRemove the stage UTabs; mount ApPublishView.vue in the aux pane
solutions/determined/products/agent-pants/tests/e2e/authoring.e2e.tsAssert the editor is on screen with no stage tab strip, and Install works from the secondary view
  • AC-1: notes/[...path].vue no longer renders a stage UTabs; the editor is visible unconditionally.
  • AC-2: The secondary pane shows ApPublishView.vue for a skill, command, agent or plugin note, and the “no per-destination layout” message for a marketplace note.
  • AC-3: Install is reachable from the secondary pane on a skill/command/agent/plugin note, where today it does not exist on this page at all.
  • AC-4: A plugin note’s secondary pane links to the marketplace build flow.
  • AC-5: The Playwright authoring project passes with the updated assertions.
  • plugins/[...path].vue’s own Members/Install primary tabs — a similar primary-vs-secondary question, left for a follow-up now that ApPublishView.vue exists to reuse.
  • The Home page’s vault-wide “Installed on disk” tab and ApBuildPanel Build tab (index.vue) — a different, vault-wide operation, not a single note’s publish view.
  • The real publish-status data model (five-state tracking against a chosen destination) — that is render-publish-status-desktop.md’s open work, read but not done here.

From the user’s planning request of 2026-09-07: “publish status and controls are a secondary view, not a primary tab.” Tracked as the placement half of solutions/agent-pants/docs/vault/tasks/render-publish-status-desktop.md, which covers calling the desktop’s real publish-status query instead of the dry-run heuristic currently on screen.

T-GHE3-edit-form-in-center-pane, T-RR9V-tabs-carry-entity-icons-and-views


← Back to Tasks