Skip to content

Commit 6098aaa

Browse files
Narratorclaude
andcommitted
chore: release v0.1.0 — initial npm publish with private access
Set up release infrastructure: publish.yml workflow for tag-triggered CI publishing via OIDC trusted publishers, version bump to 0.1.0, and restricted access for scoped packages pre-launch. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 3faec34 commit 6098aaa

15 files changed

Lines changed: 95 additions & 38 deletions

File tree

.github/workflows/publish.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Publish
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
id-token: write # Required for OIDC trusted publishing
10+
contents: read
11+
12+
jobs:
13+
checks:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v4
17+
with:
18+
filter: tree:0
19+
fetch-depth: 0
20+
21+
- uses: pnpm/action-setup@v4
22+
23+
- uses: actions/setup-node@v4
24+
with:
25+
node-version: 22
26+
cache: 'pnpm'
27+
28+
- run: pnpm install --frozen-lockfile
29+
30+
- run: npx nx run-many -t lint test build typecheck
31+
32+
publish:
33+
runs-on: ubuntu-latest
34+
needs: checks
35+
steps:
36+
- uses: actions/checkout@v4
37+
with:
38+
filter: tree:0
39+
fetch-depth: 0
40+
41+
- uses: pnpm/action-setup@v4
42+
43+
- uses: actions/setup-node@v4
44+
with:
45+
node-version: 22
46+
cache: 'pnpm'
47+
registry-url: 'https://registry.npmjs.org'
48+
49+
- run: pnpm install --frozen-lockfile
50+
51+
- name: Build packages
52+
run: npx nx run-many -t build --exclude domscribe-test-fixtures
53+
54+
- name: Sync dist
55+
run: npx nx run-many -t sync-dist
56+
57+
- name: Publish to npm
58+
run: npx nx release publish --yes

README.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ Domscribe bridges both directions: click a DOM element to tell your agent what t
2929

3030
Your agent is editing `Button.tsx` line 12. It calls `domscribe.query.bySource` and instantly gets back the live DOM snapshot, current props, component state, and rendered attributes — without any human interaction. The agent can verify what an element looks like _before_ changing it and confirm the result _after_.
3131

32-
3332
<p align="center">
3433
<img src="./docs/code-to-ui.png" alt="Code → UI: Let the agent see the browser" />
3534
</p>
@@ -282,19 +281,19 @@ Then add this MCP config to your agent:
282281

283282
## Comparison
284283

285-
| Feature | Domscribe | Stagewise | DevInspector MCP | React Grab | Frontman | Inspector | JSX Tool | Onlook |
286-
| --------------------- | -------------------------------------------- | ------------------------ | ---------------------------------------- | ----------------------------------- | ------------------------- | ---------------- | -------------------- | --------------------------------- |
287-
| Build-time stable IDs |`data-ds` via AST | ❌ Proxy-based | ❌ No stable IDs |`_debugSource` | ❌ Source maps ||| ⚠️ `data-oid` (different purpose) |
288-
| DOM→source manifest | ✅ JSONL, append-only ||||||||
289-
| Code→live DOM query | ✅ Agent queries source, gets live runtime ||||||||
290-
| Runtime props/state | ✅ Fiber + VNode walking | ⚠️ Shallow | ⚠️ DOM-level + JS eval | ⚠️ Shallow (bippy) | ⚠️ Framework APIs || ⚠️ DOM context ||
291-
| Multi-framework | ✅ React · Vue · Next.js · Nuxt · extensible | ✅ React + Vue + Angular | ✅ React + Vue + Svelte + Solid + Preact | ❌ React only | ⚠️ Next.js + Astro + Vite | ❌ React only | ❌ React only | ❌ React only (Next.js) |
292-
| Multi-bundler | ✅ Vite + Webpack + Turbopack | ❌ N/A (proxy) | ✅ Vite + Webpack + Turbopack | ❌ N/A | ❌ Dev server middleware ||| ❌ Webpack (Babel) |
293-
| MCP tools | ✅ 12 tools + 4 prompts | ⚠️ Framework plugins | ✅ 9 tools | ⚠️ Lightweight add-on | ❌ Built-in agent ||||
294-
| Agent-agnostic | ✅ Any MCP client |||| ❌ Bundled Elixir agent ||| ❌ Built-in editor |
295-
| In-app element picker | ✅ Lit shadow DOM | ✅ Toolbar | ✅ Inspector bar | ✅ Click-to-capture | ✅ Chat interface | ✅ Visual editor | ✅ Browser extension | ✅ Visual editor |
296-
| Source mapping | ✅ Deterministic (AST IDs) | ⚠️ AI-inferred | ⚠️ Source maps |`_debugSource` (broken React 19) | ⚠️ Source maps | ⚠️ Unclear | ⚠️ Browser extension | ✅ Deterministic (AST) |
297-
| License | ✅ MIT | ⚠️ AGPL | ✅ Open source | ✅ Open source | ⚠️ Apache + AGPL | ❌ Closed | ✅ MIT | ✅ Open source |
284+
| Feature | Domscribe | Stagewise | DevInspector MCP | React Grab | Frontman |
285+
| --------------------- | -------------------------------------------- | ------------------------ | ---------------------------------------- | ----------------------------------- | ------------------------- |
286+
| Build-time stable IDs |`data-ds` via AST | ❌ Proxy-based | ❌ No stable IDs |`_debugSource` | ❌ Source maps |
287+
| DOM→source manifest | ✅ JSONL, append-only |||||
288+
| Code→live DOM query | ✅ Agent queries source, gets live runtime |||||
289+
| Runtime props/state | ✅ Fiber + VNode walking | ⚠️ Shallow | ⚠️ DOM-level + JS eval | ⚠️ Shallow (bippy) | ⚠️ Framework APIs |
290+
| Multi-framework | ✅ React · Vue · Next.js · Nuxt · extensible | ✅ React + Vue + Angular | ✅ React + Vue + Svelte + Solid + Preact | ❌ React only | ⚠️ Next.js + Astro + Vite |
291+
| Multi-bundler | ✅ Vite + Webpack + Turbopack | ❌ N/A (proxy) | ✅ Vite + Webpack + Turbopack | ❌ N/A | ❌ Dev server middleware |
292+
| MCP tools | ✅ 12 tools + 4 prompts | ⚠️ Framework plugins | ✅ 9 tools | ⚠️ Lightweight add-on | ❌ Built-in agent |
293+
| Agent-agnostic | ✅ Any MCP client |||| ❌ Bundled Elixir agent |
294+
| In-app element picker | ✅ Lit shadow DOM | ✅ Toolbar | ✅ Inspector bar | ✅ Click-to-capture | ✅ Chat interface |
295+
| Source mapping | ✅ Deterministic (AST IDs) | ⚠️ AI-inferred | ⚠️ Source maps |`_debugSource` (broken React 19) | ⚠️ Source maps |
296+
| License | ✅ MIT | ⚠️ AGPL | ✅ Open source | ✅ Open source | ⚠️ Apache + AGPL |
298297

