Skip to content

FE-814, FE-758: Petrinaut Brunch Actual Mode#8829

Merged
kube merged 32 commits into
mainfrom
cf/fe-petrinaut-actual-brunch-integration
Jun 11, 2026
Merged

FE-814, FE-758: Petrinaut Brunch Actual Mode#8829
kube merged 32 commits into
mainfrom
cf/fe-petrinaut-actual-brunch-integration

Conversation

@kube

@kube kube commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

🌟 What is the purpose of this PR?

Adds a first Actual Mode to Petrinaut: a read-only view of a live execution streamed by a host, instead of a simulation run inside Petrinaut.

The first host is Brunch. The demo website exposes /brunch?sse=<stream URL>, loads the Petri net definition directly from the Brunch stream, and renders the run live with a scrubbable timeline and an event log.

🔗 Related links

🚫 Blocked by

  • Nothing.

🔍 What does this change?

  • @hashintel/petrinaut-core — new transport-neutral actual-mode module: event/marking schemas, marking reconstruction from initial_state + firing effects, timeline point generation, a SimulationFrameReader adapter, and recording export/retime helpers.
  • @hashintel/petrinaut — third global mode Actual: ActualModeContext (host contract), a mode-routed ExecutionFrameProvider feeding both the canvas and the timeline chart, Actual Timeline and Events bottom tabs (with stream/net export), and read-only enforcement.
  • Redesigned timeline series selector (also used in Simulate mode): searchable multi-select dropdown, hover-to-hide actions with an undo grace period, and a "+N more" overflow chip.
  • apps/petrinaut-website — Brunch demo route with a reconnect-safe EventSource provider, temporary Brunch protocol schemas + auto-layout, a Vercel rewrite for /brunch, and a local SSE fixture (yarn brunch:fixture) that can also replay exported recordings.
  • User docs: new actual-mode.md page, registered for the in-app AI assistant; related pages updated.

Pre-Merge Checklist 🚀

🚢 Has this modified a publishable library?

This PR:

  • modifies an npm-publishable library and I have added a changeset file(s)

📜 Does this require a change to the docs?

The changes in this PR:

  • require changes to docs which are made as part of this PR

🕸️ Does this require a change to the Turbo Graph?

The changes in this PR:

  • do not affect the execution graph

⚠️ Known issues

  • The Brunch protocol (event names, payload shapes, endpoint layout) is experimental and owned by the demo website until standardized with the Brunch team.
  • Brunch nets are extension-free: no colours, stochasticity, dynamics, or parameters.
  • Marking reconstruction replays from the start per frame — fine at demo scale, O(n²) for very long streams (flagged with TODOs in code).
  • The canvas follows live updates only while the Actual Timeline tab is mounted.

🐾 Next steps

  • Standardize the Brunch/Petrinaut protocol and move its schemas into petrinaut-core (including SSE event ids / resume semantics instead of replay-from-start on reconnect).
  • Add a prefix-marking cache or incremental timeline reader to remove the O(n²) replay.
  • Move follow-live/scrub ownership into ExecutionFrameProvider so the canvas keeps following live updates regardless of the active bottom tab.
  • Parse recording definitions through sdcpnSchema so file-format defaults apply to imported recordings.
  • Split an ActualView out of the shared workspace (sibling of SimulateView) to remove the remaining per-mode conditionals.
  • Replace the temporary /brunch path check with a real router in the demo app.
  • Legend: hover a series to highlight its trace in the chart.

🛡 What tests cover this?

  • petrinaut-core: Actual-mode unit tests (recording round-trip, strict payload validation, retiming, marking/timeline reconstruction).
  • petrinaut: ExecutionFrameProvider adapter tests and timeline series selector interaction tests (hide/undo grace period, batch toggling, search clearing).
  • Existing suites across all three packages remain green.

❓ How to test this?

  1. yarn workspace @apps/petrinaut-website dev and, in another terminal, yarn workspace @apps/petrinaut-website brunch:fixture.
  2. Open the /brunch?sse=… URL the fixture prints.
  3. Watch the net update live; scrub the Timeline tab, inspect the Events tab, and try Export Stream / Export Net.
  4. Replay an export: yarn workspace @apps/petrinaut-website brunch:fixture --recording=<file>.petrinaut-actual.json.

