Promote main to release - #2664
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Daily automated promotion of
mainto the release-readyreleasebranch.The repository ruleset requires the full
CI Passedgate. This PR willmerge automatically when that gate is green; failures leave it open
until the underlying issue is fixed on
main.