diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index fb312ee..227fe68 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "domscribe", - "version": "0.6.1", + "version": "0.7.0", "description": "Domscribe is a pixel-to-code development tool that maps running UI elements to their exact source locations, capturing runtime context (props, state, DOM) for handoff to coding agents via MCP.", "author": { "name": "Patch Orbit", diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 5fbf630..687e0ad 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "domscribe", "displayName": "Domscribe", - "version": "0.6.1", + "version": "0.7.0", "description": "Domscribe is a pixel-to-code development tool that maps running UI elements to their exact source locations, capturing runtime context (props, state, DOM) for handoff to coding agents via MCP.", "author": { "name": "Patch Orbit", diff --git a/.plugin/plugin.json b/.plugin/plugin.json index 73d9247..72bf6ea 100644 --- a/.plugin/plugin.json +++ b/.plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "domscribe", - "version": "0.6.1", + "version": "0.7.0", "description": "Domscribe is a pixel-to-code development tool that maps running UI elements to their exact source locations, capturing runtime context (props, state, DOM) for handoff to coding agents via MCP.", "author": { "name": "Patch Orbit", diff --git a/README.md b/README.md index 9af93cc..1c24a34 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ Click any element in the browser overlay, describe the change in plain English, - 🎯 **Build-time stable IDs** — deterministic `data-ds` attributes injected via AST, stable across HMR and fast refresh - 🧩 **Framework-agnostic** — React 18-19, Vue 3, Next.js 15-16, Nuxt 3+, with an [extensible adapter interface](./packages/domscribe-runtime/CUSTOM_ADAPTERS.md) -- 📦 **Any bundler** — Vite 5-8, Webpack 5, Turbopack (Vite 8 support is on main and awaits the next release; npm 0.6.1 supports Vite 5-7) +- 📦 **Any bundler** — Vite 5-8, Webpack 5, Turbopack (Vite 8 support requires Domscribe 0.7.0 or later) - 🔍 **Deep runtime capture** — live props, state, and DOM snapshots via React fiber walking and Vue VNode inspection - 🛡️ **Zero production impact** — all instrumentation stripped in production builds, enforced in CI - 🔒 **PII redaction** — emails, tokens, and sensitive patterns automatically scrubbed before leaving the browser diff --git a/docs/agent-targets-and-replay.md b/docs/agent-targets-and-replay.md index fe92794..14144f2 100644 --- a/docs/agent-targets-and-replay.md +++ b/docs/agent-targets-and-replay.md @@ -1,6 +1,6 @@ # Exact instance selection and portable replay -These APIs are in the repository following PR #77. They are not part of the published 0.6.1 packages yet. +These APIs require Domscribe 0.7.0 or later. Upgrade all installed `@domscribe/*` packages together; the 0.6.1 packages do not include these APIs. A `data-ds` ID identifies a source element. Repeated rows can share it. An `instanceId` identifies one live DOM instance and has a strict, transient browser selector. Its `locator` describes the target independently of that session. @@ -157,11 +157,11 @@ The default remains React18/npm/Vite7. Use `--framework-version` for exact Next1 `--scope=article` keeps the original labeled-card fixture. `--scope=table` and `--scope=list` use sibling business text with no added row label or test ID. They deliberately retain position-keyed action nodes during a customer replacement and verify that old handles/selectors retire, old portable identity does not resolve, the new runtime props belong to the replacement, and only that customer's UI data changes. CI runs Vue/pnpm/Vite5 and Vue/npm/Vite8 as lists, and Next16/pnpm and React/pnpm/Vite8 as tables. The other complete replay cases retain article coverage. The additional Vue/pnpm/Vite8 case disables the overlay and checks initialization/runtime capture only. -Vite8 consumers use the compatible official React6.1.2/Vue6.0.6 plugins. Older Vite5–7 fixture paths keep their existing plugins. [Vite8](https://vite.dev/blog/announcing-vite8) requires Node20.19+ or22.12+; qualification here uses Node24.22.1. The installed-package checks separately install only the adapter, framework and Vite through an isolated local registry, without adding transitive packages or dependency overrides. They typecheck a normal Vite configuration and check that virtual browser modules serve one shared runtime. Vite8 peer support and these APIs remain unpublished until the next package release; npm0.6.1 still declares Vite5–7 support. +Vite8 consumers use the compatible official React6.1.2/Vue6.0.6 plugins. Older Vite5–7 fixture paths keep their existing plugins. [Vite8](https://vite.dev/blog/announcing-vite8) requires Node20.19+ or22.12+; qualification here uses Node24.22.1. The installed-package checks separately install only the adapter, framework and Vite through an isolated local registry, without adding transitive packages or dependency overrides. They typecheck a normal Vite configuration and check that virtual browser modules serve one shared runtime. Vite8 peer support and these APIs require Domscribe0.7.0 or later; npm0.6.1 declares Vite5–7 support. The [real-application acceptance matrix](./real-app-acceptance.md) records separate maintained-application tests and their installation/actionability limits. -These are representative synthetic regression cases, not the full version/manager/router matrix or an adoption benchmark. Additional local testing on the Domscribe website (Next16.4.3 / React19.2.4) verified exact installation-tab source/state among six repeated instances, persisted replay after a fresh browser session, safe page-navigation failure, mobile navigation state/replay after reload, and controlled HMR identity changes without resurrecting retired handles. Its production build and UI also worked without instrumentation. This is one maintained app, not evidence for every router, virtualized list, framework version, or agent workflow advantage. Package installs use local tarballs, with explicit pnpm local-artifact overrides so unpublished artifacts cannot be replaced by registry copies. This is not evidence that the new APIs are in the published npm release. +These are representative synthetic regression cases, not the full version/manager/router matrix or an adoption benchmark. Additional local testing on the Domscribe website (Next16.4.3 / React19.2.4) verified exact installation-tab source/state among six repeated instances, persisted replay after a fresh browser session, safe page-navigation failure, mobile navigation state/replay after reload, and controlled HMR identity changes without resurrecting retired handles. Its production build and UI also worked without instrumentation. This is one maintained app, not evidence for every router, virtualized list, framework version, or agent workflow advantage. Package installs use local tarballs, with explicit pnpm local-artifact overrides so unpublished artifacts cannot be replaced by registry copies. Those historical source-artifact tests do not establish registry-install success; release verification must check the published packages separately. Logs and result JSON are retained in the printed temporary directory on success and failure. `--report-dir` copies a compact evidence bundle. Traces and screenshots are retained when available, with best-effort failure screenshots after browser startup. Server startup and builds are bounded, and the harness stops its owned server process group and relay. diff --git a/docs/releases/0.7.0.md b/docs/releases/0.7.0.md new file mode 100644 index 0000000..3a7e86f --- /dev/null +++ b/docs/releases/0.7.0.md @@ -0,0 +1,12 @@ +# Domscribe 0.7.0 + +Upgrade all installed `@domscribe/*` packages together to 0.7.0. + +- Query exact rendered instances, capture selection-bound annotations, and export explicit browser replay steps with portable locators. See [selection and replay](../agent-targets-and-replay.md). +- Retire handles when DOM nodes change business identity; refuse stale, ambiguous, unsupported or wrong-context targets instead of guessing. +- Capture the Vue component that owns the selected source through wrapper/Teleport ancestry, with explicit matched, nearest or unavailable ownership metadata. +- Refuse portable dialog replay without stable application context. Add a non-secret `data-ds-context` key to identify the business dialog; legacy annotations without saved identity must be recaptured. +- Redact known credential descriptors, secret-marked environment records and injected native browser Storage during privacy-enabled capture. +- Support Vite 8, mixed application Zod 3/Domscribe Zod 4 installs, cold Vite optimization and Nuxt runtime identity. + +Replay covers explicit recorded actions in the main document/light DOM. It does not restore arbitrary backend data, credentials or authentication state. Source-owner resolution is currently Vue-specific; privacy redaction covers known markers, not every possible secret flow. Representative framework/browser validation is documented separately from registry-release verification. Experimental Docker cloud repair tooling is not a hosted service or GitHub issue Action, and native cloud repair authentication remains unqualified. diff --git a/gemini-extension.json b/gemini-extension.json index 0a3fcba..716df86 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "domscribe", - "version": "0.6.1", + "version": "0.7.0", "description": "Domscribe is a pixel-to-code development tool that maps running UI elements to their exact source locations, capturing runtime context (props, state, DOM) for handoff to coding agents via MCP.", "mcpServers": { "domscribe": { diff --git a/package.json b/package.json index 1250fbe..0497b8d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "domscribe", - "version": "0.6.1", + "version": "0.7.0", "author": { "name": "Patch Orbit", "email": "kaushik@patchorbit.com", diff --git a/packages/domscribe-cli/package.json b/packages/domscribe-cli/package.json index 2182e27..439e0e5 100644 --- a/packages/domscribe-cli/package.json +++ b/packages/domscribe-cli/package.json @@ -1,6 +1,6 @@ { "name": "domscribe", - "version": "0.6.1", + "version": "0.7.0", "description": "CLI for Domscribe \u2014 pixel-to-code development tool", "type": "module", "main": "src/bin/domscribe.ts", diff --git a/packages/domscribe-core/package.json b/packages/domscribe-core/package.json index 72c4666..f34e604 100644 --- a/packages/domscribe-core/package.json +++ b/packages/domscribe-core/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/core", - "version": "0.6.1", + "version": "0.7.0", "description": "Shared types, schemas, and utilities for Domscribe", "type": "module", "main": "src/index.ts", diff --git a/packages/domscribe-manifest/package.json b/packages/domscribe-manifest/package.json index 320f551..4248149 100644 --- a/packages/domscribe-manifest/package.json +++ b/packages/domscribe-manifest/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/manifest", - "version": "0.6.1", + "version": "0.7.0", "description": "Append-only DOM-to-source manifest for Domscribe", "type": "module", "main": "src/index.ts", diff --git a/packages/domscribe-mcp/package.json b/packages/domscribe-mcp/package.json index 105e58b..c74e60f 100644 --- a/packages/domscribe-mcp/package.json +++ b/packages/domscribe-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/mcp", - "version": "0.6.1", + "version": "0.7.0", "description": "MCP server for Domscribe \u2014 connects editors and agents to runtime context", "type": "module", "main": "src/bin/domscribe-mcp.ts", diff --git a/packages/domscribe-next/package.json b/packages/domscribe-next/package.json index 47093a8..f6b08ca 100644 --- a/packages/domscribe-next/package.json +++ b/packages/domscribe-next/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/next", - "version": "0.6.1", + "version": "0.7.0", "description": "Next.js integration for Domscribe", "type": "module", "main": "src/index.ts", diff --git a/packages/domscribe-nuxt/package.json b/packages/domscribe-nuxt/package.json index 0cbf779..838408b 100644 --- a/packages/domscribe-nuxt/package.json +++ b/packages/domscribe-nuxt/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/nuxt", - "version": "0.6.1", + "version": "0.7.0", "description": "Nuxt module for Domscribe", "type": "module", "main": "src/index.ts", diff --git a/packages/domscribe-overlay/package.json b/packages/domscribe-overlay/package.json index c9e8c20..94b4b20 100644 --- a/packages/domscribe-overlay/package.json +++ b/packages/domscribe-overlay/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/overlay", - "version": "0.6.1", + "version": "0.7.0", "type": "module", "main": "src/index.ts", "publishConfig": { diff --git a/packages/domscribe-react/package.json b/packages/domscribe-react/package.json index 8a430d5..9d1897d 100644 --- a/packages/domscribe-react/package.json +++ b/packages/domscribe-react/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/react", - "version": "0.6.1", + "version": "0.7.0", "description": "React adapter for Domscribe", "type": "module", "main": "src/index.ts", diff --git a/packages/domscribe-relay/package.json b/packages/domscribe-relay/package.json index 519ce7f..c9da352 100644 --- a/packages/domscribe-relay/package.json +++ b/packages/domscribe-relay/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/relay", - "version": "0.6.1", + "version": "0.7.0", "description": "Local relay server and MCP adapter for Domscribe", "type": "module", "main": "src/index.ts", diff --git a/packages/domscribe-runtime/package.json b/packages/domscribe-runtime/package.json index d2e9871..6e0a0da 100644 --- a/packages/domscribe-runtime/package.json +++ b/packages/domscribe-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/runtime", - "version": "0.6.1", + "version": "0.7.0", "description": "Browser-side runtime context capture for Domscribe", "type": "module", "main": "src/index.ts", diff --git a/packages/domscribe-transform/README.md b/packages/domscribe-transform/README.md index 5bc4274..8e670ab 100644 --- a/packages/domscribe-transform/README.md +++ b/packages/domscribe-transform/README.md @@ -18,7 +18,7 @@ npm install -D @domscribe/transform | Webpack 5 | `@domscribe/transform/plugins/webpack` | Babel (TS/JSX) or VueSFC | | Turbopack | Self-initializing loader | Babel (TS/JSX) | -Vite 8 compatibility is in source and awaits the next release; published npm 0.6.1 declares Vite 5-7 support. +Vite 8 compatibility requires Domscribe 0.7.0 or later; npm 0.6.1 declares Vite 5-7 support. ## Configuration diff --git a/packages/domscribe-transform/package.json b/packages/domscribe-transform/package.json index a6cfd48..43d8ce2 100644 --- a/packages/domscribe-transform/package.json +++ b/packages/domscribe-transform/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/transform", - "version": "0.6.1", + "version": "0.7.0", "description": "AST injection of stable element IDs and bundler plugins for Domscribe", "type": "module", "main": "src/index.ts", diff --git a/packages/domscribe-verify/package.json b/packages/domscribe-verify/package.json index 27b3988..29f4086 100644 --- a/packages/domscribe-verify/package.json +++ b/packages/domscribe-verify/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/verify", - "version": "0.6.1", + "version": "0.7.0", "description": "Pure-TS visual-snapshot comparator for Domscribe. Lifted verbatim from the RFC 0001 falsifier harness; powers both the test-fixtures suite and the verify_after_edit MCP tool (RFC 0002).", "type": "module", "main": "src/index.ts", diff --git a/packages/domscribe-vue/package.json b/packages/domscribe-vue/package.json index c0d23ce..47d8442 100644 --- a/packages/domscribe-vue/package.json +++ b/packages/domscribe-vue/package.json @@ -1,6 +1,6 @@ { "name": "@domscribe/vue", - "version": "0.6.1", + "version": "0.7.0", "description": "Vue adapter for Domscribe", "type": "module", "main": "src/index.ts",