📹 Demo

To be added (screenshot/video of a live Brunch run).

Copilot AI review requested due to automatic review settings June 4, 2026 21:46
@vercel

vercel Bot commented Jun 4, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hash Ready Ready Preview, Comment Jun 10, 2026 10:14pm
petrinaut Ready Ready Preview, Comment Jun 10, 2026 10:14pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
hashdotdesign-tokens Ignored Ignored Preview Jun 10, 2026 10:14pm

@cursor

cursor Bot commented Jun 4, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Large cross-package feature touching editor modes, timeline/frame plumbing, and experimental Brunch SSE protocol; read-only paths are new but marking replay is O(n²) at scale and reconnect semantics are temporary.

Overview
Introduces Actual mode: a read-only, host-fed live execution view (first integration: Brunch SSE) alongside Edit and Simulate.

petrinaut-core adds an actual-mode module—schemas, marking replay from firing effects, timeline points, a SimulationFrameReader adapter, and recording export/retime helpers—plus exports sdcpnSchema for validation.

petrinaut wires a third global mode when ActualModeContext is available: ExecutionFrameProvider routes simulation vs Actual frames to the canvas and timelines; bottom panel gains Actual Timeline and Events (stream/net export); read-only rules and mode selector enable Actual; timeline hidden-series state is lifted in editor context for a redesigned series selector shared with simulation.

petrinaut-website splits the demo into local-storage vs /brunch (Vercel rewrite), with BrunchActualModeProvider (EventSource, reconnect replay handling), temporary Brunch protocol parsing, and brunch:fixture for local SSE or recording replay.

Docs and AI assistant catalog gain actual-mode; minor version changesets for both packages.

Reviewed by Cursor Bugbot for commit bc5bda9. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions github-actions Bot added area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team area/apps area/apps > hash.design Affects the `hash.design` design site (app) labels Jun 4, 2026
Comment thread apps/petrinaut-website/src/main/app/brunch-demo/brunch-actual-mode-route.tsx Outdated
Comment thread apps/petrinaut-website/src/main/app/brunch-demo/brunch-actual-mode-route.tsx Outdated
Comment thread apps/petrinaut-website/src/main/app/brunch-demo/brunch-actual-mode-route.tsx Outdated
Comment thread apps/petrinaut-website/scripts/brunch-sse-fixture.ts Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces Actual Mode to Petrinaut (including a Brunch-backed /brunch demo route) so the UI can render and scrub through a host-provided execution stream, while also adding extension/capability gating (colors/dynamics/stochasticity/parameters) and read input arcs across both the editor and simulation core.

Changes:

  • Add Actual Mode context + timeline source and wire it into the editor UI (mode selector, bottom panel, timeline scrubbing).
  • Introduce extension settings / handle capabilities and apply them end-to-end (sanitized SDCPN snapshots, conditional UI surfaces, simulation + experiments + LSP diagnostics).
  • Add read input arc support across SDCPN types, parsing/clipboard, simulation semantics, editor rendering, docs, and tests.

Reviewed changes

