{"_id":"@ahmadastic/froam","_rev":"15-8226cc9d00998aa58e222ea81ba8eea9","name":"@ahmadastic/froam","dist-tags":{"latest":"9.2.0"},"versions":{"8.2.0":{"name":"@ahmadastic/froam","version":"8.2.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","wordpress","rails","django","static-site","framework-agnostic"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.2.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://github.com/Ahmadastics/froam-studio#readme","bugs":{"url":"https://github.com/Ahmadastics/froam-studio/issues"},"bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"e58b688b3342a97eacd7033da1a4bb96fdba705e","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.2.0.tgz","fileCount":534,"integrity":"sha512-n3SYl1NtO9gqcUi+Ue4+piyMGxEPW7prafM8pxXuu0kPqhNly189lau7yIAgmCGZj3Ki5FXVtRS27Lh06eXZ4Q==","signatures":[{"sig":"MEQCIH9OrBTn5Oy+jWIK7pL2nPYX4jwKeTaPpDIoILqLKgb7AiBc0WaYU4zf+OJBj5pvWjtkt6S2mYm/mjC79m7NLhnPMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5398780},"type":"module","_from":"file:ahmadastic-froam-8.2.0.tgz","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"scripts":{"test":"node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","check:release":"npm run build && npm test","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_resolved":"C:\\Users\\Ahmad Modibbo\\Desktop\\froam-studio\\ahmadastic-froam-8.2.0.tgz","_integrity":"sha512-n3SYl1NtO9gqcUi+Ue4+piyMGxEPW7prafM8pxXuu0kPqhNly189lau7yIAgmCGZj3Ki5FXVtRS27Lh06eXZ4Q==","repository":{"url":"git+https://github.com/Ahmadastics/froam-studio.git","type":"git"},"_npmVersion":"11.9.0","description":"The visual editor for the site you already have. Point it at any running site or static folder — React, Rails, Django, WordPress, plain HTML — edit visually, and every change compiles to committable files in your repo.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.2.0_1788701711609_0.15965007681325383","host":"s3://npm-registry-packages-npm-production"}},"8.3.0":{"name":"@ahmadastic/froam","version":"8.3.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.3.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://github.com/Ahmadastics/froam-studio#readme","bugs":{"url":"https://github.com/Ahmadastics/froam-studio/issues"},"bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"e60f1a86d45bdc54528911356360d50ed5cea2f2","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.3.0.tgz","fileCount":553,"integrity":"sha512-HwL6C5WMzmnhll6MF/lZoWLx7DBCYU2uWAuPNlpfNj/G8yKXLm8na2tI9q73u3buEQyuzokia1Q/cn1Cjk+IhA==","signatures":[{"sig":"MEUCIQCNLF8M2pCIQT1zMajTy5+THNyf/cRETg4hmTJV3/6oQAIgBpTxSZmRGKQf3Hdpp2tVIDTHSZF9VH0cTxm2psv0mSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDqekXbbrxAG8N6SJ8WlQ6TiOeGgv8/X5f4vMHqRWDM+gIhAIOAzAElT9m/yWuUeLxvQ6IAYoAGsjs1VQYA8n8AlPj6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5728008},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"aab0ec00b91fff2e0b88f408bcceb46fa6306c16","scripts":{"test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"repository":{"url":"git+https://github.com/Ahmadastics/froam-studio.git","type":"git"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.3.0_1789584649214_0.4885356516511594","host":"s3://npm-registry-packages-npm-production"}},"8.3.1":{"name":"@ahmadastic/froam","version":"8.3.1","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.3.1","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://github.com/Ahmadastics/froam-studio#readme","bugs":{"url":"https://github.com/Ahmadastics/froam-studio/issues"},"bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"5ca70d25a8558904f8c6778790ebf2304ceb0a62","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.3.1.tgz","fileCount":553,"integrity":"sha512-t38t4h2KAXkVWHvE/KUDLJTOOyQGF7KYEFv+ilRJGmRVQwW0rxyXc8z+ofXAOtIr2cX2tTKt6LaJlJ7X09NhzQ==","signatures":[{"sig":"MEUCIHJZf3OZ9ybFp24bh6cNSxPmFJXSt4XZ5tRevNkVU4sSAiEAg3nk9NoLcu1mVjHe1MK707n0oO++1jkKBXM/5FYOcJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC2B8QOh7oh6eWWUv6nAGB7H0HQMmGeyR8ozSVdOpFThwIgImOMSkyWDw2COu1Lf+GJV0PCARykYSVoS0K+shAXRXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5729183},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"e8a9c0c690252748df20721736bad2d878d9ff61","scripts":{"test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"repository":{"url":"git+https://github.com/Ahmadastics/froam-studio.git","type":"git"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.3.1_1789594805663_0.8459199473184444","host":"s3://npm-registry-packages-npm-production"}},"8.3.2":{"name":"@ahmadastic/froam","version":"8.3.2","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.3.2","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://github.com/Ahmadastics/froam-studio#readme","bugs":{"url":"https://github.com/Ahmadastics/froam-studio/issues"},"bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"ba2bcfac026c3f9650b0d71449d3169d6b6c9283","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.3.2.tgz","fileCount":553,"integrity":"sha512-Rlv8QGfJL6ANJB9yBOLNotYcKvpW/oZURCi9in/9NeYqkSRC7KPc6QwwjGQdCpjHFx1wdwmHmYHl5+ETSb51WA==","signatures":[{"sig":"MEQCIFFX2cgoZh5xMLSSzymLD+QpFKNa66naJXHQOnGGtA6KAiARFCsTayUexqAIRFx4FPI9HzFF91njYWsnLu39TMDAtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDHhN0CGvCaZJrHZWX3iahl5TFnPovzp+yCnPxIDP8r1AiAigZWS52zuEKuqm5d8mHOKx8LQ1qmkOGqHqpOjJFmwYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5737163},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"9a1494aa174fc20441193fb79a65e6c5b69389cf","scripts":{"test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"repository":{"url":"git+https://github.com/Ahmadastics/froam-studio.git","type":"git"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.3.2_1789655012097_0.5256684808082643","host":"s3://npm-registry-packages-npm-production"}},"8.3.3":{"name":"@ahmadastic/froam","version":"8.3.3","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.3.3","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://github.com/Ahmadastics/froam-studio#readme","bugs":{"url":"https://github.com/Ahmadastics/froam-studio/issues"},"bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"79a7975c03b0045dc3bcb461e3f0529506ab5b77","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.3.3.tgz","fileCount":597,"integrity":"sha512-fVas/6xOKKb/n5V061S3XPsHWQ98oZNMIj9bM7LTX4YaL4w6Ycjz43bKyymPd28OLPb+qq4jGmadvaTWhzYsvA==","signatures":[{"sig":"MEUCIQDolmOFILfpL9Zb+d3EnUr7PSlx7SvGlZRyRalu64ke2wIgHLoVtggdUJmPIveYBhpMDW6bimX5hAUzKTsDOpJdSRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHcz9jLQCk02L3WRdTU/sJJMi57akeoRCOiF4zxfNH3XAiEA1rwpP0z4K3WNUga+VW9ADCZkDowDGnSxGTm0VY0sBK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6176104},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"da971a9fb7fccab16c6dd01aadb554cc0e786195","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"repository":{"url":"git+https://github.com/Ahmadastics/froam-studio.git","type":"git"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.3.3_1790167861198_0.6711047731453312","host":"s3://npm-registry-packages-npm-production"}},"8.4.0":{"name":"@ahmadastic/froam","version":"8.4.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.4.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://froam.vercel.app","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"cd0f09f950bb692aa6f36263d51809c37bca7d13","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.4.0.tgz","fileCount":604,"integrity":"sha512-tcqiLxN1CtAFF0ssTHJFMfM83BOJEwLz3ggmoaWQ8a9/ry1OV0MXNkEB+11L00uz1d9PY8zcZ5eCWukNj5qXVA==","signatures":[{"sig":"MEYCIQCmH5ZCd3yVvES48r6h0Kug5WF8LNQTihBqs9ywpmbbcgIhAKwtjl6te8pyxRGsTk7eTN5L/DrmmmyDIU2CF7vV51mc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAG97JL5M31tgwaxGHlqUJK371+SoL0Pu31n06q1vPCGAiAkMRa0D8clM3MLA0DdHp4AFzubesFAQ4wG8+7hjfxZRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6288735},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"5df9c63b37a94d3452b4aa734a918797f895405f","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.4.0_1790331367359_0.0891834634074542","host":"s3://npm-registry-packages-npm-production"}},"8.5.0":{"name":"@ahmadastic/froam","version":"8.5.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.5.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://froam.vercel.app","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"87f912f76c178ff11cbcbd63a85b736a6e0f2089","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.5.0.tgz","fileCount":687,"integrity":"sha512-b12QH2WkX3XpohNVvFDDGHxuq6vI2orDgA8TYycIwsAdlssVq4hyxqHuRN8MX4A3f+QwHgxl5U7vca0shqCD1g==","signatures":[{"sig":"MEQCIC/utW7lMGP/h4oh8BL+Z0G04islTbPm3GMFstesW6EvAiBZXGLurPmVl8sBit02PFrHY08LJEO1iteonsm8kWwkTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAJpFNym0oCT7baF/jP0PkhHAI98szm9XgoXr5RiNI63AiA/y+T64P4iIe8FNjpxtqaT1+/mB0NvhaCdnR4ljqbu8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6516243},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"25947f61fa9d1ba9619193d05d21f642a24262e3","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs && node scripts/test-bridge-security.mjs && node scripts/test-source-writeback.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","test:e2e":"node scripts/test-e2e-editor.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test && npm run test:e2e","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.5.0_1790352553344_0.1414903847693525","host":"s3://npm-registry-packages-npm-production"}},"8.6.0":{"name":"@ahmadastic/froam","version":"8.6.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.6.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://froam.vercel.app","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"b0c60e6a4662062f8354c3077c166a4820905e3d","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.6.0.tgz","fileCount":696,"integrity":"sha512-wf0RXpV1hvGHWiTt675rKntfZPqZzZDyrs0HK20jQpWistp9+KGAtQXZVG0do6trdvPpqlxbowOUsByotQLmiQ==","signatures":[{"sig":"MEYCIQCxO2ACXCvkuXZzsAA0klH42hGBtTuIQcUiDV3nU4bqPgIhAPsRfzhWyn/Cf/DvLZhjmii/T8pZKI5/Nld3aC3jASph","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDj0Rw+d7ZquKcoc8zt9WY0mqrWwh9RfuxYb5viQ/7E5AiEAwrDareUW4KX9BorY6DGN+FF15FpvdCBVXFIkRyVVf3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6657330},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"d0f3d16aee760065bd96e7d9350ef4baf72143af","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs && node scripts/test-bridge-security.mjs && node scripts/test-source-writeback.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","test:e2e":"node scripts/test-e2e-editor.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test && npm run test:e2e","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.6.0_1790355271465_0.29281519526022537","host":"s3://npm-registry-packages-npm-production"}},"8.7.0":{"name":"@ahmadastic/froam","version":"8.7.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.7.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://froam.vercel.app","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"6194e03b63974cc465ed0a134375a7eca839225d","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.7.0.tgz","fileCount":712,"integrity":"sha512-EUGf0aYpa7G6RBnHLSMeFBGaEi0griMfsZXZGw1NJmHZ6xKTYewgPnOPFqEg0TI+pqRZ0VdIEdwwzQhok8yISA==","signatures":[{"sig":"MEYCIQD/Rv0/PO3F6EKa84JmI5u7b22kJyY98Y0UJnxe5AwK7QIhAIg0YUIBiBsihLzT3NyeSHm/ejJYxKO0X72Uisn/Ykr3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDKWOPKIZysY1RzXxZ1Zuk+YyUNc/oWMx/KuV9Oq4Y+QgIhANBSC6N94dZp9F7K70ngoPkG05dystsp0J/qhhL3H3Rh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6793849},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"ba01d187d231cf23fcbbb8905658acb267744a5e","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs && node scripts/test-bridge-security.mjs && node scripts/test-source-writeback.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","test:e2e":"node scripts/test-e2e-editor.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test && npm run test:e2e","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.7.0_1790407634335_0.7024298386076875","host":"s3://npm-registry-packages-npm-production"}},"8.8.0":{"name":"@ahmadastic/froam","version":"8.8.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.8.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://froam.vercel.app","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"def252c929c29db22cbd6aab097db72a4853dc55","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.8.0.tgz","fileCount":737,"integrity":"sha512-nFwYT+rEALdAApOJ7/jFGte74QFx8tgCsDOPmkBGOEgNUHtuqLmiTb6l6b8tW5NwM94nUhNQBJxuvryx/NTp3Q==","signatures":[{"sig":"MEUCIAKlu5tSpgFB0q3nZs4Bldiqjcbclov+3VZw31Ubd5fWAiEA0BLDlHiRweYc4sfcfS89Jo7Hn2U/JE0Q71D681dZds0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDOzWwQEKxoWE4akV0V1cwuFnGwLSAYjBsL2tQSEFjNzwIhAMysaw6PTnWQyyjfm3zuQPzWXRBUlgD85Kr0liO0BlIk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7128614},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"8f363f468c32eacc7c8a8aa842038170842f4e1e","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs && node scripts/test-bridge-security.mjs && node scripts/test-source-writeback.mjs && node scripts/test-publishing.mjs && node scripts/test-realtime.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","test:e2e":"node scripts/test-e2e-editor.mjs && node scripts/test-realtime-browser.mjs && node scripts/test-share.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test && npm run test:e2e","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.8.0_1790599991702_0.6659323177642291","host":"s3://npm-registry-packages-npm-production"}},"8.8.1":{"name":"@ahmadastic/froam","version":"8.8.1","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.8.1","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://froam.vercel.app","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"461b04e9f140ee2f73eccc952d10a1195be21b00","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.8.1.tgz","fileCount":742,"integrity":"sha512-bmtDhpHA7dg8aEXQM/Q+na0vtyD1ZBEypjyD0pSHfbNhdC4Z+Q7DVFGOsl7A0SbOjcpAnGoRXg45WGa627BQaw==","signatures":[{"sig":"MEUCIQDMRG0ip3n927jnvR+nAk3KtLEWZndQfSeKNVpvgD284QIgEJchwWhG5p8J2dJP0rWXm6EHMjLmM4rYAd2U6ZS02MM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBZ4M1QPDO7JkpK4+D0T1VJx4W/vKyekidiOL8avj2vQAiEAmYptvOHcN8DY47cDY+a+DvHuao0Mg83VTD5lIPsO3yI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7130928},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"c108154020fefbbfa8bb91a3dfd7dc834e0a8c3c","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs && node scripts/test-bridge-security.mjs && node scripts/test-source-writeback.mjs && node scripts/test-publishing.mjs && node scripts/test-realtime.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","test:e2e":"node scripts/test-e2e-editor.mjs && node scripts/test-realtime-browser.mjs && node scripts/test-share.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test && npm run test:e2e","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.8.1_1790615470063_0.5179676049200705","host":"s3://npm-registry-packages-npm-production"}},"8.9.0":{"name":"@ahmadastic/froam","version":"8.9.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@8.9.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://froam.vercel.app","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"ea39c52d1bad0bd9391c0866ddfc7abfab3339ed","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-8.9.0.tgz","fileCount":747,"integrity":"sha512-BIc1oKt+0U9ZLHtOG3gelR7wsM2fpRXN2C0EkXlHH6VOSCLGaUupK8MF8+JWfcJUAZGUaSYcXiAvLSj5yYMP1A==","signatures":[{"sig":"MEQCIAvE8gZYMkXkGnfwRYJLrhWDHMoWGrwjNBCgfQ3Q3VBPAiAQktnBWQg6bNJXWHI25F++nqn0ClVqyslswFSfbVHnsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA7XFuTFCYK52PSanhtnzOfn7Rfp6IzTVxkDGvzRjqknAiA/cUAL+C+d/1b8+AH9oXQQCpIzYidaI2Sdc57JL4HadA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7180403},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"87d66fc26dd83028fb55442727f93c7fa1c82abf","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs && node scripts/test-bridge-security.mjs && node scripts/test-source-writeback.mjs && node scripts/test-publishing.mjs && node scripts/test-realtime.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","test:e2e":"node scripts/test-e2e-editor.mjs && node scripts/test-realtime-browser.mjs && node scripts/test-share.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test && npm run test:e2e","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_8.9.0_1790680169132_0.20153919368908402","host":"s3://npm-registry-packages-npm-production"}},"9.0.0":{"name":"@ahmadastic/froam","version":"9.0.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@9.0.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://froam.vercel.app","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"20124de5c1bf193212e78655b1d50cdf9b77214b","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-9.0.0.tgz","fileCount":782,"integrity":"sha512-KRvnQFVc5hcFwawDcsLvPwWMjCMVOfSfdtzEe4mWBZclAgS82ukBa9WMEEt1tyLKETumbHPSLotnNC+6XnsV3g==","signatures":[{"sig":"MEUCIQCb2WCQyMsB6h4L51GXjEDT1UsfhMPANWYKenIZGZsVmgIgKg4RXc7O9lnQql9qBtQnHVY6va24oyjVTsd/kcJ0k0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHKhKCBhTuKr+4reItCQhhY5SIy2kJXWkwi8l5KTuw7MAiBKarthAXghrUm90J3uo84zBnWzRaiDKJmy9gJN/97/nQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7263202},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"127eccfb0a135cb1f09ca6537ea170474237578a","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs && node scripts/test-bridge-security.mjs && node scripts/test-source-writeback.mjs && node scripts/test-publishing.mjs && node scripts/test-realtime.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","test:e2e":"node scripts/test-e2e-editor.mjs && node scripts/test-realtime-browser.mjs && node scripts/test-share.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test && npm run test:e2e","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_9.0.0_1790714069467_0.38801143081204414","host":"s3://npm-registry-packages-npm-production"}},"9.1.0":{"name":"@ahmadastic/froam","version":"9.1.0","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","_id":"@ahmadastic/froam@9.1.0","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"homepage":"https://froam.vercel.app","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"00248d813eae17db3e72c74e85efa35e3daea691","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-9.1.0.tgz","fileCount":799,"integrity":"sha512-wi+RSELE7FUjSQEskem6y7OAVZ6rkzaXRlrJGK7s9JgZhxOkPADbnjdXApgSc1XbyJYnAIIN6DBANDKUe5MEhw==","signatures":[{"sig":"MEYCIQDyI60L4NJnNdzj7FjZTbvtIL6TVKFuncMQniOPzRhPBwIhAK3aZBQ4qUD2TZgr5dYS/xaoMbxYpwhI0ipNAe4wySnM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDaLOVJp/BPIAkxcYJFWLaia4DlmIH7mwsAPZbi0sxYjgIgcZ9mFAl9/ADcrwqETS7GUw70QQEoE1teFVpmzHovJf8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7372507},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"e3ada169ec616260ec2c715e40fd7f24a0deee9d","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs && node scripts/test-bridge-security.mjs && node scripts/test-source-writeback.mjs && node scripts/test-publishing.mjs && node scripts/test-realtime.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","adoption":"node scripts/adoption.mjs","test:e2e":"node scripts/test-e2e-editor.mjs && node scripts/test-realtime-browser.mjs && node scripts/test-share.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test && npm run test:e2e","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/froam_9.1.0_1790721029849_0.9766077505947808","host":"s3://npm-registry-packages-npm-production"}},"9.2.0":{"_id":"@ahmadastic/froam@9.2.0","bin":{"froam":"bin/froam.mjs"},"dist":{"shasum":"bd6d170fdc0a7aca59713b6c610a3fd04e18baf9","tarball":"https://registry.npmjs.org/@ahmadastic/froam/-/froam-9.2.0.tgz","fileCount":813,"integrity":"sha512-84fWD1+c69pkuYELRT3EJMxuwdLSnNLyVaUh4Dm2e4NYPGQ7qnjT0zz8oph6tlLHIIs2lVhaNiiTCoqoCF960w==","signatures":[{"sig":"MEUCIQDaBH1TBMFBRu/1crgDA7tihHLXmuc5fWF0mNDLkKQCnQIgZ3lSVFO67dBswZ/DfUV4JGgjj/Vder9n4SQ5JG54Vm8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDKypYwkbq/j3VpBCKTM87o/+VFpVCAs7EIrrQ4ZpsLeQIgRtKjR3fj/OcJg3aB0lWy/SQ/cRoWeB6gYHInGjKMWx0="}],"unpackedSize":7522693},"name":"@ahmadastic/froam","type":"module","author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./css":{"types":"./dist/css.d.ts","import":"./dist/froam-studio.css","default":"./dist/froam-studio.css"},"./vite":{"types":"./vite-plugin.d.ts","import":"./vite-plugin.mjs"},"./server":{"types":"./server.d.ts","import":"./lib/publish-store.mjs","require":"./server.cjs"},"./gate-css":{"types":"./dist/gate-css.d.ts","import":"./dist/gate-css.css","default":"./dist/gate-css.css"}},"gitHead":"1f85a6ad011a7ef6844a76f03dc121ecd52e4670","license":"FSL-1.1-MIT","scripts":{"scan":"node scripts/scan-url.mjs","test":"node scripts/test-alpha-launcher.mjs && node scripts/test-project-isolation.mjs && node scripts/test-oplog.mjs && node scripts/test-project.mjs && node scripts/test-design-system.mjs && node scripts/test-brand-fonts.mjs && node scripts/test-quick-looks.mjs && node scripts/test-drift.mjs && node scripts/test-project-sync.mjs && node scripts/test-committer.mjs && node scripts/test-rooms.mjs && node scripts/test-room-client.mjs && node scripts/test-editor-shell.mjs && node scripts/test-section-manipulation.mjs && node scripts/test-intelligence.mjs && node scripts/test-reference-intelligence.mjs && node scripts/test-froam-intent.mjs && node scripts/test-smart-styles.mjs && node scripts/test-reference-build.mjs && node scripts/test-page-profile.mjs && node scripts/test-judge.mjs && node scripts/test-scan-profile-contract.mjs && node scripts/test-pretext.mjs && node scripts/test-design-reference.mjs && node scripts/test-generate.mjs && node scripts/test-codegen.mjs && node scripts/test-bridge-security.mjs && node scripts/test-source-writeback.mjs && node scripts/test-publishing.mjs && node scripts/test-realtime.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/fix-js-extensions.mjs && node scripts/copy-assets.mjs && node scripts/build-standalone.mjs && node scripts/build-server.mjs","clean":"node scripts/clean.mjs","induce":"node scripts/induce.mjs","release":"node scripts/release.mjs","adoption":"node scripts/adoption.mjs","test:e2e":"node scripts/test-e2e-editor.mjs && node scripts/test-realtime-browser.mjs && node scripts/test-share.mjs","roundtrip":"node scripts/roundtrip.mjs","audit:demo":"node scripts/demo-audit.mjs","smoke:share":"node scripts/smoke-share-live.mjs","benchmark:v8":"node scripts/benchmark-intelligence.mjs && node scripts/benchmark-storage-worker.mjs && node scripts/benchmark-reference-intelligence.mjs","verify:alpha":"node scripts/verify-alpha-gates.mjs","check:release":"npm run build && npm test && npm run test:e2e","benchmark:v7.1":"node scripts/benchmark-intelligence.mjs","benchmark:v7.2":"node scripts/benchmark-intelligence.mjs","prepublishOnly":"npm run check:release","build:standalone":"node scripts/build-standalone.mjs","profile:memory:v8":"node --expose-gc scripts/profile-memory-v8.mjs","benchmark:reference":"node scripts/benchmark-reference-intelligence.mjs","evaluate:screenshots":"node scripts/evaluate-screenshot-corpus.mjs","benchmark:reference-build":"node scripts/benchmark-reference-build.mjs"},"version":"9.2.0","_npmUser":{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"},"homepage":"https://froam.vercel.app","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"_npmVersion":"11.9.0","description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","directories":{},"maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"sideEffects":["*.css","**/*.css"],"_nodeVersion":"24.14.0","dependencies":{"lucide-react":"^1.7.0","framer-motion":"^12.38.0","html-to-image":"^1.11.13"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","esbuild":"^0.27.4","react-dom":"^19.0.0","typescript":"~5.9.3","@types/react":"^19.2.14","playwright-core":"^1.63.0","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/froam_9.2.0_1790759615176_0.35170068323063264"}}},"time":{"created":"2026-09-06T13:35:11.428Z","modified":"2026-09-30T09:13:35.474Z","8.2.0":"2026-09-06T13:35:11.794Z","8.3.0":"2026-09-16T18:50:49.392Z","8.3.1":"2026-09-16T21:40:05.818Z","8.3.2":"2026-09-17T14:23:32.266Z","8.3.3":"2026-09-23T12:51:01.316Z","8.4.0":"2026-09-25T10:16:07.508Z","8.5.0":"2026-09-25T16:09:13.469Z","8.6.0":"2026-09-25T16:54:31.615Z","8.7.0":"2026-09-26T07:27:14.507Z","8.8.0":"2026-09-28T12:53:11.804Z","8.8.1":"2026-09-28T17:11:10.180Z","8.9.0":"2026-09-29T11:09:29.280Z","9.0.0":"2026-09-29T20:34:29.597Z","9.1.0":"2026-09-29T22:30:29.972Z","9.2.0":"2026-09-30T09:13:35.313Z"},"author":{"name":"Ahmad Modibbo","email":"ahmadnuhu14@gmail.com"},"license":"FSL-1.1-MIT","homepage":"https://froam.vercel.app","keywords":["froam","visual-editor","design-tool","figma-like","no-code","page-editor","vite-plugin","react","static-site"],"description":"A visual editor for a running site or static HTML folder. Save supported revisions as a versioned design, generated override CSS, and a small content runtime.","maintainers":[{"name":"ahmadastic","email":"ahmadnuhu14@gmail.com"}],"readme":"# Froam Studio\n\n[![License: FSL-1.1-MIT](https://img.shields.io/badge/license-FSL--1.1--MIT-14b8a0.svg)](https://cdn.jsdelivr.net/npm/@ahmadastic/froam/LICENSE)\n[![Node >= 18](https://img.shields.io/badge/node-%3E%3D18-5eead4.svg)](https://www.npmjs.com/package/@ahmadastic/froam)\n\n<p align=\"center\">\n  <img src=\"https://cdn.jsdelivr.net/npm/@ahmadastic/froam/docs/froam-mark.svg\" alt=\"Froam\" width=\"460\">\n</p>\n\n<p align=\"center\"><a href=\"https://froam.vercel.app\"><b>Try it live in your browser → froam.vercel.app</b></a></p>\n\n**A visual editor for the site you already have.** Froam overlays controls on a\nrendered page. Supported revisions can be saved as a versioned Froam design,\ngenerated override CSS, and a small runtime for content changes.\n\nFroam does **not** rewrite React components, templates, application logic, or\nsource stylesheets. The one exception is deliberate and narrow: copy you change\n(and, in Tailwind projects, an element's class list) is written back into the\nsource only where it appears exactly once; everything else stays a Froam edit.\n\n## Try it\n\nOne command, from any folder:\n\n```bash\nnpx @ahmadastic/froam\n```\n\n```text\n◆ Froam\n  Paste the website you want to edit.\n\n  Already running on this computer:\n    1  localhost:3000  My Portfolio\n    2  localhost:5173  Vite + React\n\n  Website URL, or a number:\n```\n\nFroam finds the dev servers already running on your machine and names them by\ntheir page title, so editing your own project is a keystroke. Paste any address\ninstead to edit a live site:\n\n```text\n  Website URL, or a number: example.com\n```\n\nFroam picks a free port, starts a local bridge, injects the editor, and opens\nyour browser. It does not modify the proxied server or the remote website.\n\nIf you already know what you want, skip the prompt:\n\n```bash\nnpx @ahmadastic/froam example.com          # a live site\nnpx @ahmadastic/froam localhost:3000       # your dev server\nnpx @ahmadastic/froam ./public             # a static HTML folder\n```\n\n### Where your edits are saved\n\nEditing your own project writes a `froam/` workspace into that project, next to\nthe code it belongs to.\n\nYou do not have to tell Froam where the project is. It traces the port back to\nthe process serving it, and that process back to the folder it was started from,\nthen shows you the folder before creating anything:\n\n```text\n  Froam will save your edits here:\n    C:\\Users\\Ada\\Desktop\\my portfolio\\froam\n  Enter to create it · n to keep them in your Froam folder · or paste another folder\n  [Y/n]\n```\n\nIf a server cannot be traced — a container, or a language whose launcher hides\nthe path — Froam asks rather than guessing.\n\nEditing a live site you do not have the source for writes to `~/Froam/<site>/`\ninstead, so Froam never drops files into whatever directory your terminal\nhappened to open — including a read-only one such as `C:\\Windows\\System32`.\n\n### Other devices on your network\n\n```bash\nnpx @ahmadastic/froam example.com --host\n```\n\nKeep the terminal running. `--host` exposes the development bridge to your local\nnetwork for phone testing; do not expose it directly to the public internet.\n\n## Publishing without a developer\n\nInvite teammates who aren't developers to change the site themselves, with\nyou approving what goes live:\n\n1. In the editor, open **Share** in the toolbar and copy the **Can suggest\n   changes** link. Send it to them — no account, no install. (On a site running\n   on your computer, turn on **Make it reachable from anywhere** first — see below.)\n2. They open it, say their name, and edit anything on the page. Nothing they\n   do is live. When they're done they press **Submit** and add a note.\n3. You get the request in **Share → Requests**: who, why, and exactly what\n   changed. **Preview** shows it on the page; **Approve & publish** makes it\n   live; **Request changes** sends it back with your note.\n\nApproving under `froam dev` does what Save to Repo does: copy is written into\nyour source files where it can be placed (and, in Tailwind projects, styles\ninto the element's class list), the rest into the Froam design files — ready\nto commit. Anything approved can be taken back with **Revert**; whatever\nsomeone changed again since is left alone.\n\nA request can span pages and screen sizes. Previewing it runs checks on the\npage — contrast, text running off the screen, broken images, missing alt\ntext, links that go nowhere — before you approve.\n\n### Sharing a site that's on your computer\n\nA link to `localhost` only opens on your machine. Under `froam dev`, Share\noffers **Make it reachable from anywhere** (or start with `froam dev --share`):\nFroam connects out to its share service and your invite links switch to a\npublic address that opens your local site, with the editor and the room, on\nany computer — while `froam dev` runs (Node 22 or newer). Only people you\ninvite can open it: without a live invite the address shows nothing, not even\nthe page. Links can stop working after 24 hours or 7 days, and **New links**\nshuts out everyone who came in on the old ones. People on the link can look,\ntalk and suggest changes; nothing they send can write your files. Set\n`FROAM_SHARE_URL` to use your own deployment of `templates/cloudflare-share`.\n\nWhen you're done, **End collaboration** in Share stops every link.\n\n### Smart Quick Edits\n\nSome Quick Edits read the page before they change anything. They run on your\ncomputer with no AI, and the preview says what each one worked out:\n\n| Say | What it works out |\n| --- | --- |\n| **Fix the contrast** | The colour actually behind the text, including every colour of a gradient, then the nearest shade of the same hue that passes WCAG AA. It says the ratio before and after. Over a photo it adds a soft shadow behind the letters instead. |\n| **Make the size fluid** | A `clamp()` that is exactly the phone size at 375px and the current size at 1440px, with no breakpoints. It still follows the reader's text-size setting. |\n| **Make it frosted glass** | Glass tuned to what's behind it, light or dark, using the site's own corner radius. |\n| **Add a gradient in the brand colour** | The site's brand colour, read from its buttons, links and logo, flowing into a neighbouring hue. On text it's clipped to the letters and deepened until it reads. |\n| **Make it glow in the brand colour** | A glow in that colour: a text glow on words, a halo on boxes. |\n| **Balance the lines** | `text-wrap: balance` for headings and `pretty` for paragraphs, so no word is left alone on a line. |\n| **Match the others like it** | The styles its look-alikes on the page share (corners, padding, weight, …) wherever this one differs. |\n| **Use the brand colour** | Text in the brand colour, darkened just enough to pass. A button filled with it, with readable text. |\n\nSelecting something offers the ones that suit it. **Try again** gives a\ndifferent take, such as another hue pairing, a softer glow or heavier frost.\nWhen there's nothing to fix, it says so (\"Already easy to read: 12.6:1\").\n\n### AI in Quick Edit\n\nQuick Edit handles direct edits (\"make it bolder\", \"add more space\") on your\ncomputer, with nothing uploaded. For anything else, give `froam dev` an AI and\nturn on **AI** in Quick Edit:\n\n```sh\nANTHROPIC_API_KEY=… froam dev            # Claude (claude-sonnet-5 unless FROAM_AI_MODEL says otherwise)\nFROAM_AI_API_KEY=… FROAM_AI_MODEL=… FROAM_AI_BASE_URL=… froam dev   # any OpenAI-compatible API\n```\n\nClaude is called through Anthropic's own Messages API. It has to answer with\nFroam's plan format, so its replies can't come back as loose prose. If both kinds of\nkey are set, `FROAM_AI_*` wins; `FROAM_AI_PROVIDER=anthropic` sends\n`FROAM_AI_API_KEY` to Claude instead.\n\nBefore opening the editor, `froam ai-check` sends one sample request to the AI\n`froam dev` would use and says in plain words what happened: it worked (and\nhow long it took), the key was refused, the API returned an error (often a\nwrong model name), it couldn't be reached, or no AI is set. It never prints\nthe key.\n\nThe key stays with `froam dev`; the browser never sees it, and people on a\nshare link can't use it. Froam asks before the first request, sends a\ndescription of the part you picked (layout, styles, words — never source code,\ncookies or screenshots), and shows a preview you keep or discard.\n\n### Hosted: pull requests, notifications, realtime\n\nOn a hosted site, approval opens a pull request and the owner hears about\nrequests wherever they are:\n\n```js\nimport { createFroamNotifier, createFroamRoomApi, createGitHubPublisher } from '@ahmadastic/froam/server'\n\nconst rooms = createFroamRoomApi({\n  storage,                                   // your database adapter\n  // Approve → one commit (design + copy + Tailwind classes) as a pull request.\n  // Revert → closes it, or opens a revert pull request once merged.\n  ...createGitHubPublisher({ token: process.env.GITHUB_TOKEN, repo: 'you/site', dir: 'froam', siteUrl: 'https://your-site.com' }),\n  // Slack (with a Review button), Discord, any webhook, or email via Resend.\n  notify: createFroamNotifier({ siteUrl: 'https://your-site.com', webhooks: [process.env.SLACK_WEBHOOK_URL] }),\n})\n```\n\nLinks in notifications and pull requests open the editor on that request and\nnever carry a token. Under `froam dev`, set `FROAM_NOTIFY_WEBHOOK` (and\n`FROAM_SITE_URL`) or `\"notify\"` in froam.config.json.\n\nServerless hosts can't hold connections open, so rooms there would poll. For\ninstant updates and live cursors, run the room server on Cloudflare\n(`templates/cloudflare-rooms` — rooms, storage and realtime in one Worker, free\ntier), or keep your own room server and add the relay in\n`templates/cloudflare-realtime`.\n\nThe other links: **Can edit together** (live co-editing, for designers and\ndevelopers), **Can comment** (clients: notes and approvals), **Can view**.\nIn Chat, type @ to mention someone, and pin a message to the selected element.\n\n## Verified static workflow\n\nFrom a static site's root:\n\n```bash\nnpx @ahmadastic/froam init\nnpx @ahmadastic/froam dev --serve . --port 4600\n```\n\n`froam init`:\n\n- creates `froam.config.json`;\n- creates `froam/froam.design.json`, `froam/froam.generated.css`, and\n  `froam/froam.runtime.js`;\n- adds the generated stylesheet and runtime tags to `index.html`; and\n- writes the original page to `index.html.bak` before changing it.\n\nOpen the printed local URL, make revisions, and choose **Save to Repo**\n(`Ctrl+Shift+S`). Serve the initialized folder normally and reload it without\nthe editor to verify the result.\n\n## What happens to an edit\n\n| Edit stage or type | Result |\n| --- | --- |\n| Unsaved editor preview | Browser DOM and local browser state only; it is not a source-code rewrite |\n| Color, typography, spacing, border, radius, shadow, layout, or supported state style | A rule in `froam.generated.css`, scoped by route and viewport |\n| Text replacement | Written into your source file when the original words appear there exactly once (HTML, JSX/TSX, Vue, Svelte, Astro, translation JSON); otherwise data in `froam.design.json`, applied by `froam.runtime.js` |\n| Image replacement | Data in `froam.design.json`, applied in production by `froam.runtime.js` |\n| Inserted block (Library pattern) | Serialized block, styled with the site's own theme variables, applied by `froam.runtime.js` |\n| `::before` / `::after` | A pseudo-element rule in `froam.generated.css` |\n| Save to Repo | Updates the design, generated CSS, and runtime; the editor may also save `froam.project.json` |\n\nGenerated CSS is an override layer and uses `!important`. The runtime is\ndependency-free and embeds the content changes; it does not call a runtime API.\n`froam.project.json` contains editor project state, can be much larger than the\nproduction artifacts, and is not required by a plain static production page.\n\n## What modifies source files\n\n| Command | Source effect |\n| --- | --- |\n| `froam dev` or shorthand `froam <url-or-dir>` | Creates the Froam workspace; does not rewrite the host application's existing components or stylesheets |\n| `froam init` on static HTML | Changes `index.html` only to add the generated CSS/runtime tags and creates `index.html.bak` |\n| `froam init` on Vite | Creates Froam files and may edit `vite.config.*`, with a `.bak` file |\n| Visual editing and Save to Repo | Writes Froam-owned design/output files, and writes copy edits into the source file that holds the original words (only when they appear exactly once as a whole string; never in comments, `node_modules`, builds or dotfolders). Turn off with `--no-write-source` or `\"writeSource\": false` in `froam.config.json` |\n\nReview every `init` diff before committing it.\n\n## Checking that a design still fits the page\n\nA Froam edit is keyed by a DOM path. When someone wraps a section in a\ncontainer or inserts a sibling above it, that path can stop meaning what it\nmeant — and it fails quietly in both directions. Either the edit disappears, or\nthe path still resolves and the edit lands on whatever moved into that slot.\n\n`froam check` answers that before a merge instead of after a deploy:\n\n```bash\nfroam check --app http://localhost:3000    # against a running app\nfroam check --serve dist                   # against a build\n```\n\n```text\n◆ froam check · static → dist/\n\n  ✖ /  12 anchored · 1 moved · 1 orphaned\n      h2 \"Pricing\" · desktop\n        was  main:1/section:2/h2:1\n        now  main:1/section:3/h2:1  81% match\n      p \"Send anything, anywhere\" · desktop\n        main:1/section:1/p:1  not on the page any more\n```\n\nEach edit resolves to one of five states: `anchored` (found where it was made),\n`moved` (found elsewhere — `froam check --fix` re-keys it), `orphaned` (gone),\n`unverified` (saved before fingerprints existed, so there is nothing to check it\nagainst), and\n`missing` (an unverified edit whose path no longer resolves).\n\nThe command exits non-zero on drift and on a run where no route could be\nloaded, so it works as a CI gate. A route it could not fetch is reported as\nunchecked rather than counted as healthy.\n\n## Proxy scope is not framework support\n\nThe proxy can inject Froam into many conventional HTML responses. That proves\nthe page can be previewed; it does not prove that every route, asset, dev-server\nprotocol, framework lifecycle, CSP, or production build is compatible.\n\nCurrent evidence:\n\n| Workflow | Status |\n| --- | --- |\n| Static HTML `init -> edit -> Save to Repo -> plain-server reload -> recovery` | Verified end to end |\n| Local HTTP proxy injection and cache handling | Covered by automated integration tests |\n| React/Vite package imports | Package exports load; full application workflow not verified in this audit |\n| External HTTPS sites | Editor injects into the proxied page; this is a local mock-up, not a deploy path, and is not verified as general framework support |\n| Mobile browser editing | UI and `--host` path are implemented; physical-device workflow not verified in this audit |\n\n## React and Vite integration\n\nInstall the package when importing its APIs:\n\n```bash\nnpm install --save-dev @ahmadastic/froam\n```\n\nUse the default Vite plugin export:\n\n```ts\nimport froamStudio from '@ahmadastic/froam/vite'\n\nexport default {\n  plugins: [froamStudio({ dir: 'src/froam' })],\n}\n```\n\nMount the runtime and gate once near the React root:\n\n```tsx\nimport { FroamGate, FroamRuntime, type FroamLocalDesign } from '@ahmadastic/froam'\nimport '@ahmadastic/froam/css'\nimport '@ahmadastic/froam/gate-css'\nimport froamDesign from './froam'\n\n<FroamRuntime design={froamDesign as FroamLocalDesign} routes=\"*\" />\n<FroamGate enabled initialOpen={false} localRoutes=\"*\" />\n```\n\n`froam init` has emitted legacy unscoped import examples in past releases.\nVerify generated Vite imports against the scoped examples above.\n\n## Package exports\n\n| Export | Purpose | Verification |\n| --- | --- | --- |\n| `@ahmadastic/froam` | React gate, runtime, and project APIs | Imports successfully |\n| `@ahmadastic/froam/css` | Editor stylesheet | Export target exists |\n| `@ahmadastic/froam/gate-css` | Gate stylesheet | Export target exists |\n| `@ahmadastic/froam/vite` | Default Vite development plugin | Default export imports successfully |\n| `@ahmadastic/froam/server` | Publish/room/server helpers | Imports successfully; production hosting not verified here |\n\n## Implemented editor surface\n\nThe current source includes selection, inline text editing, typography and\nspacing controls, responsive viewport stores, state styling, Look Studio,\nMotion Studio, layers, page planning, reference analysis, versions, local Quick\nEdit, publishing primitives, rooms, and project intelligence surfaces.\n\nImplementation or unit coverage is not the same as a completed customer\nworkflow. The exact classification (implemented, tested, unverified, and\nunsupported) is maintained in\n[docs/VERIFIED_CAPABILITIES.md](https://cdn.jsdelivr.net/npm/@ahmadastic/froam/docs/VERIFIED_CAPABILITIES.md).\n\nRemote model interpretation is disabled in the shipping editor by default.\nLocal deterministic Quick Edit does not require remote AI.\n\n## Known limitations\n\n- Phone and tablet previews answer CSS media queries, viewport units and\n  `matchMedia()` for the device, on the page itself. Scrolling inside the\n  device reaches the page's scripts: `scroll` listeners fire and\n  `window.scrollY` and `scrollTo()` follow the device screen, so sticky headers\n  and scroll effects behave. A script that reads\n  `window.innerWidth` directly still sees the real window, and a script that\n  listened to a media query before the preview opened hears about the change\n  on its next resize.\n\n- Generated selectors are structural paths such as\n  `section:nth-of-type(1) > h1:nth-of-type(1)`. Inserting, deleting, or\n  reordering same-tag siblings retargets an edit. Edits saved since fingerprints\n  were introduced carry one, so `froam check` reports this and the runtime\n  declines to restyle an element it cannot recognise; edits saved by earlier\n  versions have nothing to check against and are reported as `unverified` until\n  the route is re-saved.\n- `froam check` parses HTML structurally rather than with a browser engine.\n  Well-formed markup indexes identically to a browser — including implied end\n  tags, synthesized `<tbody>`, raw-text elements and character references — but\n  table foster-parenting and other HTML5 recovery rules are not implemented.\n- Previewing a production URL cannot change or deploy that website. Shipping\n  requires a project or integration you control.\n- Generated CSS is an override layer, not a source-level refactor. Source\n  write-back covers copy (text) today; styles stay in `froam.generated.css`.\n- Content inside shadow roots (web components) and inside iframes is not\n  editable yet. Portals mounted on `<body>` beside `#root` are.\n- Immediate undo works in the active editor session. In this audit, undo was\n  unavailable after Save to Repo followed by a full editor reload. Use version\n  control and `index.html.bak` as the reliable recovery path.\n- The development proxy removes CSP headers from proxied HTML so the editor can\n  load. It does not establish compatibility with the site's production CSP.\n- A page that cannot load the generated stylesheet/runtime cannot ship Froam\n  output.\n\n## CLI\n\n```text\nfroam                     ask what to edit, then open it\nfroam <url>               edit a running site or a live URL\nfroam <dir>               edit a static HTML folder\nfroam init                scaffold and wire a detected project\nfroam dev                 start the universal development bridge\n    --app <url|port>      proxy a served HTML page\n    --serve [dir]         serve a static HTML folder\n    --port <n>            bridge port (otherwise the first free port from 4600)\n    --open                open the browser\n    --host [addr]         expose on a trusted local network\n    --allow-origin <o>    let a custom dev domain (e.g. http://app.test) use the bridge\n    --share               a link that opens this local site on any computer\n    --no-write-source     keep copy edits as Froam edits instead of writing them to source\nfroam build               rebuild CSS/runtime from the design file\nfroam status              summarize the design and generated files\nfroam check               report edits that no longer match the page\n    --app <url>           check against a running app\n    --serve [dir]         check against a built or static folder\n    --fix                 re-anchor the edits that only moved\nfroam doctor              check setup health\nfroam ai-check            send one test request to the AI froam dev would use\nfroam migrate             migrate the design format to v3\nfroam version             print the installed package version\n```\n\nAll commands accept `--dir <path>` for a custom Froam directory. Node 18 or\nnewer is required.\n\nThe bridge only answers to this machine: CORS is granted to local origins\n(and `--allow-origin`), writes from any other website are refused, the `Host`\nheader must be local (DNS rebinding), and `--serve` never serves dotfiles.\n\n## License\n\n[FSL-1.1-MIT](https://cdn.jsdelivr.net/npm/@ahmadastic/froam/LICENSE). Froam is source-available, not OSI-approved open source.\nEach release converts to MIT two years after the date that version is made\navailable. Read the license itself for the authoritative terms.\n\n**Using Froam in your own business is free** — your team, your sites, and client\nwork are all Permitted Purposes under FSL, along with modification, education\nand research.\n\nA commercial licence is needed only to ship Froam inside a product you sell (a\nbuilder, CMS, page editor or design tool), or to replace FSL for an organisation\nwhose policy requires an OSI-approved licence. See\n[Commercial licensing](https://cdn.jsdelivr.net/npm/@ahmadastic/froam/docs/COMMERCIAL_LICENSE.md).\n","readmeFilename":"README.md"}