{"_id":"@firsttx/devtools","_rev":"36-e5bb8993fbad1a0d76cac95f3b7d3e7a","name":"@firsttx/devtools","dist-tags":{"latest":"0.1.37"},"versions":{"0.0.0":{"name":"@firsttx/devtools","version":"0.0.0","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.0.0","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"5c95b4053513c9b42c51ff7c70f291fb4e4f5cac","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.0.0.tgz","fileCount":17,"integrity":"sha512-hfsy3YwOykEdbozGaWfaHG862GwPypAXbn1OEhBaXs6FqTkHfVwAm147lB9OSysiFO0Y3feHmPW4E12IuwDtsg==","signatures":[{"sig":"MEYCIQCl3IAAbPvmlDH8IyXhgDwPL6FbccCqwu01CLwaTQE+cQIhAIBSDYVDywXziN5XZjGY35M6QMVYPR/h3Q1U+XAz+Bkk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233719},"type":"module","_from":"file:firsttx-devtools-0.0.0.tgz","scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/d335c87019566b9ddd6a380b46fec80c/firsttx-devtools-0.0.0.tgz","_integrity":"sha512-hfsy3YwOykEdbozGaWfaHG862GwPypAXbn1OEhBaXs6FqTkHfVwAm147lB9OSysiFO0Y3feHmPW4E12IuwDtsg==","_npmVersion":"10.9.3","description":"Browser DevTools extension for debugging FirstTx (Prepaint, Local-First, Tx)","directories":{},"_nodeVersion":"22.20.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.3.0","@firsttx/prepaint":"0.4.0","@firsttx/local-first":"0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.0.0_1761182350015_0.7041124780372898","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@firsttx/devtools","version":"0.1.0","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.0","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"2b5b614b9cb4b1393956f82951ddc9f2bb15d614","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.0.tgz","fileCount":19,"integrity":"sha512-5cMMmOGjnSq1rmDrTJh6YXHrDD/qj9iDh5qq1a94E5vAoD6TWDHI/VdAc4hi4tUwC4Hdo4OGOQZ3uh0itLLsMg==","signatures":[{"sig":"MEUCIQDr5wvH98C61JIKctM+tsTa6dJnanL4P3BWq9+9nF/ozgIgdee0z5Fy6IoG+Y5qKWtWja9eHsEJcaF4chMygsYIdF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":343822},"type":"module","_from":"file:firsttx-devtools-0.1.0.tgz","scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/470766ee729ebf9058378198d5588974/firsttx-devtools-0.1.0.tgz","_integrity":"sha512-5cMMmOGjnSq1rmDrTJh6YXHrDD/qj9iDh5qq1a94E5vAoD6TWDHI/VdAc4hi4tUwC4Hdo4OGOQZ3uh0itLLsMg==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.3.1","@firsttx/prepaint":"0.4.1","@firsttx/local-first":"0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.0_1761379894958_0.238330288757596","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@firsttx/devtools","version":"0.1.1","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.1","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"f52a45fe0dc6c667c75c21265a0facb9de786af4","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.1.tgz","fileCount":19,"integrity":"sha512-8WuECzMJNHMlzFnHJ5b5F+EzvZp8s3vFc7zwOLBNLrOKL/hV49KQPm63jm8hIyLO/tH9N7KH/rQyPctZfZnMEQ==","signatures":[{"sig":"MEUCID1lH1+fqilKgBqkdC5WMPJ41LTajxjyisgqCmostNWLAiEAncGl3St/TdghCJMGYWrSLbYIoVd2xhVbykcHqHInxr8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344647},"type":"module","_from":"file:firsttx-devtools-0.1.1.tgz","engines":{"node":">=22.20.0"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/d9db1a2696a3521fc70fea7563aeeb4e/firsttx-devtools-0.1.1.tgz","_integrity":"sha512-8WuECzMJNHMlzFnHJ5b5F+EzvZp8s3vFc7zwOLBNLrOKL/hV49KQPm63jm8hIyLO/tH9N7KH/rQyPctZfZnMEQ==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.3.1","@firsttx/prepaint":"0.4.1","@firsttx/local-first":"0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.1_1761389257012_0.10926439105522823","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@firsttx/devtools","version":"0.1.2","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.2","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"67096847725a5af4758dc6b81ce2c5cdd0e1da94","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.2.tgz","fileCount":20,"integrity":"sha512-NBTRQ8BRV+oYN65t798dGdXQg+LTqDf1w4hWQTbM32sBJSSQek7Jaa9gJNXFM3e3WdMht3Mr58WHvWiTGXYwrg==","signatures":[{"sig":"MEUCIQCu8TWUfjtrGPOGdL9XPLb/Bj+CaO8Js0LtYE/UkDnBOwIgP+4uZuvkQA+Qu98gWnUAQTTdbLkR7GjcIb0GSBpGY6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491998},"type":"module","_from":"file:firsttx-devtools-0.1.2.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/ce6d7354d87ef42e8e1eff3e9dfd9987/firsttx-devtools-0.1.2.tgz","_integrity":"sha512-NBTRQ8BRV+oYN65t798dGdXQg+LTqDf1w4hWQTbM32sBJSSQek7Jaa9gJNXFM3e3WdMht3Mr58WHvWiTGXYwrg==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.4.0","@firsttx/prepaint":"0.4.2","@firsttx/local-first":"0.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.2_1761891216764_0.4798639553543611","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@firsttx/devtools","version":"0.1.3","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.3","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"29c3c01748f3669737abe44d322d5785887dff28","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.3.tgz","fileCount":20,"integrity":"sha512-JBIUANdYRTs2/YF4P74nRLk4ATJxP80jEi6cKDf1rKC3XPj0HxT51kN5vPDQoPHxt/BbRwd9Nqno03HZ6Ef1/A==","signatures":[{"sig":"MEUCICZvVr5qarqaGRH2cL/i5ODlhcKEqxRejDq3hw+354aVAiEA6h7zkh5fOifemGsWkS6QtoovDU9ICR/veTkdNdfY9CM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491998},"type":"module","_from":"file:firsttx-devtools-0.1.3.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/62f9bcede57a74c8f6e19d767f8d3557/firsttx-devtools-0.1.3.tgz","_integrity":"sha512-JBIUANdYRTs2/YF4P74nRLk4ATJxP80jEi6cKDf1rKC3XPj0HxT51kN5vPDQoPHxt/BbRwd9Nqno03HZ6Ef1/A==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.4.0","@firsttx/prepaint":"0.4.2","@firsttx/local-first":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.3_1762128804114_0.19350184200103793","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@firsttx/devtools","version":"0.1.4","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.4","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"2d9b0e963cf880b27c0f36789736eac8e6d5c9ab","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.4.tgz","fileCount":20,"integrity":"sha512-04zubF6rsJw7SuORVC1FTBPxxrCC0/N00USEYORjrwKzD9J4OM9BnrPzRw14WdDZ7pftzJpTwLgvtRnvmCQIbg==","signatures":[{"sig":"MEUCIQDDqaHDHkgvNrQbF8Nxa7smaDOOIwUToqGmDpSb0eR7aAIgSo9OnU8f4Eh1vE9uPE/pKWZV2ourzJxw6aVWD/iDSKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491998},"type":"module","_from":"file:firsttx-devtools-0.1.4.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/24bdbb4111255e76527df4d6d9ec2d65/firsttx-devtools-0.1.4.tgz","_integrity":"sha512-04zubF6rsJw7SuORVC1FTBPxxrCC0/N00USEYORjrwKzD9J4OM9BnrPzRw14WdDZ7pftzJpTwLgvtRnvmCQIbg==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.4.0","@firsttx/prepaint":"0.4.2","@firsttx/local-first":"0.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.4_1762131010596_0.015057774649347211","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@firsttx/devtools","version":"0.1.5","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.5","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"00d6c1d36da7184a7d5726d6acd590fd3de0492c","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.5.tgz","fileCount":20,"integrity":"sha512-1wzysCIAwkDzSSLMD5KSNWc1b6orqdLnjp+3GFFHZZ/bpAa9fKIdZotdBRXriGdEsxnaTSVkyAiF0Wp/gRzhBw==","signatures":[{"sig":"MEQCIDwUsFs06OtUMAjJO3M0/KSvvN/nBKLJ9o4Qa+EZIoq8AiAjE/UCHoYwOYc64JJKxg6HGt/FsdAIXlyXyq8Ku+d2ag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491998},"type":"module","_from":"file:firsttx-devtools-0.1.5.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/c4ab2257cb88e21851b60d8c65786bfb/firsttx-devtools-0.1.5.tgz","_integrity":"sha512-1wzysCIAwkDzSSLMD5KSNWc1b6orqdLnjp+3GFFHZZ/bpAa9fKIdZotdBRXriGdEsxnaTSVkyAiF0Wp/gRzhBw==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.4.0","@firsttx/prepaint":"0.4.2","@firsttx/local-first":"0.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.5_1762306339913_0.15056627397632782","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@firsttx/devtools","version":"0.1.6","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.6","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"9ea0b2a8188c950dbe86955c96a94c25191735ab","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.6.tgz","fileCount":20,"integrity":"sha512-BvjJHB6M5Bf+d99gj4pc2D+RQLWQX1dzgCNrIkhU2SqMsdu+rsZHeUkVkQ5NQ083oV4mQUkjKWRTnvhlOPvBQA==","signatures":[{"sig":"MEUCIBWbevYPkhhmsrNpyJNS4lly0zHtVD7Ye9hTNp4fdxb0AiEA/orx4StPCSPZtERnxphO2tuu443urRH5QtWDsyYI+Vc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491998},"type":"module","_from":"file:firsttx-devtools-0.1.6.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/b0d6ebf7681f17aaa9f128c4712f1f4a/firsttx-devtools-0.1.6.tgz","_integrity":"sha512-BvjJHB6M5Bf+d99gj4pc2D+RQLWQX1dzgCNrIkhU2SqMsdu+rsZHeUkVkQ5NQ083oV4mQUkjKWRTnvhlOPvBQA==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.4.0","@firsttx/prepaint":"0.4.2","@firsttx/local-first":"0.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.6_1762323670618_0.48373289032915223","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@firsttx/devtools","version":"0.1.7","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.7","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"7fac9baf1eb1a6a1e55693975239aecf04f4fee1","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.7.tgz","fileCount":20,"integrity":"sha512-UXiFSMvKMRSr8S1i3I7vPPuld/mGspVsAgEpCsd4W+gK3PXc+T01wA/POQ/JJhKYB42ti03gXqI7vgpXmQprAQ==","signatures":[{"sig":"MEYCIQDKyKcehPG7yVCBszSUMceJ2s4qSiVDpgWHpXLGc56snQIhAKMsXF4vPINSAzdn/hBbp3548rtoSKFPw0gzwQZX7sam","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491998},"type":"module","_from":"file:firsttx-devtools-0.1.7.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/3135171d16c5fe5a470dab031648e9df/firsttx-devtools-0.1.7.tgz","_integrity":"sha512-UXiFSMvKMRSr8S1i3I7vPPuld/mGspVsAgEpCsd4W+gK3PXc+T01wA/POQ/JJhKYB42ti03gXqI7vgpXmQprAQ==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.4.1","@firsttx/prepaint":"0.4.2","@firsttx/local-first":"0.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.7_1762919677864_0.4125356519578871","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@firsttx/devtools","version":"0.1.8","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.8","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"0aa77ac8722960d7dee72de4710c4c1bec397432","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.8.tgz","fileCount":20,"integrity":"sha512-CsHhr1ln8peAU6XI/9ZJfqnBrRHBK45ytg3c/9svyDsUNVUhql2LS/Txm0z+TXx3XMmuQ5drhkJE7PfMTf8qiw==","signatures":[{"sig":"MEQCIE3D9mX/IVmqrJZWjxqqvXKdfdp/NhlovN9MM/24/WBrAiBwekvAR5QiPfNgsaH668AaT3UBEBWSqbEZszdYPmYD3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491998},"type":"module","_from":"file:firsttx-devtools-0.1.8.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/444adc8e2fa3606cba1228ee02c5635f/firsttx-devtools-0.1.8.tgz","_integrity":"sha512-CsHhr1ln8peAU6XI/9ZJfqnBrRHBK45ytg3c/9svyDsUNVUhql2LS/Txm0z+TXx3XMmuQ5drhkJE7PfMTf8qiw==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.5.0","@firsttx/prepaint":"0.4.2","@firsttx/local-first":"0.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.8_1762920535268_0.7589250424182841","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@firsttx/devtools","version":"0.1.9","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.9","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"fcc97c25effecb108075125aaa5302cbb32468e6","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.9.tgz","fileCount":20,"integrity":"sha512-0Pc875CWEZbR5uoUl3rmp+w7VaINGdyLkrinhAOw+O5NG496tZx7T0TFg0IFyWik5PTIKlVVkJ9JaVMAoJ3nUA==","signatures":[{"sig":"MEQCIF3Tfz0C67nZHqAjIxd/zgyACHCYboEw9RDpY5O4UDazAiBG+TNHcJ6AZ5XSPCz3neJL5TiuniC9i+nxDaoiZoIiIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491998},"type":"module","_from":"file:firsttx-devtools-0.1.9.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/76e5226c1bd1c7af4cc2b10e059a8a7e/firsttx-devtools-0.1.9.tgz","_integrity":"sha512-0Pc875CWEZbR5uoUl3rmp+w7VaINGdyLkrinhAOw+O5NG496tZx7T0TFg0IFyWik5PTIKlVVkJ9JaVMAoJ3nUA==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.5.1","@firsttx/prepaint":"0.4.2","@firsttx/local-first":"0.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.9_1762921426437_0.25791832964260464","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@firsttx/devtools","version":"0.1.10","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.10","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"a55f24014649d69fd00b2748b2e7cf82021148c3","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.10.tgz","fileCount":20,"integrity":"sha512-lVl33BnnrBzY9dKozx4MRrFTeDWJahfZxL4qBNoZMqqR92jExX6Gujn2uX8vBLUVQ2nAkYgX60x3ga2g0kQtNg==","signatures":[{"sig":"MEYCIQCYIfLgGzljljUY8jmhwjdMFYkkMgdqhP01dPTBahbr4AIhAJQizU7WwXCNyzncUCir7it3QSluwfpHU/NVrxyW3Yrn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491999},"type":"module","_from":"file:firsttx-devtools-0.1.10.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/84ee5b456f048761ee9966e27ffa8087/firsttx-devtools-0.1.10.tgz","_integrity":"sha512-lVl33BnnrBzY9dKozx4MRrFTeDWJahfZxL4qBNoZMqqR92jExX6Gujn2uX8vBLUVQ2nAkYgX60x3ga2g0kQtNg==","_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.5.1","@firsttx/prepaint":"0.4.2","@firsttx/local-first":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.10_1763008338162_0.26495108837132464","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@firsttx/devtools","version":"0.1.11","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.11","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"8b24fc12a8bf9431d4cce84965b7791e4ed9c38e","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.11.tgz","fileCount":20,"integrity":"sha512-R0MN+k+jz1PJsB+NrYr8Jhk2S1GXBTb2o+nsvnEseeOgldaBC901xR8XFKhn3ldasgyv4xh4OT+qtWRlcUq2yQ==","signatures":[{"sig":"MEUCIQDR5n6G0Rtuu8mz05tb3dpFaOFtpkanrvnEMgm9tLPAzAIgLpiMsfQSLJkixf9XCjKlVkNztrzqqfChzNu6phr5ItM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492138},"type":"module","_from":"file:firsttx-devtools-0.1.11.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/7722101f826b9d6b7422ae5f40aa781c/firsttx-devtools-0.1.11.tgz","_integrity":"sha512-R0MN+k+jz1PJsB+NrYr8Jhk2S1GXBTb2o+nsvnEseeOgldaBC901xR8XFKhn3ldasgyv4xh4OT+qtWRlcUq2yQ==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.6.2","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.5.1","@firsttx/prepaint":"0.5.0","@firsttx/local-first":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.11_1763430026045_0.5955596548758271","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@firsttx/devtools","version":"0.1.13","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.13","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"5f4e7c63cf7f8e7c138995dcf5bff2002ab98954","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.13.tgz","fileCount":20,"integrity":"sha512-Ms4LPUyMn0NiNf6bgxfDmkm2uiWS/Rj2pxy91wNj4q1+W/DrRjwBf69ysz7hy0Q/TVKcPnztVXlS++5wxkIkVw==","signatures":[{"sig":"MEUCIQDFPAzgf/G7C9gh5CcF+nh0lHXfkWvj7zSQTueJfGsg8gIgWHYZAKA4qmHJr83VauEZJ6TRStdonY4shCV7hUor7hs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":490937},"type":"module","_from":"file:firsttx-devtools-0.1.13.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/2c210f1530d5c34f89e12e2daeb5cf5a/firsttx-devtools-0.1.13.tgz","_integrity":"sha512-Ms4LPUyMn0NiNf6bgxfDmkm2uiWS/Rj2pxy91wNj4q1+W/DrRjwBf69ysz7hy0Q/TVKcPnztVXlS++5wxkIkVw==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.6.3","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.5.2","@firsttx/prepaint":"0.6.0","@firsttx/local-first":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.13_1763603917861_0.02052848868638457","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@firsttx/devtools","version":"0.1.14","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.14","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"4efd42f0610e081d6a3c47fcdf44fb3b44287cb1","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.14.tgz","fileCount":20,"integrity":"sha512-mdIrypgI1U7MgBP/s+KwmlTpAJABgaQK2gHvpeZPnmJtL4ZtBXQD8vUv2zpeZk2KJ2ow79PXoE1d/tN9UAr0bA==","signatures":[{"sig":"MEUCIQDnDyjN4BUEe/8Cj/Y4DkWDnj5UmZ5yH1LlOJmiMddorQIgWsAjcnqhMPKEFwoQcKuKFpJLJnMZafkCjkFuM8HbO/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":490937},"type":"module","_from":"file:firsttx-devtools-0.1.14.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/32e38a87118867cbe02cca3c924fac0e/firsttx-devtools-0.1.14.tgz","_integrity":"sha512-mdIrypgI1U7MgBP/s+KwmlTpAJABgaQK2gHvpeZPnmJtL4ZtBXQD8vUv2zpeZk2KJ2ow79PXoE1d/tN9UAr0bA==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.6.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.5.2","@firsttx/prepaint":"0.6.0","@firsttx/local-first":"0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.14_1764240586297_0.8306860165576828","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@firsttx/devtools","version":"0.1.15","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.15","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"dacea58bf10fe7134a5e8f5f8e38ff2eed5f7fef","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.15.tgz","fileCount":20,"integrity":"sha512-2dKGMMOcR0fRrISZ3YB7Y8UjSVgWOcgAzEjfS18y0y3hN4aa4MC+sEaJKmmabt4YwcB5ZOdUK1/TnXxkflwObw==","signatures":[{"sig":"MEYCIQCj5eMqpJXTOZ7eGFI4tvDdQK1mgGrX6eCCHuIhOE0WeAIhAKMt33syYfJaO0EXFWxp/X+Wxs+vRx1VwPq1MDX5qYx6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":490937},"type":"module","_from":"file:firsttx-devtools-0.1.15.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/f39440c0b0cd9a610562fdfd73231a55/firsttx-devtools-0.1.15.tgz","_integrity":"sha512-2dKGMMOcR0fRrISZ3YB7Y8UjSVgWOcgAzEjfS18y0y3hN4aa4MC+sEaJKmmabt4YwcB5ZOdUK1/TnXxkflwObw==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.6.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@firsttx/tx":"0.5.2","@firsttx/prepaint":"0.6.0","@firsttx/local-first":"0.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.2","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.15_1764671898360_0.7017406423767734","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@firsttx/devtools","version":"0.1.16","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.16","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"f8752e278da369cb0f00ef3d0dcbdf14d81dc2e8","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.16.tgz","fileCount":20,"integrity":"sha512-PB1hpx7e7F76KP7SyJBzoWU1AolcdMc4+khkdULJc+cJF++cE7riCCAR4Ufk0Y0AkrZJmoHUShGduly4h4J+Ag==","signatures":[{"sig":"MEYCIQDYlcYj8Rj5Hdr48Kpzl+UdcEokdxOslhCbzsVK/tkC7AIhAKQYn+QVHY4GyBI4O+Cf/dJKBc+bvXYyBVetAiwGYvzO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":490937},"type":"module","_from":"file:firsttx-devtools-0.1.16.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/1f383b0b6c32979de2dd3b086c6869ab/firsttx-devtools-0.1.16.tgz","_integrity":"sha512-PB1hpx7e7F76KP7SyJBzoWU1AolcdMc4+khkdULJc+cJF++cE7riCCAR4Ufk0Y0AkrZJmoHUShGduly4h4J+Ag==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.6.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.5.3","@firsttx/prepaint":"0.6.1","@firsttx/local-first":"0.8.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.16_1764839048993_0.6015677219122912","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@firsttx/devtools","version":"0.1.17","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.17","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"e46e0ba93ddf37df99742b1caaf6bd03374e4971","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.17.tgz","fileCount":20,"integrity":"sha512-kR7ojRcJvRzGP7QBb5BloTSya+cD/16r5+f5yh9H41rzjLBt49iPjVjq3Vq/UTQ6yoZqbln3Yk+rwWgli1LSCQ==","signatures":[{"sig":"MEUCIQCNHa5+HnVzJMPBTzIFkkYDfd7Bp/8c61Dcz8JhtuQ8qQIgBwqHP182TqPQLKZWtKuUBt8kzLToziReoyBLbbce6tM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":490937},"type":"module","_from":"file:firsttx-devtools-0.1.17.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/46b3bda878fc83b3600724c66ae7116b/firsttx-devtools-0.1.17.tgz","_integrity":"sha512-kR7ojRcJvRzGP7QBb5BloTSya+cD/16r5+f5yh9H41rzjLBt49iPjVjq3Vq/UTQ6yoZqbln3Yk+rwWgli1LSCQ==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.6.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.5.3","@firsttx/prepaint":"0.6.1","@firsttx/local-first":"0.8.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.17_1765270168024_0.2482192277733044","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@firsttx/devtools","version":"0.1.18","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.18","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"01b63af48ef5e48325fd368572b7a66220624837","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.18.tgz","fileCount":20,"integrity":"sha512-3XlG1kDkZNlXZ/wnXfGmjSjZSU9lZZyzMGm2ivjnIimqxBN5zLinHhoqYUiNCUq1v3zFiz7rn0y+o33zSB6NaA==","signatures":[{"sig":"MEUCIQDPyURVEPlHzZNy5L4riEPcCR+eye4Ub4JLnnCgHHFNiwIgC+Ygv7BOfDLG6F84Z0ePUFPZJcg9WKg6ekEC9nXlBfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492184},"type":"module","_from":"file:firsttx-devtools-0.1.18.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/5696425aae3428d158d3660318031a4d/firsttx-devtools-0.1.18.tgz","_integrity":"sha512-3XlG1kDkZNlXZ/wnXfGmjSjZSU9lZZyzMGm2ivjnIimqxBN5zLinHhoqYUiNCUq1v3zFiz7rn0y+o33zSB6NaA==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.7.0","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.5.4","@firsttx/shared":"0.2.0","@firsttx/prepaint":"0.7.0","@firsttx/local-first":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.18_1765419486882_0.581154273306504","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@firsttx/devtools","version":"0.1.19","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.19","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"8166da021b0a2a0e09294ce08a87074ed5d1e43a","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.19.tgz","fileCount":20,"integrity":"sha512-d3TEs28yTzL+hLmMQsKb3pBDDqV0TP8We6cY09nOxwrItwteDnRxz7N/RfTq221rUZpG5XP4KgFOapIBD/lEFQ==","signatures":[{"sig":"MEQCIAFGlr+FWouLstNcPypXPJutUX+1BCg136qO+z5pqYsBAiBohSG03Lz5IRwFsZKkn7wjwPK0gqP3dx6HZuJYBnEsmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492184},"type":"module","_from":"file:firsttx-devtools-0.1.19.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/175194420a9929eb15fd509a05c6be7a/firsttx-devtools-0.1.19.tgz","_integrity":"sha512-d3TEs28yTzL+hLmMQsKb3pBDDqV0TP8We6cY09nOxwrItwteDnRxz7N/RfTq221rUZpG5XP4KgFOapIBD/lEFQ==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.7.0","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.5.5","@firsttx/shared":"0.2.0","@firsttx/prepaint":"0.7.1","@firsttx/local-first":"0.9.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.19_1765536135366_0.1282659505531092","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@firsttx/devtools","version":"0.1.20","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.20","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"adf896a1b0528d978fc60e9b1417bde12ab9dfe5","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.20.tgz","fileCount":20,"integrity":"sha512-EvwNfVZerQCHr3zyC42rjtkDagE5OIldf+3IkkPyYFSuERBsFn9o+CtMnMkQYj6qH0++jB+cmzmcjY/IpkuMWQ==","signatures":[{"sig":"MEUCIBvLYGocYdUOUX+E5v2EmdY+a3xCIXXLjgNfOZj0EFKhAiEA6G5pXFypfH4eNu+rfzklJrW2o5NhkAixW8J9tQw7GxM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492184},"type":"module","_from":"file:firsttx-devtools-0.1.20.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/25b1ebb9af0502b6499bf7e8cf93d10b/firsttx-devtools-0.1.20.tgz","_integrity":"sha512-EvwNfVZerQCHr3zyC42rjtkDagE5OIldf+3IkkPyYFSuERBsFn9o+CtMnMkQYj6qH0++jB+cmzmcjY/IpkuMWQ==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.7.0","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.5.6","@firsttx/shared":"0.2.1","@firsttx/prepaint":"0.7.2","@firsttx/local-first":"0.9.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.20_1765536239029_0.9986306068025537","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@firsttx/devtools","version":"0.1.21","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.21","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"52ba62f3005c6830b4969975b4e1db190ade543b","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.21.tgz","fileCount":20,"integrity":"sha512-kkO7xEaIUjHAfgSvvDWZXWZehj3gveAsfvjTU6Lb+U96o+C100NXNfZ/eixd3uVYstn6hgp0PcUXlht7Al7RAw==","signatures":[{"sig":"MEUCIAdl1zkCgDwNyjshnpw46BmAc+NuYtn/h6d5xonytj+iAiEApnnBqd7khkrs2+G5NkSQ8uNF+drF4RhTpixhiCfIT9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492184},"type":"module","_from":"file:firsttx-devtools-0.1.21.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/03d28f3b32fde6d70b1bcc612d4c1ae9/firsttx-devtools-0.1.21.tgz","_integrity":"sha512-kkO7xEaIUjHAfgSvvDWZXWZehj3gveAsfvjTU6Lb+U96o+C100NXNfZ/eixd3uVYstn6hgp0PcUXlht7Al7RAw==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.7.0","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.5.7","@firsttx/shared":"0.2.2","@firsttx/prepaint":"0.7.3","@firsttx/local-first":"0.9.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.21_1765536618190_0.8526675487311102","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@firsttx/devtools","version":"0.1.22","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.22","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"a94d8831c96e96b98de57904567ed08b2555b98c","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.22.tgz","fileCount":20,"integrity":"sha512-kDlEDpiJ2zYFbGvan+rYcjVS//JbynCShG3LGBzb3OSYJ6c+Ule5s1kzdU5Vs0miL3/tvt5h8diyHgzzFZQzxA==","signatures":[{"sig":"MEQCICHcSOJkdGWA+g38gtoDlfunWXDCDYTdtN7MsBvbEhudAiBewDnZRUEagIiO5xVmL/jRGMm3gYPfGivjjL77JJ6Q0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492184},"type":"module","_from":"file:firsttx-devtools-0.1.22.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/8e4833667f182af564db5f83a143b204/firsttx-devtools-0.1.22.tgz","_integrity":"sha512-kDlEDpiJ2zYFbGvan+rYcjVS//JbynCShG3LGBzb3OSYJ6c+Ule5s1kzdU5Vs0miL3/tvt5h8diyHgzzFZQzxA==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.7.0","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.5.8","@firsttx/shared":"0.2.3","@firsttx/prepaint":"0.7.4","@firsttx/local-first":"0.9.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.22_1765536920118_0.7112044862048246","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@firsttx/devtools","version":"0.1.23","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.23","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"33c858ec80d618948fb599445ccfa099fda69910","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.23.tgz","fileCount":20,"integrity":"sha512-sh6uVDvjzhseohiJUfnpMbNP0E82gfQmQ8K3SOD+AIbfFcmyOHxbC2AoeRYzVhCmirV1W76fzk8qnZ+TQoQBxA==","signatures":[{"sig":"MEUCIQDjwrm2qxSRKIaTAlV0sLZR7iR8CTxcvIWFO6mbSN8sfgIgGMZqUNG+p7S6jEzdjpa8TDjaKMA/GfndoKTmI/xQzWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492185},"type":"module","_from":"file:firsttx-devtools-0.1.23.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/fa6e26ba01e48ac8db84bb1fbc81e425/firsttx-devtools-0.1.23.tgz","_integrity":"sha512-sh6uVDvjzhseohiJUfnpMbNP0E82gfQmQ8K3SOD+AIbfFcmyOHxbC2AoeRYzVhCmirV1W76fzk8qnZ+TQoQBxA==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.7.0","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.6.0","@firsttx/shared":"0.2.3","@firsttx/prepaint":"0.8.0","@firsttx/local-first":"0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.23_1765537212554_0.45690216052901733","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@firsttx/devtools","version":"0.1.24","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.24","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"b67fac483a90435e24f0efb43220faddc9ae5e15","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.24.tgz","fileCount":20,"integrity":"sha512-2Bml+kUotvrMkq3wkCCPqtDGQ1Se0Nh0kvoVHYLUblAGqP5dq8+CsPMxpdgJNCL57Y64W3Au6UkfcBQdrQ7WDw==","signatures":[{"sig":"MEYCIQDrfvR5CKSdkg7MfjHepyeyjzoERadVbEIu4rL+DwYypwIhANNJcYackdk6Xaf/ko+evm+rtWEupINiAl/NWHdbDdef","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492185},"type":"module","_from":"file:firsttx-devtools-0.1.24.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57c4cae2-562d-43b6-8fb5-164355f732f9"}},"_resolved":"/tmp/be824a5d6be760b40d64642302e86e28/firsttx-devtools-0.1.24.tgz","_integrity":"sha512-2Bml+kUotvrMkq3wkCCPqtDGQ1Se0Nh0kvoVHYLUblAGqP5dq8+CsPMxpdgJNCL57Y64W3Au6UkfcBQdrQ7WDw==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.7.0","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.6.0","@firsttx/shared":"0.2.3","@firsttx/prepaint":"0.8.1","@firsttx/local-first":"0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.24_1765539451341_0.9706290280957002","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@firsttx/devtools","version":"0.1.25","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.25","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"c7f14a8ece335b1cdb5920ec9fd2ccbb8c77c145","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.25.tgz","fileCount":20,"integrity":"sha512-cBmwqOZWZLxk7U7A6WvFCyiyxeYrXYEwDrlxDeLtE6lAKQN44h7ogia6jH3mk50NpsHLOMaNSS/y5n473ojMdw==","signatures":[{"sig":"MEYCIQCcxH1XBuIwJNGxlZL2BLAtdFDrQYAFtdkSxa+mPSPohgIhAPk+0rvEi1DHqrDGAexelmHWvc8FI3Ixta7pqofaZf6U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":492185},"type":"module","_from":"file:firsttx-devtools-0.1.25.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"joseph0926","email":"rkekqmf0926@gmail.com"},"_resolved":"/tmp/c7f83ab8c1aa57523d4c841ad4a117c7/firsttx-devtools-0.1.25.tgz","_integrity":"sha512-cBmwqOZWZLxk7U7A6WvFCyiyxeYrXYEwDrlxDeLtE6lAKQN44h7ogia6jH3mk50NpsHLOMaNSS/y5n473ojMdw==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"10.9.4","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"react":"^19.2.1","react-dom":"^19.2.1","@firsttx/tx":"0.7.0","@firsttx/shared":"0.3.0","@firsttx/prepaint":"0.9.0","@firsttx/local-first":"0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.25_1765965620526_0.25536737211180016","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"@firsttx/devtools","version":"0.1.28","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.28","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"53def1845dd4bdc8fdbe22d1ecb6ff1a1dc33740","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.28.tgz","fileCount":20,"integrity":"sha512-0y4YuREzWzwxdewwH7ZNYgDWbJyu6mA6IRTVAMJx074BakpiYLZFGq+MjpYlcLLlQpKpmB+4f03BMkpZx1yTzw==","signatures":[{"sig":"MEYCIQDn1/+jGo6w7Aea42sGnjYEay3pP1wXmC1mvHD/rPR0fgIhALKBYvEr1BlFccfP+qBABMdBd/u3IQ+4h18+KOdpO5nu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492707},"type":"module","_from":"file:firsttx-devtools-0.1.28.tgz","engines":{"node":">=22"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","test":"vitest","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","test:run":"vitest run","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","test:coverage":"vitest run --coverage","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"_resolved":"/tmp/b8470cccce8f38c9241604ff936092c6/firsttx-devtools-0.1.28.tgz","_integrity":"sha512-0y4YuREzWzwxdewwH7ZNYgDWbJyu6mA6IRTVAMJx074BakpiYLZFGq+MjpYlcLLlQpKpmB+4f03BMkpZx1yTzw==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.6.2","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@firsttx/tx":"0.8.1","@firsttx/shared":"0.3.1","@firsttx/prepaint":"0.9.2","@firsttx/local-first":"0.11.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^4.0.16","happy-dom":"^19.0.2","react-dom":"^19.2.1","@types/react":"^19.2.7","concurrently":"^9.2.1","@types/chrome":"^0.1.24","fake-indexeddb":"^6.0.0","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.0.16","@vitejs/plugin-react":"^5.0.4"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.28_1769899755888_0.5636892303966465","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"@firsttx/devtools","version":"0.1.29","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.29","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"c0aca41614088d9465e0623c8da7d7b77e9a3af3","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.29.tgz","fileCount":20,"integrity":"sha512-sjIO/cbV82LF7Uc0uZ4ETx8YpOkkxm7McnCbAU4LceOe/oRm7pRWp863lfGrG1YAqNNJy/I4lUJjkCHOo3+jEg==","signatures":[{"sig":"MEQCIDOKHVuH677BugDmCKI/33V3Xpqn14dIca2wQfZOE7iSAiBVrZHLPbCvAvS2NigMVC9q+DdTVya2JvHKp2OhW+jG+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.29","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492571},"type":"module","_from":"file:firsttx-devtools-0.1.29.tgz","engines":{"node":">=24"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","test":"vitest","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","test:run":"vitest run","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","test:coverage":"vitest run --coverage","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"_resolved":"/tmp/82ed9876085bb3b86df8677ce0138079/firsttx-devtools-0.1.29.tgz","_integrity":"sha512-sjIO/cbV82LF7Uc0uZ4ETx8YpOkkxm7McnCbAU4LceOe/oRm7pRWp863lfGrG1YAqNNJy/I4lUJjkCHOo3+jEg==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.6.2","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@firsttx/tx":"0.8.1","@firsttx/shared":"0.3.1","@firsttx/prepaint":"0.9.3","@firsttx/local-first":"0.11.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.4","vitest":"^4.0.18","happy-dom":"^19.0.2","react-dom":"^19.2.4","@types/react":"^19.2.10","concurrently":"^9.2.1","@types/chrome":"^0.1.24","fake-indexeddb":"^6.0.0","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.4"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.29_1770419088297_0.5159566349455125","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"@firsttx/devtools","version":"0.1.30","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":{"name":"joseph0926"},"license":"MIT","_id":"@firsttx/devtools@0.1.30","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"homepage":"https://github.com/joseph0926/firsttx#readme","bugs":{"url":"https://github.com/joseph0926/firsttx/issues"},"dist":{"shasum":"3209c6a4051edc37e32d8c6af745dc3becf6fe39","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.30.tgz","fileCount":20,"integrity":"sha512-ZIQJcNKRk7xjTH1kEBVhTHl9WFXCRvjTuCcsrIIf0zpSuBCv/BIDuMbNcGkyBm5HaNDWpbSoN2aLHppfvTNd/A==","signatures":[{"sig":"MEQCIDXb0owCj0i/BfubAmT/L8ZTmFwP0gSCXmnwUXim5HfTAiADMWFySV8bAmzoD89VdM3WGEIH49Svs6vTrvxGT3mUYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.30","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492572},"type":"module","_from":"file:firsttx-devtools-0.1.30.tgz","engines":{"node":">=24"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","test":"vitest","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","test:run":"vitest run","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","test:coverage":"vitest run --coverage","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"_resolved":"/tmp/baf6dfd1ea0d354a9ef6b659108b6ae2/firsttx-devtools-0.1.30.tgz","_integrity":"sha512-ZIQJcNKRk7xjTH1kEBVhTHl9WFXCRvjTuCcsrIIf0zpSuBCv/BIDuMbNcGkyBm5HaNDWpbSoN2aLHppfvTNd/A==","repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"_npmVersion":"11.6.2","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@firsttx/tx":"0.8.1","@firsttx/shared":"0.3.1","@firsttx/prepaint":"0.10.0","@firsttx/local-first":"0.11.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.4","vitest":"^4.0.18","happy-dom":"^19.0.2","react-dom":"^19.2.4","@types/react":"^19.2.10","concurrently":"^9.2.1","@types/chrome":"^0.1.24","fake-indexeddb":"^6.0.0","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.4"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.30_1771723408633_0.29052382304183455","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"@firsttx/devtools","version":"0.1.31","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":"joseph0926","license":"MIT","_id":"@firsttx/devtools@0.1.31","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"1e898e9f5fef44a0449e59248f2eeb77ba869b88","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.31.tgz","fileCount":20,"integrity":"sha512-RztO3VFtFg4vsJljjvi69ZmE+wd1Wsw+8YYSBirlaOM8gzKR+lsa0GDKwb3TRzxraxenfthHo7P774cszcmxFA==","signatures":[{"sig":"MEQCICvylamqVbypOsdhLaYzulBxJl00D7fS+ovNBDisFmdKAiA1QECuAtIdQmGv9TjAj9Srg9ca0YN5nqYMFraBKUEa/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.31","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492680},"type":"module","engines":{"node":">=24"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","test":"vitest","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","lint:fix":"eslint . --fix","test:run":"vitest run","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","test:coverage":"vitest run --coverage","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@firsttx/tx":"0.8.1","@firsttx/shared":"0.3.1","@firsttx/prepaint":"0.11.0","@firsttx/local-first":"0.11.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","@types/react":"^19.2.10","concurrently":"^9.2.1","@types/chrome":"^0.1.24","fake-indexeddb":"^6.0.0","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.4"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.31_1784008529793_0.8431118084116649","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"@firsttx/devtools","version":"0.1.32","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":"joseph0926","license":"MIT","_id":"@firsttx/devtools@0.1.32","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"42c93a366482c431b95575a30603f1993e9c91af","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.32.tgz","fileCount":20,"integrity":"sha512-NCMtIcI3Xs+ss2HVxD3t9ZQeVhqcev9us0uLKdP9P5I8sDWLKBGJpZ46OzS9kZsxg4ILiSkOtGmAG6acqxAbBg==","signatures":[{"sig":"MEUCIQCyxjD+05fK4vzTcra4YPaHBIGLfbJhhTYyQh5wm6lSaQIgVbzmk/WCnvCzqiC1obAd+7h9FyWRXL79nEwkSkHCSgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.32","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492680},"type":"module","engines":{"node":">=24"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","test":"vitest","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","lint:fix":"eslint . --fix","test:run":"vitest run","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","test:coverage":"vitest run --coverage","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@firsttx/tx":"0.8.1","@firsttx/shared":"0.3.1","@firsttx/prepaint":"0.12.0","@firsttx/local-first":"0.11.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","@types/react":"^19.2.10","concurrently":"^9.2.1","@types/chrome":"^0.1.24","fake-indexeddb":"^6.0.0","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.4"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.32_1784240087706_0.5035620009999127","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"@firsttx/devtools","version":"0.1.33","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":"joseph0926","license":"MIT","_id":"@firsttx/devtools@0.1.33","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"aa2f62ad94946daa8f9adb37201c1d029255ac7b","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.33.tgz","fileCount":20,"integrity":"sha512-NcyGXrsAVDmA8iPPiSFEV0/Su8w8yZF4NXDtaF43UOuHiPUh/PmQbLpDlkl/pXuBbFfiMnY1aGWP+ygwuGpdkA==","signatures":[{"sig":"MEUCIQCJTcN9i7qXU6dRxcH+NQ+h94BzuYWQ89JE/21+klg96QIgVoilTZIl6LDeaiJFGCvVLKbILSzULYebpVtEAyNTwsc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.33","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492680},"type":"module","engines":{"node":">=24"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","test":"vitest","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","lint:fix":"eslint . --fix","test:run":"vitest run","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","test:coverage":"vitest run --coverage","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@firsttx/tx":"0.8.2","@firsttx/shared":"0.3.2","@firsttx/prepaint":"0.12.1","@firsttx/local-first":"0.11.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","@types/react":"^19.2.10","concurrently":"^9.2.1","@types/chrome":"^0.1.24","fake-indexeddb":"^6.0.0","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.4"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.33_1784331113408_0.46633241356399724","host":"s3://npm-registry-packages-npm-production"}},"0.1.34":{"name":"@firsttx/devtools","version":"0.1.34","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":"joseph0926","license":"MIT","_id":"@firsttx/devtools@0.1.34","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"cde0f8af8acbc8cabcac64aeb926301012915d25","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.34.tgz","fileCount":20,"integrity":"sha512-9k6JIzB1P1U/BUX2L110clQBXd2meNdHlVphvHyvOM5CVRRCLmVCaT33y1d1GKCosiqAN7gJVDRtP3AT8XSNFg==","signatures":[{"sig":"MEYCIQC9CfKomE974AzwM38eiJEQ0Af8zEqduLvbvQGCfIOW+AIhANH7IMLv5FUjuUV+Khc9o1+ch812waTg2LbZF9lHngZ6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.34","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492680},"type":"module","engines":{"node":">=24"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","test":"vitest","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","lint:fix":"eslint . --fix","test:run":"vitest run","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","test:coverage":"vitest run --coverage","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@firsttx/tx":"0.8.2","@firsttx/shared":"0.3.2","@firsttx/prepaint":"0.13.0","@firsttx/local-first":"0.11.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","@types/react":"^19.2.10","concurrently":"^9.2.1","@types/chrome":"^0.1.24","fake-indexeddb":"^6.0.0","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.4"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.34_1785276368077_0.8012443178332103","host":"s3://npm-registry-packages-npm-production"}},"0.1.35":{"name":"@firsttx/devtools","version":"0.1.35","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":"joseph0926","license":"MIT","_id":"@firsttx/devtools@0.1.35","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"f903a6e4b88cd67165eb8eda8183e08b961ab9e7","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.35.tgz","fileCount":20,"integrity":"sha512-PYS7HI2Y7K7/3kd1wCo5br+8iLDpshkvjV3TQ8i0hGyxI+4/6jc27t/S6BV8DdK0Rmfbm7k2SYIBDIw3EAq0XA==","signatures":[{"sig":"MEQCIEPRhGI5bYfNd9AamGj6lPdBf+366Wg9e9bMt7KOs+fBAiBItA3nBKXmdPa3Mk9qyE6/K9ZLPnOmqtwustqHvaD6DA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.35","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492680},"type":"module","engines":{"node":">=24"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","test":"vitest","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","lint:fix":"eslint . --fix","test:run":"vitest run","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","test:coverage":"vitest run --coverage","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@firsttx/tx":"0.8.2","@firsttx/shared":"0.3.2","@firsttx/prepaint":"0.13.1","@firsttx/local-first":"0.11.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","@types/react":"^19.2.10","concurrently":"^9.2.1","@types/chrome":"^0.1.24","fake-indexeddb":"^6.0.0","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.4"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.35_1785277575064_0.1976160662797226","host":"s3://npm-registry-packages-npm-production"}},"0.1.36":{"name":"@firsttx/devtools","version":"0.1.36","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"author":"joseph0926","license":"MIT","_id":"@firsttx/devtools@0.1.36","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"dist":{"shasum":"d6f91328cd3b021b624c00d37eb307300dd24ccd","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.36.tgz","fileCount":20,"integrity":"sha512-TRwW7MzF3hdWbBVrE8jFXJaePmahZS22HqxSkPPRDUkACAY7xh/hFQklNB7iQcP+BcRJ5PVZ9dFFkcrWKN3RMw==","signatures":[{"sig":"MEQCIGa1cSm0fJHk3xNRM+4a3MPcfv7X4ZIIKVHOSqsMLk7JAiAAuMdsYN4ogOSYawEKz3wVmcflLSmwDO66xaUQEt5+/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.36","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492680},"type":"module","engines":{"node":">=24"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","lint":"eslint .","test":"vitest","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","clean":"rimraf dist","lint:fix":"eslint . --fix","test:run":"vitest run","dev:panel":"vite","typecheck":"tsc -b","build:panel":"vite build","build:package":"node scripts/package-extension.js","dev:extension":"tsup --watch","test:coverage":"vitest run --coverage","build:extension":"tsup","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"repository":{"url":"git+https://github.com/joseph0926/firsttx.git","type":"git","directory":"packages/devtools"},"description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@firsttx/tx":"0.8.2","@firsttx/shared":"0.3.2","@firsttx/prepaint":"0.13.1","@firsttx/local-first":"0.11.5"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","@types/react":"^19.2.10","concurrently":"^9.2.1","@types/chrome":"^0.1.24","fake-indexeddb":"^6.0.0","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.0.18","@vitejs/plugin-react":"^5.0.4"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.36_1786185079938_0.25447193566237525","host":"s3://npm-registry-packages-npm-production"}},"0.1.37":{"name":"@firsttx/devtools","version":"0.1.37","description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","license":"MIT","author":"joseph0926","type":"module","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"dependencies":{"@firsttx/shared":"0.3.2","@firsttx/tx":"0.8.2","@firsttx/local-first":"0.12.0","@firsttx/prepaint":"0.13.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"devDependencies":{"@types/chrome":"^0.1.24","@types/react":"^19.2.10","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.0.4","@vitest/coverage-v8":"^4.0.18","concurrently":"^9.2.1","fake-indexeddb":"^6.0.0","react":"^19.2.4","react-dom":"^19.2.4","tsup":"^8.5.1","vitest":"^4.0.18"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"engines":{"node":">=24"},"repository":{"type":"git","url":"git+https://github.com/joseph0926/firsttx.git","directory":"packages/devtools"},"scripts":{"dev":"concurrently \"pnpm:dev:panel\" \"pnpm:dev:extension\"","dev:panel":"vite","dev:extension":"tsup --watch","build":"pnpm run clean && pnpm run build:panel && pnpm run build:extension && pnpm run build:package","build:panel":"vite build","build:extension":"tsup","build:package":"node scripts/package-extension.js","clean":"rimraf dist","lint":"eslint .","lint:fix":"eslint . --fix","test":"vitest","test:run":"vitest run","test:coverage":"vitest run --coverage","typecheck":"tsc -b","typecheck:extension":"tsc -p tsconfig.extension.json --noEmit","typecheck:panel":"tsc -p tsconfig.panel.json --noEmit","typecheck:bridge":"tsc -p tsconfig.bridge.json --noEmit"},"_nodeVersion":"24.18.0","_id":"@firsttx/devtools@0.1.37","dist":{"integrity":"sha512-WXO67pRSvre4c+H/PQyZ/Fcf97pdptp7nhTSSvFRqDHM1ybMScQjV2bKy6T8qBJNwLhrWKv1XvBkuQVBWHggLg==","shasum":"4111a1e26952b1fabcc35eb92210ee4cbc71cb1d","tarball":"https://registry.npmjs.org/@firsttx/devtools/-/devtools-0.1.37.tgz","fileCount":20,"unpackedSize":495889,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@firsttx%2fdevtools@0.1.37","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFZMmBHHVQieqjQvCzPcd03rcVhDlDNE0i8DbyGgvAYhAiEAxiC/lYTZ8KRlR3dEdXugGrY7Qupec9isXI+8/PE7YEk="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:736a6a08-bafd-40c4-9280-3c0ab93d066a"}},"directories":{},"maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/devtools_0.1.37_1786227551584_0.2975965715072615"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-23T01:19:09.954Z","modified":"2026-08-08T22:19:12.092Z","0.0.0":"2025-10-23T01:19:10.261Z","0.1.0":"2025-10-25T08:11:35.201Z","0.1.1":"2025-10-25T10:47:37.214Z","0.1.2":"2025-10-31T06:13:36.994Z","0.1.3":"2025-11-03T00:13:24.321Z","0.1.4":"2025-11-03T00:50:10.826Z","0.1.5":"2025-11-05T01:32:20.290Z","0.1.6":"2025-11-05T06:21:10.825Z","0.1.7":"2025-11-12T03:54:38.036Z","0.1.8":"2025-11-12T04:08:55.523Z","0.1.9":"2025-11-12T04:23:46.681Z","0.1.10":"2025-11-13T04:32:18.411Z","0.1.11":"2025-11-18T01:40:26.328Z","0.1.13":"2025-11-20T01:58:38.103Z","0.1.14":"2025-11-27T10:49:46.583Z","0.1.15":"2025-12-02T10:38:18.586Z","0.1.16":"2025-12-04T09:04:09.180Z","0.1.17":"2025-12-09T08:49:28.187Z","0.1.18":"2025-12-11T02:18:07.128Z","0.1.19":"2025-12-12T10:42:15.544Z","0.1.20":"2025-12-12T10:43:59.203Z","0.1.21":"2025-12-12T10:50:18.621Z","0.1.22":"2025-12-12T10:55:20.295Z","0.1.23":"2025-12-12T11:00:12.751Z","0.1.24":"2025-12-12T11:37:31.520Z","0.1.25":"2025-12-17T10:00:20.691Z","0.1.28":"2026-01-31T22:49:16.102Z","0.1.29":"2026-02-06T23:04:48.492Z","0.1.30":"2026-02-22T01:23:28.831Z","0.1.31":"2026-07-14T05:55:29.960Z","0.1.32":"2026-07-16T22:14:47.905Z","0.1.33":"2026-07-17T23:31:53.585Z","0.1.34":"2026-07-28T22:06:08.259Z","0.1.35":"2026-07-28T22:26:15.234Z","0.1.36":"2026-08-08T10:31:20.125Z","0.1.37":"2026-08-08T22:19:11.746Z"},"author":"joseph0926","license":"MIT","keywords":["firsttx","devtools","chrome-extension","debugging","prepaint","local-first","transaction"],"repository":{"type":"git","url":"git+https://github.com/joseph0926/firsttx.git","directory":"packages/devtools"},"description":"Chromium DevTools companion that streams FirstTx bridge events via BroadcastChannel queues, IndexedDB persistence, and buffered delivery to a custom panel.","maintainers":[{"name":"joseph0926","email":"rkekqmf0926@gmail.com"}],"readme":"# @firsttx/devtools\n\n> **Debug FirstTx apps with visibility into Prepaint, Model sync, and Tx execution**\n\n## Why DevTools?\n\n**Without DevTools, debugging FirstTx feels like flying blind**\n\n- ❌ \"Why didn't prepaint restore?\" → No visibility into snapshot lifecycle\n- ❌ \"Which model triggered sync?\" → Can't trace sync cascades\n- ❌ \"Did my transaction rollback?\" → No compensation tracking\n- ❌ \"Is this error from Model or Tx?\" → Event soup in console\n\n**With DevTools, you see everything**\n\n- ✅ Timeline view showing exact timing of Prepaint → Model → Tx\n- ✅ Transaction grouping with rollback visualization\n- ✅ Model sync triggers (mount/manual/stale) with duration\n- ✅ Advanced filtering by category, priority, errors\n\n---\n\n## Installation\n\n### 0. Chrome Web Store\n\n[Chrome Web Store - Firsttx Devtools](https://chromewebstore.google.com/detail/firsttx-devtools/onpdifkipmmkajdhodmpphmlpbnopkdd)\n\n### 1. Install Latest FirstTx Packages\n\nDevTools requires packages with event emission:\n\n```bash\npnpm add @firsttx/prepaint@^0.3.3 @firsttx/local-first@^0.4.1 @firsttx/tx@^0.2.2\n```\n\n> ⚠️ **Important**: DevTools won't work with older versions that don't emit events.\n\n### 2. Build the Extension\n\n```bash\n# Clone the repo (if you haven't)\ngit clone https://github.com/joseph0926/firsttx.git\ncd firsttx\n\n# Install dependencies\npnpm install\n\n# Build devtools\ncd packages/devtools\npnpm build\n```\n\nThis creates `dist/` folder with the Chrome extension.\n\n### 3. Load in Chrome\n\n1. Open `chrome://extensions`\n2. Enable \"Developer mode\" (top-right toggle)\n3. Click \"Load unpacked\"\n4. Select `packages/devtools/dist` folder\n\nYou should see \"FirstTx DevTools\" in your extensions list.\n\n---\n\n## Quick Start\n\n### Open DevTools Panel\n\n1. Start your FirstTx app: `pnpm dev`\n2. Open browser DevTools: `F12` or `Cmd+Option+I`\n3. Find **\"FirstTx\"** tab (next to Console, Network, etc.)\n\nIf you don't see it, check:\n\n- Extension is enabled in `chrome://extensions`\n- Your app uses FirstTx packages with correct versions\n- Page has loaded (refresh if needed)\n\n### Trigger Some Events\n\nInteract with your app to generate events:\n\n```tsx\n// This generates events you'll see in DevTools:\n\n// 1. Prepaint events\n// - Open page → 'restore' event\n// - Navigate away → 'capture' event\n\n// 2. Model events\n// - Component mounts → 'init', 'load' events\n// - Sync triggers → 'sync.start', 'sync.success'\n// - Manual sync → 'sync.start'\n\n// 3. Tx events\n// - Start transaction → 'start' event\n// - Each step → 'step.start', 'step.success'\n// - Commit/rollback → 'commit' or 'rollback.start'\n```\n\n---\n\n## Core Features\n\n### 1. Event List (Left Panel)\n\n<img src=\"https://res.cloudinary.com/dx25hswix/image/upload/v1761388489/firsttx-devtools-01_ru58a6.png\" alt=\"Event List\" width=\"600\" />\n\n**Shows all events in chronological order**\n\n- **Category badges**: Color-coded (Prepaint=blue, Model=purple, Tx=orange)\n- **Priority indicators**: LOW/NORMAL/HIGH\n- **Click to inspect**: Opens detailed view in right panel\n\n**Filter events**\n\n- By category: All / Prepaint / Model / Tx / System\n- By priority: All / Low / Normal / High\n- Search: Type keywords to filter by category, type, or data\n- Errors only: Toggle to show only failures\n\n### 2. Timeline View (Top Panel)\n\n<img src=\"https://res.cloudinary.com/dx25hswix/image/upload/v1761388489/firsttx-devtools-01_ru58a6.png\" alt=\"Timeline\" width=\"800\" />\n\n**Visual timeline with 4 lanes**\n\n```\n[Prepaint] ●────restore───●───handoff\n[Model]    ──●─init──●─load──●─sync.start──●─sync.success\n[Tx]       ────────────────────────●─start──●─step──●─commit\n[System]   ●─ready\n```\n\n**Features**\n\n- Automatic time scaling (fits all events)\n- Group connection lines (Tx and Model events linked by ID)\n- Status coloring (green=success, red=error, gray=pending)\n- Click event → syncs with Event List selection\n\n**Toggle timeline**\n\n- Click \"📊 Timeline\" button in toolbar\n- Switches between 2-column and 3-row layout\n\n### 3. Event Detail (Right Panel)\n\n**Selected event details**\n\n- Basic info: Category, Type, Timestamp, Priority\n- Event data: JSON view with syntax highlighting\n- Collapsible sections: Click \"−\" to collapse JSON\n- Copy buttons: 📋 Copy entire event or data only\n\n**Resizable**\n\n- Drag left edge to resize (300px - 800px)\n- Width saves to localStorage\n\n---\n\n## Real-World Debugging Scenarios\n\n### Scenario 1: \"Why didn't Prepaint restore?\"\n\n**Problem**: Page shows blank screen on revisit\n\n**Debug steps**\n\n1. Open DevTools → FirstTx tab\n2. Filter by \"Prepaint\" category\n3. Look for events:\n   - ✅ `capture` event → Snapshot was saved\n   - ❌ No `restore` event → Snapshot missing or expired\n   - ⚠️ `hydration.error` → DOM mismatch\n\n**Common causes**\n\n- TTL expired (7 days default)\n- `#root` had 0 or 2+ children (hydration skipped)\n- IndexedDB quota exceeded\n\n**Fix**\n\n```tsx\n// Check snapshot in browser console:\nindexedDB.open('firsttx-prepaint', 1).onsuccess = (e) => {\n  const db = e.target.result;\n  const tx = db.transaction('snapshots', 'readonly');\n  tx.objectStore('snapshots').getAll().onsuccess = (e2) => {\n    console.log('Snapshots:', e2.target.result);\n  };\n};\n```\n\n---\n\n### Scenario 2: \"Which model keeps re-syncing?\"\n\n**Problem**: Too many sync requests, slowing down app\n\n**Debug steps**\n\n1. Filter by \"Model\" category + \"sync.start\" type\n2. Check `data.trigger` field:\n   - `mount` → Component re-mounting\n   - `stale` → TTL expired\n   - `manual` → Explicit `sync()` call\n\n3. Check Timeline:\n   - Multiple sync lines for same modelName = problem\n   - Look for pattern (every N seconds?)\n\n**Common causes**\n\n- TTL too short (`ttl: 1000` → syncs every second)\n- Component unmounting/remounting in loop\n- `useEffect` calling `sync()` without proper deps\n\n**Fix**\n\n```tsx\n// Increase TTL\nconst Model = defineModel('cart', {\n  ttl: 5 * 60 * 1000, // 5 minutes instead of 1 second\n});\n\n// Or use syncOnMount: 'never' for manual control\nconst { sync } = useSyncedModel(Model, fetcher, {\n  syncOnMount: 'never',\n});\n```\n\n---\n\n### Scenario 3: \"Transaction rolled back but UI is broken\"\n\n**Problem**: Optimistic update failed, UI doesn't match data\n\n**Debug steps**\n\n1. Filter by Tx category + your txId\n2. Timeline should show:\n   - `start` → `step.start` → `step.fail` → `rollback.start` → `rollback.success`\n\n3. If `rollback.fail` appears:\n   - Check `data.errors` field\n   - Compensation function threw error\n\n4. If no rollback events:\n   - Transaction didn't reach `commit()` or error handler\n   - Check for unhandled promise rejection\n\n**Common causes**\n\n- Compensate function has bug: `compensate: () => patch(draft => { throw new Error() })`\n- Compensate uses stale closure: `compensate: () => patch(draft => { draft.items = oldItems })` but `oldItems` is undefined\n- No compensate provided: `tx.run(optimistic)` without `{ compensate }`\n\n**Fix**\n\n```tsx\nconst tx = startTransaction();\n\n// ✅ Correct: compensate captures current state\nconst oldItems = [...cart.items];\nawait tx.run(\n  () =>\n    CartModel.patch((draft) => {\n      draft.items.push(newItem);\n    }),\n  {\n    compensate: () =>\n      CartModel.patch((draft) => {\n        draft.items = oldItems; // Captured above\n      }),\n  },\n);\n\n// ❌ Wrong: compensate uses undefined variable\nawait tx.run(\n  () =>\n    CartModel.patch((draft) => {\n      draft.items.push(newItem);\n    }),\n  {\n    compensate: () =>\n      CartModel.patch((draft) => {\n        draft.items = previousItems; // Where does this come from?\n      }),\n  },\n);\n```\n\n---\n\n## Advanced Features\n\n### Filtering\n\n**Category filter**\n\n```\nAll → Shows everything\nPrepaint → capture, restore, handoff, hydration.error, storage.error\nModel → init, load, patch, replace, sync.*, broadcast, validation.error\nTx → start, step.*, commit, rollback.*, timeout\nSystem → ready, error\n```\n\n**Priority filter**\n\n```\nAll → Everything\nLow → step.start, step.success, broadcast, patch, load\nNormal → init, replace, sync.*, commit, restore\nHigh → *.error, *.fail, rollback.start, timeout\n```\n\n**Search**\n\n- Searches in: category, type, JSON data\n- Case-insensitive\n- Example: Search \"CartModel\" → shows all events for that model\n\n**Error toggle**\n\n- Shows only events with:\n  - Type includes \"error\" or \"fail\"\n  - Type is \"rollback.start\" or \"timeout\"\n- Quick way to find problems\n\n### Grouping\n\n**Tx groups**\n\n- Events with same `txId` are linked\n- Connection line shows:\n  - Green → Transaction committed successfully\n  - Red → Transaction rolled back or failed\n  - Gray → Transaction still pending\n\n**Model groups**\n\n- Events with same `modelName` are linked\n- Connection line shows:\n  - Green → Sync succeeded\n  - Red → Validation or sync error\n  - Gray → Sync in progress\n\n### Layout Modes\n\n**Default (2-column)**\n\n```\n┌──────────────┬───────────────┐\n│  Event List  │ Event Detail  │\n│              │  (resizable)  │\n└──────────────┴───────────────┘\n```\n\n**Timeline (3-row)**\n\n```\n┌────────────────────────────────┐\n│  Timeline (collapsible)        │\n├──────────────┬─────────────────┤\n│  Event List  │  Event Detail   │\n└──────────────┴─────────────────┘\n```\n\nToggle via \"📊 Timeline\" button in toolbar.\n\n---\n\n## Performance Considerations\n\n### Event Buffer\n\nDevTools keeps last **500 events** in memory (configurable in bridge):\n\n```ts\n// packages/devtools/src/bridge/core.ts\nconst DEFAULT_CONFIG = {\n  maxBufferSize: 500,\n  // ...\n};\n```\n\nIf you generate >500 events, oldest events are dropped.\n\n**When this matters**\n\n- Long debugging sessions\n- High-frequency events (e.g., patch on every keystroke)\n\n**Solution**\n\n- Click \"Clear\" button periodically\n- Reduce event noise (e.g., debounce patch calls)\n\n### High-Priority Events\n\nHIGH priority events (errors, rollbacks) are:\n\n1. Sent immediately (no batching)\n2. Saved to IndexedDB (optional)\n\nPersistence can make HIGH events available after the panel closes, but it is not a durability guarantee. Retention cleanup and storage failures can remove events.\n\n### Batch Intervals\n\nNormal/Low events are batched to reduce overhead:\n\n```ts\nconst DEFAULT_CONFIG = {\n  normalBatchInterval: 100, // 100ms\n  lowBatchInterval: 500, // 500ms\n};\n```\n\n**Trade-off**\n\n- Shorter interval → More real-time, more overhead\n- Longer interval → Less overhead, slight delay\n\n---\n\n## Troubleshooting\n\n### \"FirstTx tab doesn't appear in DevTools\"\n\n**Check**\n\n1. Extension enabled: `chrome://extensions` → FirstTx DevTools = ON\n2. Correct package versions:\n   ```bash\n   npm list @firsttx/prepaint @firsttx/local-first @firsttx/tx\n   # Should show 0.3.3, 0.4.1, 0.2.2 or higher\n   ```\n3. Page loaded: Refresh page after enabling extension\n4. Console errors: Check for `[FirstTx]` messages in browser console\n\n### \"No events showing\"\n\n**Check**\n\n1. App is actually using FirstTx features:\n   - For Prepaint: Visit page, leave, return\n   - For Model: Use `useModel` or `useSyncedModel` hook\n   - For Tx: Call `startTransaction()`\n\n2. Extension connected:\n   - Green dot \"Connected\" in toolbar?\n   - If red \"Disconnected\", reload page\n\n3. Events filtered out:\n   - Try \"All\" category + \"All Priority\"\n   - Clear search box\n   - Turn off \"Errors only\" toggle\n\n### \"Timeline is empty but Event List has events\"\n\n**Possible causes**\n\n1. Timeline is collapsed: Click ▼ button to expand\n2. No events with timestamps: Timeline requires `event.timestamp`\n3. All events at same timestamp: Timeline shows single vertical line\n\n### \"Extension crashes on event flood\"\n\n**Symptom**: Tab freezes when generating many events quickly\n\n**Cause**: Event buffer overflow or DOM update thrashing\n\n**Fix**\n\n```tsx\n// Debounce high-frequency updates\nimport { debounce } from 'lodash';\n\nconst debouncedPatch = debounce((value) => {\n  Model.patch((draft) => {\n    draft.text = value;\n  });\n}, 300);\n\n<input onChange={(e) => debouncedPatch(e.target.value)} />;\n```\n\nOr reduce event generation:\n\n```tsx\n// ❌ Emits event on every keystroke\n<input onChange={(e) => Model.patch(draft => { draft.text = e.target.value })} />\n\n// ✅ Only emits on blur\n<input onBlur={(e) => Model.patch(draft => { draft.text = e.target.value })} />\n```\n\n---\n\n## API Reference\n\n### Window API (Injected by Bridge)\n\n```ts\nwindow.__FIRSTTX_DEVTOOLS__ = {\n  emit: (event: DevToolsEvent) => void;\n  isConnected: () => boolean;\n};\n```\n\n**Usage** (Internal - packages use this automatically):\n\n```ts\nif (window.__FIRSTTX_DEVTOOLS__) {\n  window.__FIRSTTX_DEVTOOLS__.emit({\n    id: 'unique-id',\n    category: 'model',\n    type: 'sync.success',\n    timestamp: Date.now(),\n    priority: EventPriority.NORMAL,\n    data: { modelName: 'cart', duration: 50 },\n  });\n}\n```\n\n### Event Schema\n\n```ts\ninterface DevToolsEvent {\n  id: string;\n  category: 'prepaint' | 'model' | 'tx' | 'system';\n  type: string;\n  timestamp: number;\n  priority: EventPriority; // 0=LOW, 1=NORMAL, 2=HIGH\n  data: Record<string, unknown>;\n}\n```\n\n**Event Types**\n\n| Category     | Types                                                                                                                                        |\n| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |\n| **prepaint** | `capture`, `restore`, `handoff`, `hydration.error`, `storage.error`                                                                          |\n| **model**    | `init`, `load`, `patch`, `replace`, `sync.start`, `sync.success`, `sync.error`, `broadcast`, `validation.error`                              |\n| **tx**       | `start`, `step.start`, `step.success`, `step.retry`, `step.fail`, `commit`, `rollback.start`, `rollback.success`, `rollback.fail`, `timeout` |\n| **system**   | `ready`, `error`                                                                                                                             |\n\n---\n\n## Browser Compatibility\n\n| Browser | Version | Status               |\n| ------- | ------- | -------------------- |\n| Chrome  | 111+    | ✅ Fully supported   |\n| Edge    | 111+    | ✅ Fully supported   |\n| Firefox | -       | ❌ Not supported yet |\n| Safari  | -       | ❌ Not supported yet |\n\n**Why Chrome only?**\n\n- Uses Manifest V3 service worker\n- Chrome DevTools extension APIs\n- Firefox support planned (needs different extension architecture)\n\n---\n\n## Contributing\n\nDevTools is part of the FirstTx monorepo. To contribute:\n\n```bash\n# Clone repo\ngit clone https://github.com/joseph0926/firsttx.git\ncd firsttx\n\n# Install dependencies\npnpm install\n\n# Develop devtools\ncd packages/devtools\npnpm dev  # Watches and rebuilds on change\n\n# Test in browser\n# 1. Make changes\n# 2. Rebuild: pnpm build\n# 3. Reload extension in chrome://extensions\n# 4. Refresh page\n```\n\n**Architecture**\n\n```\npackages/devtools/\n├── src/\n│   ├── bridge/        # Event collection & routing\n│   ├── extension/     # Chrome extension (background, content, devtools)\n│   └── panel/         # React UI (Timeline, EventList, EventDetail)\n├── dist/              # Built extension (git-ignored)\n└── package.json\n```\n\n---\n\n## Related Packages\n\n- [`@firsttx/prepaint`](https://www.npmjs.com/package/@firsttx/prepaint) - Boot-time visual snapshot replay\n- [`@firsttx/local-first`](https://www.npmjs.com/package/@firsttx/local-first) - IndexedDB + React integration\n- [`@firsttx/tx`](https://www.npmjs.com/package/@firsttx/tx) - Optimistic sagas with compensating rollback\n\n---\n\n## License\n\nMIT © [joseph0926](https://github.com/joseph0926)\n","readmeFilename":""}