Copilot reviewed 154 out of 161 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
libs/@hashintel/petrinaut/src/ui/views/shared/place-state-visualization.tsx Use execution-frame hook for Actual/Simulation.
libs/@hashintel/petrinaut/src/ui/views/SDCPN/reactflow-types.ts Extend arc/lambda typings (read/none).
libs/@hashintel/petrinaut/src/ui/views/SDCPN/hooks/use-sdcpn-to-react-flow.ts ReactFlow nodes/arcs gated by extensions.
libs/@hashintel/petrinaut/src/ui/views/SDCPN/components/transition-node.tsx Display subtitle for lambdaType “none”.
libs/@hashintel/petrinaut/src/ui/views/SDCPN/components/place-node.tsx Use execution-frame hook for timelines.
libs/@hashintel/petrinaut/src/ui/views/SDCPN/components/classic-place-node.tsx Use execution-frame hook for timelines.
libs/@hashintel/petrinaut/src/ui/views/SDCPN/components/arc.tsx Render read arcs (dash + dot).
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/simulate-view.stories.tsx Provide extensions in story context.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/scenarios/view-scenario-drawer.tsx Gate scenario UI by extensions.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/scenarios/create-scenario-drawer.tsx Gate scenario UI by extensions.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/scenarios/create-scenario-drawer.stories.tsx Add default extensions to story stub.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/SimulateView/experiments/experiments-story-fixtures.tsx Add default extensions to fixtures.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/PropertiesPanel/transition-properties/subviews/transition-results/subview.tsx Show results only when kernel available.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/PropertiesPanel/transition-properties/subviews/transition-firing-time/subview.tsx Gate lambda editor + effective type logic.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/PropertiesPanel/transition-properties/subviews/main.tsx Surface arcType in transition arc rows.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/PropertiesPanel/transition-properties/main.tsx Compute logic availability for subviews.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/PropertiesPanel/transition-properties/context.tsx Provide logic availability via context.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/PropertiesPanel/properties-panel.stories.tsx Add default extensions to story stub.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/PropertiesPanel/place-properties/main.tsx Gate visualizer subview by extensions.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/PropertiesPanel/panel.tsx Hide/disable panels when extensions off.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/PropertiesPanel/arc-properties/main.tsx Add “read” arc type selector.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/LeftSideBar/subviews/types-list.tsx Disable type actions when colors off.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/LeftSideBar/subviews/search-panel.tsx Filter search items by extensions.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/LeftSideBar/subviews/parameters-list.tsx Disable/hide parameters by extensions.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/LeftSideBar/subviews/entities-tree.tsx Filter tree groups by extensions.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/LeftSideBar/subviews/differential-equations-list.tsx Disable diff-eq actions by extensions.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/LeftSideBar/panel.tsx Filter sidebar tabs by extensions.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-timeline/use-streaming-data.ts Generalize streaming to a frame source.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-timeline/use-actual-timeline-source.ts Provide Actual-mode timeline frame source.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-timeline/types.ts Add TimelineFrameSource interface.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-timeline/main.tsx Use source + scrub callback in chart.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-timeline/index.ts Export actual timeline subview.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-timeline/header.tsx Hide per-type view if colors disabled.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-timeline/chart.tsx Accept scrub callback (no PlaybackContext).
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-timeline/actual.tsx Add Actual Timeline subview UI.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-timeline.tsx Extension-aware timeline view selection.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/subviews/simulation-settings.tsx Hide parameters when extension disabled.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/BottomPanel/panel.tsx Add Actual-only bottom panel subviews.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/ai-assistant-panel/types.ts Include extensions in net-definition tool.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/ai-assistant-panel/tool-summaries.ts Summarize typed input arcs for AI calls.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/ai-assistant-panel/tool-summaries.test.ts Tests for read arc tool summary.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/ai-assistant-panel/petrinaut-docs-content.ts Add Actual Mode docs to AI docs index.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/ai-assistant-panel/ai-assistant-contents.test.tsx Update tests for extensions output.
libs/@hashintel/petrinaut/src/ui/views/Editor/panels/ai-assistant-panel.tsx Return extensions in getLatestNetDefinition.
libs/@hashintel/petrinaut/src/ui/views/Editor/editor-view.tsx Pass actualModeAvailable to top bar.
libs/@hashintel/petrinaut/src/ui/views/Editor/components/TopBar/top-bar.tsx Wire actualModeAvailable into ModeSelector.
libs/@hashintel/petrinaut/src/ui/views/Editor/components/TopBar/mode-selector.tsx Enable Actual mode when available.
libs/@hashintel/petrinaut/src/ui/views/Editor/components/BottomBar/bottom-bar.tsx Reset cursor mode when leaving edit mode.
libs/@hashintel/petrinaut/src/ui/monaco/code-editor.stories.tsx Add default extensions to story context.
libs/@hashintel/petrinaut/src/ui/constants/ui-subviews.ts Register Actual-only subviews.
libs/@hashintel/petrinaut/src/ui/constants/ui-messages.ts Add EXTENSION_UNAVAILABLE; update message.
libs/@hashintel/petrinaut/src/ui/components/arc-item.tsx Display arc type badge in arc rows.
libs/@hashintel/petrinaut/src/react/state/use-selection-cleanup.ts Gate selection IDs by extensions.
libs/@hashintel/petrinaut/src/react/state/use-read-only-reason.ts Add read-only reason for Actual mode.
libs/@hashintel/petrinaut/src/react/state/use-is-read-only.ts Update doc comment re handle read-only.
libs/@hashintel/petrinaut/src/react/state/sdcpn-context.ts Add extensions to SDCPN context value.
libs/@hashintel/petrinaut/src/react/state/editor-provider.tsx Default to Actual + open timeline when live.
libs/@hashintel/petrinaut/src/react/state/editor-context.ts Add “actual” mode + actual-timeline tab.
libs/@hashintel/petrinaut/src/react/simulation/provider.tsx Run simulation with extensions + param gating.
libs/@hashintel/petrinaut/src/react/sdcpn-provider.tsx Filter selection item types by extensions.
libs/@hashintel/petrinaut/src/react/lsp/provider.tsx Send extensions to LSP worker.
libs/@hashintel/petrinaut/src/react/index.ts Export ActualModeContext + extension types.
libs/@hashintel/petrinaut/src/react/hooks/use-petrinaut-mutations.test.tsx Add default extensions to test wrapper.
libs/@hashintel/petrinaut/src/react/hooks/use-petrinaut-commands.test.tsx Add default extensions to test wrapper.
libs/@hashintel/petrinaut/src/react/hooks/use-default-parameter-values.ts Return empty when parameters extension off.
libs/@hashintel/petrinaut/src/react/hooks/use-current-execution-frame.ts New hook unifying sim/actual frames.
libs/@hashintel/petrinaut/src/react/hooks/index.ts Export execution-frame hook.
libs/@hashintel/petrinaut/src/react/experiments/provider.tsx Run experiments with extensions + param gating.
libs/@hashintel/petrinaut/src/react/experiments/provider.test.tsx Add default extensions to test context.
libs/@hashintel/petrinaut/src/react/actual-mode-context.ts New React ActualModeContext wrapper.
libs/@hashintel/petrinaut/src/main.ts Export extension-related public types.
libs/@hashintel/petrinaut/docs/useful-patterns.md Document read arcs usage pattern.
libs/@hashintel/petrinaut/docs/simulation.md Document read arc + kernel semantics.
libs/@hashintel/petrinaut/docs/scenarios.md Update docs anchor for global modes.
libs/@hashintel/petrinaut/docs/README.md Add Actual mode + read arcs mentions.
libs/@hashintel/petrinaut/docs/petri-net-extensions.md Document extension gating + read arcs.
libs/@hashintel/petrinaut/docs/experiments.md Update docs anchor for global modes.
libs/@hashintel/petrinaut/docs/drawing-a-net.md Add Actual mode + read arc semantics text.
libs/@hashintel/petrinaut/docs/ai-assistant.md Mention extensions in read tools.
libs/@hashintel/petrinaut/docs/actual-mode.md New Actual mode user guide page.
libs/@hashintel/petrinaut-core/src/types/sdcpn.ts Add InputArcType incl. “read”.
libs/@hashintel/petrinaut-core/src/store/readable-store.ts Add shared ReadableStore implementation.
libs/@hashintel/petrinaut-core/src/store/index.ts Export ReadableStore helpers.
libs/@hashintel/petrinaut-core/src/simulation/worker/simulation.worker.ts Pass extensions into engine build.
libs/@hashintel/petrinaut-core/src/simulation/worker/README.md Document extensions in worker protocol.
libs/@hashintel/petrinaut-core/src/simulation/worker/messages.ts Add extensions to init message.
libs/@hashintel/petrinaut-core/src/simulation/runtime/simulation.ts Sanitize SDCPN per extensions; store import.
libs/@hashintel/petrinaut-core/src/simulation/README.md Document extension-aware sanitization.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/worker/monte-carlo.worker.ts Pass extensions into MC simulator.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/worker/messages.ts Add extensions to MC init message.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/types.ts Thread extensions through MC config.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/transition-effect.ts Prevent consuming read-arc tokens.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/runtime/experiment.ts Thread extensions + store import.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/run-state.ts Pass extensions into engine build.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/README.md Document extension-aware MC sanitization.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/monte-carlo-simulator.test.ts Add read arc consumption test.
libs/@hashintel/petrinaut-core/src/simulation/monte-carlo/frame-operations.ts Update comment for read arc enablement.
libs/@hashintel/petrinaut-core/src/simulation/engine/types.ts Add extensions to SimulationInput; arcType type.
libs/@hashintel/petrinaut-core/src/simulation/engine/README.md Document conditional lambda/kernel compilation.
libs/@hashintel/petrinaut-core/src/simulation/engine/execute-transitions.test.ts Add read arc persistence test.
libs/@hashintel/petrinaut-core/src/simulation/engine/compute-possible-transition.ts Do not remove read arc tokens.
libs/@hashintel/petrinaut-core/src/simulation/engine/compute-possible-transition.test.ts Add read arc lambda/kernel input test.
libs/@hashintel/petrinaut-core/src/simulation/engine/check-transition-enablement.ts Update structural enablement semantics.
libs/@hashintel/petrinaut-core/src/simulation/engine/check-transition-enablement.test.ts Add structural enablement tests for read arcs.
libs/@hashintel/petrinaut-core/src/simulation/engine/build-simulation.ts Sanitize SDCPN + gate compilation by extensions.
libs/@hashintel/petrinaut-core/src/simulation/authoring/user-code/compile-user-code.ts Optionally omit Distribution runtime code.
libs/@hashintel/petrinaut-core/src/simulation/api.ts Add extensions to SimulationConfig; store import.
libs/@hashintel/petrinaut-core/src/schemas/entity-schemas.ts Add read arcs; document gated code surfaces.
libs/@hashintel/petrinaut-core/src/playback/playback.ts Switch ReadableStore import to store module.
libs/@hashintel/petrinaut-core/src/lsp/worker/protocol.ts Include extensions in LSP notifications.
libs/@hashintel/petrinaut-core/src/lsp/worker/language-server.worker.ts Run diagnostics based on extensions.
libs/@hashintel/petrinaut-core/src/lsp/lib/create-sdcpn-language-service.ts Generate virtual files with extensions.
libs/@hashintel/petrinaut-core/src/lsp/lib/create-sdcpn-language-service.test.ts Ensure completions include read-arc tokens.
libs/@hashintel/petrinaut-core/src/lsp/lib/checker.ts Skip diagnostics for unavailable code surfaces.
libs/@hashintel/petrinaut-core/src/lsp/lib/checker.test.ts Tests for extension-aware checking.
libs/@hashintel/petrinaut-core/src/lsp/language-client.ts Thread extensions through client notifications.
libs/@hashintel/petrinaut-core/src/instance.ts Add capabilities/extensions; sanitize definition store.
libs/@hashintel/petrinaut-core/src/index.ts Export actual-mode + extensions + store types.
libs/@hashintel/petrinaut-core/src/handle/types.ts Add core handle types (capabilities/state/history).
libs/@hashintel/petrinaut-core/src/handle/json-doc-handle/index.ts Re-export JSON handle factory from handle/.
libs/@hashintel/petrinaut-core/src/handle/index.ts New handle barrel exports.
libs/@hashintel/petrinaut-core/src/file-format/types.ts Default missing transition lambda/kernel fields.
libs/@hashintel/petrinaut-core/src/file-format/parse-sdcpn-file.test.ts Tests for read arc + transition defaults.
libs/@hashintel/petrinaut-core/src/extensions.test.ts Tests for extension sanitization/availability.
libs/@hashintel/petrinaut-core/src/default-codes.ts Update default code docs re read arcs.
libs/@hashintel/petrinaut-core/src/commands.ts Strip disabled extension data on paste.
libs/@hashintel/petrinaut-core/src/commands.test.ts Tests for paste stripping by extensions.
libs/@hashintel/petrinaut-core/src/clipboard/types.ts Preserve read arc types in clipboard.
libs/@hashintel/petrinaut-core/src/clipboard/serialize.test.ts Tests for clipboard read arc preservation.
libs/@hashintel/petrinaut-core/src/ai.ts Expose extensions in net-definition tool + docs.
libs/@hashintel/petrinaut-core/src/ai.test.ts Tests for extensions + addArc schema.
libs/@hashintel/petrinaut-core/src/actions.test.ts Tests for read arcs + disabled extensions.
libs/@hashintel/petrinaut-core/src/action-schemas.ts Allow read arc type in mutation schemas.
apps/petrinaut-website/vercel.json SPA rewrite for /brunch route.
apps/petrinaut-website/src/main/app/local-storage-demo/walkthrough/walkthrough-steps.tsx New demo walkthrough steps content.
apps/petrinaut-website/src/main/app/local-storage-demo/use-local-storage-sdcpns.ts Persist SDCPNs in local storage.
apps/petrinaut-website/src/main/app/local-storage-demo/use-local-storage-ai-messages.ts Persist AI messages per net.
apps/petrinaut-website/src/main/app/brunch-demo/brunch-route.ts Detect /brunch route for demo mode.
apps/petrinaut-website/src/main/app/brunch-demo/brunch-demo-app.tsx New Brunch demo app wrapper.
apps/petrinaut-website/src/main.tsx Switch entrypoint to DemoApp.
apps/petrinaut-website/package.json Add brunch fixture script.
.changeset/read-arcs-editor.md Changeset: editor support for read arcs.
.changeset/read-arcs-core.md Changeset: core support for read arcs.
.changeset/petrinaut-sdcpn-capabilities.md Changeset: extension/capabilities support.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread libs/@hashintel/petrinaut/docs/drawing-a-net.md Outdated
Comment thread libs/@hashintel/petrinaut/src/react/hooks/use-current-execution-frame.ts Outdated
@kube kube force-pushed the cf/fe-petrinaut-actual-brunch-integration branch from dab4ce0 to 1fbb19f Compare June 5, 2026 20:16
Copilot AI review requested due to automatic review settings June 5, 2026 20:16
@github-actions github-actions Bot added area/deps Relates to third-party dependencies (area) and removed area/apps > hash.design Affects the `hash.design` design site (app) labels Jun 5, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 48 out of 56 changed files in this pull request and generated 5 comments.

