{"_id":"tunelito","_rev":"37-76812ff7d6e1f98476a41d3fc7f52a9c","name":"tunelito","dist-tags":{"latest":"0.23.0"},"versions":{"0.1.1":{"name":"tunelito","version":"0.1.1","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.1.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"6a3dce77ee986cf1c4c871d886a1be740124192f","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.1.1.tgz","fileCount":41,"integrity":"sha512-xbEv3GLHlwgG4QZzE3Ddc/JOd9O5rtaFI/WQqh+gV/ar6f+d53o1TIFXDZ2ZBzxlN7fkRT3laeM3Zsx8tPMfNg==","signatures":[{"sig":"MEUCIQDI9iBM9kQ0cVIwJq3ozQc65NmhaJQZ8jFi9OGVhImXOgIgKJ971+uf2Kur2IM4Qvy1Wzn9A8k+Xg9uLRsn0d38rV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99295},"type":"module","engines":{"node":">=22"},"gitHead":"657a19600552fd8abf94f94c5562ecdfaea883fe","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"npm pack --dry-run","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi"},"_npmUser":{"name":"chekos","email":"sergio@cimarron.io"},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.12.1","description":"Serve any local HTML page as a temporary live review room with injected comments.","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.1.1_1779470158694_0.08266286400388445","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"tunelito","version":"0.2.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.2.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"043bbcce9defaa5e053f3dc345069116e343889c","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.2.0.tgz","fileCount":41,"integrity":"sha512-Mb88nSC4P8+ojqEmZKx1adOcnQFDUi/bfoUHORXj7hBSKul/Ltd65vw7sTE9ShPsnJnGmuR2sfL8iRNjgRAGYQ==","signatures":[{"sig":"MEUCIHr90652WHHtsgvFKoa49xIhlA/JGdwdjKx+0XyVgKDnAiEA3E+EC0FQUhhNswtubsHHSZs4kNCdUs6IqYvm46c4K00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":123466},"type":"module","engines":{"node":">=22"},"gitHead":"bad4159556dbbbe4c4d6e0e2c21acaae289de8aa","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"npm pack --dry-run","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.12.1","description":"Serve any local HTML page as a temporary live review room with injected comments.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.2.0_1779560304343_0.9050067947598444","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"tunelito","version":"0.3.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.3.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"984bd8f82212d1ebce82b752dc06827aef04913e","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.3.0.tgz","fileCount":41,"integrity":"sha512-TSYrAQUFriVoZUK8SInhUZ6saMg3k6m8sael+1mep45WmLVnIc6rJO8PUnm79LafpYilBP/NIcgVR3gbzzHsew==","signatures":[{"sig":"MEUCIDp84cDiYhtP5i4RQRC8vTFv9CBLp4NAnHSQ3716h54vAiEAwKU0teylRgZ4b3TIHNwezz0D6MBUOEW18NXUchSL94A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135257},"type":"module","engines":{"node":">=22"},"gitHead":"ceb4131b93426cc20611b6d9926d08dfe0780b52","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"npm pack --dry-run","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.12.1","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.3.0_1779831959789_0.7711653761586905","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"tunelito","version":"0.3.1","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.3.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"9e380eb304461c131a51f1af82135c4d34f8a6a3","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.3.1.tgz","fileCount":42,"integrity":"sha512-90SWM9gtzYmUIcXmgaSIsyIiefvumZzrFXTYpXxRmKvcYZHbnODVZNbg+HtzVLSoVrVUo+oUGuYO9PFiBQ2yJA==","signatures":[{"sig":"MEUCIGpVi/xPQkDfmEn/l9pOre3ha66CspgKPuXu7kNbR4JlAiEAoJrW7akd8DJYhHajaOpHyi+guXF6iRNRSFEpdDXmTv0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139898},"type":"module","engines":{"node":">=22"},"gitHead":"fb06660df0e186535064e0e20b61e798e85f3a6c","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"npm pack --dry-run","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.12.1","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.3.1_1779834184589_0.5165200945356998","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"tunelito","version":"0.4.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.4.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"4704cbc143acc111ccf3b4345bdec45ef1108b87","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.4.0.tgz","fileCount":44,"integrity":"sha512-3/NFlGx8h+79uSs3Wi8ZeXzLSSjbdOQavs43N7phyTezj1ddWVmHt889vGQKy5fBV3lxqagd3zy2R1vOer0AiQ==","signatures":[{"sig":"MEQCIBf3xqvEezWDpsMMZB2yQWrA2+aDiRWFPxaGKMP90VeKAiAZRJVJCmNSNcE6VXsu3KiYrGvswbqg6Q0neTK2TGoXIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":178839},"type":"module","engines":{"node":">=22"},"gitHead":"074d981d5adc070cde08293c071298e7c665a31b","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"npm pack --dry-run","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.12.1","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.4.0_1779847633841_0.4662342238294559","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"tunelito","version":"0.4.1","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.4.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"6d4f81087f3d948ee76e8718e3390133e04911cb","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.4.1.tgz","fileCount":44,"integrity":"sha512-2LmJv7JhY682snVR+38DQ4k7NGWEHatm2P4gvlH9BACn3acSTmKUXmU2D6PQ3pMr+hCQg24sWMiLU5g1znaQTg==","signatures":[{"sig":"MEYCIQDRfRbRV8XNXRowkJwsPm8ATDcBEe3JrhK6oaDEm8qV3QIhAM7s2EtSFmIpfUf1r1sv6nD2Wdj77yRha/XL7GhCxow2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":185212},"type":"module","engines":{"node":">=22"},"gitHead":"21170888ceeea82e2c3a6fb19d7c056ce59be2e9","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"npm pack --dry-run","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.12.1","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.4.1_1779850779649_0.03165062971089072","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"tunelito","version":"0.5.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.5.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"c63050b17c6bdeb6c1551e60c4c963c8ab645e14","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.5.0.tgz","fileCount":44,"integrity":"sha512-JL5E1XZldGkE+GBJr/opfscn8YrwsUc58ER64hmdz9QM/fWp7XXKWNutsk47N6gJ38P73FYk+vXkvuW9FczMKA==","signatures":[{"sig":"MEUCIQCW/y/H6hfX/VYAcO96rC//IhXcx/y/ODorlSuH91dl1AIgScqbYUPLG2tG7AQYWK2uQhjoUPtF3wcokgpsu75hDEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":195097},"type":"module","engines":{"node":">=22"},"gitHead":"07614941eb53aa4170109d28004db1a515acfbd4","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.12.1","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.5.0_1779947021054_0.6099820325464407","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"tunelito","version":"0.6.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.6.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"dd5cc3016cdfde313a2a97939ab4ca85d5bbdbcf","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.6.0.tgz","fileCount":45,"integrity":"sha512-+lyNwStdn+hyuUV297KetQ1j+5wBRJmD4hljPQorPIA220Z+QIIqljtOcMXmQOyQZipZYHuplpZOvPt9y6v1kw==","signatures":[{"sig":"MEUCICT/YSN6mUUg42RNeapw82P9pVkbpJBnextJ5lsPEIn5AiEAyAknTD77vk1eOmgalOngebA2gx9W5Sto+3K1rJnEy/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211996},"type":"module","engines":{"node":">=22"},"gitHead":"876fb8a89c4682c27beca6152ebbba516520adeb","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.6.0_1779959928587_0.9580430043119843","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"tunelito","version":"0.6.1","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.6.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"8989a493cf345fd3bd04f9be5e190d67f4fd1e2a","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.6.1.tgz","fileCount":45,"integrity":"sha512-xaKAOdB/GxN03eolDoECK8UPlo9sBgbgnELAA53O8yz7k6G7199xbPy5ng1xBY9o7QVLtpoJIEWS+1WpCaIRMA==","signatures":[{"sig":"MEUCIFBphbTW/YIuHc3E/3nB8666xe0oGGYYsKh4Yxr8jmklAiEA+qBWnwtEUav198oRNHta8pGQ7+2Ruk6do4p5YgZUCxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":212361},"type":"module","engines":{"node":">=22"},"gitHead":"ce8e37bbfd9891a9332857b3b2222858b6275fb0","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.6.1_1779965965290_0.1693872090163815","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"tunelito","version":"0.6.2","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.6.2","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"a38a62cda245766db576a386f83288f7b505be01","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.6.2.tgz","fileCount":45,"integrity":"sha512-ykugUJRNBX7ufEWMGfUpzUYCs4emvENP7LG8OmTi5dTDa+q/8godv/nYItF2+g5FzEzwuX9mVPCJqH06a+edUA==","signatures":[{"sig":"MEQCIC/TLzmfMXjFSIxmCtcbafFwMdsvD98eoVzViODkt9U/AiAqHA4WzyeKDv1erwjX1o9j5C8WvHrX9yVyE9BBCeDhyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":215224},"type":"module","engines":{"node":">=22"},"gitHead":"95f2fd72504f743fad55a6e244eeefc049dd0f41","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.12.1","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.6.2_1779970559594_0.9203542751292053","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"tunelito","version":"0.6.3","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.6.3","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"f2aa3962b9fe33cc60b3426bce514cd3a8724591","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.6.3.tgz","fileCount":46,"integrity":"sha512-amcs6nT7HB2RTgkQHwFHYqKoSRVHN1UJ3tXN34aclICUPv1B12Amgx7s+auwv42wtkWx2jwgty+ZiNMv+EsYpg==","signatures":[{"sig":"MEUCIA19l5ez1TF4YwsOjNDdC3Vp0wAfsDpsr/EoaqZ79oMLAiEAnrSdGCaFuFbEFid8/suBbWpCd+GejoTKS1UqitzJ9TM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":222535},"type":"module","engines":{"node":">=22"},"gitHead":"c9cc5d635c1b12b231c49721c15a41ea38dcfa1e","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.6.3_1780634038595_0.613659721869185","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"tunelito","version":"0.7.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.7.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"3d64f85176d9b69e7f4760dfffbb5437907ffd17","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.7.0.tgz","fileCount":46,"integrity":"sha512-tMJi6CPeWK4x3TGWNwwRSsFOhPUFusfFFcZ5MU1jldo4qZOO9aYHp3c0PqfXCvMNrX37MQYn5GOzFSObchS7CQ==","signatures":[{"sig":"MEYCIQCuJYOZY59uyziKn07GIW5RFJSv6PSsRO2yubAY+gr6xAIhAKeUR6CSfLfsjjQ3GoIEuTQ5yuiniTlmooQAVm7AuY7w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233379},"type":"module","engines":{"node":">=22"},"gitHead":"082f8145ddf34e20d7de9a958614e8b49d52a37e","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.7.0_1780905472607_0.2542981583517121","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"tunelito","version":"0.8.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.8.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"3038bc0e0ac9d8144c8290b22bfa4b2d2edbf7c4","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.8.0.tgz","fileCount":46,"integrity":"sha512-EhW5Kdir9/0GAym/vlteRqPY0ea1DmG/YxD+W/3KJMWLAIXmOoXXh6gfgJ74MBG2ZySVqj/09REcGN1NA9nXRQ==","signatures":[{"sig":"MEUCIQC3nTF4RkMXE0TGuQCqCzw3Q3+rQZFFQq/kXFG9/+tbmwIgCaGt9XyYhgQWF4I3cYc7lX0DRZ1qaAFFCa0ARk0DDHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":239824},"type":"module","engines":{"node":">=22"},"gitHead":"78e6dcdb02a9aefb4d3525262fea988d61b0406d","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.8.0_1780934075205_0.09539761254975643","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"tunelito","version":"0.8.1","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.8.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"565aa85f44664c0190201bfb461346ead4ddecd3","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.8.1.tgz","fileCount":46,"integrity":"sha512-YlRJ2xBfabJBnU42o1w5AUMompUF2cbBXir9cpeOUqlxS2HjPAiRhgys4JwuvxyO4vsrXDGgSx+T/4STM9ikTQ==","signatures":[{"sig":"MEYCIQDFJ1/BEjvmyW/22Pk/HV4ne9uWV9hGNGw6SptDJBNXMwIhAMl1FIdpuQK9gIP6f4gtuRoKyy1gKCHQ9oCDeUBCCUyW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":242693},"type":"module","engines":{"node":">=22"},"gitHead":"b9f48331361fb3bec5f249f79ed73e8aab984b65","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.8.1_1780960907663_0.6861541659658592","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"tunelito","version":"0.9.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.9.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"192466120aeed98836b20b64ecc9623c0ec7976d","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.9.0.tgz","fileCount":46,"integrity":"sha512-mtd1D4WsUTvL++i4Er42gdr3d204yROJBTzCkYjOjLbwudpZUkg+j8Okt7Ja/eoJH80EUgn4nIG9d3zG+wfFVw==","signatures":[{"sig":"MEYCIQCys2F9B0or179yjcHfZ2ofIT8mYSHfv6HGDFSMhfurjwIhAJ9dMudfAP0MW9AisoSdumwVeykGd8XwHr7HeffTM+Nk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":263978},"type":"module","engines":{"node":">=22"},"gitHead":"9b22ae6fa9c55164259d506e4a8d535892dd9df9","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.9.0_1781034942955_0.9092427005636254","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"tunelito","version":"0.10.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.10.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"fa50cfa86ca94612668d578be424e86ed77e6f35","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.10.0.tgz","fileCount":46,"integrity":"sha512-LahDqwudpGOWpVSZuJPLl6VGqgocb+CsS6S6T98WjQO1QUxUBcmbwIDUmeGqpYsFcM43a9xdr56eSFx0q7qMuw==","signatures":[{"sig":"MEYCIQCsfNeSuIH4XPJlYe1P3ezjKvBNs7ZnsNVuk0Y3Q8m4jQIhALDRyZ2FkuV7ejy5iXpSRvyU1dZ2yF6lrvGHaa8VITRT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":303567},"type":"module","engines":{"node":">=22"},"gitHead":"2354ed0751840eeb71d83e2eebfc12b06b60e63b","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.10.0_1781052189257_0.38443166599984546","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"tunelito","version":"0.10.1","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.10.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"b6eaa7f5aded1a014f83a6312517b261bafb98c4","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.10.1.tgz","fileCount":46,"integrity":"sha512-uVDVICi74DkCyOPeNwJH7RNrQrxjM/gPRP0Q3So20uR4ngpvyecOmj38lgrjJGZwK24TaZsiR3qi8KoiXVsQgg==","signatures":[{"sig":"MEQCIA7VpcOq+o0jMh82fvKRhwa4FXlMWf6mQhgILHbdURCOAiBegDTU8iCLvSp/3vjFjxsQvSSOSXY6moy9djx/XjLH2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":303446},"type":"module","engines":{"node":">=22"},"gitHead":"49491cfb2a308118a8c691651dd985b5d6ec429d","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.10.1_1781108326835_0.8503786620135012","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"tunelito","version":"0.11.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.11.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"2902c0c1c59ac2ca03dc2d7fd2faa7ecd025a1af","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.11.0.tgz","fileCount":46,"integrity":"sha512-o9OEGjkAYq0VNU1ANjUKZK2PP6xG14aAj3D6KETjhjpvS4xZpEZWBRxXpoQg0myVSOJbSQtbRlHpIg2S1baMGg==","signatures":[{"sig":"MEQCIBwnGBHO1cdom06afrZoH0yuSCcddvX7cUykAJg1eoHpAiAlHiK4o98lipbsGZfvUpR8Dn8uJBpP+E+ov6lgCoWStQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":309218},"type":"module","engines":{"node":">=22"},"gitHead":"1870f4579efb479557ffd24e78ebfec4b3adc3e8","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.11.0_1781124256264_0.992411980464476","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"tunelito","version":"0.12.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.12.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"b7d2f8f23b75b61ef150f5bfd48621f7d01eb89a","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.12.0.tgz","fileCount":46,"integrity":"sha512-R3bLTLb6ZFKlk1Iyu2D9e9Bv8raSNJ6e1i1dB4HZfAYAZZZLZvXeXbn/0a67RnMvGpx8FLCCLzWzdcq+ifEgyA==","signatures":[{"sig":"MEYCIQDU9bC7pjZNjbBLzq+GoOaYZXXHRwr9OY8z98VpS72QQQIhAP8A4cMKOr9X4/J08yDVwz6CVBclnJ9yfcstsagD9n5B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":326594},"type":"module","engines":{"node":">=22"},"gitHead":"6f881ff342e0d97147992d27d192d8afdf3d0612","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.12.0_1781285239614_0.5418331005502357","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"tunelito","version":"0.13.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.13.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"cd4d6acf851503720c2a141852a04824679cb62c","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.13.0.tgz","fileCount":51,"integrity":"sha512-cJ8DlrZx78/OdJSWy+VBvNlb6rOOzbs1FajCAiK26pC3uwxzo2i/gMFX9Zm0+R5h44LcmDeag3+5kDnXJ9jiuA==","signatures":[{"sig":"MEQCIGP6bD7n1mkFf6t+mLm265k8d+BgiX7pjytfnh95EWCnAiA8Gyc3FbS9clKRdtThfZRZoenQ2L1j/b/w4WD+OOe/+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":432042},"type":"module","engines":{"node":">=22"},"gitHead":"a21549702a8d5675de747f5a15869b20a4c1ef64","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.13.0_1781661910475_0.7492568215325754","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"tunelito","version":"0.14.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.14.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"98f1c7023ac8d6e7a2dffc9400c29bb4f441e480","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.14.0.tgz","fileCount":57,"integrity":"sha512-YHi0b98TUyLkKbMnbB/mQUIftKrphw+PRbLNC2GGvXdQGRbDkHYOMPCEhhw4uoO+CokLM43A+Rcf8uCJftBKCg==","signatures":[{"sig":"MEYCIQClurkukmUPKngEYsFkOC+7F6OzAjEpM10gf/zjiZTr7AIhALLb+K+3k5Kn402BXv34uR2YjNW2d7eV6581SuqPuTvP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":516444},"type":"module","engines":{"node":">=22"},"gitHead":"2134319b0981fd65340d50073df9b261dfcc00f7","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.14.0_1781752687769_0.4521046188979827","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"tunelito","version":"0.14.1","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.14.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"26a586aeaeca56285921db2472c4374dedb12e6a","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.14.1.tgz","fileCount":57,"integrity":"sha512-bB5Y+4nBHhiD+R5EfJ2Uv/lymtqHurx9euGwWQjzztVNnBQhAFhdDg0vyU8mxulmcxteFoaPjcIHiO8Fu2td3Q==","signatures":[{"sig":"MEYCIQDR52GPANID7faqTcmsjnQ21TTeGiyb2YtNC38fAW2m3AIhAKQJtyX32bgQAXmwDrFhMVtE4IOsiONRdOfFbc0ZH9vu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":516588},"type":"module","engines":{"node":">=22"},"gitHead":"f1da279a2bf2fe243315dfa87d1c99d1598d3461","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.14.1_1781755572197_0.23503933981916614","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"tunelito","version":"0.15.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.15.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"cc5f3f5c4d13ec11ca188ddd49985a6485beb8af","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.15.0.tgz","fileCount":57,"integrity":"sha512-nzSrrczPWdbhcNgTnXm15WYMOXwf429P/QwzbsADtaA88HPgYb2GA4zesxGsxOR+D9dPC99PTZJ5M5tESHAfTA==","signatures":[{"sig":"MEYCIQD0VCRTYcmDsAEhlniX5NrKl5UUjHY6thRC+h/m0cJ+FgIhAIn4b3v6gLo457EH0jjOxIBixJa92tVygCRURc9mjov9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":518167},"type":"module","engines":{"node":">=22"},"gitHead":"1721cfc5e9c3a18b3548aeb68beb4848b4cef99c","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.15.0_1782316558335_0.27729320894620413","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"tunelito","version":"0.16.0","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.16.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"0b50143d18a8d2d44558541430ab29ce6fd11162","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.16.0.tgz","fileCount":57,"integrity":"sha512-mTDOSa77YSUpIj6XwbeC9WbywSazMb5pNQyzCgVZluxuH9YPSzokpzrmtL3UC81Y/t94ozQ6FUddLEQBjAdXJQ==","signatures":[{"sig":"MEQCIHoiNcR+GxYLL7SPD7WNWe0pCESh30UcpwApvtLbLJYDAiBmN8MP6qPXHepHmy03uUROHkt+Uls/fPrW3QYNaYaaNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":533346},"type":"module","engines":{"node":">=22"},"gitHead":"daecaee269e8e5e5842605734d303b6c48faf035","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.16.0_1782421327353_0.2024822346496673","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"tunelito","version":"0.16.1","keywords":["html","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.16.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"08fb0655f4fdb26585625f597a0f9de42c1b779f","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.16.1.tgz","fileCount":57,"integrity":"sha512-JZ7xjS8a9mZUluaAr3J6yNXK/pAmKvyifs+4BNmpn98VUTay5Ii1jfiklKvLasOael6ZJ21/YDLUI/Zjx1vPqQ==","signatures":[{"sig":"MEQCIE4zSNZ+/k0fLNSz2wPiw/okPgZmzND5lFX8HKqQgMhMAiA5omHmNZyUKdkJFwrRr93TIOZ9HtkVblpLzcq46IENDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":534141},"type":"module","engines":{"node":">=22"},"gitHead":"85596fb751a83e78e3950bd30fa74182012acd99","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML files or folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.16.1_1782424428087_0.5527085945181105","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"tunelito","version":"0.17.0","keywords":["html","markdown","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.17.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"54b9c1db42455aed74db9dbe8c6f6ab69ab172a2","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.17.0.tgz","fileCount":58,"integrity":"sha512-XH3LYxfC1PZt8Zwl9O/CkVUL7c7tPcIOPimRwadvH/JK5eDS+DA1jUasMOuVOjVFsmULIkxzOIsJipLqHT9tFQ==","signatures":[{"sig":"MEUCIQCEjmTZsIy944B0+ryWrd/JkqjaCI5lVnuw4OaKZGfDnQIga5lXBTUj2lwjd0CuX9UeeyzjLW/9gj7iAYnCteeD9S8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":544649},"type":"module","engines":{"node":">=22"},"gitHead":"ed0b97cdf8888e556bec5f0c3e69edbbbd75d803","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.13.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"marked":"^18.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.17.0_1782771558803_0.18621774967745552","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"tunelito","version":"0.18.0","keywords":["html","markdown","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.18.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"f5e5f001bd2238cb3f3968606ee690dc16ef5308","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.18.0.tgz","fileCount":59,"integrity":"sha512-2ftxdDMK9xIZ4wB9SnyD4o1wQP46aFtYk7bosYpM/V5M4uIA6bZXYSfsscQgumhmrQhHpPNwMjjXHiXgggv2NA==","signatures":[{"sig":"MEUCIFAMhkd15NN+LyVsVdkiKNd3V+4SioV69wcjZihbdKR3AiEAk5H9Ir9ZoQb/toSQYaiuxXsfVxUv2ni6IK62pvj8mLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":554148},"type":"module","engines":{"node":">=22"},"gitHead":"4a62609bff27284298b2f9440d32b86c11db9eae","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"marked":"^18.0.5","mermaid":"11.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","_npmOperationalInternal":{"tmp":"tmp/tunelito_0.18.0_1783711373343_0.4536807107061336","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"tunelito","version":"0.19.0","keywords":["html","markdown","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.19.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"17153a9ed438f07b29b8d2a610bd758cf2322a2c","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.19.0.tgz","fileCount":74,"integrity":"sha512-RWoWeMiBQuKdrIF3b+vQMSX1daMBo21zueMylY1EzCMOdVGGRTGVG6hP8Kc4wv4yanjcTZy112qXCpZKu1gPSQ==","signatures":[{"sig":"MEQCIDTd2LTW3T6u2qWuvrlR4s2IYEobE6A6MbGESiJtqbosAiBbL8q+U9NlTnqgAYIqdRC3fQYCke2+y5PKXAAiNnNioQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":708709},"type":"module","engines":{"node":">=22"},"gitHead":"e33d5f1bef88e4380e5e65feb5bc64ef4c2351a4","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","browser:check":"node scripts/markdown-browser-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.9.0","marked":"^18.0.5","mermaid":"11.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","devDependencies":{"playwright":"^1.61.1","@axe-core/playwright":"^4.12.1"},"_npmOperationalInternal":{"tmp":"tmp/tunelito_0.19.0_1784237085735_0.8819575004035853","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"tunelito","version":"0.20.0","keywords":["html","markdown","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.20.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"f485fbfd47eca125372752ea031234f0d02b2360","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.20.0.tgz","fileCount":78,"integrity":"sha512-uV4sRlAJ/CTYBuv7DcGdG0yZoqyAzJu7r4nW+X0QB/rbMuTJp4kauOgEz/5PWtRAO9ewEvN1dhODpTPhnhiK+g==","signatures":[{"sig":"MEYCIQC7iWap4W99IdwseO7S+20xwJJGJSJx+1clS4H9E+xZuAIhALLifSSWBY687Lq+ezh9EtzfDQTuHeBtTwfzQgcgJiV3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":744188},"type":"module","engines":{"node":">=22"},"gitHead":"65239546ce6ea5b57a20f5809ec39edd8b535281","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","browser:check":"node scripts/markdown-browser-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs","theme:screenshots":"node scripts/capture-markdown-theme-screenshots.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.9.0","marked":"^18.0.5","mermaid":"11.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","devDependencies":{"playwright":"^1.61.1","@axe-core/playwright":"^4.12.1"},"_npmOperationalInternal":{"tmp":"tmp/tunelito_0.20.0_1784326676748_0.8845372776919818","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"tunelito","version":"0.20.1","keywords":["html","markdown","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.20.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"86d3b8d8232f41ce6927430f9f8510f240c0aa78","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.20.1.tgz","fileCount":78,"integrity":"sha512-rj4OX5xpdnnpXDiHpTYzjWEBNlP5RYyuT1q0/byMptWXFRjkf863e7acqVlv5REBVR5VwpdqLabebOfTHpT94g==","signatures":[{"sig":"MEUCIQClj8WlJWmcywFRa7oioEeT2Uah7I72l+vQoIz11jcY4wIgadETe0OikXMyUXTP9kPH4awbV5QS5LyEO2SSVMfFnu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":753242},"type":"module","engines":{"node":">=22"},"gitHead":"fb1f706b53e3c0fdc070ba4d9ba0ba479bcbc21b","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","browser:check":"node scripts/markdown-browser-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs","theme:screenshots":"node scripts/capture-markdown-theme-screenshots.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.9.0","marked":"^18.0.5","mermaid":"11.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","devDependencies":{"playwright":"^1.61.1","@axe-core/playwright":"^4.12.1"},"_npmOperationalInternal":{"tmp":"tmp/tunelito_0.20.1_1784570687811_0.50070226985038","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"tunelito","version":"0.21.0","keywords":["html","markdown","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.21.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"a17d473426577155b3ae52592428f0ed45622d2c","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.21.0.tgz","fileCount":91,"integrity":"sha512-0jvyYkhVGHMPtOgQbou2YBZF0Ht7hy5b7I7mba1uFxCfFu2ZtLlD2PGIqRWHOPXp8/OWH8BzseJDudSutPGmMQ==","signatures":[{"sig":"MEYCIQCBPsQzmSA7anNpdsFzrNixQ/9GH3FnW5cLfTqbBSmw/QIhAOkNDyufxPU90N7B96piEgYIGmiAd/CGy/PGcI7taZf9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":770928},"type":"module","engines":{"node":">=22"},"gitHead":"c028209d3e2820a1c55edc0f4a0ebcc4b37b90ca","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","browser:check":"node scripts/markdown-browser-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs","theme:screenshots":"node scripts/capture-markdown-theme-screenshots.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.9.0","marked":"^18.0.5","mermaid":"11.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","devDependencies":{"playwright":"^1.61.1","@axe-core/playwright":"^4.12.1"},"_npmOperationalInternal":{"tmp":"tmp/tunelito_0.21.0_1784572366171_0.564126741735326","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"tunelito","version":"0.21.1","keywords":["html","markdown","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.21.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"76302b00908388b694bf8ea77b70938292c3fcd4","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.21.1.tgz","fileCount":92,"integrity":"sha512-2BdqmTvueLkUudXHVPYFXl1IKt4xh5e5WgKvRoluBiWVfZV5E08CLTvdwd2qe21iOWPlFh7D5Y4LhOMwNQZ9yA==","signatures":[{"sig":"MEQCIH/qB+TT/DiLuwQukxrVZLP8a3SFHSmbggtlqUOPsGF3AiBANXg4xL5L5NUV7qIexMwS4zwAVD8TPoGBbMlO5QTGCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":801719},"type":"module","engines":{"node":">=22"},"gitHead":"dba60a5c44d91f205911bbcd37b9e0094aeab801","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","browser:check":"node scripts/markdown-browser-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs","theme:screenshots":"node scripts/capture-markdown-theme-screenshots.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.9.0","marked":"^18.0.5","mermaid":"11.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","devDependencies":{"playwright":"^1.61.1","@axe-core/playwright":"^4.12.1"},"_npmOperationalInternal":{"tmp":"tmp/tunelito_0.21.1_1784573966745_0.4816318812786582","host":"s3://npm-registry-packages-npm-production"}},"0.21.2":{"name":"tunelito","version":"0.21.2","keywords":["html","markdown","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.21.2","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"804f02c767acb845041cccf0d68c890ea96ec311","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.21.2.tgz","fileCount":92,"integrity":"sha512-6Nh0ovGDeMNawsutpLyb7OpACsTJVbYj1pei4Z5YYPtv9Pkbf/qX4GltxhbkEkiBPnZ9+IO9tTMRtAL4RexGcA==","signatures":[{"sig":"MEQCIBGj0uoCRoaqV448gtYup0JzvCy2HeFEHpvn6eDPDpi1AiBtiCJFNyKTHg3Ge6oaps9wJAUZh8mldQ6cHMhB9zZUfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.21.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":805535},"type":"module","engines":{"node":">=22"},"gitHead":"2ca936f2d6277d4aec6b3e6bd6054c5e66154657","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","browser:check":"node scripts/markdown-browser-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs","theme:screenshots":"node scripts/capture-markdown-theme-screenshots.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.9.0","marked":"^18.0.5","mermaid":"11.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","devDependencies":{"playwright":"^1.61.1","@axe-core/playwright":"^4.12.1"},"_npmOperationalInternal":{"tmp":"tmp/tunelito_0.21.2_1784654074701_0.9952341897751686","host":"s3://npm-registry-packages-npm-production"}},"0.21.3":{"name":"tunelito","version":"0.21.3","keywords":["html","markdown","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.21.3","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"a9409cff19f22b202c142a8addea9d4fc90adaa0","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.21.3.tgz","fileCount":93,"integrity":"sha512-1FCMjud6CrCxuVQ+XdX4Ok49PjxmVJBskaM4ycS/Y7V/gkEFOeXNVU9aERC5uTsXiE19pvFtt+lG8txkyASuNQ==","signatures":[{"sig":"MEQCIDAwxY7f+SmmUkNVNorF0S/JnW7MVogKHgmnvu+oY7dhAiBtVPNHRQdUeaAoS1EJAYfzt2JFrmLwZd8xKozxEmKpWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.21.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":811194},"type":"module","engines":{"node":">=22"},"gitHead":"0b802c5dec3dc2c46365db438dfbdb8b85b79430","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","browser:check":"node scripts/markdown-browser-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs","theme:screenshots":"node scripts/capture-markdown-theme-screenshots.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.9.0","marked":"^18.0.5","mermaid":"11.16.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","devDependencies":{"playwright":"^1.61.1","@axe-core/playwright":"^4.12.1"},"_npmOperationalInternal":{"tmp":"tmp/tunelito_0.21.3_1785432316637_0.14787717163266767","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"tunelito","version":"0.22.0","keywords":["html","markdown","footnotes","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.22.0","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"57efb6a401d6b4858463492c6bd2ea660cc917f4","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.22.0.tgz","fileCount":94,"integrity":"sha512-taMbMq6fZ9m/fFkR8u6ZHMYxUy4ElMpLb+OIZd3tP77CXl25a4EAP1eWZ5TkQWqnDQeOb8xXSzm+lCLq66BroQ==","signatures":[{"sig":"MEQCIAqJ4tYykhs5/2xMKZvmKf+Qfr76TuiS81eQenlInNgNAiA0r0PKaCRL+xxsdFb7IDNBGGc8MVGaxoaXIcGRSvVsng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":816906},"type":"module","engines":{"node":">=22"},"gitHead":"bec4c9e0d601dcb251dfa01a19600f1f4479e32a","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","browser:check":"node scripts/markdown-browser-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs","theme:screenshots":"node scripts/capture-markdown-theme-screenshots.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.9.0","marked":"^18.0.5","mermaid":"11.16.0","marked-footnote":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","devDependencies":{"playwright":"^1.61.1","@axe-core/playwright":"^4.12.1"},"_npmOperationalInternal":{"tmp":"tmp/tunelito_0.22.0_1785433961406_0.6082767861428766","host":"s3://npm-registry-packages-npm-production"}},"0.22.1":{"name":"tunelito","version":"0.22.1","keywords":["html","markdown","footnotes","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"license":"MIT","_id":"tunelito@0.22.1","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"bin":{"tunelito":"bin/tunelito.js"},"dist":{"shasum":"2124fc638ce510f184dd55442cfbca8b60493325","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.22.1.tgz","fileCount":94,"integrity":"sha512-FRdMiZiQpAuVdi1dilpLFtb9SXee9lEBKZXjpS/kbgaBknTNSPn8JkyGS7G3GJEYUWGXpgMLAuQVAUj/fG1NIA==","signatures":[{"sig":"MEUCIDGlxsermG/1nUWdDQvSUfS2B4s2nSuVUlio9fMyz0j1AiEAhyuzQnGfFIDMLh5DXWB7DZv4I56+UZg2+jNbFluIAJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.22.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":820228},"type":"module","engines":{"node":">=22"},"gitHead":"9ecdaa2c9a642e5f69d6076518d35049450fac63","scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","docs:dev":"cd docs-site && npx mint dev --no-open","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","pack:check":"node scripts/package-smoke-check.mjs","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","smoke:check":"node scripts/smoke-check.mjs","browser:check":"node scripts/markdown-browser-check.mjs","docs:validate":"cd docs-site && npx mint validate --disable-openapi","release:check":"node scripts/release-check.mjs","theme:screenshots":"node scripts/capture-markdown-theme-screenshots.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"repository":{"url":"git+https://github.com/chekos/tunelito.git","type":"git"},"_npmVersion":"11.16.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"yaml":"^2.9.0","marked":"^18.0.5","mermaid":"11.16.0","marked-footnote":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@11.12.1","devDependencies":{"playwright":"^1.61.1","@axe-core/playwright":"^4.12.1"},"_npmOperationalInternal":{"tmp":"tmp/tunelito_0.22.1_1785436626098_0.22326927149796938","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"tunelito","version":"0.23.0","description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","type":"module","packageManager":"npm@11.12.1","bin":{"tunelito":"bin/tunelito.js"},"scripts":{"ci":"npm run check && npm run agent:check && npm run docs:check && npm test && npm run browser:check && npm run smoke:check && npm run pack:check","test":"node --test","check":"node --check bin/tunelito.js && node --check src/*.js scripts/*.mjs test/*.test.js","agent:check":"node --check .claude/hooks/*.mjs .claude/scripts/*.mjs && node .claude/scripts/validate-agent-config.mjs","docs:check":"node .claude/scripts/validate-mintlify-docs.mjs","docs:dev":"cd docs-site && npx mint dev --no-open","docs:validate":"cd docs-site && npx mint validate --disable-openapi","browser:check":"node scripts/markdown-browser-check.mjs","theme:screenshots":"node scripts/capture-markdown-theme-screenshots.mjs","release:check":"node scripts/release-check.mjs","smoke:check":"node scripts/smoke-check.mjs","pack:check":"node scripts/package-smoke-check.mjs"},"engines":{"node":">=22"},"keywords":["html","markdown","footnotes","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"homepage":"https://github.com/chekos/tunelito#readme","bugs":{"url":"https://github.com/chekos/tunelito/issues"},"repository":{"type":"git","url":"git+https://github.com/chekos/tunelito.git"},"license":"MIT","publishConfig":{"access":"public"},"dependencies":{"marked":"^18.0.5","marked-footnote":"^1.4.0","mermaid":"11.16.0","yaml":"^2.9.0"},"devDependencies":{"@axe-core/playwright":"^4.12.1","playwright":"^1.61.1"},"gitHead":"5e40e4d25abe8bb2f9a3ea482db93b3960dd31fb","_id":"tunelito@0.23.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-f30BcjFfO+KfSK0yT3Lq4vMIj3aKG6fltLbCvsGg00Wt0+QEc/Z/7BMfd4Rr5Ef9ud1qnxUSuB8cAwf9+PI8+g==","shasum":"bd5b8ff7be8c4efd2198116219b582823f688410","tarball":"https://registry.npmjs.org/tunelito/-/tunelito-0.23.0.tgz","fileCount":95,"unpackedSize":859564,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tunelito@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCk4TTCf504e9n6WmUAkA6ohr0cX+DlIgbfft41RspUCAIgHcNxzFuOxy4N6EjOKtvHGjAlaKaOIwKAQPtlzoiDK2E="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:81ebb3db-97b7-48ec-bbb4-df4c6dcc0de4"}},"directories":{},"maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tunelito_0.23.0_1785514332240_0.44754757646684373"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-22T17:15:58.482Z","modified":"2026-07-31T16:12:12.716Z","0.1.1":"2026-05-22T17:15:58.848Z","0.2.0":"2026-05-23T18:18:24.498Z","0.3.0":"2026-05-26T21:45:59.930Z","0.3.1":"2026-05-26T22:23:04.721Z","0.4.0":"2026-05-27T02:07:14.082Z","0.4.1":"2026-05-27T02:59:39.780Z","0.5.0":"2026-05-28T05:43:41.218Z","0.6.0":"2026-05-28T09:18:48.720Z","0.6.1":"2026-05-28T10:59:25.452Z","0.6.2":"2026-05-28T12:15:59.805Z","0.6.3":"2026-06-05T04:33:58.753Z","0.7.0":"2026-06-08T07:57:52.746Z","0.8.0":"2026-06-08T15:54:35.368Z","0.8.1":"2026-06-08T23:21:47.812Z","0.9.0":"2026-06-09T19:55:43.129Z","0.10.0":"2026-06-10T00:43:09.391Z","0.10.1":"2026-06-10T16:18:46.989Z","0.11.0":"2026-06-10T20:44:16.408Z","0.12.0":"2026-06-12T17:27:19.822Z","0.13.0":"2026-06-17T02:05:10.610Z","0.14.0":"2026-06-18T03:18:07.981Z","0.14.1":"2026-06-18T04:06:12.384Z","0.15.0":"2026-06-24T15:55:58.467Z","0.16.0":"2026-06-25T21:02:07.524Z","0.16.1":"2026-06-25T21:53:48.226Z","0.17.0":"2026-06-29T22:19:18.974Z","0.18.0":"2026-07-10T19:22:53.532Z","0.19.0":"2026-07-16T21:24:45.959Z","0.20.0":"2026-07-17T22:17:56.944Z","0.20.1":"2026-07-20T18:04:47.947Z","0.21.0":"2026-07-20T18:32:46.477Z","0.21.1":"2026-07-20T18:59:26.923Z","0.21.2":"2026-07-21T17:14:34.927Z","0.21.3":"2026-07-30T17:25:16.834Z","0.22.0":"2026-07-30T17:52:41.551Z","0.22.1":"2026-07-30T18:37:06.257Z","0.23.0":"2026-07-31T16:12:12.397Z"},"bugs":{"url":"https://github.com/chekos/tunelito/issues"},"license":"MIT","homepage":"https://github.com/chekos/tunelito#readme","keywords":["html","markdown","footnotes","mermaid","diagrams","review","comments","annotation","cloudflare-tunnel"],"repository":{"type":"git","url":"git+https://github.com/chekos/tunelito.git"},"description":"Serve local HTML or Markdown files and folders as temporary live review rooms with injected comments.","maintainers":[{"name":"chekos","email":"sergio@cimarron.io"}],"readme":"# Tunelito\n\n[![CI](https://github.com/chekos/tunelito/actions/workflows/ci.yml/badge.svg)](https://github.com/chekos/tunelito/actions/workflows/ci.yml)\n\nTunelito turns any local HTML or Markdown file, or a folder of HTML and Markdown files, into a temporary live review room.\n\nRun one command, share the printed URL on a call, and reviewers can select text, leave page notes, or leave site-wide notes. You can keep editing the source in your normal editor or add `--editable` to make deliberate Markdown edits from the direct local browser; connected browsers reload when files change, and reload waits while a comment or source draft is open. Comments are saved as readable markdown beside the page or folder by default, or kept in memory only with `--ephemeral`.\n\nTunelito is local-first: your files stay on your machine, the public URL is a temporary tunnel to your laptop, and source-edit access never leaves the direct loopback `Local:` URL.\n\n## Quickstart\n\nTunelito requires Node.js 22 or newer.\n\nIf you are a coding agent, load Tunelito's bundled workflow before starting a\nreview room:\n\n```bash\nnpx --yes tunelito skill show\n```\n\nUse `npx --yes tunelito skill setup` for installation guidance.\n\n```bash\nnpx --yes tunelito ./page.html\n```\n\nFor a Markdown memo or draft:\n\n```bash\nnpx --yes tunelito ./notes.md\n```\n\nTo edit that Markdown source from Tunelito's local browser while keeping the\npublic review link read-only:\n\n```bash\nnpx --yes tunelito ./notes.md --editable --open\n```\n\nFor a folder-backed mini-site:\n\n```bash\nnpx --yes tunelito ./site\n```\n\nFolder reviews write one Markdown inbox beside the folder:\n\n```text\nsite/\nsite.comments.md\n```\n\nEach comment includes a scope, page path, and visible comment id, so Claude Code, Codex, or another local agent can watch that file, apply edits to the matching HTML or Markdown file or the whole folder when a comment is site-wide, and continue larger comments across bounded follow-up passes.\n\nTo let a local agent handle comments while Tunelito runs:\n\n```bash\nnpx --yes tunelito ./site --agent codex\n```\n\nUse `--agent claude` for Claude Code, or `--agent-command \"<your command>\"` for another local CLI. Tunelito sends prompts to that command on stdin and tracks handled comment IDs in `.tunelito/agent/state.json`.\n\nIf you are already inside Claude Code, Codex, or another agent session, use agent-session mode instead of spawning a child agent:\n\n```bash\nnpx --yes tunelito ./site --agent-session --no-tunnel --open\n```\n\nThe same Tunelito process serves the review room, watches the comments inbox, claims the next actionable comment, and prints a prompt for the current agent. Reviewers see agent work status on each browser comment card, so feedback can move from queued to being worked on to integrated without opening the markdown inbox. After editing, record the result with the `tunelito inbox record --claim ...` command from the prompt.\n\nTo see the same live checklist in the terminal:\n\n```bash\nnpx --yes tunelito inbox status ./site\n```\n\nFrom a clone:\n\n```bash\nnpm install\nnpm link\ntunelito ./examples/simple-review.html\n```\n\nTunelito prints:\n\n```text\nTunelito is running\nLocal:   http://127.0.0.1:4317/?tunelito_key=...\nComments: /path/to/page.comments.md\nAccess:  review key required by the printed URLs\nPublic:  https://example.trycloudflare.com/?tunelito_key=...\n```\n\nTunelito prints `Public:` only after the randomized Quick Tunnel hostname has\nbeen verified against the running Tunelito server. Agent sessions also persist\nthat verified URL in `.tunelito/session.json` for recovery. Share that URL with the\nperson on your call. Open the `Local:` URL yourself; direct local sessions are\nmarked as the owner, while public tunnel sessions are marked as visitors.\n\nTo seed your local owner display name:\n\n```bash\ntunelito ./page.html --owner \"Chekos\"\n```\n\nTunelito assigns everyone else a friendly editable display name, so comments from multiple reviewers are easy to tell apart.\n\nFor local-only work:\n\n```bash\ntunelito ./page.html --no-tunnel --open\n```\n\nTo diagnose local setup, target paths, comments inbox health, agent ledger JSON, port availability, tunnel availability, and risky auth/tunnel combinations without starting a server:\n\n```bash\ntunelito doctor ./page.html --json\n```\n\nTo use a named Markdown theme:\n\n```bash\ntunelito ./notes.md --theme editorial\n```\n\nTunelito uses dark-only `bns-pitaya` when no theme is configured. It also includes the named `default`, `editorial`, and `technical` themes. See [Markdown themes and configuration](#markdown-themes-and-configuration) for persistent project and global settings.\n\nFor in-meeting collaboration without writing comments to disk:\n\n```bash\ntunelito ./page.html --ephemeral\n```\n\n## What Reviewers Can Do\n\n- Select text on desktop or mobile.\n- Tap `Comment` and leave a note on the selected text.\n- Add a `Page note` without selecting text.\n- Add a `Site note` that appears on every page in a folder review.\n- Keep or edit their assigned display name. Renaming updates earlier comments from the same reviewer identity.\n- Toggle a local pointer halo on fine-pointer devices when pointing during a call.\n- See other comments appear live.\n- In `--ephemeral`, see peer cursors, live selection highlights, and pointer halos when the browser can connect peer-to-peer.\n- In persistent sessions, open the generated markdown comments file from the panel.\n\n## What You Control\n\n- The source HTML and Markdown files remain untouched by Tunelito's annotation layer.\n- Source edits happen in your normal editor unless you explicitly enable the direct-local Markdown editor with `--editable`.\n- Browser saves use optimistic conflict protection: they require the source revision that was opened, recheck it immediately before replacement, and atomically replace the file only when that observed revision is still current.\n- Saved HTML or Markdown changes trigger a live reload in connected browsers; dirty comment and source drafts defer that reload.\n- Comments persist to `<page-or-folder>.comments.md` unless you choose another path with `--out`.\n- `--ephemeral` keeps comments in memory only; the session disappears when the local server exits.\n\n## Markdown Review Surfaces\n\nMarkdown reviews keep the source file untouched while adding presentation-only surfaces to the served response:\n\n- HTML comments are author-only source notes: complete inline and block `<!-- ... -->` comments are omitted from the rendered review surface. Literal comment syntax inside inline or fenced code remains visible, and Tunelito never rewrites the Markdown file.\n- Native `<details>` and `<summary>` disclosures are the only raw HTML elements rendered from Markdown. Tunelito strips every attribute except a normalized boolean `open` on `<details>`, keeps all other HTML escaped, and opens collapsed ancestors when a sidebar comment targets text inside them.\n- GFM footnote references render as numbered links to a footnotes section, with a back-link for every reference. Definitions remain selectable and commentable, while undefined references and footnote syntax inside code stay literal.\n- In folder sessions, the collapsible left sidebar begins with a clearly labeled `Tunelito navigation` section. Root documents remain visible, folders use independent native disclosures that start closed, every nested Markdown/HTML document remains reachable, and the current document is marked in text and with `aria-current=\"page\"`. Single-file sessions do not receive a one-item tree.\n- A leading YAML front-matter mapping appears as a separate source-derived `Properties` section in that sidebar. Tunelito recognizes it only at the start of the file (after an optional UTF-8 BOM) with complete `---` delimiters. Real YAML scalars, quoted strings, booleans, numbers, dates, arrays, and nested values are accepted in source order. Parsing is bounded to 64 KB and eight nested levels. Invalid YAML leaves the article readable and exposes an escaped copy of the original front matter in an accessible error disclosure. Notes without front matter simply omit this section.\n- Obsidian wiki references render without bracket noise: `[[Note]]`, `[[Note|Alias]]`, `[[Note#Heading]]`, `[[#Heading]]`, and `[[Note#Heading|Alias]]`. This release deliberately does not resolve a vault, create fake links, or support `![[embeds]]`; unresolved references are styled inline text with normalized target metadata for future navigation. Wiki syntax inside inline/fenced code, escaped literals, and escaped raw HTML remains literal.\n- A compact, vertically centered document-map dial at the desktop right edge derives one tick from every real top-level heading, paragraph, list, blockquote, code block, table, figure, Mermaid figure, or thematic break. Its track is capped at 500px and preserves 60px of vertical breathing room on shorter desktop viewports. Heading ticks step from h1 (longest) through h6; h5 and h6 remain navigable 14px and 12px heading marks rather than disappearing. The current block is teal, consumed marks recede toward the theme background, and heading labels expand while the dial is hovered or visibly keyboard-focused, then retreat when the pointer leaves. Every tick navigates; Arrow keys, Page keys, Home, End, and Escape support keyboard use without a separate pin control, paragraph hashes, or a visual progress number.\n\nWith `--editable`, safely served Markdown pages add a focused source editor only to the direct loopback owner response. Save and Cmd/Ctrl-S use a strong base revision, a bounded UTF-8 request, fresh path validation, and atomic replacement that preserves permissions. Tunelito optimistically rechecks the revision immediately before replacement; when it observes another editor or agent changed the file first, it keeps the browser draft and requires an explicit discard/refresh. Generated folder pages, HTML, hidden/blocked files, comments, config, symlink escapes, and `.tunelito/` state are never editable. Comments remain in the sidebar when edited text disappears and are labeled `Selection no longer found in this version`.\n\nThe left sidebar opens on a first desktop visit and remembers its collapsed/open preference across full-page reloads. Narrow layouts start with a collapsed sheet, and the document map is hidden at 760px and below. On wide desktops the map shifts beside an open comments panel; at narrower desktop widths it temporarily hides while comments are open. Both surfaces respect dark mode and `prefers-reduced-motion`, and `--markdown-css` still loads after the built-in Markdown styles.\n\nWhen a folder URL has no authored `index.html` or `index.md`, Tunelito serves an intentional folder landing page instead of a raw listing. It shows only the immediate served documents and child folders, distinguishes their types, provides a parent link for nested folders, and uses the active Markdown theme without writing an index into the source tree.\n\n## Markdown Themes and Configuration\n\nTunelito ships four dependency-free themes:\n\n- `bns-pitaya` (default): a dark reading theme adapted from the [BNS Obsidian Pitaya Theme](https://github.com/chekos/bns-obsidian-pitaya-theme), using local font names with system fallbacks and no copied stylesheet, bundled fonts, or network assets\n- `default`: the original neutral, system-sans review surface\n- `editorial`: a spacious serif-led layout for essays and long-form drafts\n- `technical`: a wider, denser sans/mono layout for code, tables, diagrams, and documentation\n\nWithout a CLI, project, or global theme setting, Markdown documents and generated folder pages use `bns-pitaya`. Choose `--theme default` to retain the original neutral light/dark surface.\n\nChoose one for a session:\n\n```bash\ntunelito ./notes.md --theme technical\n```\n\nPersist a project setting beside the selected file or inside the selected folder as `tunelito.config.json`:\n\n```json\n{\n  \"theme\": \"editorial\",\n  \"markdownCss\": \"./review.css\"\n}\n```\n\nGlobal defaults live at `$XDG_CONFIG_HOME/tunelito/config.json`, or `~/.config/tunelito/config.json` when `XDG_CONFIG_HOME` is unset. Resolution is deterministic:\n\n```text\nCLI flags > project config > global config > Tunelito defaults\n```\n\nFor config-file `markdownCss`, local file paths are resolved relative to the config file and loaded into the served Markdown page. HTTP(S) values remain stylesheet links. `--markdown-css` remains a one-session stylesheet link and has final precedence after the built-in shell, selected theme, and configured CSS.\n\nInspect the effective settings and their source layers without starting a server:\n\n```bash\ntunelito config show ./notes.md\ntunelito config show ./notes.md --json\n```\n\nProject config files affect presentation only and are blocked from folder-mode static serving.\n\nThe public [configuration guide](docs-site/configuration.mdx) documents the stable `--tl-*` token contract for typography, H1–H6 hierarchy, links, code, Mermaid, metadata, ruler state, and focus treatments.\n\n## CLI\n\n```text\nTunelito 0.23.0\n\nUsage: tunelito <page.html|notes.md|folder> [options]\n       tunelito doctor [page.html|notes.md|folder] [options]\n       tunelito mcp\n       tunelito comments inspect <page.html|notes.md|folder|comments.md> [options]\n       tunelito review watch [page.html|notes.md|folder] [options]\n       tunelito inbox <next|watch|status|record> <page.html|notes.md|folder> [options]\n       tunelito session status [page.html|notes.md|folder] [options]\n       tunelito config show [page.html|notes.md|folder] [options]\n       tunelito skill <show|setup|install>\n\nCoding agents:\n  Before serving a review room, load the bundled workflow:\n    tunelito skill show\n  Installation guidance:\n    tunelito skill setup\n\nSession model:\n  Default               Persistent Markdown comments plus browser hot reload\n  Real-time sync        WebSocket in every session; WebRTC peers with --ephemeral\n  --ephemeral           In-memory comments that are lost when the server stops\n  --agent-session       Current coding-agent conversation watches persistent feedback\n  --agent               Spawn a separate local coding-agent worker\n  Tunnel exposure       Enabled by default; --no-tunnel keeps the room local\n\nOptions:\n  --port <number>       Port to listen on (default: first free from 4317)\n  --host <host>         Host to bind locally (default: 127.0.0.1)\n  --out <path>          Markdown comments file (default: <page-or-folder>.comments.md)\n  --theme <name>        Markdown theme: default|editorial|technical|bns-pitaya\n  --markdown-css <href> Add a stylesheet link to rendered Markdown pages\n  --editable            Let the direct local owner edit safely served Markdown\n  --owner <name>        Seed the editable owner name for the direct local viewer\n  --ephemeral           Keep comments in memory only; all feedback is lost on restart\n  --live                Deprecated alias for --ephemeral\n  --agent <codex|claude|custom>\n                        Run a local coding-agent worker for persistent comments\n  --agent-command <cmd> Custom shell command for --agent custom; prompt is sent on stdin\n  --agent-interval <s>  Agent fallback polling interval in seconds (default: 120)\n  --agent-policy <mode> Which comments are actionable: all|mention|owner|owner-or-mention (default: all)\n  --agent-trigger <txt> Marker for mention policies, or \"all\" (default: all)\n  --agent-instructions <txt>\n                        Append host instructions to the built-in agent prompt\n  --agent-instructions-file <path>\n                        Append host instructions from a file\n  --agent-prompt <txt>  Replace the built-in agent behavior prompt\n  --agent-prompt-file <path>\n                        Replace the built-in agent behavior prompt from a file\n  --agent-max-attempts <n>\n                        Stop retrying a comment after n attempts (default: 2)\n  --agent-max-passes <n>\n                        Stop continuing a multi-pass comment after n agent passes (default: 3)\n  --agent-state <path>  Agent resolution ledger (default: <target>/.tunelito/agent/state.json)\n  --agent-session       Watch comments for the current agent session; do not spawn a worker\n  --no-tunnel           Only print the local URL; do not start Cloudflare Tunnel\n  --no-auth             Disable the generated review-key URL gate\n  --open                Open the local URL in your default browser\n  -v, --version         Show version\n  -h, --help            Show this help\n\nCommands:\n  doctor                Run read-only local setup and safety diagnostics\n  mcp                   Start a stdio MCP server for comments and inbox tools\n  comments inspect      Print a structured JSON index for a Tunelito comments inbox\n  review watch          Wait for a browser Done Reviewing handoff event\n  inbox next            Claim the next pending comment and print an agent prompt\n  inbox watch           Wait for the next pending comment, then print an agent prompt\n  inbox status          Print a live to-do tracker from the comments inbox and ledger\n  inbox record          Record the active agent's result for one comment\n  session status        Inspect and recover the last session for a target\n  config show           Print resolved Markdown configuration and its source layers\n  skill show            Print the distributable Tunelito agent skill (SKILL.md)\n  skill setup           Print no-write setup guidance for common coding agents\n  skill install         Install the skill for Codex or Claude at user or project scope\n```\n\n## Agent Skill\n\nTunelito ships an agent skill that teaches a coding agent (Claude Code, Codex, Cursor, and others) how to drive Tunelito: starting and sharing a review session safely, keeping sensitive pages local, and applying the comments from a `*.comments.md` inbox.\n\nThe stable skill body is:\n\n```bash\nnpx --yes tunelito skill show\n```\n\nFor guided no-write setup instructions:\n\n```bash\nnpx --yes tunelito skill setup\n```\n\nPreview and explicitly install to a verified discovery path:\n\n```bash\ntunelito skill install --agent codex --scope user --dry-run\ntunelito skill install --agent codex --scope project\ntunelito skill install --agent claude --scope user\ntunelito skill install --agent claude --scope project\n```\n\nCodex user skills live under `~/.agents/skills`; Codex project skills live under `.agents/skills`. Claude user skills live under `~/.claude/skills`; Claude project skills live under `.claude/skills`. Installation never happens automatically, preserves existing files by default, reports the existing and proposed versions, and requires `--force` to replace modified content.\n\n## How It Works\n\nTunelito serves HTML from disk or renders Markdown into a readable page, then injects small same-origin clients into the response. Markdown themes, author-comment hiding, front matter, wiki references, Mermaid, and the document map are applied or discovered only in the served page. For folder targets, every served `.html`, `.htm`, or `.md` page gets the annotation client and shares one comments inbox. Page-scoped comments appear only on their current page; site-scoped comments appear on every page in that folder session. The injected client handles selection, unanchored page/site notes, highlights, live sync, optional pointer halos, and reload notices. The original source files are not modified by Tunelito's annotation layer; only an explicit direct-local `--editable` save writes a Markdown source.\n\nThe server also:\n\n- serves sibling assets relative to the selected file, or non-hidden files within the selected folder\n- renders Markdown with one of four bundled themes, project/global JSON configuration, and optional final `--markdown-css <href>` team styling\n- omits complete HTML comments from the reader surface while preserving their source text and literal code examples\n- renders sanitized Markdown `<details>`/`<summary>` disclosures while escaping every other raw HTML element\n- renders GFM footnotes as numbered two-way links without weakening definition-content sanitization\n- builds security-filtered folder landing pages and a collapsed served-document tree for Markdown directory sessions\n- parses bounded leading YAML front matter into a separate escaped, reload-persistent Properties section with a readable invalid-YAML fallback\n- renders common Obsidian wiki references as semantically honest inline references without vault-wide resolution or embed support\n- builds a keyboard-accessible, opacity-based desktop document map from the real rendered Markdown blocks, including explicit h1–h6 navigation\n- renders fenced `mermaid` blocks from a packaged same-origin runtime, with Mermaid strict security, bounded diagram complexity, and an accessible source fallback if JavaScript or diagram syntax fails\n- can expose an opt-in, local-owner-only Markdown source route with conditional atomic saves while keeping public tunnel responses read-only\n- writes comments to markdown atomically\n- restores prior comments from hidden Tunelito metadata in that markdown\n- can run an opt-in local agent worker against persistent comments\n- relays WebRTC signaling and ephemeral fallback events, including peer cursors and pointer halos, in `--ephemeral`\n- starts `cloudflared tunnel --url <local-url>` when available\n- falls back to `npx cloudflared@latest` when `cloudflared` is not installed\n\nSet `TUNELITO_CLOUDFLARED_PACKAGE=cloudflared@<version>` to pin the fallback package used by `npx` while keeping the default behavior on `cloudflared@latest`.\n\n## Access Model\n\nShared sessions include a generated `tunelito_key` in the printed URLs by default. The key is bearer access: anyone with the full URL can view the page and leave comments. The first valid request sets a short-lived, HTTP-only cookie so page assets and WebSocket sync keep working.\n\nTunelito assigns roles on the server. Requests made through the direct loopback `Local:` URL are treated as the owner; requests made through public tunnel or forwarded URLs are treated as visitors. `--owner <name>` only seeds the editable display name for the local owner. Visitors cannot become owners by changing browser state or submitted comment fields, and the public tunnel URL never carries owner privileges. If the owner opens the `Public:` URL, that browser is treated as a visitor.\n\nOwner-authored comments are marked in Markdown, and the local owner can approve specific visitor comments for local-agent work. The local agent worker receives the owner name when configured, each comment's author role, and any owner approval metadata. Owner labels are still collaboration metadata, not account authentication; the review key remains the access gate.\n\n`--no-auth` only removes the review-key gate; it does **not** disable the tunnel. A tunneled session started with `--no-auth` is a public, unauthenticated URL that anyone who finds it can open and comment on. It still cannot use `--editable`, which requires a direct loopback request, but the reviewed document is exposed. If you want no key you almost always want local-only too, so add `--no-tunnel`. Use `--no-auth` only for local demos or trusted networks.\n\n`--ephemeral` changes persistence, not exposure: it keeps comments in memory instead of writing them to disk, but the session is still served over the same tunnel and review key. For sensitive material, prefer `--no-tunnel` (optionally with `--ephemeral`) or avoid sharing the session link. `--live` remains a deprecated alias and prints a warning.\n\n## Comment Files\n\nBy default:\n\n```text\npage.html\npage.comments.md\n```\n\nFor folder targets, the default comments file is beside the folder:\n\n```text\nsite/\nsite.comments.md\n```\n\nThe markdown is meant to be readable in any editor:\n\n```markdown\n# Tunelito comments for `page.html`\n\n## Jane at 2026-05-22 18:00:00 UTC\n\n> selected text\n\nThis sentence needs a clearer verb.\n\n_Context: scope: `page` · page: `/about.html` · path: `body > main > p` · text offset: 42 · id: `c_...`_\n```\n\nOwner comments add an owner marker:\n\n```markdown\n## Chekos (owner) at 2026-05-22 18:02:00 UTC\n\n> selected text\n\nShip this version after the headline change.\n\n_Context: author role: `owner` · scope: `page` · page: `/` · path: `body > main > h1` · text offset: 0 · id: `c_...`_\n```\n\nUnanchored notes are stored without a selected quote:\n\n```markdown\n## Jane at 2026-05-22 18:05:00 UTC\n\n_Site note (no selected text)._\n\nUse the same heading rhythm across every itinerary page.\n\n_Context: scope: `site` · page: `/day-03.html` · id: `c_...`_\n```\n\nIf a site comment is created from selected text, Tunelito keeps the quote for context and highlights it on the origin page only.\n\nTunelito also stores hidden metadata comments so the live session can be restored after a restart. That metadata includes a stable reviewer identity for new comments, which lets a reviewer rename themselves and update earlier comments from the same browser session. Older comments without reviewer identity metadata are left unchanged during renames instead of being guessed by matching display names.\n\nAgents and tools can read a structured JSON view of the same Markdown inbox:\n\n```bash\ntunelito comments inspect ./site --json\ntunelito comments inspect ./site --out ./custom.comments.md --json\ntunelito comments inspect ./site.comments.md --agent-state ./site/.tunelito/agent/state.json --json\ntunelito comments inspect ./site.comments.md --json\n```\n\nThe JSON index is derived from hidden Tunelito metadata; it does not replace the readable Markdown file or write to source files. For page or folder targets, the index also includes per-comment agent status from `.tunelito/agent/state.json` when a ledger is available, plus top-level pending, unhandled, and completed counts. Missing default comments files for page or folder targets return an empty index, while direct inspection of a missing or unrecognized Markdown file returns diagnostics.\n\nIn `--ephemeral`, comments are not written to markdown and are not restored after restart.\n\n## Agent Comment Loop\n\nThe persistent comments file is a practical inbox for Claude Code, Codex, or another local coding agent. Folder comments include `scope: ...`, `page: ...`, and `id: ...` in their visible context. Local owner comments carry `authorRole: \"owner\"`; public tunnel comments carry `authorRole: \"visitor\"`. When `--owner` is set, the worker prompt also includes the owner name, each comment's author role, and owner approval metadata for approved visitor comments. Host instructions can ask the agent to prefer owner comments or wait for owner approval.\n\nIf you are already inside an agent session, let the current agent own the loop:\n\n```bash\ntunelito ./site --agent-session --owner \"Chekos\" --agent-policy owner-or-mention --agent-trigger \"@agent\"\n```\n\nEvery served target gets a private, atomic `.tunelito/session.json` lifecycle record beside the served root. `--agent-session` also watches the comments markdown in the same process and prints a bounded prompt whenever it claims an actionable comment for the current agent. It does not spawn a nested worker. After editing the source files, record the outcome with the claim id from the printed command:\n\n```bash\ntunelito inbox record ./site --id c_... --claim claim_... --status resolved --summary \"Updated the hero copy.\" --file index.html\n```\n\nThe browser panel shows matching status badges and task details on each comment card. Use `tunelito inbox status ./site` to print the current tracker in the terminal. Pending and claimed comment work appears as unchecked tasks, claimed work includes the active claim id, and completed work is printed as checked and crossed out.\n\nFrom a second shell, inspect or recover the review room without reaching for `ps` or `lsof`:\n\n```bash\ntunelito session status ./site\ntunelito session status ./site --json\ntunelito session status ./site --redact\n```\n\nStatus verifies the listener against the recorded session identity, reports `running`, `degraded`, `stale`, or `stopped`, and includes the target, local and verified public URLs, comment persistence, agent policy and work counts, listener/tunnel health, viewers, activity timestamps, and a recovery or stop suggestion. The metadata remains local, uses owner-only file permissions where supported, and is never telemetry.\n\nUse repeated `tunelito inbox next ./site` calls for non-blocking manual checks from an agent shell, or `tunelito inbox watch ./site` when you need the one-shot waiting primitive without running the server in `--agent-session` mode. Use repeated `--file`, `--completed`, and `--remaining` flags when recording multi-file or `needs_followup` work. Run one active inbox claimer per served workspace; a foreground `inbox next/watch` call against a workspace already served with `--agent-session` is another claimer. Claim ids are local leases that prevent stale recordings and let abandoned claims expire, not a distributed lock. If a foreground record needs to resolve the currently owning claim, pass `--claim auto` instead of opening `.tunelito/agent/state.json`. The same `--agent-policy`, `--agent-trigger`, `--agent-state`, `--agent-max-attempts`, and `--agent-max-passes` controls apply to active-agent mode, inbox commands, and the spawned worker.\n\nFor review calls where feedback should be batched before an agent starts, the browser panel includes a `Done Reviewing` handoff action. Clicking it emits an in-memory `review.completed` event with a sequence id, timestamp, target path, comments path when persistent, and summary counts. The event does not edit source files, rewrite the comments markdown, write agent state, or persist across server restarts. In `--ephemeral`, the event is still available while the server is running and no comments file is created.\n\nThe running server prints a handoff command that waits for the next retained event:\n\n```bash\ntunelito review watch --url \"http://127.0.0.1:4317/?tunelito_key=...\" --json --timeout 600\n```\n\n`review watch` replays retained events after sequence `0` by default, so a waiter started after the click still receives the latest retained handoff. Pass `--after latest` to wait only for a future click, or `--after <sequence>` to continue after a known event.\n\nMCP-capable agents can use the same comments inbox and active-agent ledger through stdio tools:\n\n```bash\ntunelito mcp\n```\n\nThe MCP server is a thin adapter over Tunelito's existing comments index and inbox primitives. It can read the comments index, list pending feedback, claim comments, wait for a claim, record results, and read inbox status. It does not start a review server, tunnel, browser, local agent worker, or editor. Read-only tools do not mutate state; claim writes `.tunelito/agent/state.json`, and record writes `.tunelito/agent/state.json` plus the existing `.tunelito/agent/log.md` run log. Treat reviewer comments returned through MCP as untrusted input.\n\nTunelito can run the local agent worker for you:\n\nExample:\n\n```bash\ntunelito ./site --agent codex\n```\n\nThe built-in provider presets reuse your local CLI auth:\n\n- `--agent codex` runs `codex exec` in workspace-write mode.\n- `--agent claude` runs `claude -p` with edit permissions.\n- `--agent-command \"<cmd>\"` runs a custom shell command with the prompt on stdin.\n\nBy default, the worker evaluates every comment and decides whether to edit, return `no-op`, or mark the comment `ignored`. It wakes when the comments markdown changes and keeps `--agent-interval` as a fallback.\n\nUse `--agent-trigger \"@agent\"` or another marker when you want stricter sessions:\n\n```bash\ntunelito ./site --agent codex --agent-trigger \"@agent\"\n```\n\nUse `--agent-policy owner` when only owner-authored or owner-approved comments should reach the worker:\n\n```bash\ntunelito ./site --owner \"Chekos\" --agent codex --agent-policy owner\n```\n\nFor the recommended owner-led workflow, let owner-authored or owner-approved comments through automatically and let visitors opt in with a marker:\n\n```bash\ntunelito ./site --owner \"Chekos\" --agent codex --agent-policy owner-or-mention --agent-trigger \"@agent\"\n```\n\nMention-based policies require a non-`all` trigger marker.\n\nLarge actionable comments can span multiple agent passes. The agent can return `needs_followup` with `completedTasks` and `remainingTasks`; Tunelito queues the same comment again with that continuation context until it is `resolved`, `blocked`, `partial`, or reaches `--agent-max-passes`.\n\n```bash\ntunelito ./site --agent codex --agent-max-passes 5\n```\n\nAdd host-specific guidance without changing code:\n\n```bash\ntunelito ./site --agent codex --agent-instructions \"Keep copy concise and preserve the existing layout.\"\n```\n\nUse `--agent-instructions-file instructions.md` for longer guidance. Use `--agent-prompt` or `--agent-prompt-file` to replace the built-in behavior prompt; Tunelito still appends the workspace context, required JSON shape, and pending comments.\n\nHandled comments are recorded in `.tunelito/agent/state.json` with statuses like `resolved`, `needs_followup`, `no-op`, `ignored`, `blocked`, `partial`, and `stale`. That state file powers the browser card badges, prevents the worker from repeating the same edit after the source text changes and the original highlight becomes stale, and lets a large inline, page, or site comment continue from its saved remaining tasks. A readable run log is written to `.tunelito/agent/log.md`; Tunelito blocks both files from static serving and ignores `.tunelito` ledger writes for browser reloads.\n\nTreat `--agent` as trusted-session behavior: reviewer comments become instructions to a local process that can edit files.\n\nManual agent prompt for older builds:\n\n```text\nMonitor site.comments.md every 2 minutes. For each new actionable comment, edit the matching HTML or Markdown file, then summarize the comment id and change made.\n```\n\nQuick walkthrough:\n\n1. Run `npx --yes tunelito ./site --agent codex --no-tunnel --open`.\n2. Select text in the browser and leave a comment.\n3. The local worker invokes Codex for new unresolved comments.\n4. Codex edits the source HTML or Markdown file named by a page-scoped comment's `page: ...` context, or the relevant files for a site-scoped comment.\n5. If Codex returns `needs_followup`, Tunelito sends the same comment again with completed and remaining tasks on the next pass.\n6. Tunelito reloads connected browsers after saved HTML changes, deferring the reload when a reviewer has an open comment composer so unsubmitted text is not lost.\n\n## Live Mode\n\n`--ephemeral` is for in-the-meeting collaboration. Comments, cursors, and selection highlights stay in memory and disappear when the local server exits.\n\nTunelito uses WebRTC data channels between browsers when possible. The authenticated WebSocket connection remains open for room membership, WebRTC signaling, file-change reloads, and fallback relay if a peer-to-peer connection cannot be established. Tunelito does not configure third-party STUN or TURN servers, so some remote networks will use the relay fallback.\n\n## Pre-call Checklist\n\nBefore sharing a live session:\n\n1. Run `npx --yes tunelito ./page.html`.\n2. Wait for the `Public:` URL.\n3. Open that URL on your phone.\n4. Select text and submit a short comment.\n5. Add a short page note or site note from the comments panel.\n6. Confirm the terminal logs `Comment from ...`.\n7. Confirm `<page>.comments.md` contains the comment with `scope: ...`.\n8. Edit and save the source file; the phone should reload.\n\nFor an ephemeral call, run with `--ephemeral` and skip the markdown-file check.\n\n## Packaging a Release Tarball\n\n```bash\nnpm run ci\nnpm pack\nnpm install -g ./tunelito-0.5.0.tgz\n```\n\nThe package includes the CLI, runtime source, examples, docs, changelog, license, and security policy.\n\n## Project Docs\n\n- [Security policy](./SECURITY.md)\n- [Release process](./docs/RELEASING.md)\n- [Agent playbooks](./docs/agents/START_HERE.md)\n- [Mintlify docs source](./docs-site/README.md)\n- [Examples](./examples/README.md)\n\n## Current Limits\n\n- Text annotations work best on real DOM text.\n- Canvas, video, images, and cross-origin iframes are not yet annotatable.\n- If the exact commented text changes, the comment remains in markdown and the sidebar, but the highlight may not reattach.\n- Strict in-page CSP meta tags are removed from the served response so the injected same-origin client can run.\n- Mermaid is served from the installed Tunelito package rather than a CDN, stays behind the same review-key gate, uses `securityLevel: \"strict\"`, disables HTML labels and diagram click behavior, and preserves escaped source in a collapsible fallback. Diagram authors can add Mermaid `accTitle` and `accDescr` lines for accessible SVG labels.\n- WebRTC peer-to-peer connections depend on browser and network support; the WebSocket relay keeps `--ephemeral` usable when direct peer connections fail.\n","readmeFilename":"README.md"}