LearnNewsExamplesServices
Frontmatter
titlefeat(agentos): add keeper created pane chrome (#14765)
authorneo-gpt
stateClosed
createdAtJul 4, 2026, 9:17 PM
updatedAtJul 27, 2026, 12:06 AM
closedAtJul 5, 2026, 5:37 AM
mergedAt
branchesdevcodex/14765-keeper-pane-chrome
urlhttps://github.com/neomjs/neo/pull/14819
contentTrust
projected
quarantined0
signals[]
Closed
neo-gpt
neo-gpt commented on Jul 4, 2026, 9:17 PM

Resolves #14765

Adds keeper-owned pane chrome around materialized create-module widgets: the pane owns title/dispose/promote controls, while the live child keeps the original instanceId as the mutation target. The registry now stores paneRef for lifecycle teardown and uses record.set() for title/state changes so provider record-field bindings update instead of drifting from direct property writes.

Evidence: L2 local harness coverage and direct Node probes achieved for the keeper-pane ACs; L3 live popup/window promotion remains post-merge/manual because this slice exposes the injected render-target seam rather than a concrete popup surface.

Deltas from ticket

Promote is implemented as an injected render-target seam (promoteTarget.add(pane)) with unit-level proof. That preserves the shared-worker "windows are render targets" topology while leaving a concrete live popup/window surface to the surface-integration follow-up lane.

Test Evidence

  • npm run agent-preflight -- --no-fix apps/agentos/view/create/CreatedPane.mjs apps/agentos/view/create/store/CreatedInstances.mjs apps/agentos/view/create/util/acceptPath.mjs test/playwright/unit/apps/agentos/create/acceptPath.spec.mjs test/playwright/unit/apps/agentos/create/createSurface.spec.mjs passed on rebased head.
  • node --check apps/agentos/view/create/CreatedPane.mjs
  • node --check apps/agentos/view/create/store/CreatedInstances.mjs
  • node --check apps/agentos/view/create/util/acceptPath.mjs
  • node --check test/playwright/unit/apps/agentos/create/acceptPath.spec.mjs
  • node --check test/playwright/unit/apps/agentos/create/createSurface.spec.mjs
  • git diff --check and git diff --cached --check passed before commit.
  • Direct accept-path probe passed: {"accepted":true,"ntype":"agentos-created-pane","contentNtype":"grid-container","paneRef":"ap-probe-current-pane","destroyedId":"ap-probe-current-pane","disposed":true,"state":"disposed"}.
  • Direct CreatedPane probe passed: {"active":null,"before":"Before","after":"After","promoted":true,"targetMoved":true,"recordState":"disposed","paneDestroying":true}.
  • Focused Playwright unit command attempted: npm run test-unit -- test/playwright/unit/apps/agentos/create/acceptPath.spec.mjs test/playwright/unit/apps/agentos/create/createSurface.spec.mjs --reporter=line --workers=1; local runner emitted only the Playwright invocation and stalled for 60 seconds, then was stopped with Ctrl-C. This is not counted as passing evidence.

Post-Merge Validation

  • In a live AgentOS window, create a keeper widget and verify the title/dispose pane chrome renders around the widget.
  • Exercise a concrete popup/window promotion target once the live promotion surface lands.

Commit

  • 932195e284feat(agentos): add keeper created pane chrome (#14765)

Authored by Euclid (GPT-5, Codex Desktop). Session 6439a7c5-5f2f-4658-9226-835c317c7a0b.

neo-fable
neo-fable commented on Jul 5, 2026, 5:37 AM

Closed by operator direction (2026-07-05, damage-control step 1): the constrained-blueprint/keeper create line is superseded — ruling + disposition recorded at #13349 (comment 4884691993). This PR faithfully implements its ticket; the direction error is at the spec level, and it is mine (the spec author), not the implementer. The substrate this builds on (apps/agentos/view/create + the childapp grammar) is being removed; conversational creation re-plans NL-native (chat with a frontier model driving the Neural Link verb surface, CSS-based design system, saved outputs) after the removal lands. The removal ticket is cross-linked on #13349.