{"_id":"buninu","_rev":"36-099524e0a6ab5496260cb96d3f9850de","name":"buninu","dist-tags":{"latest":"0.4.17"},"versions":{"0.1.1":{"name":"buninu","version":"0.1.1","license":"MIT","_id":"buninu@0.1.1","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"638b1f68ab1ed9dc99664fa93cbdb2c34f043c86","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.1.1.tgz","fileCount":435,"integrity":"sha512-oDzwuqtHGNY0efRUwy2JYveC2va7PROmokQvdBBa/4xyNk2EMVNkbN2jhbPt5O4T0QfvESseicFABGXAZkQxAw==","signatures":[{"sig":"MEYCIQCNtGkiJRoPitamvVF0SJnsCWQGBNTrPaEFJJzfEZlGlwIhANl9l2HyfLVMaCvxWhHWdWA/A07GuLNfSaZeWHPbcffw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10341416},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"echo Welcome to Buninu Android","default":null,"windows":null}},"gitHead":"6ea524e248e66145b9bbd721f9b43627d0d96d32","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.1.1_1786827538229_0.6518866289486962","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"buninu","version":"0.1.2","license":"MIT","_id":"buninu@0.1.2","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"3e30c8c1314174e4ba2bd623e7e9d9047cc2940e","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.1.2.tgz","fileCount":440,"integrity":"sha512-BodQ1keqkB8eXWKXKPdnfxAL+/xYl1U1e5F9Y3pWpAlmArIuphGrUQeAMYZBf29qd/nVgcx/3ytf6zYu5N6EXQ==","signatures":[{"sig":"MEUCIQCXLgq9rllHAs4eD8dT1nhs7y7EAWLeMd13D766hnzmsgIgJx0POpFi7r15fXWdRumD1JUpGdC5bTbJyxy2eqrrHro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10344225},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"echo Welcome to Buninu Android","default":null,"windows":null}},"gitHead":"6ea524e248e66145b9bbd721f9b43627d0d96d32","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.1.2_1786829690031_0.9134662542480203","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"buninu","version":"0.1.3","license":"MIT","_id":"buninu@0.1.3","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"fdc9c972de7c79b27b333d4b4665dac94d33cdce","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.1.3.tgz","fileCount":441,"integrity":"sha512-d0NV9MamgPgaiOaYKvpN1XNgL+0JfCeZzN9j3pzPWMkxRkt1CX/BBYULUjAzoZpNx4EPnAUYRqtErg6pXaakSA==","signatures":[{"sig":"MEUCIQCxB2xwtcgdWfOh5K+DDuWOG1+vglQlvpBqUMcIdDljhgIgbgLviqHiF2Fmj2JdCHyebHLBl6D8RgZ1AOnbbVwoTQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10346572},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"echo Welcome to Buninu Android","default":null,"windows":null}},"gitHead":"6ea524e248e66145b9bbd721f9b43627d0d96d32","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.1.3_1786834998234_0.7209097873503112","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"buninu","version":"0.1.4","license":"MIT","_id":"buninu@0.1.4","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"f4267f347c664d7b7c453cb9011145c456531ea8","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.1.4.tgz","fileCount":441,"integrity":"sha512-AyYalFV7NPM6W71nIO50qiz8fXPEuWcJ9+d+0oYEB1NRCejoT2NbRh0AvxKtDH4voSoYsnoCt+llVdRggsMK1Q==","signatures":[{"sig":"MEUCIFksU8ygPwFNR8tbxxfPA+F3AtJMvZcbMTJucgSuuQfnAiEAsgSG4lvqMDm15ysR2M82bG+5duOb83Y/q3ITyFeOHg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10347279},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"echo Welcome to Buninu Android","default":null,"windows":null}},"gitHead":"6ea524e248e66145b9bbd721f9b43627d0d96d32","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.1.4_1786836404525_0.025279828014082906","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"buninu","version":"0.1.5","license":"MIT","_id":"buninu@0.1.5","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"7e8564a54e7abefd7b52c36ec1d1611caea85284","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.1.5.tgz","fileCount":441,"integrity":"sha512-hX3mn0X6H0l/PdV4r1fW2xdPywSzx4plhmyGlk8fRXGqjEnulvrtoiG7GO5sRZW987IQ6pGqqGX9GJpTrR+B6w==","signatures":[{"sig":"MEUCIQC/hEgH0eziv8M6DTj02suW+777plDIllqfcudzevv+swIgQu9kz2D93tGrZXd7h90vCdM4F7zVjQxgc1zmpU4C8Gk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10347728},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"echo Welcome to Buninu Android","default":null,"windows":null}},"gitHead":"6ea524e248e66145b9bbd721f9b43627d0d96d32","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.1.5_1786837303290_0.09704246673090133","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"buninu","version":"0.1.6","license":"MIT","_id":"buninu@0.1.6","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"339fc61ca162f575328cf98e409c8b0a60dc981b","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.1.6.tgz","fileCount":441,"integrity":"sha512-DwyLwgzS3/PVRUFrLSg5kFbMFVZm6gribUMrXxk+1Oj3CE9W3Nm54bMYyPmm00lED9WVAiPedBMPP83Zwf2Rhg==","signatures":[{"sig":"MEUCIG/ePbbCjQxCZseqxKHsBg3cYvQcN3M5wuRPXmPJxg+IAiEA3D56bQSWSOPI0iKCNnlaG7DToVZPSMNVGYHrJH/sYyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10347783},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"echo Welcome to Buninu Android","default":null,"windows":null}},"gitHead":"b28caba5d8028f05b56916c9c7e42544b790f5db","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.1.6_1786870676595_0.78390346165369","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"buninu","version":"0.1.7","license":"MIT","_id":"buninu@0.1.7","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"8b6f0dae8ef30575247cc6c6df506df3f97c5eab","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.1.7.tgz","fileCount":442,"integrity":"sha512-IWdmsx/06F2Lxm6bUG8I9O96qe3uVRgSZdHsXhWMh4ScOeuZSqZdD9EyRd7Ogg7YCIxBPvimWA7rAPBs0qs/Kg==","signatures":[{"sig":"MEUCIBsRQgsr9UqVe60pKlhyKBZc6GxOEZ0RzsEz435N7FEXAiEA9fZdmDL5/gfmQ3G4NdlNeaNYE/7pZgfROzAKyhuQjoI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10356658},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist'","default":"echo Welcome to Buninu, Try: glow apps/cmdlist","windows":null}},"gitHead":"f140c1c480fa7c84f87891dfceb67b229585f09e","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.1.7_1786913591741_0.21994267993956296","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"buninu","version":"0.1.8","license":"MIT","_id":"buninu@0.1.8","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"f07e76be8d8e99462d316df2de3d6b4ee93e62dd","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.1.8.tgz","fileCount":442,"integrity":"sha512-uxQvcz9ADgofCygH8U98gQRtmBNkx2LVXnwT3OZIsvQ1an6YmvC1MdWODFwkYYdTjK3nUh4bSgoDZBcBxBl/NA==","signatures":[{"sig":"MEYCIQCwQaRxfdPl3aMoUvK5wPAn8Hu7tL4LLIGkyPzHwVTNsgIhAKF37GTpZrtAzQA8usuIgPEOViZpfELbVrqGWL7lFIet","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10356918},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist","windows":null}},"gitHead":"8af0fc02942d82b46ecc060926e30122d88bd301","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.1.8_1786915730589_0.38182341276288856","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"buninu","version":"0.1.9","license":"MIT","_id":"buninu@0.1.9","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"bdf163894786b8b9c5477ee3eb8cad1323ba631c","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.1.9.tgz","fileCount":442,"integrity":"sha512-oDal3zN38kYf8xbyEvsvTYDzi+ovCLuE6HUlZmUeumprZm5csS5+QRy9n84N3Hoz6BmkQmd6XOQvjfCvZj94bw==","signatures":[{"sig":"MEUCIQDzTNp3vj0xFUCjbhbKBCajDiuwwFohV1r1iQ5S979bTQIgIh2IzqUbUvGx7PPImfjvolssuIXR2yZ6nwuSELRhrew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10356540},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist","windows":null}},"gitHead":"dde3c3f60547231ea79022289288fd9bea91756b","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.1.9_1786948927210_0.17770934491424617","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"buninu","version":"0.2.0","license":"MIT","_id":"buninu@0.2.0","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"711dd1569d7a93a5a5a8407358b1fd44830a9894","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.2.0.tgz","fileCount":444,"integrity":"sha512-V3Qtlq933mpvSUPDVJP5hB2oOE5gUL5m3tV49KRgzxi0kzgYkle5CT6g4wnl2OOCsTEHz+37UuCEzYnbCfmjLA==","signatures":[{"sig":"MEUCIBnqH+OpIxqN+5vN261OQsogS9nu9BLt56uA7ZC7wHjIAiEAxlSAa39oRGcBGOniL23NDNmn5MflIWu0av4OPC+UsmM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10362430},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null}},"gitHead":"a125344e5ad813bb9a59bcffda09da31cb2cfe0e","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.2.0_1786958737031_0.9451886650203001","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"buninu","version":"0.2.2","license":"MIT","_id":"buninu@0.2.2","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"9446d2fba1452aa3ed61bf6795877f02dbcbf8c1","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.2.2.tgz","fileCount":446,"integrity":"sha512-17AL7vIeCmht03J9UBXJlaplUvNyhoJg0IObpoMspZItjXj9PQObljSqyeqw5fWPxxTItrZbiG/pccOFjYDlQA==","signatures":[{"sig":"MEYCIQDEzbq4Ld8QPpebCIwCFfejgvv95PHFnbNBe0eB0bzovQIhANBEJ+VIFutro8njw5RivlbxPWM8N9wyAz6N+mrlEWTx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10373369},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null}},"gitHead":"95106d7d392fbc8c64e589c4d9ca794f986e55e8","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.2.2_1786982104100_0.46297357043100407","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"buninu","version":"0.2.3","license":"MIT","_id":"buninu@0.2.3","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"3b8ce11fd51dca955d58fc0eb257260ddd8678e5","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.2.3.tgz","fileCount":446,"integrity":"sha512-zp1N2x1zmAov0TgsEU4lGZa6QbrlFcE4ZagFoCqjTxXM4jg9U5Vsw8PBdpK00jSkr9pWHXAxXKPEH7PpLpd5Bw==","signatures":[{"sig":"MEYCIQD7At7NLME23gajD57FhqEU0Zr7/ZohJAWrnGb73AWG8AIhALPcWCxk3AkpX6tRBL0YNClRZi29zsGHfo5+ofehIHnC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10376811},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"exitAfterCmd":false},"gitHead":"ddca07febc3835fa0bf24fd04956867014c2b970","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.2.3_1787030396459_0.6162855531645901","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"buninu","version":"0.2.4","license":"MIT","_id":"buninu@0.2.4","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"7e21463fbd781bd12bf654b7a3be251c114016c9","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.2.4.tgz","fileCount":461,"integrity":"sha512-WGPGvXp5LVQcV+zXsFzEJUGXFB7+37xxdgT9y+izIxkP7rJrE+nHCCv8rZQcO+EYnnmE5e9FmnFG8eNTCnNbyQ==","signatures":[{"sig":"MEYCIQD5v/Bi9pcv1+m2K2ta3MBiGBun+S6+gZDg4cf5YMgjcgIhAJdkCOdPZLPThhumPSMeRXuuyIh4h77RbDX8jNhLZZkl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10413526},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"exitAfterCmd":false},"gitHead":"25bc8d85e679d060b5001fcc94c8b761657c8a7d","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.2.4_1787104491315_0.2504459142549198","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"buninu","version":"0.2.5","license":"MIT","_id":"buninu@0.2.5","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"ad9ac3f8e6a9d9e578039a58756388e0ab4b671b","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.2.5.tgz","fileCount":461,"integrity":"sha512-mj007fbTi4Tab8a9wurTMvjyDL0GeO9GGVME275lT9SWKJ26s8/L1OjY0C+oXunXjwesCfMPhTF/ud9+nPI8qg==","signatures":[{"sig":"MEQCIBquaBIb0CnOPixVlAcfGVPv9sg4dnNQD6ScmdapdoyYAiBniCjy+WE0oItEZZuyAXBDQOnF1JiME2IoYQFCkID9/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10413687},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"exitAfterCmd":false},"gitHead":"359076c85ee8a88acabca5fe5b3e43afdaed5602","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.2.5_1787151415000_0.44712353911358904","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"buninu","version":"0.3.0","license":"MIT","_id":"buninu@0.3.0","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"218878b7a286c88343beb85459194f9c56f04c91","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.3.0.tgz","fileCount":462,"integrity":"sha512-d1H5R8koxOA7Ezev9do/M+efaVkQDzywJRRIlLrmgPmhhyugrGdH1jDcgduCOYJpqfBl9yBVkN27xFHUTI7HjQ==","signatures":[{"sig":"MEYCIQDAjX4LJBDJo1Aoyxi/rjXtUMZpExMIAmBI+WC6eDiBfgIhAPgSvuQraxLB+FVuKBeDHs2iUfRU5SqXEb+cAEJyOSkf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10429006},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"exitAfterCmd":false,"backToConsole":true},"gitHead":"f3eb597ec9c02b92b0add53b2bd37735685816c1","scripts":{"check":"node --check ./bin/init.js","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.3.0_1787248862684_0.06761930925608128","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"buninu","version":"0.3.1","license":"MIT","_id":"buninu@0.3.1","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"6ddfa84d147b4554f66ce2219d1de1bbccc9ef37","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.3.1.tgz","fileCount":577,"integrity":"sha512-gNC9Ab2cE5eXLi+aSnaSvft9HbcpFUdXbTzz2rQOKYFWPVvQo9xJiFk5bABzR35ROB2/Uef1abihRPC8z2kJ8g==","signatures":[{"sig":"MEUCIDot4bm3CRtFUyK6wPiQKaZeRXWaFLZxWq8UTPd6wTJQAiEAjnqIe2krXy/Kd1Rv7aSYGrqz4+KUMocLCNlpBepQydk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10959928},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"exitAfterCmd":false,"backToConsole":true},"gitHead":"05707b904a216830c003e55ecdcfad34cde40113","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.3.1_1787950695348_0.6259616995105499","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"buninu","version":"0.4.0","license":"MIT","_id":"buninu@0.4.0","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"d310f41ac06e2af452da5e9746cc199e384bf4cd","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.0.tgz","fileCount":583,"integrity":"sha512-SaTtOSgKT2ABdX7fNAwJfMrvZUVt8YJUhlKXqYnVnzKRW8vr4O2ZtqQ+x1EvO33QCYIhqErsYs0SjVIUvMDdLw==","signatures":[{"sig":"MEUCID1cC7UP091Ym72VVWye1BhBdIbhv56Ntr53xdTVvx9UAiEAtRYjSL9I4YYTeGjdsK3Hf+MaEzpBQRjMb1Wvlzv6hac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11069498},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true},"gitHead":"63182dd3a5d10a267c2c7abea4118d6651ba5714","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.0_1788095522333_0.9608273559940499","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"buninu","version":"0.4.1","license":"MIT","_id":"buninu@0.4.1","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"6fc45c087b03e2ef9517a69b5d41695d40dafe89","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.1.tgz","fileCount":583,"integrity":"sha512-Ztp3AneZCFryLqCberNqK2UPoWLqz/uXFNKTh09TouHwfNNqRdGcszhu4aiW2sTMpuRBG+H5fncgTGf07907Cg==","signatures":[{"sig":"MEUCIQCnSYPQeCvolD86cgQ2NtfMu567c466naNHeIGaWhxQlQIgaRQZVs/DBKxfNyDyaI23IkclbqDStFtWAj5Qw8YpDKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11071941},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true},"gitHead":"dedc720d4294e24f85b2319600c9ce8d3a01cd05","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.1_1788096997101_0.19088673124132072","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"buninu","version":"0.4.2","license":"MIT","_id":"buninu@0.4.2","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"6df884ce0eae3e82f6e26cdbeadca99d3286169d","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.2.tgz","fileCount":589,"integrity":"sha512-R76fWCQ4yBoJdGBqIRZ3LucUvRGFYmyuFhvuekpCWtnhfwlqzHftN5Wj08VEu/k5OkpmOgXy4M0JDtjgmJjVBw==","signatures":[{"sig":"MEQCIAw65874VKL8H//U3qSr6R6VrZpXfrhJrfzN1OjxX8JGAiAYcfPf0LQf8wFbWAKjJgMlRBiRiiYEehaNHa86JwV5XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11232682},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true},"gitHead":"5e79e6c74fc5ce91a967245c309c59c66a201b40","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.2_1788450529766_0.38847310577126914","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"buninu","version":"0.4.3","license":"MIT","_id":"buninu@0.4.3","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"7baf88427c6cf8e9265e16329a28e6b335c8efc9","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.3.tgz","fileCount":589,"integrity":"sha512-pProJnLD+HVIdSiU/Iy7yviHrYkJDIdZ7f0aEGoYQuahdlNz3bDW8W0ksr1R8BSUapRS7iqUfrNq7cHtJ+R81w==","signatures":[{"sig":"MEUCIA4c3OUv/GITj3JxBGnZB6QCx3PAoyW5XlcLwA3InoZGAiEA+VRn9Od8CxKlCdw5X/wWRS/D8D1oDXXL+KVhEaxEFhs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11232821},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true},"gitHead":"22193d66401f4519b19537f7a6050166835944ab","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.3_1788565574449_0.4747086832075669","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"buninu","version":"0.4.5","license":"MIT","_id":"buninu@0.4.5","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"21428797a96ebc1f9593d2ab0eed19a1161ebe92","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.5.tgz","fileCount":596,"integrity":"sha512-Lthurab7ZptGYbVdLw1ex0HVUygF8HnL1bNXDVn9D6/Uq0RkrIvqbkC9XHsvH/Py57rQ43HkRGsM4dezVbDeRQ==","signatures":[{"sig":"MEQCIDviKAgG0jHN5EG9seKzmLtZHnu66RtKALM3zxlIcBjwAiBl+llmcrbUMt6ok/+N78amf7Rkb+Gk4nnSL8oj9s94Hg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11339487},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"1d268a75910a57f06b8ae3765290c42a61c7f951","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.5_1789017584865_0.7423495031628586","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"buninu","version":"0.4.6","license":"MIT","_id":"buninu@0.4.6","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"5bf57fcda9aa9c3deeeb44ebbaba5a42ba40a6f7","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.6.tgz","fileCount":596,"integrity":"sha512-OdNfjwDmxbGJbPT8P/UZZcq7VQpGwrkjx4LZT+HFHUcRZgueuzvsEgEmjWDUh2H/uwbpY5t/QSjJ/7UqHD0HZA==","signatures":[{"sig":"MEUCIFWWW6V5jbZLI6B2Fyl7gerxqMVheURmR0ESKLt1EB4wAiEA57WiBzcDIqKF02H79FUsIQ35BCeIY0KfxEg13nhw9Xk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCov0nOaglLqdtXxDiVMVP6jmWZglzALhok9NtLikTUgQIhALRnzqVWWGyRa4hy/m7FQKXIZua94SFWXRQFRykjNXsp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11339994},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"30151587f70a868443f1001ae780196a780cf274","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.6_1789378400929_0.7649405051856861","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"buninu","version":"0.4.7","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","_id":"buninu@0.4.7","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"homepage":"https://github.com/jjtseng93/buninu#readme","bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"7c883de1f1de7a3a96a1ed7adec3ceb975265f41","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.7.tgz","fileCount":589,"integrity":"sha512-0i3aGSdmsk62tRVkcsfO7AZ19ocNcrVLY373lrCpFf5qSRMBEDN86kBMTjHuNDKyTi0Q32J344medkkaSxJfYg==","signatures":[{"sig":"MEYCIQCrpRaFwzlvVf9rQ8IecanLG+Ab/zpAPclqRErIigoG8gIhAKK1SN3tOdNYqged65GgQsDVOGY37CJ+v+e1orIu64mg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGoyLPT+NVyZBZneBlsKaue2gbMlRBZWwSfHPkJjdx6bAiAELfL2tw1yam+V8FOs2RQxW3gVSGfx8H+tlUFiicP49A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11322036},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"7aecd12e20ad6920bc2086ffd0459981913afc52","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.7_1789415458647_0.4794319985800839","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"buninu","version":"0.4.8","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","_id":"buninu@0.4.8","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"homepage":"https://github.com/jjtseng93/buninu#readme","bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"1633f1c5bf5e5617159e904bf92590a8cb77315b","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.8.tgz","fileCount":589,"integrity":"sha512-0wqajSBa8SXrVPk9eGaWV9DR+1Xbm3o7YnapgtGdE0BI5sKlJDZKK58TBsjt86sD1zKzlNRZbjOFDcfGbfQ5Dg==","signatures":[{"sig":"MEUCIEDwb4oS82PBoFD5eB5mRnnpoiI8x42TExJngcilqphgAiEA8bZwjSpjEHS3i0AJun1faEalpfgqOiHaB7C0su4HNUw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFTXAoB8YFkiAGoa/+ukbS27cx88g8cNOcz5rdOENlcgAiEA/Z6n4FvC5yWJQoSXqorrloXa/aDtGYA6zEN2LbdrgZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11322956},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"ee9b58429a425666d6a2a491cbdcf8e854a6412e","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.8_1789522092901_0.10483199897749884","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"buninu","version":"0.4.9","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","_id":"buninu@0.4.9","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"homepage":"https://github.com/jjtseng93/buninu#readme","bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"30d712f263b5eaeb0187028350b0185a63c8e06d","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.9.tgz","fileCount":589,"integrity":"sha512-gG0A3lLVML2vm9xTzsqzEg15ux8CCoghe+oZYYl2aVhGBusC7Kvv1qOKdAjoPf+zvF/OamOFBXriA0C9UTTobA==","signatures":[{"sig":"MEQCIEjmgPnQYeCzuGup0pWXaCcieJYaY5vozlOWvAPswZy1AiAAgO5GgCN7/WzjhSquq+9RWXtMHPX3CMOs4HvaxbWFyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGLQv8DZOtkSey17vP63H0HDoIXCKmeeA4UF553iaZZNAiEA6mXheOGo9599zSVd0t51/21AV4oQYLzCL8blTiE8TZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11323654},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"37ba5960bee9bd6944dacd2919939f1f387e9646","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.9_1789525191518_0.2713423139011144","host":"s3://npm-registry-packages-npm-production"}},"0.4.10":{"name":"buninu","version":"0.4.10","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","_id":"buninu@0.4.10","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"homepage":"https://github.com/jjtseng93/buninu#readme","bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"427a5c59c0e75d0eb1afa7ec560314058b79e082","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.10.tgz","fileCount":589,"integrity":"sha512-+RkY/pHEA/zcBsU4nIdJR4h4PLSMkkobCEhR6+NHeiywfPwgddc2oduoq+JMSlQ22H5YIOmck8GopOFhqC5Lkg==","signatures":[{"sig":"MEUCIQDwz9FJpy4tyIMg4EXM3mXXNzh0oCkXoBvttrP6mOoDLgIgRwb+heGJS6JlM39bauoCk5Z89dmxJCaEEFMXUaGKxfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEoaqr8alewg49PT5Qy27pzAebVY2Mc/zsuostTKacVvAiAWruIXReyloQLfCWIdXMpSfaFJJp23wx5BwO1OUYXerA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11326472},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"89b101093d4b411e0cada21c126d86cd655b796b","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/bunmsh -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.10_1789836328393_0.11668773982390013","host":"s3://npm-registry-packages-npm-production"}},"0.4.11":{"name":"buninu","version":"0.4.11","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","_id":"buninu@0.4.11","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"homepage":"https://github.com/jjtseng93/buninu#readme","bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"12b1235de7fc61f029079f2b7707d530a464c6db","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.11.tgz","fileCount":589,"integrity":"sha512-Bj7FdUFnBwNNbfwZYzoMmzwKo59c22879rdezboAmnjYY2suCtWT9GWAuOT6q9LJWoHZvfQWtkwuCuWqQjzQxw==","signatures":[{"sig":"MEUCIQDLKWZJhQD8Ju/ZRn88BJjW5KdTYdCRhGY9TEHtZpZvwgIgb/BcOqB5ky7wA7DFp+GJK5hGMSQZAwcgU7fsr98mjLM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEF4dItXKvz1MI9Y2l7XogcwaRq9CrF2jWFSm86tOMsnAiEA++C6f/0nXQkUHRUCJdTZAtfnbSE+LI6AekLdgPScQ6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11327143},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"090a4fffdc4764c5f1434db0f4f6f463b50d168b","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/index.js -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.11_1789840644999_0.5814825771105054","host":"s3://npm-registry-packages-npm-production"}},"0.4.12":{"name":"buninu","version":"0.4.12","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","_id":"buninu@0.4.12","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"homepage":"https://github.com/jjtseng93/buninu#readme","bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"b81597f08ec050aec5738978851ff80ed8eeae92","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.12.tgz","fileCount":589,"integrity":"sha512-rUjhkaxUaWeF1d/9R87o4tud7tvWRdI1XTmcJ9QWlTBvdlJWp8aisNIjwt1lp8Q9jW4bGr+2uAv2GYqhIeg8zw==","signatures":[{"sig":"MEYCIQDjR/fAweGxF9/Iit9qLjavAbGbhwuCjHS/ZCNmSHDBwwIhAOd1wccuyGcnqPEpwTlt7BPFyGoiAlTOgAw2eUJ3KSSb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD5xyAYxfGgvrxME9iDLWtrAJgwWSiod3N48+QD6NrnAwIgOt/W1ahJybNIZ+NqDWK7yH7FCa/XEovE7S21mVB0D1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11328178},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"db653a6f6669d42528841dbedc4c53781c423f47","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/index.js -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.12_1789843374932_0.14319379817490763","host":"s3://npm-registry-packages-npm-production"}},"0.4.13":{"name":"buninu","version":"0.4.13","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","_id":"buninu@0.4.13","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"homepage":"https://github.com/jjtseng93/buninu#readme","bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"b337bd007c0549be78ece6d3ce380717279d964b","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.13.tgz","fileCount":590,"integrity":"sha512-TJR9tBxL+Fb4cgk3ZSdlauutFK2quhbKOW6iHACwS9n6cKjSphkq7cl8R2vxrRZgftrgpdfFwkFIkvCq4FHnEw==","signatures":[{"sig":"MEUCIQDukGleFxqrJ8vtPSDCz7E6kyIAQWimL7W+9jonF6lvCwIgZOp3/KqD4x32YLG9wVmaVPkD9eekdlUKawgqdz2REmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCzSwDufo3Q5xF5qN11A1NP1HrqylVjmOs49LeMXvE/sAIgFFVlXZGKFOYvcAiWAxXR+MB4e9icTBrr4EEQVstSsLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11339396},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"254e39dad29bedcdfccac28ded73f4ec4e8711b1","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/index.js -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.13_1790011273858_0.4471524335729964","host":"s3://npm-registry-packages-npm-production"}},"0.4.15":{"name":"buninu","version":"0.4.15","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","_id":"buninu@0.4.15","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"homepage":"https://github.com/jjtseng93/buninu#readme","bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"53123fb88b752b2dd4b5866e7b1df5b73902f5ff","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.15.tgz","fileCount":590,"integrity":"sha512-IuKVRH2A2BGzDYFj5SHv+I6b84xJMI+Hbvxbe8BkfwF5SSrqH56Ye3k74YL9O/hguHOPGvxjaHX5dN2hg0WdAg==","signatures":[{"sig":"MEUCIQDQqoIo8Cf2wzwb+J4RasnJwR7EkjcaQGGMXxRtrJ66qQIgGZPheXKMyLiWEWViz26E1qe0GvxE8absYL/eXVG04/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF6cxmkxKyyNO5PtM32LvLC+PZTmxcBEQqxeuhjk5FlJAiEAqcFBaEAHoBNEqTjZC0GkVJpDa5l1hWRKtn5D30C25JU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11341274},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"4cae28cfb836e53e5e02ec4cf458e51ffad47d5a","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/index.js -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.15_1790074769810_0.3374033034930928","host":"s3://npm-registry-packages-npm-production"}},"0.4.16":{"name":"buninu","version":"0.4.16","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","_id":"buninu@0.4.16","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"homepage":"https://buninu.org","bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"bin":{"buninu":"bin/init.js"},"dist":{"shasum":"07a37c38327fe89715132cff46af1bd266604c0e","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.16.tgz","fileCount":590,"integrity":"sha512-D+BZ9kNG8GyFCvQNPaU0tuG50EQ17yQYp/BFWo5DftKgFWwn9TSN7ot6k84hdYvM0521PNQhAAxFCtTLaqM5tA==","signatures":[{"sig":"MEUCIQC1hMRdIjXnJwvFH0SPiZhyuLuVU/kMf2tbUiJdZcNLhQIgeOXFcJcikIIsWNUAa7r5EggfhX6SaSuj7QfFUh4JA9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHpxQKf6J++tfnapQQg0hQ7vRKU09yME2HGjEMkFgPOhAiBr+aPbOS+x0nWWlcY2CM+txwKI31AyRgRknGx23eqc7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11341317},"main":"./bin/init.js","type":"module","buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"54616c7b1098dd7b8d568bedf0dbe0f7292eff41","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/index.js -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/buninu_0.4.16_1790169904132_0.6373633176436491","host":"s3://npm-registry-packages-npm-production"}},"0.4.17":{"_id":"buninu@0.4.17","bin":{"buninu":"bin/init.js"},"bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"dist":{"shasum":"895be46198888b2d5b818bceb81fd4055e038800","tarball":"https://registry.npmjs.org/buninu/-/buninu-0.4.17.tgz","fileCount":590,"integrity":"sha512-UtO4TcNKiwLnL3glK+2AzMxNnxex7EDFQusgIGhPJ1Z/dfX7vENTORzN1xw12RPVsUuMyKmkOlHcRmWFntBrpw==","signatures":[{"sig":"MEQCIEUaoGFoYu5j3F4lfuklPvF6xNV7O148A/4cxK4eXj74AiAzwXT9wZ+SYPXmjLruTeRNlm7b4OPJK1VThlDESWs/NA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDemT5yoaQxHQGQZ4frJeg3USFmQuwEo5dNPHc+rnIbnAIhAO6VBpYzDmP0amuZeOcMLCXsi1/zpakNAWU98xq3NER2"}],"unpackedSize":11341402},"main":"./bin/init.js","name":"buninu","type":"module","author":{"url":"醫者小智","name":"Dr. John"},"buninu":{"shell":{"linux":null,"macos":null,"android":null,"default":null,"windows":null},"command":{"linux":null,"macos":null,"android":"if command -v libmain.so >/dev/null 2>&1; then libmain.so; else printf '%s\\n' '# Welcome to Buninu Android' '- Try: glow apps/cmdlist' '- Help: buninu-help'; fi","default":"echo Welcome to Buninu, Try: glow apps/cmdlist, Help: buninu-help","windows":null},"xdgDataHome":null,"exitAfterCmd":false,"backToConsole":true,"hideExtraKeys":false},"gitHead":"b0a9d85916e9abde2bbb23b1be7e6636f1d31267","license":"MIT","scripts":{"check":"node --check ./bin/init.js","local":"bun ./apps/bunmsh/index.js -c 'exec bunmsh'","start":"bun ./apps/jsgotty/gotty.js --reconnect -r -w --webgl -a 127.0.0.1"},"version":"0.4.17","_npmUser":{"name":"drxiaozhi","email":"jjtseng93@gmail.com"},"homepage":"https://buninu.org","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"_npmVersion":"11.17.0","description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","directories":{},"maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/buninu_0.4.17_1790417283263_0.6151454009905328"}}},"time":{"created":"2026-08-15T20:44:23.838Z","modified":"2026-09-26T10:08:03.661Z","0.1.0":"2026-08-15T20:44:24.198Z","0.1.1":"2026-08-15T20:58:58.454Z","0.1.2":"2026-08-15T21:34:50.271Z","0.1.3":"2026-08-15T23:03:18.466Z","0.1.4":"2026-08-15T23:26:44.778Z","0.1.5":"2026-08-15T23:41:43.533Z","0.1.6":"2026-08-16T08:57:56.830Z","0.1.7":"2026-08-16T20:53:11.976Z","0.1.8":"2026-08-16T21:28:50.864Z","0.1.9":"2026-08-17T06:42:07.448Z","0.2.0":"2026-08-17T09:25:37.262Z","0.2.1":"2026-08-17T15:43:30.198Z","0.2.2":"2026-08-17T15:55:04.312Z","0.2.3":"2026-08-18T05:19:56.786Z","0.2.4":"2026-08-19T01:54:51.542Z","0.2.5":"2026-08-19T14:56:55.243Z","0.3.0":"2026-08-20T18:01:02.979Z","0.3.1":"2026-08-28T20:58:15.582Z","0.4.0":"2026-08-30T13:12:02.593Z","0.4.1":"2026-08-30T13:36:37.340Z","0.4.2":"2026-09-03T15:48:49.981Z","0.4.3":"2026-09-04T23:46:14.701Z","0.4.5":"2026-09-10T05:19:45.134Z","0.4.6":"2026-09-14T09:33:21.102Z","0.4.7":"2026-09-14T19:50:58.851Z","0.4.8":"2026-09-16T01:28:13.155Z","0.4.9":"2026-09-16T02:19:51.681Z","0.4.10":"2026-09-19T16:45:28.565Z","0.4.11":"2026-09-19T17:57:25.221Z","0.4.12":"2026-09-19T18:42:55.104Z","0.4.13":"2026-09-21T17:21:14.038Z","0.4.15":"2026-09-22T10:59:30.003Z","0.4.16":"2026-09-23T13:25:04.342Z","0.4.17":"2026-09-26T10:08:03.489Z"},"bugs":{"url":"https://github.com/jjtseng93/buninu/issues"},"author":{"url":"醫者小智","name":"Dr. John"},"license":"MIT","homepage":"https://buninu.org","keywords":["bun","terminal","web-terminal","browser-terminal","shell","userspace","portable","cross-platform","android","termux","pty","self-bootstrapping"],"repository":{"url":"git+https://github.com/jjtseng93/buninu.git","type":"git"},"description":"Buninu is a portable, self-bootstrapping Unix-like userspace built on Bun that runs across operating systems","maintainers":[{"name":"drxiaozhi","email":"jjtseng93@gmail.com"}],"readme":"# Buninu\n\n**BUNinu Is Not Unix** 🐮\n\n**幫你牛** 🐂 ・ **Bunに入魂** 🔥\n\n![icon](https://raw.githubusercontent.com/jjtseng93/buninu/main/icon.png)\n\nBuninu is a portable, self-bootstrapping Unix-like userspace built on Bun. One\ncommand gives you a working shell — in a browser tab, or straight in the\nterminal you are already in — on Android, Linux, Windows, and macOS, with\nnothing to compile and nothing installed system-wide.\n\n```sh\nnpx buninu\n```\n\n> **Status:** Buninu is still under active development. The browser\n> terminal, the install-and-update flow, and the bundled commands are the\n> settled parts — Android and Linux first, with Windows working the same way\n> and macOS support newer. Still moving: `package.json` settings and\n> command-line flags can change between releases, and the local shell\n> (`--local`, bunmsh) has no job control yet, so use the browser terminal when\n> you need to background a job.\n\n- Homepage: <https://buninu.org>\n- Source: [github.com/jjtseng93/buninu](https://github.com/jjtseng93/buninu)\n\n- Core components:\n  * [jsgotty](https://github.com/jjtseng93/js-gotty): Remote shell from a Browser or Terminal\n  * [jsmdcui](https://github.com/jjtseng93/jsmdcui): Both a text editor and\n    Markdown execution runtime (not static rendering), based on\n    [bunmicro](https://github.com/jjtseng93/bunmicro)\n  * [bunmsh](https://github.com/jjtseng93/bunmsh): Bun Modern Shell — a\n    dependency-free, mksh-inspired command shell with a JavaScript mode, and\n    builtins that answer the same way on Windows as on POSIX systems\n\n- [Why Buninu exists](#why)\n- [Table of contents](#contents)\n- [ARCHITECTURE.md](ARCHITECTURE.md): the complete architecture, portability\n  model, and self-bootstrapping design\n- [Commands inside the shell](#commands-inside-the-shell): the reference for a\n  session you are already in\n\n## Install Bun\n\nBuninu requires [Bun](https://bun.com). On Android, install Bun in Termux:\n\n```sh\nnpm install -g bun\n```\n\n- On Linux, Windows, and macOS, follow the\n[official Bun installation guide](https://bun.com/docs/installation).\n  * macOS support is currently experimental\n\n## Start\n\n### Start a remote shell in a Browser\n\nTo try it, run the npm package. This runs Buninu from the `npx` cache, which\nis a fine place to look around in and a bad place to keep anything:\n\n```sh\nnpx buninu\n```\n\nTo keep it, install it somewhere of your own first, and start it from there\nfrom then on. That directory becomes `BUNINU_HOME`: the installation's own\nroot, yours to edit and to carry to another machine. See\n[Install and update](#install-and-update):\n\n```sh\n# Creates ~/somewhere/buninu, which is now BUNINU_HOME\nnpx buninu --install ~/somewhere\n\n# Start it from there from now on\nbun ~/somewhere/buninu/bin/init.js\n```\n\nOr run it from a source checkout:\n\n```sh\nbun ./bin/init.js\n```\n\nThe launcher automatically chooses a free TCP port and detects an available\nshell for the current platform. Other arguments are forwarded to jsgotty:\n\n```sh\n# Serve on port 9000 instead of picking a free one\nnpx buninu --port 9000\n\n# Ask for a username and password before handing over the terminal\nnpx buninu --credential user:pass\n\n# Accept connections from other machines, not just this one. By default the\n# terminal is reachable only from the computer it runs on; this opens it to\n# anything that can reach this machine over the network, and the terminal is\n# a working shell, so give it a password at the same time.\nnpx buninu -a 0.0.0.0 --credential user:pass\n```\n\nRead [Security](#security) before using that last one.\n\nBuninu's own options are listed under\n[Command-line usage](#command-line-usage).\n\n### Start a local shell in a Terminal (experimental)\n\nDrops you straight into [bunmsh](apps/bunmsh/README.md) (Bun Modern Shell), a\ndependency-free, mksh-inspired command shell that runs on Bun, without going\nthrough the browser/jsgotty flow.\n\nIt is marked experimental for one reason above the rest: bunmsh has no job\ncontrol yet. There is no `jobs`, `bg` or `fg`, and no suspending a command\nthat is already running — a foreground command holds the terminal until it\nfinishes on its own. Everything else a session needs is there: pipelines and\nredirection, functions and compound commands, history, completion with ghost\nsuggestions, and a JavaScript mode. Reach for the browser terminal when you\nneed to park a job and come back to it.\n\nTo try it:\n\n```sh\nnpx buninu --local\n```\n\nTo keep it, install it the same way as above and pass `--local` to the\ninstalled copy from then on. See [Install and update](#install-and-update):\n\n```sh\n# Creates ~/somewhere/buninu, which is now BUNINU_HOME\nnpx buninu --install ~/somewhere\n\n# Start bunmsh from there from now on\nbun ~/somewhere/buninu/bin/init.js --local\n```\n\nCommand history is kept in your own home directory either way, so it survives\n`npx`. What does not is anything you add to the installation itself — commands\nof your own under `apps/`, edits to its `.bashrc` — since that lives in the\npackage, and under `npx` the package is a cache directory.\nSee [Data & Persistence](#data--persistence).\n\nOr run it from a source checkout:\n\n```sh\nbun ./bin/init.js --local\n```\n\nBuninu's own tools (`glow`, `jmi`, `xclip`, `tts`, `xdg-open`, etc.) stay\navailable inside this shell too, same as in the browser session.\n\nUnlike the shells the browser terminal starts, **bunmsh does not read\n`.bashrc`**. It does not claim complete POSIX behavior yet, so a startup file\nwritten for a full shell can fail part way through — and a startup file that\nfails is a shell you cannot get into. Nothing is read automatically until that\nis no longer a risk. Source it yourself when you want it:\n\n```sh\n. ./.bashrc\n```\n\nThe shell starts in `BUNINU_HOME`, so that path works as written at first;\nafter moving elsewhere, use `. \"$BUNINU_HOME/.bashrc\"`.\n\nThere is no setting that does this for you yet, and\n[`buninu.command`](#startup-command-optional) is not it:\n`--local` does not run it at all, and the browser terminal, which does, runs it\nin a subshell before starting a fresh shell — so aliases and functions a\nstartup command defines are gone by the time you reach a prompt either way.\nUntil bunmsh reads a startup file of its own, sourcing it by hand is the way.\n\n## Security\n\n**Buninu (when starting a remote shell) binds its terminal server to `127.0.0.1`**, so out of the box it\nonly accepts connections from the machine it runs on. It is not reachable from\nother devices on the network unless you explicitly opt in.\n\nWithin that machine, the terminal is writable (`-w`) and unauthenticated by\ndefault: only the loopback binding and jsgotty's random URL path (`-r`) stand\nbetween a local process and a shell with Buninu's permissions.\n\nTo listen on another interface, pass `--address <value>` (see\n[Start](#start)). Arguments you give on the command line override the defaults\nthe package ships in its `scripts.start` entry, the loopback binding included,\nso **pass `--credential user:pass` at the same time** — a random port and URL\npath are not a substitute for authentication once the server is reachable from\noutside the machine.\n\n## Command-line usage\n\nThese are flags to `bin/init.js` itself, resolved before Buninu starts.\nEverything else on the command line is forwarded to jsgotty.\n\n```text\nInit options:\n  --local\n    Start Buninu in this terminal\n      instead of a Remote Shell\n      reached from a browser\n      (via jsgotty, the default)\n\n  -h, --help\n    Show this help and exit\n  -V, --version\n    Show version & runtime info, then exit\n\n  --readme\n    Render README.md in the terminal and exit\n  --changelog\n    Render CHANGELOG.md in the terminal and exit\n\n  --readme-tui\n    Open README.md as a Terminal UI\n  --readme-wui\n    Serve README.md as a Web UI\n\n  --export [output.tgz]\n    Export this Buninu installation\n    (default: ./buninu.tgz)\n\n  --export-config [output.json]\n    Export Buninu's package.json\n    (default: ./buninu.json)\n\nInstall options:\n  -i, --install [dir]\n    Install this package into <dir>/buninu\n    (default: .)\n\n  -si, --strip-install [dir]\n    Install into <dir> directly\n    Without a top-level directory of its own\n\n  (--install --help for full options)\n\nRemote Shell options:\n  --shell <path|name>\n    Override buninu.shell for this run\n  --command <command>\n    Override buninu.command for this run\n```\n\n`--local` is the one flag here that changes what Buninu starts rather than\nwhat it reports; [Start a local shell in a\nTerminal](#start-a-local-shell-in-a-terminal-experimental) covers what that\nsession can and cannot do, and [Start](#start) covers the browser route it\nreplaces.\n\n`--readme-tui` and `--readme-wui` hand README.md to jsmdcui, so its headings\nand its table of contents become links you can follow rather than text you\nscroll past — the first in this terminal, the second at a URL it prints for a\nbrowser. Opening a Markdown file that way makes jsmdcui write five generated\nfiles beside it, so Buninu copies README.md into a directory under `TMPDIR`\nfirst and runs it there: an installation stays yours, and nothing generated\nends up in an `--export` or outliving an update.\n\n`--export` and `--export-config` are described under [Export](#export), which\nalso covers what an archive made through `npx` contains and what one made from\nyour own installation does instead.\n\n`--install --help` lists the install options in full, including `--force` and\n`--yes`; see [Install and update](#install-and-update) for what an update does\nwith files you changed.\n\n`--shell` and `--command` override for one run what\n[Shell selection](#shell-selection-optional) and\n[Startup command](#startup-command-optional) set in `package.json`.\n\n### Launching a bundled app directly\n\nAs the **first** argument, `--jsgotty`, `--jsmdcui`, `--bunmsh`, or `--musl-la`\nbypasses the shell and startup-command flow entirely: it spawns that app with\nevery remaining argument forwarded to it, and exits with its exit code.\n\n```text\n  --jsgotty [args...]\n    Spawn jsgotty directly,\n      forwarding remaining arguments,\n      and exit with its exit code\n  (--jsgotty --help = jsgotty options)\n\n  --jsmdcui [args...]\n    Spawn jsmdcui directly,\n      same forwarding behavior\n\n  --bunmsh [args...]\n    Spawn bunmsh directly,\n      same forwarding behavior\n\n  --musl-la [args...]\n    Spawn musl-la directly,\n      same forwarding behavior\n```\n\nUse it to reach an app's own options, which Buninu would otherwise interpret\nas its own — `npx buninu --jsgotty --help` shows jsgotty's flag reference\nrather than this one.\n\n## Commands inside the shell\n\nOnce you are inside a running Buninu shell, these are available (the\nvalidated source list is `apps/cmdlist`; see [Add a command](#add-a-command)\nfor how it works):\n\n---\n\n- **Bun Modern Shell & its builtins**\n  * `bunmsh` — Bun Modern Shell supports multi-tabs cwd\n  * `catfancy` — Pretty print a file with JSON, YAML, TOML, Markdown and JS/TS colored\n  * `lsfancy` — List a directory with emoji, aware of the terminal width\n  * `serve` — Serve a directory over HTTP\n  * `curl` — Fetch an HTTP URL or download it to a file, built on Bun's `fetch`\n  * `pspa` / `pspac` — List processes, plain or colored as shell syntax\n  * `kill` — Signal a process, on Windows as well as POSIX\n\n  Everything below `bunmsh` is one of its builtins, so they are there once you\n  are inside a bunmsh session, and every one of them documents itself with\n  `--help`. From any other shell, reach them with\n  `bunmsh -cc builtin <name> argv1 argv2 ...`.\n\n---\n\n- **Markdown applications**\n  * `jsmdcui` — Run interactive Markdown applications in both TUI & WebUI\n  * `jsmdcui --demo-reader` — Text-to-speech ebook reader\n  * `jsmdcui --demo-imgtool` — Image processor with table-based UI based on `Bun.Image`\n  * `jsmdcui --demo-imgtool-zh` — The same processor in Traditional Chinese\n  * `jsmdcui --demo-maze` — Maze game\n  * `jsmdcui --cdp-maze` — The same maze game, started with a local Chrome DevTools\n    Protocol server and solved by the bundled solver three seconds later\n\n---\n\n- **Editing and viewing**\n  * `jmi` — Edit files in the js micro editor\n  * `glow` — View file contents with syntax highlighting\n  * `bun pm diff ./dir1 ./dir2` — diff 2 folders\n    + Can also diff against npm registry packages\n\n---\n\n- **Terminal and file transfer**\n  * `jsgotty` — Run a browser-accessible terminal\n  * `showimg` — Show an image in the terminal\n  * `rz` — Upload a file over ZMODEM\n  * `sz` — Download a file over ZMODEM\n\n  These three work in the browser route, a minapk WebView included, but not\n  necessarily under `--local`: they speak the Kitty graphics protocol and\n  ZMODEM, which a plain terminal emulator need not support. They are\n  equivalent to `jsgotty --viu`, `--rz` and `--sz`.\n\n---\n\n- **System integration**\n  * `xclip` — X11-style clipboard tool; `-selection clipboard`/`-clip` bridges\n    to the system clipboard\n  * `tts` — Speak text and wait for it to finish (`-a` to not wait)\n  * `xdg-open` — Open a file or URL with the platform's default handler\n  * `native-bridge` — Call the Android host app (toast, clipboard, speak,\n    WebViews) over `PKG_BRIDGE_SOCK`\n\n---\n\n- **Running programs**\n  * `bun` — Run the bundled Bun, falling back to one already on `PATH`\n  * `bunx` — Globally install a package with bun, then exec its matching binary\n  * `musl-la` — Launch AArch64 ELF programs with the bundled musl loader\n\n---\n\n- **Help**\n  * `buninu-help` — Render README.md with glow, then show icon.png with `showimg`\n\n### Details for the above commands\n\n`rz [target-dir]` (upload into `target-dir`, default: cwd) and `sz <file>\n[more files...]` (download one or more files) are thin `bin/`-only wrappers\naround `apps/jsgotty/rz.js`/`sz.js`, transferring files over ZMODEM through\nthe same terminal connection jsgotty already renders in a browser or WebView.\n\n---\n\n`xclip [-o] [-selection primary|clipboard] [-clip]` is a small X11-`xclip`-\ncompatible clipboard tool. `-selection primary` (the default) never touches\nthe system clipboard, matching real X11 semantics. `-selection\nclipboard`/`-clip` reaches the real system clipboard on Android, macOS,\nWindows, and Linux/Wayland. jsmdcui picks this up automatically once it's on\n`PATH`, so its middle-click paste and copy/paste commands just work.\n\n---\n\n`tts <text> [-f|--flush] [-a|--async] [--timeout <ms>] [--pitch <n>]\n[--speed <n>]` speaks text and, by default, blocks until it finishes — no\ntimeout unless you pass `--timeout`. Works on Android, macOS, Windows, and\nLinux (via espeak-ng/espeak). `--pitch`/`--speed` fall back to\n`$TTS_PITCH`/`$TTS_SPEED` when not given explicitly, so jsmdcui's own\npitch/speed setting is honored automatically.\n\n---\n\n`glow` and `jmi` are the same program under two names: both run the bundled\njsmdcui, `glow` with its `--cat` mode, which renders a file to stdout and\nexits, and `jmi` with no mode of its own, which opens the editor because this\njsmdcui is configured editor-first through `MDCUI_DEFAULT_EDIT`. Neither is\nthe Go program called glow — `glow --help` and `jmi --help` both print\njsmdcui's own reference, and jsmdcui's options are the ones that apply.\n\n---\n\n`bun` is the installation's own Bun rather than whatever the machine has. On\nAndroid it runs `androidNativeLibs/libbun.so` when an APK supplies one;\notherwise it picks the binary for the machine — `bun-la`, `bun-lx`, or\n`bun-wx.exe` — and extracts it from `apps/bun/bunBin.tgz` first whenever that\narchive is newer than the binary already sitting there. Only when none of\nthose is available does it fall back to a Bun on `PATH`, skipping its own\ndirectory on the way so the `bun` symlink beside it cannot call itself. This\nis what lets an installation carry the runtime it needs with it.\n\n---\n\n`bunx <package>[@version] [args...]` installs with `bun i -g` and runs the\nmatching binary. On Android, the underlying `bun i -g` currently needs\n[oven-sh/bun#39084](https://github.com/oven-sh/bun/pull/39084) merged\nupstream — without it, install is killed by SIGSYS (Android's seccomp policy\nrejects a syscall bin-linking uses), so `bunx` can't install anything there yet.\n\n---\n\n`buninu-help` renders README.md with `jmi`'s `--cat` mode — the same rendering\n`glow` gives — and then shows `icon.png` with `showimg`. It is the command the\ndefault startup greeting points to.\n\nReach that mode as `jmi --cat` or as plain `glow`, not as `jsmdcui --cat`. The\n`jsmdcui` launcher routes any `.md` argument into the Markdown UI, and opening\na file that way writes five generated files beside it rather than only\nprinting it.\n\n---\n\n`musl-la [-e] <program> [args...]` runs an AArch64 Linux ELF program through\nthe bundled musl loader, which is what lets a binary built against musl run\ninside a Buninu session. It is AArch64-only, as its suffix says — see\n[Platform-specific binaries](#platform-specific-binaries) — and the loader it\nuses is the APK's `libld-musl.so` when one is present, or\n`apps/musl-la/ld-musl-aarch64.so.1` otherwise.\n\nThe library path is assembled for you. `musl-la` scans its arguments for the\nfirst file whose leading four bytes are the ELF magic number, and puts that\nfile's own directory on the search path along with `apps/musl-la/` and\nanything already in `LD_LIBRARY_PATH` — so a program with its shared objects\nbeside it needs no setup. That path normally reaches the loader as\n`--library-path`; pass `-e` as the first argument to export it as\n`LD_LIBRARY_PATH` instead, which is what a program that goes on to exec\nsomething else of its own needs.\n\n---\n\n`xdg-open <file-or-url>` hands a file or URL to whatever the platform treats\nas its default handler: the host app through native-bridge on Android (or\n`termux-open` under plain Termux), `open` on macOS, `start` on Windows, and\nthe real system `xdg-open` on Linux.\n\nInside minapk's APK, `MINAPK_WEBVIEW` redirects that: set it to a WebView id\nand a URL is loaded into that WebView and brought to the front (`openWebView`\nthen `showWebView`) instead of being handed to the system's default handler.\n\n```sh\n# In the app WebView, on screen\nMINAPK_WEBVIEW=1 xdg-open https://example.com\n\n# ...or for the whole session\nexport MINAPK_WEBVIEW=1\n```\n\n`0` is the console, so it navigates the terminal page away — the back key\nreturns to it and jsgotty reconnects, but it is not usually what you want.\n`-1` is whichever WebView is in front. Only URLs are redirected: a file path\nalways goes to the host's own handler, since WebView cannot read a `file://`\nURL under Buninu's home (`setAllowFileAccess` is false from API 30 on) while\nthe host serves that same file through its content:// provider. A value that\nis not a plain integer is reported on stderr and ignored rather than guessed\nat, an unset or empty value keeps the default behavior, and a WebView the host\ndoes not have falls back to the default handler after saying so.\n\n---\n\n`native-bridge [func] [args...]` calls into the Android host app that\n[minapk](https://github.com/jjtseng93/minapk) built the running\nAPK with, over an abstract-namespace unix socket. A bare `native-bridge`\nlists what the host implements. Every call\ntimes out after 5 seconds instead of hanging; outside such an APK, every call\nfails with a clear error instead of doing nothing silently. `import { toast,\nclipboardRead, clipboardWrite, speak, ttsStatus, openWebView, evalWebView,\nshowWebView, currWebView, call, available } from\n\"apps/native-bridge/native-bridge.js\"` gives the same functions as a library,\nfor use from a `js back` block.\n\n`openWebView(id, url)`, `evalWebView(id, js)`, `showWebView(id)` and\n`currWebView()` (short: `openwv`, `evalwv`, `showwv`, `currwv`) drive the host\napp's WebViews. There are exactly two, both\nalive from startup and neither ever created nor closed at runtime: id `0` is\nthe console — the jsgotty terminal this shell is rendered in — and id `1` is\nthe app WebView, which starts out blank and behind. Anywhere an id is taken,\n`-1` means whichever WebView is in front right now.\n\n`openWebView` loads a URL *without* bringing that WebView to the front, so\nloading the app WebView while the user keeps looking at the terminal is one\ncall. `showWebView` is the only thing that changes what is on screen; the\nhost's on-screen key bar (Ctrl/Alt/Shift and friends), its volume-key menu and\nits back key all act on whichever WebView is in front, so they follow the\nswitch. Back on the app WebView with no page of its own to go back to\nswitches to the console rather than leaving the app, unless\n`buninu.backToConsole` says otherwise (see \"Back key\" below).\n`showWebView(-1)` switches to the next WebView instead of being a no-op --\nwith two of them, a toggle. `evalWebView` resolves to the value the\nexpression produced, not a string containing it; `undefined`, a function, and\na thrown exception all arrive as `null`, since WebView itself does not\ndistinguish them.\n\nAll four also answer to a short `openwv`/`evalwv`/`showwv`/`currwv` spelling,\nthe same way `clipboardRead`/`clipboardWrite` answer to `getcb`/`setcb`: the\nhost accepts either and lists both in its `_discover` response, so either name\nworks from the CLI, from `rpcraw`, and as an `import`.\n\n```sh\n# Load it, screen unchanged\nnative-bridge openwv 1 https://example.com\n\n# Now bring it to the front\nnative-bridge showwv 1\n\nnative-bridge evalwv 1 document.title\nnative-bridge currwv\n```\n\n## Differences from upstream\n\nThe versions of jsmdcui and jsgotty bundled here differ from the ones their\nown projects ship.\n\n### The bundled jsmdcui\n\n  * Is configured editor-first by `MDCUI_DEFAULT_EDIT`\n  * The command `jmi` with a Markdown file opens the normal terminal editor\n    (js micro editor)\n  * The command `jsmdcui` preserves its original behavior:\n    `apps/jsmdcui/jsmdcui.sh`, which starts its `tui` entry point with\n    `--mdcui` when running Markdown apps, and forwards all command-line\n    arguments\n  * Adds the Buninu-only `# syntax: markdown` marker for Markdown highlighting\n    in extensionless files; upstreaming may be considered later\n\n### The bundled jsgotty\n\n  * No longer depends on or ships `node-pty`\n  * Its PTY is provided by Bun's terminal API\n\n## Optional external tools\n\n`bunproot` is an optional tool downloaded by the user through `bunx` and is\nlicensed under GPL-2.0-or-later; `js-udocker` is licensed under Apache-2.0.\nNeither is distributed with Buninu. \n\n- `bunproot --git clone` should be cross-platform\n  * Tested on Android, Linux, and Windows\n  * If git clone fails, try `bun pm cache rm`\n  * This `bunproot --git` also supports many other subcommands. Show them by `--git --help`\n- The container example below is Android-only.\n\n```sh\nbunx bunproot\nbunx bunproot --git clone https://github.com/jjtseng93/bunproot\nbunx bunproot --git clone https://github.com/jjtseng93/js-udocker\ncd js-udocker\nexport JS_UDOCKER_BUNPROOT=$(realpath ../bunproot/proot.js)\nbun udocker.js run --name=ap alpine\n# bun udocker.js ps\n```\n\n## Data & Persistence\n\nRunning Buninu via `npx` works like a container: `npx` fetches the package into\na cache directory and runs it from there, which is fine as a temporary working\ndirectory but isn't guaranteed to survive between runs — version bumps,\n`npx clear-npx-cache`, or normal cache eviction can all wipe it. That directory\nis where the shell starts, so nothing left sitting in it is safe.\n\nThe answer is to stop running it from there: [install it](#install-and-update)\ninto a directory of your own, and `BUNINU_HOME` becomes somewhere you can keep\nthings, edit files in, and carry to another machine.\n\nOnce it is installed, files you leave in `BUNINU_HOME` are safe, updates\nincluded — an update only adds and overwrites the package's own files and\nnever deletes anything else. Your own home directory is untouched and still\nreachable as `~`, so work you would rather keep separate from Buninu, or that\nis too large to carry around with it, can just as well live there.\n\nTwo things live outside `BUNINU_HOME` either way, because they belong to the\nmachine rather than to Buninu:\n\n- `HOME` stays your own home directory. Buninu never replaces it, so a shell\n  started here still finds your SSH keys, your Git configuration, and anything\n  else you keep there.\n- bunmsh writes its command history to `$XDG_DATA_HOME/bunmsh/history`, or\n  `$HOME/.local/share/bunmsh/history` when that is unset. It persists between\n  sessions, and by default it stays on the machine it was typed on rather than\n  travelling with an installation.\n\nSet [`buninu.xdgDataHome`](#data-directory-optional) to move that history, and\nanything else written to the XDG data directory, into the installation so it\ntravels with it. Keep in mind that a history file records the commands it was\ngiven, so one carried on removable media carries whatever was typed into it.\n\n## Install and update\n\nCopy this installation into a directory that is yours to keep, and run it\nfrom there instead of from the `npx` cache:\n\n```sh\n# Creates ~/somewhere/buninu as BUNINU_HOME\nnpx buninu --install ~/somewhere\n\n# Makes ~/buninu itself BUNINU_HOME, with no directory of its own\nnpx buninu --strip-install ~/buninu\n```\n\nBoth default to the current directory. The two differ only in where\n`BUNINU_HOME` — the installation's own root, see\n[Environment](#environment) — ends up: below the directory you named, or at\nit. `npx buninu --install --help` lists every install option in full.\n\nAn installation is started the same two ways `npx buninu` is, by running its\nown `bin/init.js` instead of the package name:\n\n```sh\n# Terminal in a browser, as usual\nbun $BUNINU_HOME/bin/init.js\n\n# bunmsh in this terminal (experimental)\nbun $BUNINU_HOME/bin/init.js --local\n```\n\nEvery option described under [Start](#start) works the same way here, `--local`\nincluded; nothing about an installed copy behaves differently from the one\n`npx` runs.\n\nInstalling over an existing Buninu updates it in place. Files are only added\nand overwritten, never deleted, so anything you added of your own is left\nalone: your `apps/<name>/` commands, your `bin/*.sh` overrides, the Bun\nbinaries `bin/bun.sh` extracted, and any working file you left in the tree.\n\nThree files belong to you and to the package at the same time, and are merged\nrather than replaced:\n\n| File | What is kept |\n|---|---|\n| `package.json` | Your `buninu` section. Every other field, `version` included, comes from the new package. |\n| `apps/cmdlist` | Command names you added. They are appended below the shipped list. |\n| `.bashrc` | Your version, whenever it only adds lines to the shipped one — including lines inserted in the middle. |\n\nWhen `.bashrc` cannot be merged that way, because a line the package ships was\nchanged or removed rather than added to, your file is left exactly as it is\nand the package's version is written beside it as `.bashrc.dist` for you to\nreconcile by hand. Nothing is overwritten silently.\n\nEvery other file belongs to the package and is replaced. Before doing that, an\nupdate asks the registry what the installation originally shipped with and\nlists the files that no longer match, so editing one of the package's own files\nis not quietly undone:\n\n```\nbuninu: found buninu@0.3.1 at /home/you/buninu\nbuninu: comparing it against the published 0.3.1 for local changes...\nbuninu: 1 file(s) differ from buninu@0.3.1 and will be replaced:\n  apps/xclip/xclip.js\nUpdate anyway? (y/N)\n```\n\nAn existing installation is always named, by absolute path, before anything is\nwritten to it — `--force` included, since that one replaces it without asking.\n\nOnly `y` continues; anything else cancels and leaves the installation\nuntouched. The three merged files above are left out of that list, since they\nare already kept. `--yes` answers for you, which is also what a script or any\nother run without a terminal needs. Nothing about this is recorded inside the\ninstallation: the published package is the reference, so the check needs the\nnetwork, and when it cannot run the update says so and goes ahead.\n\nThree more things are worth knowing about:\n\n- Installing from a checkout that already carries changes made since its\n  version was published — that is, while working on Buninu itself — compares\n  the installation against a reference its own files no longer match, so the\n  list names those unreleased changes rather than anything you did. Cloning it\n  and adding your own files on top does not.\n- A file the package **stopped** shipping is not removed from an existing\n  installation, because an update never deletes. Stale files accumulate\n  across updates.\n- `--force` skips both the merge and the check, and installs the shipped\n  versions over yours. It is also what installs into a non-empty directory that\n  is not a Buninu installation, which is otherwise refused — by absolute path,\n  saying which check the directory failed.\n\nWhether a directory counts as an installation to update is decided by the name\nin its `package.json`. An installation that has lost files, `bin/init.js`\nincluded, is a damaged one rather than somebody else's directory, so installing\nover it repairs it and still merges your configuration back in.\n\nA source checkout's own `.git` is never copied into an installation, so\ninstalling into a directory that is itself a repository leaves that repository\nalone.\n\n## Export\n\nExport a Buninu installation as a gzip-compressed tar archive. What gets\nexported is the installation the command runs from, so run it from your own\ninstallation to capture your configuration, added commands and edited\n`.bashrc` along with it:\n\n```sh\n# Everything in this installation, as ./buninu.tgz\nbun $BUNINU_HOME/bin/init.js --export\n\n# ...to a path of your choosing\nbun $BUNINU_HOME/bin/init.js --export /path/to/buninu.tgz\n```\n\nRun it through `npx` instead and you get an archive of the freshly downloaded\npackage, with none of that — useful for a clean copy, not for a backup:\n\n```sh\nnpx buninu@latest --export\n```\n\nThe default output is `./buninu.tgz`. The archive contains exactly one\ntop-level directory so consumers can remove one component while extracting.\nExport requires `tar` in `PATH`; when replacing an existing output,\nBuninu restores the previous file if archive creation or replacement fails.\n\nExport this `package.json` on its own, instead of the whole installation. The\nsame distinction applies — run it from your installation to get your settings,\nthrough `npx` to get the defaults:\n\n```sh\n# The buninu section as you have configured it, as ./buninu.json\nbun $BUNINU_HOME/bin/init.js --export-config\n\n# ...to a path of your choosing\nbun $BUNINU_HOME/bin/init.js --export-config /path/to/buninu.json\n\n# The package's own defaults instead\nnpx buninu@latest --export-config\n```\n\nThe default output is `./buninu.json`. This is the full `package.json` (not\njust the `buninu` section), so the output is ready to use as-is anywhere a\ncomplete replacement `package.json` is expected.\n\nA tarball made this way is also the simplest backup to take before an update\nthat is going to replace files you edited; see\n[Install and update](#install-and-update).\n\n## Environment\n\n`BUNINU_HOME` is the absolute path to the installed Buninu package root.\nThe jsgotty process, startup command, and interactive shell start with this\ndirectory as their working directory. Buninu also appends\n`$BUNINU_HOME/bin` to `PATH` (`Path` on Windows).\n\nBuninu preserves inherited environment variables and supplies these fallbacks:\n\n- `HOME`: inherited value; when unset, the operating system's own home\n  directory for the current user (`USERPROFILE` on Windows), falling back to\n  `BUNINU_HOME` only if that is unavailable too.\n- `TMPDIR`: inherited value; on Android, use the app cache directory when it\n  exists or `$BUNINU_HOME/tmp` otherwise; on other platforms, use the system\n  temporary directory.\n- `SHELL`: inherited value, or a detected platform-appropriate shell.\n- `XDG_DATA_HOME`: inherited value, unless `buninu.xdgDataHome` names one; see\n  [Data directory](#data-directory-optional).\n- `TERM`: `xterm-256color` when unset.\n- `COLORTERM`: `truecolor` when unset.\n\nThe Buninu Android APK launcher also supplies user-aware external-storage\npaths obtained from Android APIs:\n\n- `PKG_DDIR`: `/storage/emulated/<user-id>/Android/data/<package>`.\n- `PKG_MDIR`: `/storage/emulated/<user-id>/Android/media/<package>`.\n- `PKG_BRIDGE_SOCK`: the `native-bridge` unix socket, when the host app\n  wires one in; see `native-bridge` above.\n\n## Add a command\n\nOn POSIX systems, Buninu exposes its commands through the multicall\n`shloader`. The command names are listed one per line in `apps/cmdlist`:\n\n```text\n# syntax: markdown\n\n# Lines beginning with # are comments\nglow\njsgotty\njsmdcui\n```\n\nBlank lines and comment lines are ignored. Keep comments on their own lines;\ninline comments are not supported. Command names may contain ASCII letters,\ndigits, `.`, `_`, and `-`, and must begin with a letter or digit.\n\nFor example, to add a command named `hello`, create\n`apps/hello/hello.js`:\n\n```js\nconsole.log(\"Hello from Buninu\");\n```\n\nThen add its name to `apps/cmdlist`:\n\n```text\nhello\n```\n\nRestart Buninu normally. During startup, `bin/init.js` reads the list and\nrebuilds `bin/hello` as a symbolic link to `shloader`. The command is then\navailable from the Buninu shell:\n\n```sh\nhello\n```\n\nThe multicall loader looks for an implementation in this order:\n\n```text\nbin/hello.sh\napps/hello/hello.sh\napps/hello/hello.js\napps/hello/hello.mjs\napps/hello/hello.ts\napps/hello/hello.mts\n```\n\nRunning only an information option such as `--help` or `--version` does not\nrebuild links; start Buninu normally at least once after changing the list.\nWindows does not use these POSIX symbolic links. To expose the same command\non Windows, also provide `bin/hello.bat`, for example:\n\n```bat\n@echo off\ncall \"%~dp0bun.bat\" \"%~dp0..\\apps\\hello\\hello.js\" %*\nexit /b %ERRORLEVEL%\n```\n\n### Platform-specific binaries\n\nA bundled binary that only runs on one platform and architecture carries a\ntwo-letter suffix: the platform first, then the architecture.\n\n| Suffix | Platform | Architecture |\n|---|---|---|\n| `la` | Linux | arm64 |\n| `lx` | Linux | x64 |\n| `aa` | Android | arm64 |\n| `wx` | Windows | x64 |\n| `ma` | macOS | arm64 |\n\nSo `bin/bun.sh` picks `bun-la`, `bun-lx` or `bun-wx.exe` for the machine it\nfinds itself on, and `musl-la` is the Linux/arm64 ELF loader — on any other\nplatform there is nothing for it to load. A name without a suffix is\nportable: `hello.js` above runs wherever Bun does.\n\nOne binary is deliberately outside the scheme. `bin/libsh-loader.so` is\nAndroid/arm64 and would otherwise be `-aa`, but Android extracts and executes\nonly files named `lib*.so` from an APK's native library directory, so that\nname belongs to the platform rather than to this convention.\n\n## Startup command (optional)\n\nSet `buninu.command.default` or a platform-specific value (`android`, `linux`,\nor `windows`) in `package.json` to run a complete shell command from\nthe directory containing `package.json`. The platform value takes precedence\nover `default`. After the command finishes—successfully or unsuccessfully—the\nterminal returns to an interactive shell.\n\n```json\n{\n  \"buninu\": {\n    \"command\": {\n      \"default\": \"echo Welcome to Buninu\",\n      \"android\": null\n    }\n  }\n}\n```\n\nFor compatibility, `\"command\": \"...\"` is also accepted as a shared command\nfor every platform.\n\nThe command runs in a subshell, and the interactive shell that follows is a\nfresh one, so anything it defines rather than does — aliases, functions, shell\nvariables — is gone before you reach a prompt. Use it to run something, print\nsomething, or start something; a startup file that configures the session is a\njob for the shell itself, through `ENV` for the shells that honor it.\n\nIt applies to the browser terminal only. `--local` does not run it, so a\n`bunmsh` session starts with nothing from this setting; see\n[Start a local shell in a Terminal](#start-a-local-shell-in-a-terminal-experimental).\n\nOverride it for one run with:\n\n```sh\nbun ./bin/init.js --command \"echo temporary command\"\n```\n\nSet `buninu.exitAfterCmd` to `true` to exit once `buninu.command` finishes\ninstead of falling back to an interactive shell. It defaults to `false`,\nwhich is the current fall-back-to-shell behavior described above.\n\n```json\n{\n  \"buninu\": {\n    \"command\": { \"default\": \"echo Welcome to Buninu\" },\n    \"exitAfterCmd\": true\n  }\n}\n```\n\n## Shell selection (optional)\n\nSet `buninu.shell.default` or a platform-specific value (`android`, `linux`,\nor `windows`) in `package.json`. A relative shell path is resolved\nfrom the directory containing `package.json`.\n\n```json\n{\n  \"buninu\": {\n    \"shell\": {\n      \"default\": null,\n      \"android\": \"../bunmsh/bunmsh\"\n    }\n  }\n}\n```\n\nUse `--shell <path-or-name>` for a one-time override.\n\n## Data directory (optional)\n\nSet `buninu.xdgDataHome` in `package.json` to point `XDG_DATA_HOME` somewhere\nof your choosing. `true` puts it inside the installation, at\n`$BUNINU_HOME/.local/share`:\n\n```json\n{\n  \"buninu\": {\n    \"xdgDataHome\": true\n  }\n}\n```\n\nA string names a directory instead, resolved from the directory containing\n`package.json` when it is relative:\n\n```json\n{\n  \"buninu\": {\n    \"xdgDataHome\": \"/mnt/usb/shared-data\"\n  }\n}\n```\n\nThe directory is created at startup if it does not exist. Leave the setting\n`null` and `XDG_DATA_HOME` is passed through from the environment untouched.\n\nWhat this actually moves is where XDG-aware programs keep their data, and\n**bunmsh's command history is the one that matters here**: it lives at\n`$XDG_DATA_HOME/bunmsh/history`, so `true` is what makes a shell's history\ntravel with a copied installation instead of staying on the machine.\n\n`HOME` is deliberately left alone by this setting. A shell started under\nBuninu keeps pointing at your own home directory, so SSH keys, Git\nconfiguration and anything else kept there still work, and bunmsh can still\nimport the `~/.bash_history` or fish history you already had.\n\n## Back key (Android, optional)\n\nSet `buninu.backToConsole` in `package.json` to decide what the Android host\napp's back key does while the app WebView (id `1`, see `native-bridge` above)\nis in front and has no page of its own left to go back to. It defaults to\n`true`: back switches to the console WebView, leaving the app WebView loaded\nand running behind it. Set it to `false` and back leaves the app instead.\n\n```json\n{\n  \"buninu\": {\n    \"backToConsole\": false\n  }\n}\n```\n\nThis one is read by the host app, not by Buninu itself, so it does nothing\noutside an APK built with\n[minapk](https://github.com/jjtseng93/minapk) — where it can also\nbe set for a single build with `--no-back-to-console`. The host treats a\nmissing, unreadable, or non-boolean value as `true`, so nothing here can fail\nin a way that leaves the back key broken.\n\n## Process-list helpers\n\nThe bundled `.bashrc` provides `pspa` (`ps -eo pid,args`) and `pspac`, which\nwrites that process list to `$HOME/.pspidargs.sh` and displays it with `glow`.\nBuninu preserves an existing `HOME` rather than replacing or modifying the\nuser's home, and points `ENV` at the bundled file. Whether that file is read\ndepends entirely on the shell:\n\n| Where | Shell | The bundled `.bashrc` |\n|---|---|---|\n| Android, including a minapk APK | `/system/bin/sh`, which is mksh | Loaded through `ENV`; all of these aliases work |\n| Linux and macOS | Bash, usually | Not loaded — an interactive Bash reads `$HOME/.bashrc` and ignores `ENV` |\n| Windows | PowerShell, or `cmd.exe` | Not loaded, and these aliases would not carry over: listing processes is spelled differently there |\n| `--local` | bunmsh | Not loaded, and not needed: bunmsh answers all five names itself |\n\nSo Android gets these aliases without doing anything, and everywhere else the\nbundled file sits unread — which also means your own `$HOME/.bashrc` is left\nentirely alone.\n\nUnder `--local` these are bunmsh's own, not aliases read from a file, so they\nwork with nothing sourced — and the two process helpers are not quite the same\ntwo commands. `pspa` prints the same PID-and-command-line table, but through\nbunmsh's own process query, which also answers on Windows, where\n`ps -eo pid,args` has no counterpart. `pspac` colours that table inline as\nshell syntax: it writes no `$HOME/.pspidargs.sh` and does not need `glow`.\nBoth are PATH-fallback builtins, so a real `pspa` or `pspac` on `PATH` still\nwins and `builtin pspa` selects bunmsh's explicitly. Its `ls`, `grep` and\n`diff` colour aliases are built in as well, which is why nothing in the bundled\nfile is missing from a `--local` session. See\n[bunmsh's PATH-fallback builtins](apps/bunmsh/README.md#path-fallback-builtins).\n\nOn Windows the two *aliases* do not apply. Both wrap `ps -eo pid,args`, and\nthat invocation has no counterpart: PowerShell does have `ps`, but as an alias\nfor `Get-Process`, which takes its own options rather than those. List\nprocesses with `Get-Process` in PowerShell, or `tasklist` in `cmd.exe` — or use\n`--local`, where bunmsh's builtins of the same names answer by querying\n`Win32_Process` through PowerShell and print the same two columns.\n\nTo get the aliases in a POSIX session that did not load them, source the file\nfrom the prompt:\n\n```sh\n. \"$BUNINU_HOME/.bashrc\"\n```\n\nSource it from the prompt rather than putting that line in your own\n`$HOME/.bashrc`: `BUNINU_HOME` is only set inside a Buninu session, so\nelsewhere the same line reads `. \"/.bashrc\"` and every shell you open either\ncomplains or, if that file happens to exist, sources something you did not\nmean to.\n\nThat is for a Bash or mksh session that did not load the file — the remote\nroute on Linux and macOS. A `--local` session has no reason to source it, since\nbunmsh defines all five names itself. Sourcing it there anyway still reports\n`alias: pspac: invalid alias` and carries on: a bunmsh alias is a list of\nwords, and `pspac` is two commands joined by `;` with a redirection in the\nfirst, so it cannot be one — but the builtin of that name is already there, and\nan alias that fails to define leaves it reachable. See\n[Start a local shell in a Terminal](#start-a-local-shell-in-a-terminal-experimental).\n\n## Why\n\n- The usual way to get a Unix\n  environment onto a machine\n  * A system package manager\n  * A compiler\n  * On Android or Windows,\n    you install Linux first:\n    WSL, or a proot distro\n\n- Buninu's way: everything it\n  needs is JavaScript on Bun\n  * Nothing to build\n  * Nothing installed\n    system-wide\n  * The bundled jsgotty\n    dropped `node-pty` for\n    Bun's own terminal API\n  * So the same tree runs\n    unchanged on a phone, a\n    laptop and a server\n\n- Not a bare runtime either\n  * An editor and Markdown\n    runtime\n  * A clipboard tool\n  * Text-to-speech\n  * ZMODEM file transfer\n  * An `xdg-open` that knows\n    each platform's real\n    handler\n\n- An installation is one\n  directory\n  * Yours to edit\n  * Copy it to another machine\n    and your shell, the\n    commands you added and\n    your history go with it\n  * Your own `$HOME` is never\n    touched — a shell started\n    here still finds your SSH\n    keys and Git configuration\n\n## Contents\n\n- [Install Bun](#install-bun)\n- [Start](#start)\n  * [Start a remote shell in a Browser](#start-a-remote-shell-in-a-browser)\n  * [Start a local shell in a Terminal (experimental)](#start-a-local-shell-in-a-terminal-experimental)\n- [Security](#security)\n- [Command-line usage](#command-line-usage)\n  * [Launching a bundled app directly](#launching-a-bundled-app-directly)\n- [Commands inside the shell](#commands-inside-the-shell)\n- [Differences from upstream](#differences-from-upstream)\n- [Optional external tools](#optional-external-tools)\n- [Data & Persistence](#data--persistence)\n- [Install and update](#install-and-update)\n- [Export](#export)\n- [Environment](#environment)\n- [Add a command](#add-a-command)\n  * [Platform-specific binaries](#platform-specific-binaries)\n- [Startup command (optional)](#startup-command-optional)\n- [Shell selection (optional)](#shell-selection-optional)\n- [Data directory (optional)](#data-directory-optional)\n- [Back key (Android, optional)](#back-key-android-optional)\n- [Process-list helpers](#process-list-helpers)\n- [Why](#why)\n- [License](#license)\n\n## License\n\nBuninu's own code is MIT — see [LICENSE](LICENSE).\n\nThe apps bundled under `apps/` are separate projects on their own terms, and\neach carries its licence with it:\n\n| App | Licence | Files under `apps/<app>/` |\n|---|---|---|\n| jsgotty | MIT; its bundled front-end libraries are MIT and Apache-2.0 | `LICENSE`, `NOTICE`, `LICENSES/`, `static/js/gotty.licenses.txt` |\n| jsmdcui | MIT | `LICENSE`, `runtime/syntax/LICENSE` |\n| bunmsh | MIT; mksh's own terms are not relicensed under it | `LICENSE`, `LICENSE-MKSH`, `LICENSE-MICRO` |\n| musl-la | MIT for musl itself, and see below | `LICENSE_musl.txt`, `NOTICE`, `LICENSES/` |\n\nOne component is worth naming here rather than leaving in a file to be found:\n`apps/musl-la` ships `libgcc_s.so.1` and `libstdc++.so.6`, built from GCC\n14.2.0, under **GPL-3.0 with the GCC Runtime Library Exception**. That\nexception is what lets them be distributed alongside code under any licence,\nso nothing here changes Buninu's own MIT terms — but if your organisation\nscreens for GPL, this is the component it will find. `apps/musl-la/NOTICE`\nrecords the exact build, its Corresponding Source, and SHA-256 sums for every\nbinary in that directory.\n","readmeFilename":"README.md"}