Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion .plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions docs/agent-targets-and-replay.md
Original file line number Diff line number Diff line change
@@ -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.

Expand Down Expand Up @@ -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.

Expand Down
12 changes: 12 additions & 0 deletions docs/releases/0.7.0.md
Original file line number Diff line number Diff line change
@@ -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.
2 changes: 1 addition & 1 deletion gemini-extension.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "domscribe",
"version": "0.6.1",
"version": "0.7.0",
"author": {
"name": "Patch Orbit",
"email": "kaushik@patchorbit.com",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-cli/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-core/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-manifest/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-mcp/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-next/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-nuxt/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-overlay/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@domscribe/overlay",
"version": "0.6.1",
"version": "0.7.0",
"type": "module",
"main": "src/index.ts",
"publishConfig": {
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-react/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-relay/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-runtime/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-transform/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-transform/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-verify/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/domscribe-vue/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
Loading