299298
No single competitor combines build-time stable IDs, deep runtime capture, bidirectional source↔DOM querying, and an MCP tool surface in a framework-agnostic way.
300299

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "domscribe",
3-
"version": "0.0.1-dev.167",
3+
"version": "0.1.0",
44
"author": "Kaushik Gnanaskandan",
55
"license": "MIT",
66
"scripts": {

packages/domscribe-cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "domscribe",
3-
"version": "0.0.1-dev.167",
3+
"version": "0.1.0",
44
"description": "CLI for Domscribe — pixel-to-code development tool",
55
"type": "module",
66
"main": "src/bin/domscribe.ts",

packages/domscribe-core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "@domscribe/core",
3-
"version": "0.0.1-dev.167",
3+
"version": "0.1.0",
44
"type": "module",
55
"main": "src/index.ts",
66
"publishConfig": {
7-
"access": "public"
7+
"access": "restricted"
88
},
99
"dependencies": {
1010
"nanoid": "^3.3.11",

packages/domscribe-manifest/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "@domscribe/manifest",
3-
"version": "0.0.1-dev.167",
3+
"version": "0.1.0",
44
"type": "module",
55
"main": "src/index.ts",
66
"publishConfig": {
7-
"access": "public"
7+
"access": "restricted"
88
},
99
"dependencies": {
1010
"@domscribe/core": "workspace:*",

packages/domscribe-mcp/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
22
"name": "@domscribe/mcp",
3-
"version": "0.0.1-dev.167",
3+
"version": "0.1.0",
44
"description": "MCP server for Domscribe — connects editors and agents to runtime context",
55
"type": "module",
66
"main": "src/bin/domscribe-mcp.ts",
77
"distBin": {
88
"domscribe-mcp": "./bin/domscribe-mcp.js"
99
},
1010
"publishConfig": {
11-
"access": "public"
11+
"access": "restricted"
1212
},
1313
"dependencies": {
1414
"@domscribe/relay": "workspace:*"

packages/domscribe-next/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "@domscribe/next",
3-
"version": "0.0.1-dev.167",
3+
"version": "0.1.0",
44
"type": "module",
55
"main": "src/index.ts",
66
"publishConfig": {
7-
"access": "public"
7+
"access": "restricted"
88
},
99
"distExports": {
1010
"./runtime": "./runtime/index.js",

packages/domscribe-nuxt/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "@domscribe/nuxt",
3-
"version": "0.0.1-dev.167",
3+
"version": "0.1.0",
44
"type": "module",
55
"main": "src/index.ts",
66
"publishConfig": {
7-
"access": "public"
7+
"access": "restricted"
88
},
99
"dependencies": {
1010
"@domscribe/relay": "workspace:*",

packages/domscribe-overlay/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "@domscribe/overlay",
3-
"version": "0.0.1-dev.167",
3+
"version": "0.1.0",
44
"type": "module",
55
"main": "src/index.ts",
66
"publishConfig": {
7-
"access": "public"
7+
"access": "restricted"
88
},
99
"distExports": {
1010
"./auto-init": "./auto-init.js"

0 commit comments

Comments
 (0)