buninu-linux 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/LICENSES/Bun-LICENSE.md +84 -0
- package/LICENSES/GCC-Runtime-Library-Exception-3.1.txt +73 -0
- package/LICENSES/GPL-2.0.txt +338 -0
- package/LICENSES/GPL-3.0.txt +674 -0
- package/LICENSES/LGPL-2.1.txt +501 -0
- package/LICENSES/Linux-syscall-note.txt +25 -0
- package/LICENSES/musl-COPYRIGHT.txt +193 -0
- package/NOTICE.md +184 -0
- package/README.md +537 -0
- package/build-image.sh +44 -0
- package/build-uki.sh +75 -0
- package/fetch-alpine.sh +80 -0
- package/fetch-bun.sh +41 -0
- package/fetch-plus-build.sh +11 -0
- package/hello/build-hello.sh +14 -0
- package/hello/hello.c +50 -0
- package/index.js +235 -0
- package/initramfs/bin/sh +3 -0
- package/initramfs/buninu/.bashrc +11 -0
- package/initramfs/buninu/ARCHITECTURE.md +452 -0
- package/initramfs/buninu/CHANGELOG.md +580 -0
- package/initramfs/buninu/LICENSE +21 -0
- package/initramfs/buninu/README.md +1161 -0
- package/initramfs/buninu/apps/bun/make-bunBin.sh +99 -0
- package/initramfs/buninu/apps/bunmsh/CHANGELOG.md +493 -0
- package/initramfs/buninu/apps/bunmsh/LICENSE +21 -0
- package/initramfs/buninu/apps/bunmsh/LICENSE-MICRO +58 -0
- package/initramfs/buninu/apps/bunmsh/LICENSE-MKSH +295 -0
- package/initramfs/buninu/apps/bunmsh/PORTING.md +192 -0
- package/initramfs/buninu/apps/bunmsh/README.md +1042 -0
- package/initramfs/buninu/apps/bunmsh/bunmsh +7 -0
- package/initramfs/buninu/apps/bunmsh/bunshell.md +61 -0
- package/initramfs/buninu/apps/bunmsh/help/README.md +2237 -0
- package/initramfs/buninu/apps/bunmsh/help/alias.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/basename.md +38 -0
- package/initramfs/buninu/apps/bunmsh/help/builtin.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/bun.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/bunmsh.md +47 -0
- package/initramfs/buninu/apps/bunmsh/help/cat.md +31 -0
- package/initramfs/buninu/apps/bunmsh/help/catfancy.md +35 -0
- package/initramfs/buninu/apps/bunmsh/help/cd.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/chmod.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/clear.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/colon.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/command.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/cp.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/curl.md +181 -0
- package/initramfs/buninu/apps/bunmsh/help/cut.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/date.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/dirname.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/echo.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/env.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/eval.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/exec.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/exit.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/export.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/false.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/find.md +33 -0
- package/initramfs/buninu/apps/bunmsh/help/getopts.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/grep.md +34 -0
- package/initramfs/buninu/apps/bunmsh/help/head.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/kill.md +43 -0
- package/initramfs/buninu/apps/bunmsh/help/ln.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/ls.md +37 -0
- package/initramfs/buninu/apps/bunmsh/help/lsbun.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/lsfancy.md +37 -0
- package/initramfs/buninu/apps/bunmsh/help/md5sum.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/mkdir.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/mktemp.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/mv.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/print.md +30 -0
- package/initramfs/buninu/apps/bunmsh/help/printf.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/pspa.md +38 -0
- package/initramfs/buninu/apps/bunmsh/help/pspac.md +57 -0
- package/initramfs/buninu/apps/bunmsh/help/pwd.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/read.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/readonly.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/realpath.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/rm.md +33 -0
- package/initramfs/buninu/apps/bunmsh/help/rmdir.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/sed.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/seq.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/serve.md +50 -0
- package/initramfs/buninu/apps/bunmsh/help/set.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/sha256sum.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/shift.md +23 -0
- package/initramfs/buninu/apps/bunmsh/help/sleep.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/sort.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/source.md +23 -0
- package/initramfs/buninu/apps/bunmsh/help/tab.md +30 -0
- package/initramfs/buninu/apps/bunmsh/help/tac.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/tail.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/tee.md +25 -0
- package/initramfs/buninu/apps/bunmsh/help/test.md +30 -0
- package/initramfs/buninu/apps/bunmsh/help/time.md +29 -0
- package/initramfs/buninu/apps/bunmsh/help/touch.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/tr.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/true.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/type.md +21 -0
- package/initramfs/buninu/apps/bunmsh/help/umask.md +22 -0
- package/initramfs/buninu/apps/bunmsh/help/unalias.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/uname.md +31 -0
- package/initramfs/buninu/apps/bunmsh/help/unset.md +28 -0
- package/initramfs/buninu/apps/bunmsh/help/wc.md +27 -0
- package/initramfs/buninu/apps/bunmsh/help/whence.md +26 -0
- package/initramfs/buninu/apps/bunmsh/help/which.md +41 -0
- package/initramfs/buninu/apps/bunmsh/help/yes.md +23 -0
- package/initramfs/buninu/apps/bunmsh/index.js +7 -0
- package/initramfs/buninu/apps/bunmsh/package.json +30 -0
- package/initramfs/buninu/apps/bunmsh/serve.js +468 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/README.md +402 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/assetsHelper.js +371 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/assetsLoader.mjs +85 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/assetsPacker.js +218 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/compiled.js +527 -0
- package/initramfs/buninu/apps/bunmsh/single-exe/entry.mjs +17 -0
- package/initramfs/buninu/apps/bunmsh/src/cat-fancy.js +117 -0
- package/initramfs/buninu/apps/bunmsh/src/cat-operands.js +31 -0
- package/initramfs/buninu/apps/bunmsh/src/completion.js +363 -0
- package/initramfs/buninu/apps/bunmsh/src/curl.js +1191 -0
- package/initramfs/buninu/apps/bunmsh/src/environment.js +61 -0
- package/initramfs/buninu/apps/bunmsh/src/fancy-ls.js +186 -0
- package/initramfs/buninu/apps/bunmsh/src/find.js +119 -0
- package/initramfs/buninu/apps/bunmsh/src/history.js +198 -0
- package/initramfs/buninu/apps/bunmsh/src/main.js +850 -0
- package/initramfs/buninu/apps/bunmsh/src/mouse.js +103 -0
- package/initramfs/buninu/apps/bunmsh/src/shell.js +3932 -0
- package/initramfs/buninu/apps/bunmsh/test/catfancy.test.js +102 -0
- package/initramfs/buninu/apps/bunmsh/test/curl.test.js +335 -0
- package/initramfs/buninu/apps/bunmsh/test/reference-source.sh +1 -0
- package/initramfs/buninu/apps/bunmsh/test/reference.test.js +817 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/README.md +3 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/bad.json +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.json +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.json5 +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.jsonc +2 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.jsonl +2 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.ndjson +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.toml +3 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.ts +15 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.xml +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.yaml +3 -0
- package/initramfs/buninu/apps/bunmsh/test/serve/data.yml +1 -0
- package/initramfs/buninu/apps/bunmsh/test/serve.test.js +241 -0
- package/initramfs/buninu/apps/bunmsh/test/shell.test.js +2092 -0
- package/initramfs/buninu/apps/bunmsh/test/shell1.test.js +1087 -0
- package/initramfs/buninu/apps/bunmsh/test/shell2.test.js +457 -0
- package/initramfs/buninu/apps/bunmsh/test/shell3.test.js +741 -0
- package/initramfs/buninu/apps/bunmsh/test/t.sh +12 -0
- package/initramfs/buninu/apps/bunx/bunx.js +172 -0
- package/initramfs/buninu/apps/cmdlist +48 -0
- package/initramfs/buninu/apps/jsgotty/LICENSE +23 -0
- package/initramfs/buninu/apps/jsgotty/LICENSES/Apache-2.0-zmodem.js.txt +201 -0
- package/initramfs/buninu/apps/jsgotty/NOTICE +21 -0
- package/initramfs/buninu/apps/jsgotty/README.en.md +294 -0
- package/initramfs/buninu/apps/jsgotty/README.md +296 -0
- package/initramfs/buninu/apps/jsgotty/client.mjs +700 -0
- package/initramfs/buninu/apps/jsgotty/env.sh +2 -0
- package/initramfs/buninu/apps/jsgotty/gotty.js +3334 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/.package-lock.json +35 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/LICENSE.md +9 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/README.md +319 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/common.gypi +20 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/except.gypi +25 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/index.js +12 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi-inl.h +6607 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi.h +3201 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/node_addon_api.gyp +32 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/node_api.gyp +9 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/noexcept.gypi +26 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/nothing.c +0 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/package-support.json +21 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/package.json +480 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/README.md +73 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/check-napi.js +99 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/clang-format.js +71 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/conversion.js +301 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/eslint-format.js +79 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/LICENSE +20 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/README.md +548 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/browser.js +8 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/index.js +22 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/buffer-util.js +131 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/constants.js +19 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/event-target.js +292 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/extension.js +203 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/limiter.js +55 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/permessage-deflate.js +528 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/receiver.js +760 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/sender.js +607 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/stream.js +161 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/subprotocol.js +62 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/validation.js +152 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/websocket-server.js +562 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/websocket.js +1407 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/package.json +70 -0
- package/initramfs/buninu/apps/jsgotty/node_modules/ws/wrapper.mjs +21 -0
- package/initramfs/buninu/apps/jsgotty/package-lock.json +46 -0
- package/initramfs/buninu/apps/jsgotty/package.json +19 -0
- package/initramfs/buninu/apps/jsgotty/patches/windowsPtyAgent.js +326 -0
- package/initramfs/buninu/apps/jsgotty/patches/windowsTerminal.js +204 -0
- package/initramfs/buninu/apps/jsgotty/rz.js +199 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/README.md +384 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/assetsHelper.js +371 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/assetsLoader.mjs +85 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/assetsPacker.js +218 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/compiled.js +498 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/entry.mjs +23 -0
- package/initramfs/buninu/apps/jsgotty/single-exe/packAssets.sh +7 -0
- package/initramfs/buninu/apps/jsgotty/static/css/index.css +13 -0
- package/initramfs/buninu/apps/jsgotty/static/css/kitty.css +61 -0
- package/initramfs/buninu/apps/jsgotty/static/css/xterm.css +218 -0
- package/initramfs/buninu/apps/jsgotty/static/css/xterm_customize.css +35 -0
- package/initramfs/buninu/apps/jsgotty/static/favicon.ico +0 -0
- package/initramfs/buninu/apps/jsgotty/static/help.md +125 -0
- package/initramfs/buninu/apps/jsgotty/static/icon.svg +66 -0
- package/initramfs/buninu/apps/jsgotty/static/icon_192.png +0 -0
- package/initramfs/buninu/apps/jsgotty/static/index.html +164 -0
- package/initramfs/buninu/apps/jsgotty/static/js/gotty.js +31537 -0
- package/initramfs/buninu/apps/jsgotty/static/js/gotty.js.LICENSE.txt +7 -0
- package/initramfs/buninu/apps/jsgotty/static/js/gotty.js.map +1 -0
- package/initramfs/buninu/apps/jsgotty/static/js/gotty.licenses.txt +650 -0
- package/initramfs/buninu/apps/jsgotty/static/js/kitty.js +1101 -0
- package/initramfs/buninu/apps/jsgotty/static/js/windows_bridge.js +194 -0
- package/initramfs/buninu/apps/jsgotty/static/js/xterm-addon-unicode11.js +2 -0
- package/initramfs/buninu/apps/jsgotty/static/js/zmodem.js +1 -0
- package/initramfs/buninu/apps/jsgotty/static/manifest.json +15 -0
- package/initramfs/buninu/apps/jsgotty/sz.js +273 -0
- package/initramfs/buninu/apps/jsgotty/tests/kitty-order.test.js +58 -0
- package/initramfs/buninu/apps/jsgotty/tests/websocket-origin.test.js +54 -0
- package/initramfs/buninu/apps/jsgotty/viu.mjs +422 -0
- package/initramfs/buninu/apps/jsgotty/wgotty +62 -0
- package/initramfs/buninu/apps/jsgotty/windows-bridge-node.js +60 -0
- package/initramfs/buninu/apps/jsgotty/zmodem-node.js +262 -0
- package/initramfs/buninu/apps/jsmdcui/CHANGELOG.md +1118 -0
- package/initramfs/buninu/apps/jsmdcui/LICENSE +22 -0
- package/initramfs/buninu/apps/jsmdcui/README.md +1283 -0
- package/initramfs/buninu/apps/jsmdcui/cdp-maze.js +141 -0
- package/initramfs/buninu/apps/jsmdcui/clean.sh +9 -0
- package/initramfs/buninu/apps/jsmdcui/demos/basic.jpg +0 -0
- package/initramfs/buninu/apps/jsmdcui/demos/chinese.md +32 -0
- package/initramfs/buninu/apps/jsmdcui/demos/event.md +170 -0
- package/initramfs/buninu/apps/jsmdcui/demos/good.jpg +0 -0
- package/initramfs/buninu/apps/jsmdcui/demos/image-processor.md +366 -0
- package/initramfs/buninu/apps/jsmdcui/demos/image-processor.zh-TW.md +366 -0
- package/initramfs/buninu/apps/jsmdcui/demos/img-change.md +73 -0
- package/initramfs/buninu/apps/jsmdcui/demos/imgtool-zh.md +298 -0
- package/initramfs/buninu/apps/jsmdcui/demos/imgtool.md +298 -0
- package/initramfs/buninu/apps/jsmdcui/demos/maze.md +149 -0
- package/initramfs/buninu/apps/jsmdcui/demos/reactive.md +40 -0
- package/initramfs/buninu/apps/jsmdcui/demos/reader.md +513 -0
- package/initramfs/buninu/apps/jsmdcui/demos/select.md +63 -0
- package/initramfs/buninu/apps/jsmdcui/demos/todo-zh.md +190 -0
- package/initramfs/buninu/apps/jsmdcui/demos/todo.md +191 -0
- package/initramfs/buninu/apps/jsmdcui/edit +9 -0
- package/initramfs/buninu/apps/jsmdcui/jsmdcui.sh +16 -0
- package/initramfs/buninu/apps/jsmdcui/llm-maze.txt +94 -0
- package/initramfs/buninu/apps/jsmdcui/package.json +29 -0
- package/initramfs/buninu/apps/jsmdcui/project_structure.txt +35 -0
- package/initramfs/buninu/apps/jsmdcui/runmd.mjs +1140 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/atom-dark.micro +33 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/bubblegum.micro +31 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/cmc-16.micro +47 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/cmc-tc.micro +43 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/darcula.micro +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/default.micro +1 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dracula-tc.micro +49 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukedark-tc.micro +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukelight-tc.micro +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukeubuntu-tc.micro +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/geany.micro +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gotham.micro +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gruvbox-tc.micro +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gruvbox.micro +26 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/material-tc.micro +36 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/monokai-dark.micro +28 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/monokai.micro +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/one-dark.micro +39 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/railscast.micro +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/simple.micro +33 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/solarized-tc.micro +31 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/solarized.micro +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/sunny-day.micro +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/twilight.micro +40 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/zenburn.micro +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/actions.md +161 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/cdp.md +130 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/colors.md +421 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/commands.md +161 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/copypaste.md +149 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/defaultkeys.md +148 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/help.md +1283 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/keybindings.md +355 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/linter.md +90 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/options.md +709 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/plugins.md +544 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/help/tutorial.md +112 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/cdp/cdp-server.js +1263 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/cdp/cdp.js +203 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/chapter/chapter.js +111 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/diff/diff.js +46 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/example/example.js +117 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/linter/linter.js +281 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/autoclose/autoclose.lua +75 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/ftoptions/ftoptions.lua +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/literate/README.md +5 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/literate/literate.lua +55 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/status/help/status.md +21 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/plugins/status/status.lua +62 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/LICENSE +22 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/PowerShell.yaml +128 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/README.md +63 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ada.yaml +43 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/apacheconf.yaml +59 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/arduino.yaml +101 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/asciidoc.yaml +51 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/asm.yaml +123 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ats.yaml +99 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/awk.yaml +44 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/b.yaml +87 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/bat.yaml +57 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/c.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/caddyfile.yaml +23 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cake.yaml +7 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/clojure.yaml +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cmake.yaml +42 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/coffeescript.yaml +56 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/colortest.yaml +19 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/conky.yaml +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cpp.yaml +91 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/crontab.yaml +36 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/crystal.yaml +72 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/csharp.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/css.yaml +44 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/csx.yaml +8 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cuda.yaml +68 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cython.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/d.yaml +121 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dart.yaml +46 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/default.yaml +10 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dockerfile.yaml +36 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dot.yaml +29 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/elixir.yaml +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/elm.yaml +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/erb.yaml +42 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/erlang.yaml +45 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fish.yaml +48 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/forth.yaml +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fortran.yaml +64 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/freebsd-kernel.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fsharp.yaml +48 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gdscript.yaml +61 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gemini.yaml +19 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gentoo-ebuild.yaml +48 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gentoo-etc-portage.yaml +23 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-commit.yaml +35 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-config.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-rebase-todo.yaml +19 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gleam.yaml +69 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/glsl.yaml +26 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gnuplot.yaml +15 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/go.yaml +62 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/godoc.yaml +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/golo.yaml +73 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gomod.yaml +31 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/graphql.yaml +47 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/groff.yaml +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/groovy.yaml +111 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/haml.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/hare.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/haskell.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/hc.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html.yaml +70 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html4.yaml +25 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html5.yaml +25 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ini.yaml +23 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/inputrc.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/java.yaml +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/javascript.yaml +124 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/jinja2.yaml +19 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/json.yaml +39 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/jsonnet.yaml +92 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/julia.yaml +57 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/justfile.yaml +40 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/keymap.yaml +27 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kickstart.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kotlin.yaml +66 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kvlang.yaml +67 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ledger.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lfe.yaml +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lilypond.yaml +26 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lisp.yaml +17 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/log.yaml +92 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lua.yaml +111 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mail.yaml +25 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/makefile.yaml +38 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/man.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/markdown.yaml +65 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mc.yaml +23 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/meson.yaml +51 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/micro.yaml +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mpdconf.yaml +13 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/msbuild.yaml +6 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nanorc.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nftables.yaml +30 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nginx.yaml +22 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nim.yaml +27 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nix.yaml +32 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nu.yaml +114 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/objc.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ocaml.yaml +43 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/octave.yaml +83 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/odin.yaml +64 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pascal.yaml +45 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/patch.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/peg.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/perl.yaml +58 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/php.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pkg-config.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/po.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pony.yaml +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pov.yaml +21 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-action.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-config.yaml +10 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-filter.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/proto.yaml +40 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/prql.yaml +84 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/puppet.yaml +22 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/python2.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/python3.yaml +80 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/r.yaml +32 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/raku.yaml +42 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/reST.yaml +18 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/renpy.yaml +15 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/rpmspec.yaml +43 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ruby.yaml +73 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/rust.yaml +78 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sage.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/scad.yaml +53 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/scala.yaml +33 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sed.yaml +13 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sh.yaml +69 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sls.yaml +15 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/smalltalk.yaml +55 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/solidity.yaml +41 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sql.yaml +35 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/stata.yaml +67 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/svelte.yaml +27 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/swift.yaml +103 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/systemd.yaml +16 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/tcl.yaml +18 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/terraform.yaml +87 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/tex.yaml +32 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/toml.yaml +56 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/twig.yaml +55 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/typescript.yaml +49 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/v.yaml +80 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vala.yaml +26 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/verilog.yaml +60 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vhdl.yaml +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vi.yaml +31 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vue.yaml +64 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/xml.yaml +37 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/xresources.yaml +14 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/yaml.yaml +34 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/yum.yaml +12 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zig.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zscript.yaml +72 -0
- package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zsh.yaml +52 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/README.md +396 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/assetsHelper.js +371 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/assetsLoader.mjs +85 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/assetsPacker.js +218 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/compiled.js +498 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/entry.mjs +17 -0
- package/initramfs/buninu/apps/jsmdcui/single-exe/packAssets.sh +7 -0
- package/initramfs/buninu/apps/jsmdcui/src/MDCUI_DEFAULT_EDIT +0 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/backup.js +165 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/buffer.js +126 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/fixed3-codec.js +140 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/loc.js +38 -0
- package/initramfs/buninu/apps/jsmdcui/src/buffer/message.js +29 -0
- package/initramfs/buninu/apps/jsmdcui/src/build-args.js +40 -0
- package/initramfs/buninu/apps/jsmdcui/src/config/clean.js +172 -0
- package/initramfs/buninu/apps/jsmdcui/src/config/colorscheme.js +99 -0
- package/initramfs/buninu/apps/jsmdcui/src/config/config.js +125 -0
- package/initramfs/buninu/apps/jsmdcui/src/config/defaults.js +109 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/fence-events.mjs +144 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/heading-ids.mjs +1568 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/id-collision.mjs +111 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/identity.mjs +26 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-debug.mjs +25 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-images.mjs +280 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-mode.mjs +6 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/rerender-queue.mjs +66 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/rpc.mjs +1554 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/server.mjs +128 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/table-render.mjs +286 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/table-row-edit.mjs +226 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/task-checkbox.mjs +60 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/template-components.mjs +253 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/text-block-resize.mjs +177 -0
- package/initramfs/buninu/apps/jsmdcui/src/cui/tui-links.mjs +560 -0
- package/initramfs/buninu/apps/jsmdcui/src/display/ansi-style.js +60 -0
- package/initramfs/buninu/apps/jsmdcui/src/highlight/highlighter.js +243 -0
- package/initramfs/buninu/apps/jsmdcui/src/highlight/parser.js +225 -0
- package/initramfs/buninu/apps/jsmdcui/src/index.js +9586 -0
- package/initramfs/buninu/apps/jsmdcui/src/lua/engine.js +68 -0
- package/initramfs/buninu/apps/jsmdcui/src/platform/archive.js +50 -0
- package/initramfs/buninu/apps/jsmdcui/src/platform/clipboard.js +278 -0
- package/initramfs/buninu/apps/jsmdcui/src/platform/commands.js +221 -0
- package/initramfs/buninu/apps/jsmdcui/src/platform/terminal.js +5 -0
- package/initramfs/buninu/apps/jsmdcui/src/plugins/js-bridge.js +3377 -0
- package/initramfs/buninu/apps/jsmdcui/src/plugins/manager.js +674 -0
- package/initramfs/buninu/apps/jsmdcui/src/runtime/encodings.js +10 -0
- package/initramfs/buninu/apps/jsmdcui/src/runtime/registry.js +134 -0
- package/initramfs/buninu/apps/jsmdcui/src/screen/cell-buffer.js +81 -0
- package/initramfs/buninu/apps/jsmdcui/src/screen/events.js +263 -0
- package/initramfs/buninu/apps/jsmdcui/src/screen/screen.js +249 -0
- package/initramfs/buninu/apps/jsmdcui/src/screen/vt100.js +571 -0
- package/initramfs/buninu/apps/jsmdcui/src/shell/shell.js +70 -0
- package/initramfs/buninu/apps/jsmdcui/testapp.md +78 -0
- package/initramfs/buninu/apps/jsmdcui/tests/assets-helper.test.js +150 -0
- package/initramfs/buninu/apps/jsmdcui/tests/backup.test.js +158 -0
- package/initramfs/buninu/apps/jsmdcui/tests/cat-markdown.test.js +139 -0
- package/initramfs/buninu/apps/jsmdcui/tests/cdp-security.test.js +32 -0
- package/initramfs/buninu/apps/jsmdcui/tests/cdp-websocket-test.html +46 -0
- package/initramfs/buninu/apps/jsmdcui/tests/cmphex3b64.js +95 -0
- package/initramfs/buninu/apps/jsmdcui/tests/compiled-runtime.test.js +139 -0
- package/initramfs/buninu/apps/jsmdcui/tests/config-settings.test.js +52 -0
- package/initramfs/buninu/apps/jsmdcui/tests/demo.test.js +448 -0
- package/initramfs/buninu/apps/jsmdcui/tests/docs-sync.test.js +14 -0
- package/initramfs/buninu/apps/jsmdcui/tests/fence-events.test.js +1293 -0
- package/initramfs/buninu/apps/jsmdcui/tests/heading-ids.test.js +559 -0
- package/initramfs/buninu/apps/jsmdcui/tests/heading-list-selector.test.js +2393 -0
- package/initramfs/buninu/apps/jsmdcui/tests/id-collision.test.js +514 -0
- package/initramfs/buninu/apps/jsmdcui/tests/jmigt.js +16 -0
- package/initramfs/buninu/apps/jsmdcui/tests/js-plugin-prompts.test.js +110 -0
- package/initramfs/buninu/apps/jsmdcui/tests/key-event.md +10 -0
- package/initramfs/buninu/apps/jsmdcui/tests/kitty-demo.md +184 -0
- package/initramfs/buninu/apps/jsmdcui/tests/kitty-images.test.js +288 -0
- package/initramfs/buninu/apps/jsmdcui/tests/kitty-mode.test.js +14 -0
- package/initramfs/buninu/apps/jsmdcui/tests/platform-commands.test.js +18 -0
- package/initramfs/buninu/apps/jsmdcui/tests/platform-terminal.test.js +8 -0
- package/initramfs/buninu/apps/jsmdcui/tests/pty-demo.js +492 -0
- package/initramfs/buninu/apps/jsmdcui/tests/rerender-queue.test.js +130 -0
- package/initramfs/buninu/apps/jsmdcui/tests/table-render.test.js +150 -0
- package/initramfs/buninu/apps/jsmdcui/tests/table-row-edit.test.js +138 -0
- package/initramfs/buninu/apps/jsmdcui/tests/task-checkbox.test.js +33 -0
- package/initramfs/buninu/apps/jsmdcui/tests/template-components.test.js +422 -0
- package/initramfs/buninu/apps/jsmdcui/tests/text-block-resize.test.js +222 -0
- package/initramfs/buninu/apps/jsmdcui/tests/textarea.md +8 -0
- package/initramfs/buninu/apps/jsmdcui/tests/tui-links.test.js +298 -0
- package/initramfs/buninu/apps/jsmdcui/tests/wui-responsive-images.test.js +60 -0
- package/initramfs/buninu/apps/jsmdcui/tests/wui.test.js +108 -0
- package/initramfs/buninu/apps/jsmdcui/tests/wv-client.js +96 -0
- package/initramfs/buninu/apps/jsmdcui/tui +7 -0
- package/initramfs/buninu/apps/jsmdcui/wui +9 -0
- package/initramfs/buninu/apps/musl-la/LICENSES/GPL-3.0.txt +674 -0
- package/initramfs/buninu/apps/musl-la/LICENSES/gcc_runtime_exception.txt +73 -0
- package/initramfs/buninu/apps/musl-la/LICENSE_musl.txt +193 -0
- package/initramfs/buninu/apps/musl-la/NOTICE +41 -0
- package/initramfs/buninu/apps/musl-la/ld-musl-aarch64.so.1 +0 -0
- package/initramfs/buninu/apps/musl-la/libgcc_s.so.1 +0 -0
- package/initramfs/buninu/apps/musl-la/libstdc++.so.6 +0 -0
- package/initramfs/buninu/apps/musl-la/musl-la.sh +36 -0
- package/initramfs/buninu/apps/native-bridge/native-bridge.js +199 -0
- package/initramfs/buninu/apps/native-bridge/package.json +8 -0
- package/initramfs/buninu/apps/tts/tts.js +214 -0
- package/initramfs/buninu/apps/xclip/xclip.js +121 -0
- package/initramfs/buninu/apps/xdg-open/xdg-open.js +151 -0
- package/initramfs/buninu/bin/bun.bat +37 -0
- package/initramfs/buninu/bin/bun.sh +57 -0
- package/initramfs/buninu/bin/buninu-help.bat +4 -0
- package/initramfs/buninu/bin/buninu-help.sh +7 -0
- package/initramfs/buninu/bin/bunmsh.bat +3 -0
- package/initramfs/buninu/bin/bunmsh.sh +5 -0
- package/initramfs/buninu/bin/bunx.bat +3 -0
- package/initramfs/buninu/bin/glow.bat +3 -0
- package/initramfs/buninu/bin/glow.sh +5 -0
- package/initramfs/buninu/bin/init.js +779 -0
- package/initramfs/buninu/bin/install.js +570 -0
- package/initramfs/buninu/bin/jmi.bat +3 -0
- package/initramfs/buninu/bin/jmi.sh +5 -0
- package/initramfs/buninu/bin/jsgotty.bat +3 -0
- package/initramfs/buninu/bin/jsgotty.sh +5 -0
- package/initramfs/buninu/bin/jsmdcui.bat +11 -0
- package/initramfs/buninu/bin/libsh-loader.c +135 -0
- package/initramfs/buninu/bin/libsh-loader.so +0 -0
- package/initramfs/buninu/bin/multicall.sh +103 -0
- package/initramfs/buninu/bin/native-bridge.bat +3 -0
- package/initramfs/buninu/bin/rz.bat +3 -0
- package/initramfs/buninu/bin/rz.sh +5 -0
- package/initramfs/buninu/bin/shc.js +5 -0
- package/initramfs/buninu/bin/showimg.bat +3 -0
- package/initramfs/buninu/bin/showimg.sh +5 -0
- package/initramfs/buninu/bin/switch_to_android.sh +9 -0
- package/initramfs/buninu/bin/switch_to_linux.sh +7 -0
- package/initramfs/buninu/bin/sz.bat +3 -0
- package/initramfs/buninu/bin/sz.sh +5 -0
- package/initramfs/buninu/bin/tts.bat +3 -0
- package/initramfs/buninu/bin/xclip.bat +3 -0
- package/initramfs/buninu/bin/xdg-open.bat +3 -0
- package/initramfs/buninu/demo-server.js +64 -0
- package/initramfs/buninu/icon.png +0 -0
- package/initramfs/buninu/package.json +59 -0
- package/initramfs/etc/resolv.conf +1 -0
- package/initramfs/init.js +339 -0
- package/initramfs/lib/ld-musl-x86_64.so.1 +0 -0
- package/initramfs/lib/libc.musl-x86_64.so.1 +0 -0
- package/initramfs/lib/libgcc_s.so.1 +0 -0
- package/initramfs/lib/libstdc++.so.6 +0 -0
- package/initramfs/usr/bin/env +7 -0
- package/package.json +42 -0
- package/run-qemu.sh +44 -0
- package/scripts/fetch.sh +26 -0
- package/scripts/pack-initramfs.sh +41 -0
- package/test/build-init-bootstrap.sh +23 -0
- package/test/init-bootstrap.c +55 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
# jsgotty / gotty.js
|
|
2
|
+
|
|
3
|
+
[中文 README](README.md)
|
|
4
|
+
|
|
5
|
+
## News
|
|
6
|
+
### 2026/08/16
|
|
7
|
+
- Fixed the disconnected-screen `Reconnect` button not being clickable in WebGL mode.
|
|
8
|
+
- The `Reconnect` UI now stays above the WebGL canvas and receives mouse and touch events correctly; Kitty image handling no longer intercepts right-click / long-press for entering a reconnect token or PID.
|
|
9
|
+
|
|
10
|
+
### 2026/07/03 - [1.1.0]
|
|
11
|
+
- Unicode 11 from upstream
|
|
12
|
+
- WebGL support by `--webgl` and query args
|
|
13
|
+
- Frontend help by `--help-web`
|
|
14
|
+
- Added `font-size` and `font-family`
|
|
15
|
+
- Added `touch-scroll-threshold` for fast scrolling
|
|
16
|
+
- Added experimental single-exe build commands: `--build-exe` and `--build-for <target>`
|
|
17
|
+
- Improved ZMODEM / `rz/sz` reliability for large transfers
|
|
18
|
+
* terminal mode is switched for binary transfer and restored after transfer / cancel
|
|
19
|
+
* server-side output parsers are bypassed during ZMODEM sessions
|
|
20
|
+
* ZMODEM data uses ordered WebSocket chunks with acknowledgement / retransmit handling
|
|
21
|
+
- Improved `sz` download UI
|
|
22
|
+
* streams downloads to browser file writer
|
|
23
|
+
* shows current file, transferred bytes / total bytes, progress, and verbose transfer logs
|
|
24
|
+
- Improved `rz` upload UI
|
|
25
|
+
* shows current file, transferred bytes / total bytes, progress, and verbose transfer logs
|
|
26
|
+
* supports back-to-back `sz` then `rz` sessions more reliably
|
|
27
|
+
- `rz` / `sz` terminal commands now print completion summaries with file path and byte size
|
|
28
|
+
- ZMODEM debug logs are opt-in with `JSGOTTY_ZMODEM_LOG`
|
|
29
|
+
|
|
30
|
+
### 2026/06/22 - [1.0.0]
|
|
31
|
+
- Added gotty cli client
|
|
32
|
+
* compatible with golang gotty
|
|
33
|
+
* jsgotty --client -h for more info
|
|
34
|
+
- Added /css to list sessions
|
|
35
|
+
* when --reconnect enabled, /css can reconnect to existing sessions
|
|
36
|
+
|
|
37
|
+
### 2026/04/23
|
|
38
|
+
- Added optional `noWinOpenUseFetch()` on the frontend for Bun markdown TUI:
|
|
39
|
+
- https://github.com/jjtseng93/bun-taskmgr
|
|
40
|
+
|
|
41
|
+
### 2026/04/21
|
|
42
|
+
- Added dialog text display on the frontend:
|
|
43
|
+
- `alert_advanced(getTerminalText())`
|
|
44
|
+
- for copying text on mobile devices
|
|
45
|
+
|
|
46
|
+
## Intro
|
|
47
|
+
- Expose your terminal through browsers, CLI clients, and modern web protocols.
|
|
48
|
+
- This is a GoTTY-compatible server rewritten in JavaScript / Bun.
|
|
49
|
+
- It is based on the original GoTTY code, with most of the new code generated by Codex.
|
|
50
|
+
- It includes a frontend and WebTTY protocol implementation adjusted for `jsgotty`.
|
|
51
|
+
- Original repository:
|
|
52
|
+
- https://github.com/sorenisanerd/gotty
|
|
53
|
+
- .
|
|
54
|
+
- Keywords: Terminal, TTY, Browser, CLI Client, Session management, Kitty graphics protocol, ZMODEM
|
|
55
|
+
|
|
56
|
+
### Features
|
|
57
|
+
- Resumable reconnect: after the browser disconnects, you can reconnect to the original shell / PTY with a reconnect token instead of spawning a new shell.
|
|
58
|
+
* jsgotty supports two connection modes: normal mode and session mode.
|
|
59
|
+
* Use `--reconnect` or `--session` to enable session mode.
|
|
60
|
+
* See the detailed mode explanation below.
|
|
61
|
+
- Kitty Graphics Protocol: displays inline terminal images.
|
|
62
|
+
* For example, `bun viu.mjs 1.png` shows an image directly in the terminal.
|
|
63
|
+
* Set `JSGOTTY_KITTY_DEBUG=1` to write the Kitty image debug log.
|
|
64
|
+
* Windows does not use Kitty protocol; it uses a custom protocol.
|
|
65
|
+
- ZMODEM / `rz/sz`: select files in the browser and upload them to the remote shell.
|
|
66
|
+
* You can also download files from the remote shell.
|
|
67
|
+
* Windows does not use ZMODEM; it uses a custom protocol.
|
|
68
|
+
* Linux has been tested with uploads/downloads around an 80MB Bun binary.
|
|
69
|
+
|
|
70
|
+
## Usage
|
|
71
|
+
|
|
72
|
+
### Install Bun
|
|
73
|
+
- Android / Termux:
|
|
74
|
+
* `pkg install npm`
|
|
75
|
+
* `npm install -g bun`
|
|
76
|
+
- Other platforms:
|
|
77
|
+
* https://bun.com
|
|
78
|
+
|
|
79
|
+
### Linux
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
bun gotty.js -w bash
|
|
83
|
+
bun gotty.js -w --credential user:pass bash
|
|
84
|
+
bun gotty.js -w -p 8000 fish
|
|
85
|
+
|
|
86
|
+
# ↓ enables session mode
|
|
87
|
+
bun gotty.js -w --reconnect fish
|
|
88
|
+
bun gotty.js -w --reconnect --reconnect-time 30 fish
|
|
89
|
+
bun gotty.js -w --reconnect --reconnect-time -1 fish
|
|
90
|
+
|
|
91
|
+
# or npx jsgotty@latest
|
|
92
|
+
|
|
93
|
+
# show server / browser help
|
|
94
|
+
bun gotty.js
|
|
95
|
+
bun gotty.js --help
|
|
96
|
+
bun gotty.js --help-web
|
|
97
|
+
# ↑ browser help is also available at /help
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Windows
|
|
101
|
+
|
|
102
|
+
```sh
|
|
103
|
+
bun gotty.js -w cmd.exe
|
|
104
|
+
bun gotty.js -w powershell
|
|
105
|
+
|
|
106
|
+
# ↓ enables session mode
|
|
107
|
+
bun gotty.js --reconnect powershell
|
|
108
|
+
|
|
109
|
+
# or npx jsgotty@latest
|
|
110
|
+
|
|
111
|
+
# show server / browser help
|
|
112
|
+
bun gotty.js
|
|
113
|
+
bun gotty.js --help
|
|
114
|
+
bun gotty.js --help-web
|
|
115
|
+
# ↑ browser help is also available at /help
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Built-in tools
|
|
119
|
+
|
|
120
|
+
```sh
|
|
121
|
+
bun gotty.js --rz
|
|
122
|
+
bun gotty.js --sz
|
|
123
|
+
bun gotty.js --viu
|
|
124
|
+
bun gotty.js --client
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- `--rz` starts `rz.js`: upload files
|
|
128
|
+
- `--sz` starts `sz.js`: download files
|
|
129
|
+
- `--viu` starts `viu.mjs`: display images
|
|
130
|
+
- `--client` starts `client.mjs`: command-line client
|
|
131
|
+
|
|
132
|
+
### CLI Client
|
|
133
|
+
|
|
134
|
+
- `client.mjs` is an interactive terminal client that connects directly to GoTTY.
|
|
135
|
+
- Basic connections are compatible with Golang GoTTY.
|
|
136
|
+
- Session listing, writer management, and remote PTY termination require this project's jsgotty server.
|
|
137
|
+
- See the detailed mode explanation below for the difference between normal mode and session mode.
|
|
138
|
+
|
|
139
|
+
#### Basic connection
|
|
140
|
+
|
|
141
|
+
```sh
|
|
142
|
+
# Connect to the default ws://127.0.0.1:8080/ws
|
|
143
|
+
bun gotty.js --client
|
|
144
|
+
|
|
145
|
+
# Connect to 127.0.0.1:8081
|
|
146
|
+
bun gotty.js --client 8081
|
|
147
|
+
|
|
148
|
+
# HTTP(S) page URLs and WS(S) URLs are accepted
|
|
149
|
+
bun gotty.js --client https://example.com/terminal/
|
|
150
|
+
|
|
151
|
+
# Connect with credentials
|
|
152
|
+
bun gotty.js --client -c user:pass 8081
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
#### Session management
|
|
156
|
+
|
|
157
|
+
```sh
|
|
158
|
+
# List current sessions
|
|
159
|
+
bun gotty.js --client -ls [target]
|
|
160
|
+
|
|
161
|
+
# Resume an existing session by reconnect token or PID
|
|
162
|
+
# Requires session mode
|
|
163
|
+
bun gotty.js --client -r <token|pid> [target]
|
|
164
|
+
|
|
165
|
+
# Disconnect the current writer while keeping the PTY session alive
|
|
166
|
+
# Requires session mode
|
|
167
|
+
bun gotty.js --client -d <token|pid> [target]
|
|
168
|
+
|
|
169
|
+
# Terminate the matching PTY session
|
|
170
|
+
bun gotty.js --client -k <token|pid> [target]
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
The first argument can also use subcommand aliases:
|
|
174
|
+
|
|
175
|
+
- `ls`, `list`, `list-sessions` => `-ls`
|
|
176
|
+
- `attach`, `a <token|pid>` => `-r <token|pid>`
|
|
177
|
+
- `detach <token|pid>` => `-d <token|pid>`
|
|
178
|
+
- `kill-session`, `stop <token|pid>` => `-k <token|pid>`
|
|
179
|
+
|
|
180
|
+
- `-ls` reads the server's `/css.md` session list.
|
|
181
|
+
- Open `/css` to view the session list in a browser.
|
|
182
|
+
- If `/css` shows a static file list instead of sessions, the server is Golang GoTTY, not jsgotty.
|
|
183
|
+
- `-r` requires session mode; it resumes the matching PTY session.
|
|
184
|
+
- `-d` requires session mode; after disconnecting the session writer, the session remains alive and the next writable client can take over.
|
|
185
|
+
- `-k` terminates the matching PTY/session.
|
|
186
|
+
- `--arg <value>` may be repeated to pass command arguments; `--arguments <query>` passes a raw query string.
|
|
187
|
+
- `--cols` and `--rows` set the initial terminal size.
|
|
188
|
+
- `GOTTY_CREDENTIAL` and `GOTTY_RECONNECT_TOKEN` may be used to configure credentials and the reconnect token.
|
|
189
|
+
- See "Normal Mode / Session Mode" below for PTY creation, writer/viewer roles, and reconnect retention behavior.
|
|
190
|
+
- Golang GoTTY does not support the jsgotty control protocols used by `-ls`, `-r`, `-d`, and `-k`.
|
|
191
|
+
|
|
192
|
+
### Wrapper
|
|
193
|
+
- `wgotty` is a wrapper for Linux
|
|
194
|
+
- or for Windows with `busybox64u.exe bash`
|
|
195
|
+
- https://frippery.org/busybox/
|
|
196
|
+
- just run `./wgotty`
|
|
197
|
+
- it will detect whether Bun is installed
|
|
198
|
+
- and show the installation script if needed
|
|
199
|
+
|
|
200
|
+
## Normal Mode / Session Mode
|
|
201
|
+
|
|
202
|
+
The `jsgotty` server has two connection modes:
|
|
203
|
+
|
|
204
|
+
- Normal mode: no `--reconnect` or `--session`
|
|
205
|
+
- Session mode: `--reconnect` or `--session`
|
|
206
|
+
|
|
207
|
+
### Normal Mode
|
|
208
|
+
|
|
209
|
+
- Each new browser or `client.mjs` connection creates a new `PtySession` and a new PTY.
|
|
210
|
+
- Two clients connected at the same time are usually two different shells / PTYs. They do not share screen output, input, or process state.
|
|
211
|
+
- When a client disconnects, its corresponding PTY session is closed.
|
|
212
|
+
- If the browser window, tab, or websocket closes normally, the server cleans up the PTY for that connection.
|
|
213
|
+
- Normal mode cannot resume an existing PTY. If the browser or CLI sends a reconnect token / PID, it will not resume the old session and will create a new PTY instead.
|
|
214
|
+
- `/css` and `/css.md` still list active session PIDs and command names, but they do not provide reconnect tokens or reconnect links.
|
|
215
|
+
- `client.mjs -ls` can list sessions; `-k <pid>` can terminate a session by PID; `-r` and `-d` require session mode.
|
|
216
|
+
|
|
217
|
+
### Session Mode
|
|
218
|
+
|
|
219
|
+
- Enable it with `--reconnect` or `--session`.
|
|
220
|
+
- The first connection creates a new `PtySession` and PTY unless it provides a resumable token / PID.
|
|
221
|
+
- The server generates a reconnect token for each session and sends the session PID and token to the frontend.
|
|
222
|
+
- Later, a browser or CLI can use the reconnect token or PID to resume the same PTY instead of spawning a new shell.
|
|
223
|
+
- Multiple clients can connect to the same PTY session.
|
|
224
|
+
- The first writable client becomes the writer and can send keyboard input, resize events, ZMODEM controls, and other data to the PTY.
|
|
225
|
+
- Other clients are viewers. They receive terminal output but do not write to the PTY.
|
|
226
|
+
- A client can also use `--readonly` to connect explicitly as a viewer.
|
|
227
|
+
- If the writer disconnects while the session still has viewers, existing viewers are not automatically promoted to writer. The next writable client that resumes the same session can become the new writer.
|
|
228
|
+
- After the last client disconnects, `--reconnect-time` decides whether the PTY is kept.
|
|
229
|
+
|
|
230
|
+
#### `--reconnect-time` Behavior
|
|
231
|
+
- `> 0`: keep the PTY for the specified number of seconds after the last client disconnects. It can be resumed during that window; after timeout, the PTY is closed.
|
|
232
|
+
- `= 0`: close the PTY immediately after the last client disconnects.
|
|
233
|
+
- `< 0`: keep the PTY indefinitely until the shell exits, `-k` terminates it, or the server stops.
|
|
234
|
+
|
|
235
|
+
#### Frontend Reconnect Behavior
|
|
236
|
+
- When `reconnect-time > 0`, the frontend retries automatically several times within the timeout.
|
|
237
|
+
- When `reconnect-time < 0`, the frontend retries once per minute.
|
|
238
|
+
- On disconnect, the overlay provides a `Reconnect` button for immediate manual retry.
|
|
239
|
+
- Right-click / long-press on that button lets you enter a custom reconnect token or PID.
|
|
240
|
+
|
|
241
|
+
## Tested platforms
|
|
242
|
+
- Windows x64: Windows 11
|
|
243
|
+
- Linux x64: CachyOS
|
|
244
|
+
- Android arm64: Termux Native / Proot
|
|
245
|
+
- Android arm64: My App
|
|
246
|
+
* https://drive.google.com/drive/folders/18iwbKrAZfA-HoTSP9I5MzGz5xVFMZ4bg
|
|
247
|
+
|
|
248
|
+
## Current implementation
|
|
249
|
+
- Uses Node's built-in `http` / `https`
|
|
250
|
+
- Uses `ws` for WebSocket upgrade handling
|
|
251
|
+
- Uses bundled frontend assets in `./static`, including kitty overlay and WebTTY / ZMODEM frontend logic
|
|
252
|
+
- Supports inline terminal images
|
|
253
|
+
- Supports file upload / download
|
|
254
|
+
|
|
255
|
+
### PTY backends
|
|
256
|
+
- Linux / macOS: use Bun's built-in PTY via `Bun.spawn(..., { terminal: ... })`
|
|
257
|
+
- Windows: use patched `node-pty`, while still launching `gotty.js` through `bun`
|
|
258
|
+
* Bun versions >= 1.3.14 use Bun's built-in PTY
|
|
259
|
+
|
|
260
|
+
### Kitty intro
|
|
261
|
+
- If the terminal program outputs images using Kitty Graphics Protocol on Linux, the frontend displays those images at the corresponding terminal position.
|
|
262
|
+
- Windows uses a custom protocol.
|
|
263
|
+
- Usage:
|
|
264
|
+
|
|
265
|
+
```sh
|
|
266
|
+
bun viu.mjs 1.png
|
|
267
|
+
# or bun gotty.js --viu 1.png
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### rz upload intro
|
|
271
|
+
- When the remote shell runs:
|
|
272
|
+
|
|
273
|
+
```sh
|
|
274
|
+
bun rz.js
|
|
275
|
+
# or bun gotty.js --rz
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
- The frontend opens a file picker. After selecting files, they are uploaded to the current shell directory using ZMODEM.
|
|
279
|
+
|
|
280
|
+
### sz download intro
|
|
281
|
+
- When the remote shell runs:
|
|
282
|
+
|
|
283
|
+
```sh
|
|
284
|
+
bun sz.js file.txt
|
|
285
|
+
# or bun gotty.js --sz file.txt
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
- The frontend receives the ZMODEM download data and lets the browser download the file.
|
|
289
|
+
|
|
290
|
+
## Notes
|
|
291
|
+
- The goal is to emulate the main behavior of the original GoTTY and add additional features.
|
|
292
|
+
- Bun is the primary runtime.
|
|
293
|
+
- On Linux / macOS, PTY support will not work unless the program is launched with Bun.
|
|
294
|
+
- GoTTY config file loading is not implemented yet.
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
# jsgotty / gotty.js
|
|
2
|
+
|
|
3
|
+
[English README](README.en.md)
|
|
4
|
+
|
|
5
|
+
## News
|
|
6
|
+
### 2026/08/16
|
|
7
|
+
- 修正 WebGL 模式下斷線畫面的 `Reconnect` 按鈕無法點擊。
|
|
8
|
+
- `Reconnect` 介面現在會正確位於 WebGL canvas 上方並接收滑鼠與觸控事件;右鍵/長按輸入 reconnect token 或 PID 也不會被 Kitty 圖片事件攔截。
|
|
9
|
+
|
|
10
|
+
### 2026/07/03 - [1.1.0]
|
|
11
|
+
- Unicode 11 from upstream
|
|
12
|
+
- WebGL support by `--webgl` & query args
|
|
13
|
+
- Frontend help by `--help-web`
|
|
14
|
+
- Added `font-size` and `font-family`
|
|
15
|
+
- Added `touch-scroll-threshold` for fast scrolling
|
|
16
|
+
- Added experimental single-exe build commands: `--build-exe` and `--build-for <target>`
|
|
17
|
+
- 改善 ZMODEM / `rz/sz` 大檔案傳輸可靠度
|
|
18
|
+
* 傳輸時切換終端機模式,結束或取消後恢復
|
|
19
|
+
* ZMODEM 期間繞過 server-side output parsers
|
|
20
|
+
* ZMODEM 資料改用有順序、ACK、重送處理的 WebSocket chunks
|
|
21
|
+
- 改善 `sz` 下載 UI
|
|
22
|
+
* 下載直接串流寫入瀏覽器檔案 writer
|
|
23
|
+
* 顯示目前檔案、已傳輸 bytes / 總 bytes、進度與 verbose transfer logs
|
|
24
|
+
- 改善 `rz` 上傳 UI
|
|
25
|
+
* 顯示目前檔案、已傳輸 bytes / 總 bytes、進度與 verbose transfer logs
|
|
26
|
+
* 改善連續執行 `sz` 後馬上 `rz` 的穩定性
|
|
27
|
+
- `rz` / `sz` 終端機指令完成時會顯示檔案路徑與 byte size
|
|
28
|
+
- ZMODEM debug log 改成透過 `JSGOTTY_ZMODEM_LOG` 才啟用
|
|
29
|
+
### 2026/06/22 - [1.0.0]
|
|
30
|
+
- Added gotty cli client
|
|
31
|
+
* compatible with golang gotty
|
|
32
|
+
* jsgotty --client -h for more info
|
|
33
|
+
- Added /css to list sessions
|
|
34
|
+
* when --reconnect enabled, /css can reconnect to existing sessions
|
|
35
|
+
### 2026/04/23
|
|
36
|
+
- Added optional noWinOpenUseFetch() at the frontend for Bun markdown TUI:
|
|
37
|
+
- https://github.com/jjtseng93/bun-taskmgr
|
|
38
|
+
### 2026/04/21
|
|
39
|
+
- Added show text in dialog for frontend:
|
|
40
|
+
- alert_advanced(getTerminalText())
|
|
41
|
+
- for copying text on mobile devices
|
|
42
|
+
|
|
43
|
+
## Intro 介紹
|
|
44
|
+
- 本專案旨在透過瀏覽器、命令列用戶端與現代 Web 協定,讓你的終端機隨處可用。
|
|
45
|
+
- 它是用 JavaScript / Bun 重新實作的 GoTTY 相容伺服器
|
|
46
|
+
- 參考了原本 GoTTY 的程式碼,大部分以 Codex 生成
|
|
47
|
+
- 包含已針對 `jsgotty` 調整過的前端與 WebTTY 協定實作
|
|
48
|
+
- 原版 repo:
|
|
49
|
+
- https://github.com/sorenisanerd/gotty
|
|
50
|
+
- .
|
|
51
|
+
- 關鍵字: 終端機 瀏覽器 命令列用戶端 工作階段管理 Kitty圖形協議 ZMODEM
|
|
52
|
+
|
|
53
|
+
### Features 特色功能
|
|
54
|
+
- Resumable reconnect: 瀏覽器斷線後可以用 reconnect token 接回原本的 shell / PTY,而不是重開一個新的 shell。
|
|
55
|
+
* jsgotty 伺服器端支援兩種連線模式
|
|
56
|
+
* 正常模式、工作階段(session)模式
|
|
57
|
+
* 當命令列參數包含 `--reconnect` 或 `--session` 時會啟用工作階段模式
|
|
58
|
+
* 見下方詳細說明兩種模式
|
|
59
|
+
- Kitty Graphics Protocol: 可以顯示終端內嵌圖片
|
|
60
|
+
* 像是用 `bun viu.mjs 1.png` 直接在終端中顯示圖片。
|
|
61
|
+
* 設定 `JSGOTTY_KITTY_DEBUG=1` 才會寫入 Kitty 圖片除錯 log。
|
|
62
|
+
* Windows 不是使用 Kitty 協定,而是自訂協議
|
|
63
|
+
- ZMODEM / `rz/sz` 上傳/下載功能
|
|
64
|
+
* 可以從瀏覽器端選檔並上傳到遠端 shell
|
|
65
|
+
* 也可以從遠端 shell 下載檔案
|
|
66
|
+
* Windows 不是使用 ZMODEM,而是自訂協議
|
|
67
|
+
* 目前 Linux 系統實測能上傳/下載約 80MB 的 bun binary
|
|
68
|
+
|
|
69
|
+
## Usage 用法
|
|
70
|
+
|
|
71
|
+
### Install Bun 安裝 Bun
|
|
72
|
+
- Android/Termux:
|
|
73
|
+
* pkg install npm
|
|
74
|
+
* npm install -g bun
|
|
75
|
+
- Other platforms:
|
|
76
|
+
* https://bun.com
|
|
77
|
+
|
|
78
|
+
### Linux
|
|
79
|
+
|
|
80
|
+
```sh
|
|
81
|
+
bun gotty.js -w bash
|
|
82
|
+
bun gotty.js -w --credential user:pass bash
|
|
83
|
+
bun gotty.js -w -p 8000 fish
|
|
84
|
+
|
|
85
|
+
# ↓將會開啟工作階段(session)模式
|
|
86
|
+
bun gotty.js -w --reconnect fish
|
|
87
|
+
bun gotty.js -w --reconnect --reconnect-time 30 fish
|
|
88
|
+
bun gotty.js -w --reconnect --reconnect-time -1 fish
|
|
89
|
+
|
|
90
|
+
# 或 npx jsgotty@latest
|
|
91
|
+
|
|
92
|
+
# 顯示伺服器/瀏覽器端的幫助
|
|
93
|
+
bun gotty.js
|
|
94
|
+
bun gotty.js --help
|
|
95
|
+
bun gotty.js --help-web
|
|
96
|
+
# ↑瀏覽器端可導覽到/help查看
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Windows
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
bun gotty.js -w cmd.exe
|
|
103
|
+
bun gotty.js -w powershell
|
|
104
|
+
|
|
105
|
+
# ↓將會開啟工作階段(session)模式
|
|
106
|
+
bun gotty.js --reconnect powershell
|
|
107
|
+
|
|
108
|
+
# 或 npx jsgotty@latest
|
|
109
|
+
|
|
110
|
+
# 顯示伺服器/瀏覽器端的幫助
|
|
111
|
+
bun gotty.js
|
|
112
|
+
bun gotty.js --help
|
|
113
|
+
bun gotty.js --help-web
|
|
114
|
+
# ↑瀏覽器端可導覽到/help查看
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 內建工具
|
|
118
|
+
|
|
119
|
+
```sh
|
|
120
|
+
bun gotty.js --rz
|
|
121
|
+
bun gotty.js --sz
|
|
122
|
+
bun gotty.js --viu
|
|
123
|
+
bun gotty.js --client
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- `--rz` starts `rz.js`: 上傳檔案
|
|
127
|
+
- `--sz` starts `sz.js`: 下載指定檔案
|
|
128
|
+
- `--viu` starts `viu.mjs`: 顯示圖片
|
|
129
|
+
- `--client` starts `client.mjs`: 命令列客戶端
|
|
130
|
+
|
|
131
|
+
### 命令列客戶端 CLI Client
|
|
132
|
+
|
|
133
|
+
- `client.mjs` 是可直接連接 GoTTY 的互動式終端 client
|
|
134
|
+
- 基本連線相容 Golang GoTTY
|
|
135
|
+
- session 列表、writer 管理與遠端終止 PTY 則需要本專案的 jsgotty server
|
|
136
|
+
- 正常模式與工作階段(session)模式的差異,請見下方詳細說明兩種模式。
|
|
137
|
+
|
|
138
|
+
#### 基本操作:連接伺服器
|
|
139
|
+
|
|
140
|
+
```sh
|
|
141
|
+
# 連接預設 ws://127.0.0.1:8080/ws
|
|
142
|
+
bun gotty.js --client
|
|
143
|
+
|
|
144
|
+
# 連接 127.0.0.1:8081
|
|
145
|
+
bun gotty.js --client 8081
|
|
146
|
+
|
|
147
|
+
# 可使用 HTTP(S) 頁面網址或 WS(S) 網址
|
|
148
|
+
bun gotty.js --client https://example.com/terminal/
|
|
149
|
+
|
|
150
|
+
# 使用帳號密碼
|
|
151
|
+
bun gotty.js --client -c user:pass 8081
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
#### 進階操作:工作階段管理
|
|
155
|
+
|
|
156
|
+
```sh
|
|
157
|
+
# 列出目前 sessions
|
|
158
|
+
bun gotty.js --client -ls [target]
|
|
159
|
+
|
|
160
|
+
# 使用 reconnect token 或 PID 接回既有 session
|
|
161
|
+
# 需開啟 session 模式
|
|
162
|
+
bun gotty.js --client -r <token|pid> [target]
|
|
163
|
+
|
|
164
|
+
# 中斷目前 writer,但保留 PTY session
|
|
165
|
+
# 需開啟 session 模式
|
|
166
|
+
bun gotty.js --client -d <token|pid> [target]
|
|
167
|
+
|
|
168
|
+
# 終止對應的 PTY session
|
|
169
|
+
bun gotty.js --client -k <token|pid> [target]
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
第一個參數也可使用 subcommand alias:
|
|
173
|
+
|
|
174
|
+
- `ls`、`list`、`list-sessions` => `-ls`
|
|
175
|
+
- `attach`、`a <token|pid>` => `-r <token|pid>`
|
|
176
|
+
- `detach <token|pid>` => `-d <token|pid>`
|
|
177
|
+
- `kill-session`、`stop <token|pid>` => `-k <token|pid>`
|
|
178
|
+
|
|
179
|
+
- `-ls` 讀取 server 的 `/css.md` session 列表。
|
|
180
|
+
- 使用瀏覽器查看 session 列表時請導覽到 `/css`。
|
|
181
|
+
- 如果 `/css` 顯示的是靜態檔案列表而不是 sessions,代表連線的是 Golang GoTTY,不是 jsgotty。
|
|
182
|
+
- `-r` 需開啟 session 模式;可接回指定的 PTY session。
|
|
183
|
+
- `-d` 需開啟 session 模式;中斷指定 session 的 writer 後,session 仍保留,下一個可寫 client 可接手。
|
|
184
|
+
- `-k` 會直接終止對應 PTY/session。
|
|
185
|
+
|
|
186
|
+
- `--arg <value>` 可重複指定 command arguments;`--arguments <query>` 可傳入原始 query string。
|
|
187
|
+
- `--cols`、`--rows` 可指定初始終端大小。
|
|
188
|
+
- 可用 `GOTTY_CREDENTIAL` 與 `GOTTY_RECONNECT_TOKEN` 環境變數設定 credential 和 reconnect token。
|
|
189
|
+
- PTY 建立方式、writer/viewer 權限與 reconnect 保留時間請參考下方「正常模式 / 工作階段(session)模式」。
|
|
190
|
+
- Golang GoTTY 不支援 `-ls`、`-r`、`-d`、`-k` 這些 jsgotty 控制協議。
|
|
191
|
+
|
|
192
|
+
### Wrapper
|
|
193
|
+
- wgotty is a wrapper for Linux
|
|
194
|
+
- or Windows with busybox64u.exe bash
|
|
195
|
+
- https://frippery.org/busybox/
|
|
196
|
+
- just run ./wgotty and it will
|
|
197
|
+
- detect installation status of Bun
|
|
198
|
+
- and show installation script if needed
|
|
199
|
+
|
|
200
|
+
## 正常模式 / 工作階段(session)模式
|
|
201
|
+
|
|
202
|
+
`jsgotty` 伺服器有兩種連線模式:
|
|
203
|
+
|
|
204
|
+
- 正常模式: 未指定 `--reconnect` 或 `--session`
|
|
205
|
+
- 工作階段(session)模式: 指定 `--reconnect` 或 `--session`
|
|
206
|
+
|
|
207
|
+
### 正常模式
|
|
208
|
+
|
|
209
|
+
- 每一個新的瀏覽器或 `client.mjs` 連線,都會建立一個新的 `PtySession` 與新的 PTY。
|
|
210
|
+
- 兩個 client 同時連線時,通常就是兩個不同的 shell / PTY,彼此不共享畫面、輸入或行程狀態。
|
|
211
|
+
- client 斷線後,對應的 PTY session 會被關閉。
|
|
212
|
+
- 如果瀏覽器被關閉、tab 被關閉、或 websocket 正常斷線,server 會清理該連線對應的 PTY。
|
|
213
|
+
- 正常模式不支援接回既有 PTY;瀏覽器或 CLI 傳入 reconnect token / PID 時,不會 resume 原 session,而是開新的 PTY。
|
|
214
|
+
- `/css` 與 `/css.md` 仍會列出目前 active sessions 的 PID 與 command name,但不提供 reconnect token 或接回連結。
|
|
215
|
+
- `client.mjs -ls` 可列出 sessions;`-k <pid>` 可用 PID 終止 session;`-r` 與 `-d` 需要工作階段模式。
|
|
216
|
+
|
|
217
|
+
### 工作階段(session)模式
|
|
218
|
+
|
|
219
|
+
- 使用 `--reconnect` 或 `--session` 啟用。
|
|
220
|
+
- 第一次連線如果沒有指定可 resume 的 token / PID,server 會建立新的 `PtySession` 與新的 PTY。
|
|
221
|
+
- server 會替每個 session 產生 reconnect token,並把 session PID 與 token 傳給前端。
|
|
222
|
+
- 之後瀏覽器或 CLI 可以用 reconnect token 或 PID 接回同一個 PTY,而不是建立新的 shell。
|
|
223
|
+
- 在同一個 PTY session 裡可以有多個 client 同時連線。
|
|
224
|
+
- 第一個可寫入的 client 會成為 writer,可以送鍵盤輸入、resize、ZMODEM 控制等資料到 PTY。
|
|
225
|
+
- 其他 client 會是 viewer,只接收畫面輸出,不會寫入 PTY。
|
|
226
|
+
- client 也可以用 `--readonly` 主動以 viewer 身分連線。
|
|
227
|
+
- 如果 writer 斷線但 session 還有其他 viewer,既有 viewer 不會自動升級為 writer;下一個可寫入且接回同一 session 的 client 可以成為新的 writer。
|
|
228
|
+
- 最後一個 client 斷線後,PTY 是否保留由 `--reconnect-time` 決定。
|
|
229
|
+
|
|
230
|
+
#### `--reconnect-time` 的行為:
|
|
231
|
+
- `> 0`: 最後一個 client 斷線後保留指定秒數,期間可接回,逾時後關閉 PTY。
|
|
232
|
+
- `= 0`: 最後一個 client 斷線後立刻關閉 PTY。
|
|
233
|
+
- `< 0`: 最後一個 client 斷線後無限期保留 PTY,直到 shell 自己結束、手動 `-k` 終止、或 server 停止。
|
|
234
|
+
|
|
235
|
+
#### 前端的 reconnect 行為:
|
|
236
|
+
- `reconnect-time > 0` 時,會在期限內自動重試多次。
|
|
237
|
+
- `reconnect-time < 0` 時,會每 1 分鐘自動重試一次。
|
|
238
|
+
- 斷線時會提供 `Reconnect` 按鈕,可手動立即重試。
|
|
239
|
+
- 該按鈕右鍵/長按可輸入自訂 reconnect token 或 PID。
|
|
240
|
+
|
|
241
|
+
## Tested platforms 已測試作業系統
|
|
242
|
+
- Windows x64: Windows 11
|
|
243
|
+
- Linux x64: CachyOS
|
|
244
|
+
- Android arm64: Termux Native/Proot
|
|
245
|
+
- Android arm64: My App
|
|
246
|
+
* https://drive.google.com/drive/folders/18iwbKrAZfA-HoTSP9I5MzGz5xVFMZ4bg
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
## Current implementation 目前實做
|
|
250
|
+
- 使用node原生 `http`/`https`
|
|
251
|
+
- 使用 `ws` 處理 WebSocket upgrade
|
|
252
|
+
- 使用 `./static` 內自帶前端頁面、kitty overlay 與 WebTTY/ZMODEM 前端邏輯
|
|
253
|
+
- 支援輸出圖片到終端
|
|
254
|
+
- 支援檔案上傳/下載
|
|
255
|
+
|
|
256
|
+
### PTY Backends PTY後端策略
|
|
257
|
+
- Linux / macOS: 使用 Bun 內建 PTY `Bun.spawn(..., { terminal: ... })`
|
|
258
|
+
- Windows: 使用patched `node-pty`,但整體以 `bun` 啟動 `gotty.js`
|
|
259
|
+
* Bun版本若>=1.3.14會全面使用 Bun 內建 PTY
|
|
260
|
+
|
|
261
|
+
### Kitty intro
|
|
262
|
+
- 只要終端程式使用 Kitty Graphics Protocol (Linux) 輸出圖片,前端就會把圖片顯示在終端對應位置。
|
|
263
|
+
- Windows採用自訂協議。
|
|
264
|
+
- 用法:
|
|
265
|
+
|
|
266
|
+
```sh
|
|
267
|
+
bun viu.mjs 1.png
|
|
268
|
+
# or bun gotty.js --viu 1.png
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### rz upload intro
|
|
272
|
+
- 當遠端 shell 執行:
|
|
273
|
+
|
|
274
|
+
```sh
|
|
275
|
+
bun rz.js
|
|
276
|
+
# or bun gotty.js --rz
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
- 前端會跳出檔案選擇視窗。選擇檔案後,會以 ZMODEM 上傳到目前 shell 所在目錄。
|
|
280
|
+
|
|
281
|
+
### sz download intro
|
|
282
|
+
- 當遠端 shell 執行:
|
|
283
|
+
|
|
284
|
+
```sh
|
|
285
|
+
bun sz.js file.txt
|
|
286
|
+
# or bun gotty.js --sz file.txt
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
- 前端會接收 ZMODEM 下載資料,並讓瀏覽器下載檔案。
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
## Others 備註
|
|
293
|
+
- 目標是模擬原版 GoTTY 的主要行為,並增加特色功能
|
|
294
|
+
- 以 Bun 為主要執行方式。
|
|
295
|
+
- Linux / macOS 如果不是用 Bun 執行,PTY 會無法使用。
|
|
296
|
+
- 目前未實作 Go 版的 config 檔載入
|