Skip to content

Promote main to release - #2664

Merged
copse-release-bot[bot] merged 5 commits into
releasefrom
main
Sep 11, 2026
Merged

Promote main to release#2664
copse-release-bot[bot] merged 5 commits into
releasefrom
main

Conversation

@copse-release-bot

Copy link
Copy Markdown
Contributor

Daily automated promotion of main to the release-ready release branch.

The repository ruleset requires the full CI Passed gate. This PR will
merge automatically when that gate is green; failures leave it open
until the underlying issue is fixed on main.

jonathanKingston and others added 5 commits September 10, 2026 14:16
Chat-supplied Mermaid source previously ran through the parser and SVG
renderer in the application document, which has access to Copse's native
API. Move the complete Mermaid runtime into a separate
`sandbox="allow-scripts"` iframe per diagram, retaining Mermaid's strict
mode inside it.

The host sends inert source through a private MessagePort and accepts
only bounded dimensions or failure. SVG stays inside the frame,
including expansion. A hash-pinned bootstrap and restrictive frame CSP
constrain resources; Electron separately blocks subframe navigation away
from the packaged document. Preserve the existing inline scrolling,
responsive sizing, and expand/zoom controls.

Diagrams use chat's bundled Pliant regular and italic variable fonts,
loaded before layout, with matching bold weight. Font bytes stay inside
the hash-pinned bootstrap; `font-src 'none'` remains unchanged. The
parity checks cover every non-math text run and confirm both faces are
loaded.

Validation:
- Rebased onto current `main`; `pnpm run check` and `pnpm run build`
pass (9,144 unit tests).
- 18 focused Electron tests pass on Mermaid 11.17.2 / Electron 44.1.1:
14 rendering comparisons, streaming/repeated expansion, ten simultaneous
diagrams, and isolation probes.
- All six Markdown regression specs pass on the rebased runtime.
- Refreshed and inspected inline, expanded, and before/after
screenshots.
- Local Electron validation omitted the shared pre-reload window-close
hook because it stalls on this Mac; test assertions were unchanged.
Standard harness remains in the committed specs.
- The test oracle selects broad coverage for the build/global-style
changes; full Electron coverage remains for CI.

See `docs/spikes/mermaid-isolation.md` for the protocol and limits,
including per-frame runtime overhead, disposal while loading,
light-theme/packaging coverage, and the distinction between DOM/native
capability isolation and CPU/memory containment.

