Skip to content

feat: add native React ProofWidgets infrastructure - #162

Draft
ejgallego wants to merge 21 commits into
mainfrom
feat/vir-native-infoview
Draft

feat: add native React ProofWidgets infrastructure#162
ejgallego wants to merge 21 commits into
mainfrom
feat/vir-native-infoview

Conversation

@ejgallego

@ejgallego ejgallego commented Aug 30, 2026

Copy link
Copy Markdown
Owner

This PR adds VIR-native ProofWidgets and React infrastructure, including JSX lowering and a goal-and-hypothesis infoview widget, while preserving upstream JavaScript and React semantics at the binding boundary.

  • Expose React.createElement and ReactDOM roots through generated direct-value bindings over JavaScript-owned element types, complete props objects, child arrays, and returned nodes; authoring adapters remain explicit.
  • Track alias identity, ownership, callbacks, refs, hooks, and root resources out of band, with commit-aware replacement cleanup and direct-root ownership lasting through teardown.
  • Use official React 19, ReactDOM, and Chromium as the sole React semantic oracle; keep Node virtual-document React providers cleanup-safe and explicitly unsupported.
  • Generate a fail-closed semantic-fidelity audit for shipped bindings, distinguishing preserving operations, explicit adapters, VIR-owned protocols, and unsupported upstream members.
  • Provide ProofWidgets RPC values, infoview command integration, native examples and tutorials, and lifetime and protocol regressions including safe JavaScript collection and document-position bounds.

Review guide

  1. Start with the binding schema and generated Lean declarations to review the direct-value types, ownership modalities, and explicit adapters.
  2. Continue with the JavaScript value and resource hosts to review identity, callback, ref, and root lifetimes.
  3. Review the browser React adapter against the official React and ReactDOM behavior exercised by the Chromium suites; the Node providers intentionally stop at cleanup-safe unsupported shims.
  4. Finish with the ProofWidgets JSX layer, native infoview example, and RPC integration as the end-to-end consumers of those boundaries.

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