Comment thread libs/@hashintel/petrinaut/src/ui/constants/ui-subviews.ts Outdated
Comment thread apps/petrinaut-website/src/main/app/brunch-demo/brunch-actual-mode-route.tsx Outdated
Comment thread libs/@hashintel/petrinaut-core/src/actual-mode.ts Outdated
Comment thread libs/@hashintel/petrinaut/docs/drawing-a-net.md Outdated
Comment thread libs/@hashintel/petrinaut-core/src/actual-mode.ts Outdated
Comment thread apps/petrinaut-website/scripts/brunch-sse-fixture.ts
Comment thread apps/petrinaut-website/scripts/brunch-sse-fixture.ts
@github-actions github-actions Bot removed the area/deps Relates to third-party dependencies (area) label Jun 8, 2026
Comment thread apps/petrinaut-website/src/main/app/brunch-demo/brunch-route.ts
Comment thread libs/@hashintel/petrinaut/src/ui/views/SDCPN/sdcpn-view.tsx
Copilot AI review requested due to automatic review settings June 10, 2026 21:28

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 4 total unresolved issues (including 3 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 257ae58. Configure here.

Comment thread libs/@hashintel/petrinaut/src/react/execution-frame/provider.tsx

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 76 out of 83 changed files in this pull request and generated 3 comments.

Comment thread libs/@hashintel/petrinaut/src/react/state/use-read-only-reason.ts
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 76 out of 83 changed files in this pull request and generated 5 comments.

Comment thread libs/@hashintel/petrinaut-core/src/actual-mode/timeline.ts

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 76 out of 83 changed files in this pull request and generated 3 comments.

Comment thread libs/@hashintel/petrinaut-core/src/actual-mode/schemas.ts
Comment thread apps/petrinaut-website/vercel.json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team

Development

Successfully merging this pull request may close these issues.

4 participants