Screenshots: [inline
chat](https://github.com/copse-dev/agent-pane/blob/codex/mermaid-execution-isolation/tests/e2e/screenshots/mermaid-isolated-inline.png),
[expanded
diagram](https://github.com/copse-dev/agent-pane/blob/codex/mermaid-execution-isolation/tests/e2e/screenshots/mermaid-diagram-agent-loop.png),
[rendering
comparison](https://github.com/copse-dev/agent-pane/blob/codex/mermaid-execution-isolation/tests/e2e/screenshots/mermaid-parity-math.png).

---------

Co-authored-by: Jonathan Kingston <KingstonMailBox@gmail.com>
Co-authored-by: copse-release-bot[bot] <304038887+copse-release-bot[bot]@users.noreply.github.com>
Co-authored-by: jonathanKingston <338988+jonathanKingston@users.noreply.github.com>
…get-pr

Fix settings button edge hit target
## Problem

Copse had no first-party workflow for selecting an Apple target, running
its common Xcode actions, and keeping the launched Simulator visible
inside the app. Agents could reach parts of this through shell commands,
but that mixed user-triggered work with inferred shell execution and
provided no bridge into Copse's Desktop pane.

## Result

- Add an experimental Apple Development feature pack with thread-scoped
Xcode project, scheme, configuration, and destination selection.
- Detect likely Xcode workspaces with a bounded filesystem-only scan and
show “Apple Development…” in the project overflow menu. The action opens
the existing setup panel; detection alone never enrolls a project or
starts XcodeBuildMCP.
- Ask Xcode for the destinations eligible for the selected scheme,
retain a compatible saved choice, and prefer an already booted Simulator
when appropriate.
- Provide compact Build, Test, Run, Cancel, refresh, progress,
diagnostics, and recovery states backed by supervised, bounded host
operations.
- Open the selected Simulator in Copse's Desktop pane after a successful
panel Run without changing the recorded Run result if preview
presentation fails.
- Bundle the pinned XcodeBuildMCP dependency and expose all upstream
workflows to enrolled local macOS projects, including Simulator/device
management, debugging, UI automation, Swift Package, project
scaffolding, and Xcode IDE tools.
- Apply `-allowProvisioningUpdates` only to panel and XcodeBuildMCP
build/test/build-and-run operations.
- Stream a booted iOS Simulator framebuffer into the existing Desktop
pane, with optional input control, Home, disconnect, duplicate-session
protection, bounded startup, and a 30 FPS encoding cap.
- Add `open_simulator_desktop`, allowing native and ACP agents to open
the booted Simulator after XcodeBuildMCP launches an app. The pane
starts view-only and control remains an explicit user action.

## Permission model

Clicking a panel Build, Test, or Run button authorizes that typed
operation. Copse validates the enrolled thread target and constructs
fixed arguments, so it does not add a second approval prompt. Xcode
requires host access for package resolution, caches, signing,
CoreSimulator, devices, and project build phases.

Agent-triggered XcodeBuildMCP calls retain the normal MCP permission
gate and remembered per-tool grants. Enabling the feature pack does not
approve agent execution. The native Simulator presentation tool only
opens a validated booted UDID in Copse and starts view-only.

## Validation

- `pnpm run check` — 9,184 tests passed
- `pnpm run build`
- `pnpm run build:demo`
- `pnpm run test:e2e -- --spec tests/e2e/apple-development-panel.e2e.ts`
- `pnpm exec wdio run wdio.demo.conf.ts --spec
tests/demo/apple-development-target.demo.ts`
- `pnpm run test:e2e -- --spec tests/e2e/simulator-desktop.e2e.ts`
- API protocol comparison: 34 additive, 0 breaking
- Verified `xcodebuild -showdestinations` against the real DuckDuckGo
macOS scheme without building it.
- Compiled the native Swift capture helper independently.
- Connected a real booted iPhone 17 Pro / iOS 26.4 Simulator in Copse
and verified the live framebuffer and view-only default.

Visual evidence: [project menu enrollment
entry](https://github.com/copse-dev/agent-pane/blob/codex/simulator-live-preview/tests/e2e/screenshots/apple-development-project-menu.png),
[compatible target
picker](https://github.com/copse-dev/agent-pane/blob/codex/simulator-live-preview/tests/e2e/screenshots/apple-development-compatible-target.png),
[compact Simulator
chooser](https://github.com/copse-dev/agent-pane/blob/codex/simulator-live-preview/tests/e2e/screenshots/simulator-desktop-choice.png),
and [live Simulator
panel](https://github.com/copse-dev/agent-pane/blob/codex/simulator-live-preview/tests/e2e/screenshots/simulator-desktop-live.png).

---------

Co-authored-by: Jonathan Kingston <KingstonMailBox@gmail.com>
The Apple development and Simulator surfaces exposed raw target
identifiers, retained stale status when switching destinations, and used
more explanatory copy than the surrounding desktop panels. This tightens
both panels around the current task: friendly target labels,
destination-scoped results, compact header actions, and a concise
Simulator device picker whose empty state names the selected device.

Validation:
- `pnpm run check` (9,185 unit tests)
- focused Apple development Electron e2e
- focused Simulator Desktop Electron e2e
- reviewed four updated screenshot fixtures

Co-authored-by: Jonathan Kingston <KingstonMailBox@gmail.com>
@copse-release-bot
copse-release-bot Bot merged commit 22fc792 into release Sep 11, 2026
70 of 73 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