{"_id":"@bigduu/lotus-next","_rev":"5-5d3b647147ee41070b6854b7bdc64228","name":"@bigduu/lotus-next","dist-tags":{"latest":"2026.9.22"},"versions":{"2026.9.12":{"name":"@bigduu/lotus-next","version":"2026.9.12","license":"UNLICENSED","_id":"@bigduu/lotus-next@2026.9.12","maintainers":[{"name":"bigduu","email":"mugeng.du@gmail.com"}],"homepage":"https://github.com/bigduu/lotus-next#readme","bugs":{"url":"https://github.com/bigduu/lotus-next/issues"},"dist":{"shasum":"07099f3d416ef7a9dd97d91300908f9def73d10a","tarball":"https://registry.npmjs.org/@bigduu/lotus-next/-/lotus-next-2026.9.12.tgz","fileCount":37,"integrity":"sha512-05CZL5w+b9GpDicVu3uHUXBBdJCbgRr6/ZWYuSRWZpkU89jpwj177iitUL5ublGdZCJnyVcB+ybggo2XUnehrA==","signatures":[{"sig":"MEUCIQCS87wQkr1tRNyxSD8f3adKF7A6qeupEwW/5ui8b1r1dAIgKBSVLMQYibiumRIFKePf3R9RiCR+TjV38FtPAfJPkJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bigduu%2flotus-next@2026.9.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16417766},"type":"module","_from":"file:bigduu-lotus-next-2026.9.12.tgz","engines":{"node":">=22.12.0"},"private":false,"scripts":{"dev":"vite","lint":"oxlint --deny-warnings","test":"vitest","build":"tsc -b && vite build && node scripts/artifact-manifest.mjs generate","verify":"npm run type-check && npm run lint && npm run test:run && npm run architecture:check && npm run build && npm run package:contents","prepack":"npm run build","preview":"vite preview","test:e2e":"npm run build && npm run test:e2e:built","test:run":"vitest run","pack:check":"npm run build && npm run package:contents","type-check":"tsc -b --pretty false","test:e2e:built":"playwright test","artifact:verify":"node scripts/artifact-manifest.mjs verify","package:contents":"node scripts/verify-package.mjs","architecture:check":"node scripts/check-architecture.mjs","test:e2e:real-bamboo":"npm run build && npm run test:e2e:real-bamboo:built","test:e2e:real-bamboo:built":"playwright test --config=playwright.real-bamboo.config.ts"},"_npmUser":{"name":"bigduu","email":"mugeng.du@gmail.com"},"_resolved":"/home/runner/work/lotus-next/lotus-next/bigduu-lotus-next-2026.9.12.tgz","_integrity":"sha512-05CZL5w+b9GpDicVu3uHUXBBdJCbgRr6/ZWYuSRWZpkU89jpwj177iitUL5ublGdZCJnyVcB+ybggo2XUnehrA==","repository":{"url":"git+https://github.com/bigduu/lotus-next.git","type":"git"},"_npmVersion":"11.19.0","description":"Standalone Lotus Next frontend assets for the Bamboo runtime and Bodhi shell.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"clsx":"^2.1.1","dexie":"^4.4.4","jspdf":"^4.2.1","react":"^19.2.7","i18next":"^26.3.2","mermaid":"^11.16.1","zustand":"^5.0.14","react-dom":"^19.2.7","remark-gfm":"^4.0.1","streamdown":"^2.6.0","html2canvas":"^1.4.1","tailwindcss":"^4.3.1","lucide-react":"^1.21.0","react-i18next":"^17.0.8","react-markdown":"^10.1.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","@streamdown/cjk":"^1.0.3","rehype-sanitize":"^6.0.0","@msgpack/msgpack":"^3.1.3","@streamdown/code":"^1.1.1","@tailwindcss/vite":"^4.3.1","@streamdown/mermaid":"^1.0.2","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tauri-apps/plugin-fs":"^2.5.1","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^16.1.1","@tauri-apps/plugin-dialog":"^2.7.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pako":"2.2.0","vite":"^8.1.0","jsdom":"^27.1.0","oxlint":"^1.69.0","vitest":"^4.0.18","typescript":"~6.0.2","@types/node":"^24.13.2","@types/react":"^19.2.17","@playwright/test":"^1.62.1","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2","@tailwindcss/typography":"^0.5.20","@types/react-syntax-highlighter":"^15.5.13"},"_npmOperationalInternal":{"tmp":"tmp/lotus-next_2026.9.12_1789232635289_0.7814722917315682","host":"s3://npm-registry-packages-npm-production"}},"2026.9.13":{"name":"@bigduu/lotus-next","version":"2026.9.13","license":"UNLICENSED","_id":"@bigduu/lotus-next@2026.9.13","maintainers":[{"name":"bigduu","email":"mugeng.du@gmail.com"}],"homepage":"https://github.com/bigduu/lotus-next#readme","bugs":{"url":"https://github.com/bigduu/lotus-next/issues"},"dist":{"shasum":"612002f088537f5ca063696de3621853051ae486","tarball":"https://registry.npmjs.org/@bigduu/lotus-next/-/lotus-next-2026.9.13.tgz","fileCount":37,"integrity":"sha512-6ASx73u1RaPHJKwg5mjlvqQMh5mf0qiCr8KDFvsOPGwIOC3EcDzpY2/teD4DVxdIJABOO8oWztuZo6W/gAhSjQ==","signatures":[{"sig":"MEUCIDt9d3U1TTT0tAp13+SUJ/FgOiMkEdtsoSNA4Q/LHqjfAiEAomvbs+a6OD+4SyrdipkN2xZEcyjjOkooSo5zHduZGaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bigduu%2flotus-next@2026.9.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16417766},"type":"module","_from":"file:bigduu-lotus-next-2026.9.13.tgz","engines":{"node":">=22.12.0"},"private":false,"scripts":{"dev":"vite","lint":"oxlint --deny-warnings","test":"vitest","build":"tsc -b && vite build && node scripts/artifact-manifest.mjs generate","verify":"npm run type-check && npm run lint && npm run test:run && npm run architecture:check && npm run build && npm run package:contents","prepack":"npm run build","preview":"vite preview","test:e2e":"npm run build && npm run test:e2e:built","test:run":"vitest run","pack:check":"npm run build && npm run package:contents","type-check":"tsc -b --pretty false","test:e2e:built":"playwright test","artifact:verify":"node scripts/artifact-manifest.mjs verify","package:contents":"node scripts/verify-package.mjs","architecture:check":"node scripts/check-architecture.mjs","test:e2e:real-bamboo":"npm run build && npm run test:e2e:real-bamboo:built","test:e2e:real-bamboo:built":"playwright test --config=playwright.real-bamboo.config.ts"},"_npmUser":{"name":"bigduu","email":"mugeng.du@gmail.com"},"_resolved":"/home/runner/work/lotus-next/lotus-next/bigduu-lotus-next-2026.9.13.tgz","_integrity":"sha512-6ASx73u1RaPHJKwg5mjlvqQMh5mf0qiCr8KDFvsOPGwIOC3EcDzpY2/teD4DVxdIJABOO8oWztuZo6W/gAhSjQ==","repository":{"url":"git+https://github.com/bigduu/lotus-next.git","type":"git"},"_npmVersion":"11.19.0","description":"Standalone Lotus Next frontend assets for the Bamboo runtime and Bodhi shell.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"clsx":"^2.1.1","dexie":"^4.4.4","jspdf":"^4.2.1","react":"^19.2.7","i18next":"^26.3.2","mermaid":"^11.16.1","zustand":"^5.0.14","react-dom":"^19.2.7","remark-gfm":"^4.0.1","streamdown":"^2.6.0","html2canvas":"^1.4.1","tailwindcss":"^4.3.1","lucide-react":"^1.21.0","react-i18next":"^17.0.8","react-markdown":"^10.1.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","@streamdown/cjk":"^1.0.3","rehype-sanitize":"^6.0.0","@msgpack/msgpack":"^3.1.3","@streamdown/code":"^1.1.1","@tailwindcss/vite":"^4.3.1","@streamdown/mermaid":"^1.0.2","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tauri-apps/plugin-fs":"^2.5.1","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^16.1.1","@tauri-apps/plugin-dialog":"^2.7.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pako":"2.2.0","vite":"^8.1.0","jsdom":"^27.1.0","oxlint":"^1.69.0","vitest":"^4.0.18","typescript":"~6.0.2","@types/node":"^24.13.2","@types/react":"^19.2.17","@playwright/test":"^1.62.1","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2","@tailwindcss/typography":"^0.5.20","@types/react-syntax-highlighter":"^15.5.13"},"_npmOperationalInternal":{"tmp":"tmp/lotus-next_2026.9.13_1789237758642_0.5909014527092045","host":"s3://npm-registry-packages-npm-production"}},"2026.9.14":{"name":"@bigduu/lotus-next","version":"2026.9.14","license":"UNLICENSED","_id":"@bigduu/lotus-next@2026.9.14","maintainers":[{"name":"bigduu","email":"mugeng.du@gmail.com"}],"homepage":"https://github.com/bigduu/lotus-next#readme","bugs":{"url":"https://github.com/bigduu/lotus-next/issues"},"dist":{"shasum":"33e6857ff855c29a14062a460dc88da7b0e9a4e1","tarball":"https://registry.npmjs.org/@bigduu/lotus-next/-/lotus-next-2026.9.14.tgz","fileCount":37,"integrity":"sha512-0elftRZ1eO/oa9RN9AgjkViCmeKbh87YQ+GbTIIeOS2IYYx8A0v9IZf4w2YemxdgR+mfstmc8FnoZYTRQrEbgA==","signatures":[{"sig":"MEUCIQCohAFR3AyPYif7JTTNbcKoPU2v3DW6ici+uyAcSZlO+wIgLV8qpVHPBYlJz89alI9XrGARkMDAicLd3mdW/O5S/+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bigduu%2flotus-next@2026.9.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16417766},"type":"module","_from":"file:bigduu-lotus-next-2026.9.14.tgz","engines":{"node":">=22.12.0"},"private":false,"scripts":{"dev":"vite","lint":"oxlint --deny-warnings","test":"vitest","build":"tsc -b && vite build && node scripts/artifact-manifest.mjs generate","verify":"npm run type-check && npm run lint && npm run test:run && npm run architecture:check && npm run build && npm run package:contents","prepack":"npm run build","preview":"vite preview","test:e2e":"npm run build && npm run test:e2e:built","test:run":"vitest run","pack:check":"npm run build && npm run package:contents","type-check":"tsc -b --pretty false","test:e2e:built":"playwright test","artifact:verify":"node scripts/artifact-manifest.mjs verify","package:contents":"node scripts/verify-package.mjs","architecture:check":"node scripts/check-architecture.mjs","test:e2e:real-bamboo":"npm run build && npm run test:e2e:real-bamboo:built","test:e2e:real-bamboo:built":"playwright test --config=playwright.real-bamboo.config.ts"},"_npmUser":{"name":"bigduu","email":"mugeng.du@gmail.com"},"_resolved":"/home/runner/work/lotus-next/lotus-next/bigduu-lotus-next-2026.9.14.tgz","_integrity":"sha512-0elftRZ1eO/oa9RN9AgjkViCmeKbh87YQ+GbTIIeOS2IYYx8A0v9IZf4w2YemxdgR+mfstmc8FnoZYTRQrEbgA==","repository":{"url":"git+https://github.com/bigduu/lotus-next.git","type":"git"},"_npmVersion":"11.19.0","description":"Standalone Lotus Next frontend assets for the Bamboo runtime and Bodhi shell.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"clsx":"^2.1.1","dexie":"^4.4.4","jspdf":"^4.2.1","react":"^19.2.7","i18next":"^26.3.2","mermaid":"^11.16.1","zustand":"^5.0.14","react-dom":"^19.2.7","remark-gfm":"^4.0.1","streamdown":"^2.6.0","html2canvas":"^1.4.1","tailwindcss":"^4.3.1","lucide-react":"^1.21.0","react-i18next":"^17.0.8","react-markdown":"^10.1.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","@streamdown/cjk":"^1.0.3","rehype-sanitize":"^6.0.0","@msgpack/msgpack":"^3.1.3","@streamdown/code":"^1.1.1","@tailwindcss/vite":"^4.3.1","@streamdown/mermaid":"^1.0.2","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tauri-apps/plugin-fs":"^2.5.1","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^16.1.1","@tauri-apps/plugin-dialog":"^2.7.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pako":"2.2.0","vite":"^8.1.0","jsdom":"^27.1.0","oxlint":"^1.69.0","vitest":"^4.0.18","typescript":"~6.0.2","@types/node":"^24.13.2","@types/react":"^19.2.17","@playwright/test":"^1.62.1","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2","@tailwindcss/typography":"^0.5.20","@types/react-syntax-highlighter":"^15.5.13"},"_npmOperationalInternal":{"tmp":"tmp/lotus-next_2026.9.14_1789241234729_0.7965276269767925","host":"s3://npm-registry-packages-npm-production"}},"2026.9.16":{"name":"@bigduu/lotus-next","version":"2026.9.16","license":"UNLICENSED","_id":"@bigduu/lotus-next@2026.9.16","maintainers":[{"name":"bigduu","email":"mugeng.du@gmail.com"}],"homepage":"https://github.com/bigduu/lotus-next#readme","bugs":{"url":"https://github.com/bigduu/lotus-next/issues"},"dist":{"shasum":"1ee7d9f8604104c9e0216a344659d6e2344c73cf","tarball":"https://registry.npmjs.org/@bigduu/lotus-next/-/lotus-next-2026.9.16.tgz","fileCount":37,"integrity":"sha512-RInZlrVYUy86DmznVlA9Ro6aikQbMRjrrhgexnsXg4uHFlsrM1kJDrKWNb/snqh2Pb3m+5K3FlNtGuohv80/iA==","signatures":[{"sig":"MEUCIQDAcq7lvA6mmFmnDDos8aBurzFwYujgijKdICkvhp87agIgMYs2KwnlxhkHoWaH6jaM2ahvrL+XNDahFtkKK0IQA7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDuR87MZwLKOl2R94pY33iFBBOJSnSu4YL9CjguKj2LPQIhAMeFlApeh+f1KJV2ibr9CgajJ2qqlRdr8Y7ayWJmXRSv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bigduu%2flotus-next@2026.9.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16424411},"type":"module","_from":"file:bigduu-lotus-next-2026.9.16.tgz","engines":{"node":">=22.12.0"},"private":false,"scripts":{"dev":"vite","lint":"oxlint --deny-warnings","test":"vitest","build":"tsc -b && vite build && node scripts/artifact-manifest.mjs generate","verify":"npm run type-check && npm run lint && npm run test:run && npm run architecture:check && npm run build && npm run package:contents","prepack":"npm run build","preview":"vite preview","test:e2e":"npm run build && npm run test:e2e:built","test:run":"vitest run","pack:check":"npm run build && npm run package:contents","type-check":"tsc -b --pretty false","test:e2e:built":"playwright test","artifact:verify":"node scripts/artifact-manifest.mjs verify","package:contents":"node scripts/verify-package.mjs","architecture:check":"node scripts/check-architecture.mjs","test:e2e:real-bamboo":"npm run build && npm run test:e2e:real-bamboo:built","test:e2e:published-bamboo":"node scripts/published-real-bamboo-acceptance.mjs","test:e2e:real-bamboo:built":"playwright test --config=playwright.real-bamboo.config.ts"},"_npmUser":{"name":"bigduu","email":"mugeng.du@gmail.com"},"_resolved":"/home/runner/work/lotus-next/lotus-next/bigduu-lotus-next-2026.9.16.tgz","_integrity":"sha512-RInZlrVYUy86DmznVlA9Ro6aikQbMRjrrhgexnsXg4uHFlsrM1kJDrKWNb/snqh2Pb3m+5K3FlNtGuohv80/iA==","repository":{"url":"git+https://github.com/bigduu/lotus-next.git","type":"git"},"_npmVersion":"11.19.0","description":"Standalone Lotus Next frontend assets for the Bamboo runtime and Bodhi shell.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"clsx":"^2.1.1","dexie":"^4.4.4","jspdf":"^4.2.1","react":"^19.2.7","i18next":"^26.3.2","mermaid":"^11.16.1","zustand":"^5.0.14","react-dom":"^19.2.7","remark-gfm":"^4.0.1","streamdown":"^2.6.0","html2canvas":"^1.4.1","tailwindcss":"^4.3.1","lucide-react":"^1.21.0","react-i18next":"^17.0.8","react-markdown":"^10.1.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","@streamdown/cjk":"^1.0.3","rehype-sanitize":"^6.0.0","@msgpack/msgpack":"^3.1.3","@streamdown/code":"^1.1.1","@tailwindcss/vite":"^4.3.1","@streamdown/mermaid":"^1.0.2","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tauri-apps/plugin-fs":"^2.5.1","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^16.1.1","@tauri-apps/plugin-dialog":"^2.7.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pako":"2.2.0","vite":"^8.1.0","jsdom":"^27.1.0","oxlint":"^1.69.0","vitest":"^4.0.18","typescript":"~6.0.2","@types/node":"^24.13.2","@types/react":"^19.2.17","@playwright/test":"^1.62.1","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2","@tailwindcss/typography":"^0.5.20","@types/react-syntax-highlighter":"^15.5.13"},"_npmOperationalInternal":{"tmp":"tmp/lotus-next_2026.9.16_1789499261476_0.9576570679400052","host":"s3://npm-registry-packages-npm-production"}},"2026.9.22":{"_id":"@bigduu/lotus-next@2026.9.22","bugs":{"url":"https://github.com/bigduu/lotus-next/issues"},"dist":{"shasum":"12e99c8871a9e5f80ae5c808a9f38b0b28d00b24","tarball":"https://registry.npmjs.org/@bigduu/lotus-next/-/lotus-next-2026.9.22.tgz","fileCount":40,"integrity":"sha512-i2AfrIoh6KjvzXZY4JTZAGYLj58Jj1Oz4GWXLwUyHSeOq56D0yvVRLipYTIQevRB5TAzX1352glnMDxNf/17qg==","signatures":[{"sig":"MEYCIQDrX90lxuyWNfoLtzLjPhh/YCqaHcziGSe901v1rwLZCwIhAPZNFcnWtFxjPAI0sPZ/khRxnvL5zBYjenic42VmWrYh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDt70TQbHcIj9sYOPhJZ6q6Ml5iU09QwGTo6hC7SBg/2QIhANCSZfZWkDJvLE2+3foTcRa39D6vdCSEvC1Y8Nr/g1Dh"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bigduu%2flotus-next@2026.9.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16539415},"name":"@bigduu/lotus-next","type":"module","_from":"file:bigduu-lotus-next-2026.9.22.tgz","engines":{"node":">=22.12.0"},"license":"UNLICENSED","private":false,"scripts":{"dev":"vite","lint":"oxlint --deny-warnings","test":"vitest","build":"tsc -b && vite build && node scripts/artifact-manifest.mjs generate","verify":"npm run type-check && npm run lint && npm run test:run && npm run architecture:check && npm run build && npm run package:contents","prepack":"npm run build","preview":"vite preview","test:e2e":"npm run build && npm run test:e2e:built","test:run":"vitest run","pack:check":"npm run build && npm run package:contents","type-check":"tsc -b --pretty false","test:e2e:built":"playwright test","artifact:verify":"node scripts/artifact-manifest.mjs verify","package:contents":"node scripts/verify-package.mjs","architecture:check":"node scripts/check-architecture.mjs","test:e2e:real-bamboo":"npm run build && npm run test:e2e:real-bamboo:built","test:e2e:published-bamboo":"node scripts/published-real-bamboo-acceptance.mjs","test:e2e:real-bamboo:built":"playwright test --config=playwright.real-bamboo.config.ts"},"version":"2026.9.22","_npmUser":{"name":"bigduu","email":"mugeng.du@gmail.com"},"homepage":"https://github.com/bigduu/lotus-next#readme","_resolved":"/home/runner/work/lotus-next/lotus-next/bigduu-lotus-next-2026.9.22.tgz","_integrity":"sha512-i2AfrIoh6KjvzXZY4JTZAGYLj58Jj1Oz4GWXLwUyHSeOq56D0yvVRLipYTIQevRB5TAzX1352glnMDxNf/17qg==","repository":{"url":"git+https://github.com/bigduu/lotus-next.git","type":"git"},"_npmVersion":"11.19.0","description":"Standalone Lotus Next frontend assets for the Bamboo runtime and Bodhi shell.","directories":{},"maintainers":[{"name":"bigduu","email":"mugeng.du@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"clsx":"^2.1.1","dexie":"^4.4.4","jspdf":"^4.2.1","react":"^19.2.7","i18next":"^26.3.2","mermaid":"^11.16.1","zustand":"^5.0.14","react-dom":"^19.2.7","remark-gfm":"^4.0.1","streamdown":"^2.6.0","html2canvas":"^1.4.1","tailwindcss":"^4.3.1","lucide-react":"^1.21.0","react-i18next":"^17.0.8","react-markdown":"^10.1.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0","@streamdown/cjk":"^1.0.3","rehype-sanitize":"^6.0.0","@msgpack/msgpack":"^3.1.3","@streamdown/code":"^1.1.1","@tailwindcss/vite":"^4.3.1","@streamdown/mermaid":"^1.0.2","@radix-ui/react-slot":"^1.3.0","@radix-ui/react-tabs":"^1.1.15","@radix-ui/react-label":"^2.1.10","@tauri-apps/plugin-fs":"^2.5.1","@radix-ui/react-dialog":"^1.1.17","@radix-ui/react-select":"^2.3.1","@radix-ui/react-switch":"^1.3.1","@radix-ui/react-popover":"^1.1.17","@radix-ui/react-tooltip":"^1.2.10","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^16.1.1","@tauri-apps/plugin-dialog":"^2.7.1","@radix-ui/react-scroll-area":"^1.2.12","@radix-ui/react-dropdown-menu":"^2.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pako":"2.2.0","vite":"^8.1.0","jsdom":"^27.1.0","oxlint":"^1.69.0","vitest":"^4.0.18","typescript":"~6.0.2","@types/node":"^24.13.2","@types/react":"^19.2.17","@playwright/test":"^1.62.1","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2","@tailwindcss/typography":"^0.5.20","@types/react-syntax-highlighter":"^15.5.13"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lotus-next_2026.9.22_1790061321765_0.9104240744863759"}}},"time":{"created":"2026-09-12T17:03:55.102Z","modified":"2026-09-22T07:15:22.292Z","2026.9.12":"2026-09-12T17:03:55.578Z","2026.9.13":"2026-09-12T18:29:18.861Z","2026.9.14":"2026-09-12T19:27:14.968Z","2026.9.16":"2026-09-15T19:07:41.650Z","2026.9.22":"2026-09-22T07:15:21.929Z"},"bugs":{"url":"https://github.com/bigduu/lotus-next/issues"},"license":"UNLICENSED","homepage":"https://github.com/bigduu/lotus-next#readme","repository":{"url":"git+https://github.com/bigduu/lotus-next.git","type":"git"},"description":"Standalone Lotus Next frontend assets for the Bamboo runtime and Bodhi shell.","maintainers":[{"name":"bigduu","email":"mugeng.du@gmail.com"}],"readme":"# lotus-next\n\nAn experimental, ground-up rebuild of the [Lotus](https://github.com/bigduu/Lotus) web frontend for the Bamboo agent runtime. It uses React 19, TypeScript, Vite, Tailwind CSS v4, and hand-written components built on Radix primitives.\n\nLotus Next is the canonical forward-development target. Production cutover is tracked in [issue #11](https://github.com/bigduu/lotus-next/issues/11); the legacy Ant Design frontend remains only as the current production and rollback baseline while that migration is incomplete.\n\nThis repository documents the implementation that exists here today. It does not yet claim feature parity with Lotus or production readiness.\n\n## Quick start\n\nRun a Bamboo server on `127.0.0.1:9562`, then start the frontend:\n\n```bash\nnpm ci\nnpm run dev\n```\n\nVite listens on port `9563` and proxies `/api` and `/v2` to Bamboo on port\n`9562`. Lotus Next sends every Bamboo-native REST request through the single\ncanonical `/api/v1` client; the historical `/v1` alias is deliberately not a\nfrontend proxy or fallback.\n\n`VITE_BACKEND_BASE_URL` and newly persisted browser overrides accept a bare\nHTTP(S) origin or exact `/api/v1`. New `/v1` input fails closed. During the\nmigration window, `src/runtime/browserRuntime.ts` alone may read the legacy\n`copilot_backend_base_url` key, write and verify\n`lotus_next_backend_endpoint_v1`, and only then delete the legacy value. That\nreader is removed after every default consumer has run an artifact containing\nthe migration and its declared rollback window has ended.\n\n## Implemented surface\n\n- Chat over one shared `/v2/stream` WebSocket, using JSON by default and opt-in MessagePack negotiation.\n- Streaming messages, reasoning, tools, tasks, budgets, sub-agents, Markdown, syntax highlighting, Mermaid, images, and approval or question dialogs.\n- Session navigation, live account reconciliation, drafts, pending-question restoration, Markdown/PDF export, and a desktop split view with a second interactive chat pane.\n- Responsive desktop and mobile layouts, light/dark/system themes, simple/advanced modes, and a graphics-safe mode for constrained environments.\n- Sixteen settings tabs: General, Providers, MCP, Plugins, Skills, Permissions, Environment, Schedules, Notifications, Masking, Prompts, Workflows, Clusters, Metrics, Jiandu memory, and System.\n\n## Internationalization\n\nThe i18next runtime currently registers six locales: `en-US`, `zh-CN`, `zh-TW`, `fr-FR`, `ja-JP`, and `hi-IN`. Locale resources load on demand, with `en-US` as the fallback.\n\nTranslation coverage is not complete: parts of the newer application shell and settings UI still contain hard-coded Chinese strings. The locale list therefore describes the implemented runtime and resources, not complete localization of every screen.\n\n## Production gates\n\nRun the same checks locally that CI runs for pull requests and `main`:\n\n```bash\nnpm ci\nnpx playwright install chromium\nnpm run verify\nnpm run test:e2e:built\n```\n\n`npm run verify` produces the production artifact after the type, lint, unit,\narchitecture, bundle, and package checks. `npm run test:e2e:built` then exercises\nthat exact output in Chromium at desktop, tablet, and phone viewports. Use\n`npm run test:e2e` as the standalone convenience command when you need it to\nbuild first. The browser suite checks standalone, secure remote, and nested\nembedded hosting while enforcing the canonical `/api/v1` and `/v2/stream`\nruntime contract. CI retains its HTML report, trace, screenshot, video, and\nruntime observations when a case fails.\n\nThe source-built real-runtime gate is intentionally separate from that\ndeterministic matrix. It builds a clean checkout of Bamboo revision\n`f1f1057bdbde33358d769b6a62ff93f2287e3f9f` into an isolated Docker image,\nserves the production Lotus Next artifact from that Bamboo process, and drives\none complete chat turn through the visible desktop UI and a local deterministic\nOpenAI-compatible provider. It requires the `auth.ws_hello_ack.v1` bootstrap\ncapability and records one ordered, bidirectional WebSocket timeline for both\nthe initial page and a fresh browser context, proving that exact `hello` is\nacknowledged by exact `welcome` before any subscription is sent. The provider\nshares Bamboo's test-owned network\nnamespace and listens only on that namespace's loopback interface; only Bamboo's\nHTTP or in-process rustls TLS listener is published on a random host-loopback\nport. The provider writes redacted observations atomically to a test-owned bind\nmount instead of exposing its own API to the host.\nBoth Bamboo data and its Jiandu home stay inside a separate\ntest-owned temporary `/data` mount, so the lane never reads the workstation's\nlive Bamboo or Jiandu state. To run it locally, provide the absolute path to a\nclean checkout at that exact revision:\n\n```bash\nBAMBOO_E2E_SOURCE_DIR=/absolute/path/to/bamboo \\\n  npm run test:e2e:real-bamboo\n```\n\nDocker and Chromium are required. The runner rejects a different or dirty\nBamboo checkout and never accepts a live Bamboo URL. Normal completion, setup\nfailure, `SIGINT`, and `SIGTERM` share one exact-resource teardown for the two\ncontainers, private network, temporary image, observation mount, and data root\nit created. CI runs this single desktop lane once on Node 22; it does not repeat\nit across the mock suite's viewport/runtime matrix.\n\nThe published-artifact acceptance is a second real-runtime lane. It downloads\n`@bigduu/lotus-next@2026.9.14` from the public npm registry into a fresh cache\nwith lifecycle scripts disabled, then requires the committed SHA-1, SHA-512\nintegrity, manifest SHA-256, resource-set digest, 34-resource inventory, and\nsource revision `ae17b50574ccd86395cbc226b50c9fb2f0f51e0f`. It refuses any\ndifferent artifact before launching Bamboo. The same verified bytes are tested\nfirst through native loopback HTTP and then through Bamboo's own HTTPS/WSS\nlistener using an ephemeral one-day certificate for `remote.lotus.test`.\nDesktop, tablet, and phone viewports must keep the shell, settings, and composer\nusable while every application request remains same-origin on canonical\n`/api/v1` and the single `/v2/stream` WebSocket.\n\nRun the immutable public-artifact lane with the same clean Bamboo checkout:\n\n```bash\nBAMBOO_E2E_SOURCE_DIR=/absolute/path/to/bamboo \\\n  npm run test:e2e:published-bamboo\n```\n\nThis command additionally requires `openssl`. It creates no public tunnel: the\nnamed remote topology resolves only to `127.0.0.1`, and the self-signed\ncertificate is trusted only by the ephemeral test processes. It proves the\nbrowser contract and responsive viewports, not a physical-device or\npublic-network path. HTML reports and Playwright artifacts are written to the\n`playwright-report-real-bamboo-{local,remote}` and\n`test-results-real-bamboo-{local,remote}` directories; runtime identity and\nredacted observations remain under `test-results-real-bamboo/{local,remote}`.\nCI uploads all three evidence roots even when a lane fails.\n\n`npm run pack:check` rebuilds the app, asks npm for the exact dry-run tarball\nmanifest, and rejects anything outside `dist/` plus npm's required package\nmetadata. Every build also writes `dist/lotus-next-manifest.json`. That\nversioned universal-web manifest binds the package name/version, exact source\nrevision and dirty state, relative `index.html` entrypoint, and every other\nregular `dist/` resource by portable path, byte size, and SHA-256. Its combined\ndigest is deterministic for one resource set. Consumers must verify this file\nbefore serving or staging an artifact; a dirty source manifest is never a\nrelease artifact.\n\nThe committed package version remains the `0.0.0` source placeholder. The\nmanual publication workflow accepts one explicit SemVer, verifies the complete\nNode 22/24 and real-Bamboo gates from a clean `main` commit, packs without a\nsecond build, verifies the tarball, publishes with npm provenance, then\ndownloads and verifies the registry copy. Publishing does not switch any\nBamboo, Bodhi, or Zenith consumer.\n\nThe initial bundle-size baseline is recorded in [`docs/bundle-baseline.md`](docs/bundle-baseline.md). It is an observation gate, not a size-budget change.\n","readmeFilename":"README.md"}