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.
Files changed (621) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSES/Bun-LICENSE.md +84 -0
  3. package/LICENSES/GCC-Runtime-Library-Exception-3.1.txt +73 -0
  4. package/LICENSES/GPL-2.0.txt +338 -0
  5. package/LICENSES/GPL-3.0.txt +674 -0
  6. package/LICENSES/LGPL-2.1.txt +501 -0
  7. package/LICENSES/Linux-syscall-note.txt +25 -0
  8. package/LICENSES/musl-COPYRIGHT.txt +193 -0
  9. package/NOTICE.md +184 -0
  10. package/README.md +537 -0
  11. package/build-image.sh +44 -0
  12. package/build-uki.sh +75 -0
  13. package/fetch-alpine.sh +80 -0
  14. package/fetch-bun.sh +41 -0
  15. package/fetch-plus-build.sh +11 -0
  16. package/hello/build-hello.sh +14 -0
  17. package/hello/hello.c +50 -0
  18. package/index.js +235 -0
  19. package/initramfs/bin/sh +3 -0
  20. package/initramfs/buninu/.bashrc +11 -0
  21. package/initramfs/buninu/ARCHITECTURE.md +452 -0
  22. package/initramfs/buninu/CHANGELOG.md +580 -0
  23. package/initramfs/buninu/LICENSE +21 -0
  24. package/initramfs/buninu/README.md +1161 -0
  25. package/initramfs/buninu/apps/bun/make-bunBin.sh +99 -0
  26. package/initramfs/buninu/apps/bunmsh/CHANGELOG.md +493 -0
  27. package/initramfs/buninu/apps/bunmsh/LICENSE +21 -0
  28. package/initramfs/buninu/apps/bunmsh/LICENSE-MICRO +58 -0
  29. package/initramfs/buninu/apps/bunmsh/LICENSE-MKSH +295 -0
  30. package/initramfs/buninu/apps/bunmsh/PORTING.md +192 -0
  31. package/initramfs/buninu/apps/bunmsh/README.md +1042 -0
  32. package/initramfs/buninu/apps/bunmsh/bunmsh +7 -0
  33. package/initramfs/buninu/apps/bunmsh/bunshell.md +61 -0
  34. package/initramfs/buninu/apps/bunmsh/help/README.md +2237 -0
  35. package/initramfs/buninu/apps/bunmsh/help/alias.md +22 -0
  36. package/initramfs/buninu/apps/bunmsh/help/basename.md +38 -0
  37. package/initramfs/buninu/apps/bunmsh/help/builtin.md +25 -0
  38. package/initramfs/buninu/apps/bunmsh/help/bun.md +27 -0
  39. package/initramfs/buninu/apps/bunmsh/help/bunmsh.md +47 -0
  40. package/initramfs/buninu/apps/bunmsh/help/cat.md +31 -0
  41. package/initramfs/buninu/apps/bunmsh/help/catfancy.md +35 -0
  42. package/initramfs/buninu/apps/bunmsh/help/cd.md +22 -0
  43. package/initramfs/buninu/apps/bunmsh/help/chmod.md +27 -0
  44. package/initramfs/buninu/apps/bunmsh/help/clear.md +21 -0
  45. package/initramfs/buninu/apps/bunmsh/help/colon.md +22 -0
  46. package/initramfs/buninu/apps/bunmsh/help/command.md +27 -0
  47. package/initramfs/buninu/apps/bunmsh/help/cp.md +28 -0
  48. package/initramfs/buninu/apps/bunmsh/help/curl.md +181 -0
  49. package/initramfs/buninu/apps/bunmsh/help/cut.md +25 -0
  50. package/initramfs/buninu/apps/bunmsh/help/date.md +25 -0
  51. package/initramfs/buninu/apps/bunmsh/help/dirname.md +25 -0
  52. package/initramfs/buninu/apps/bunmsh/help/echo.md +25 -0
  53. package/initramfs/buninu/apps/bunmsh/help/env.md +27 -0
  54. package/initramfs/buninu/apps/bunmsh/help/eval.md +22 -0
  55. package/initramfs/buninu/apps/bunmsh/help/exec.md +22 -0
  56. package/initramfs/buninu/apps/bunmsh/help/exit.md +21 -0
  57. package/initramfs/buninu/apps/bunmsh/help/export.md +22 -0
  58. package/initramfs/buninu/apps/bunmsh/help/false.md +22 -0
  59. package/initramfs/buninu/apps/bunmsh/help/find.md +33 -0
  60. package/initramfs/buninu/apps/bunmsh/help/getopts.md +28 -0
  61. package/initramfs/buninu/apps/bunmsh/help/grep.md +34 -0
  62. package/initramfs/buninu/apps/bunmsh/help/head.md +27 -0
  63. package/initramfs/buninu/apps/bunmsh/help/kill.md +43 -0
  64. package/initramfs/buninu/apps/bunmsh/help/ln.md +28 -0
  65. package/initramfs/buninu/apps/bunmsh/help/ls.md +37 -0
  66. package/initramfs/buninu/apps/bunmsh/help/lsbun.md +29 -0
  67. package/initramfs/buninu/apps/bunmsh/help/lsfancy.md +37 -0
  68. package/initramfs/buninu/apps/bunmsh/help/md5sum.md +21 -0
  69. package/initramfs/buninu/apps/bunmsh/help/mkdir.md +27 -0
  70. package/initramfs/buninu/apps/bunmsh/help/mktemp.md +26 -0
  71. package/initramfs/buninu/apps/bunmsh/help/mv.md +26 -0
  72. package/initramfs/buninu/apps/bunmsh/help/print.md +30 -0
  73. package/initramfs/buninu/apps/bunmsh/help/printf.md +25 -0
  74. package/initramfs/buninu/apps/bunmsh/help/pspa.md +38 -0
  75. package/initramfs/buninu/apps/bunmsh/help/pspac.md +57 -0
  76. package/initramfs/buninu/apps/bunmsh/help/pwd.md +21 -0
  77. package/initramfs/buninu/apps/bunmsh/help/read.md +27 -0
  78. package/initramfs/buninu/apps/bunmsh/help/readonly.md +27 -0
  79. package/initramfs/buninu/apps/bunmsh/help/realpath.md +21 -0
  80. package/initramfs/buninu/apps/bunmsh/help/rm.md +33 -0
  81. package/initramfs/buninu/apps/bunmsh/help/rmdir.md +27 -0
  82. package/initramfs/buninu/apps/bunmsh/help/sed.md +29 -0
  83. package/initramfs/buninu/apps/bunmsh/help/seq.md +29 -0
  84. package/initramfs/buninu/apps/bunmsh/help/serve.md +50 -0
  85. package/initramfs/buninu/apps/bunmsh/help/set.md +26 -0
  86. package/initramfs/buninu/apps/bunmsh/help/sha256sum.md +21 -0
  87. package/initramfs/buninu/apps/bunmsh/help/shift.md +23 -0
  88. package/initramfs/buninu/apps/bunmsh/help/sleep.md +25 -0
  89. package/initramfs/buninu/apps/bunmsh/help/sort.md +29 -0
  90. package/initramfs/buninu/apps/bunmsh/help/source.md +23 -0
  91. package/initramfs/buninu/apps/bunmsh/help/tab.md +30 -0
  92. package/initramfs/buninu/apps/bunmsh/help/tac.md +29 -0
  93. package/initramfs/buninu/apps/bunmsh/help/tail.md +27 -0
  94. package/initramfs/buninu/apps/bunmsh/help/tee.md +25 -0
  95. package/initramfs/buninu/apps/bunmsh/help/test.md +30 -0
  96. package/initramfs/buninu/apps/bunmsh/help/time.md +29 -0
  97. package/initramfs/buninu/apps/bunmsh/help/touch.md +26 -0
  98. package/initramfs/buninu/apps/bunmsh/help/tr.md +26 -0
  99. package/initramfs/buninu/apps/bunmsh/help/true.md +22 -0
  100. package/initramfs/buninu/apps/bunmsh/help/type.md +21 -0
  101. package/initramfs/buninu/apps/bunmsh/help/umask.md +22 -0
  102. package/initramfs/buninu/apps/bunmsh/help/unalias.md +28 -0
  103. package/initramfs/buninu/apps/bunmsh/help/uname.md +31 -0
  104. package/initramfs/buninu/apps/bunmsh/help/unset.md +28 -0
  105. package/initramfs/buninu/apps/bunmsh/help/wc.md +27 -0
  106. package/initramfs/buninu/apps/bunmsh/help/whence.md +26 -0
  107. package/initramfs/buninu/apps/bunmsh/help/which.md +41 -0
  108. package/initramfs/buninu/apps/bunmsh/help/yes.md +23 -0
  109. package/initramfs/buninu/apps/bunmsh/index.js +7 -0
  110. package/initramfs/buninu/apps/bunmsh/package.json +30 -0
  111. package/initramfs/buninu/apps/bunmsh/serve.js +468 -0
  112. package/initramfs/buninu/apps/bunmsh/single-exe/README.md +402 -0
  113. package/initramfs/buninu/apps/bunmsh/single-exe/assetsHelper.js +371 -0
  114. package/initramfs/buninu/apps/bunmsh/single-exe/assetsLoader.mjs +85 -0
  115. package/initramfs/buninu/apps/bunmsh/single-exe/assetsPacker.js +218 -0
  116. package/initramfs/buninu/apps/bunmsh/single-exe/compiled.js +527 -0
  117. package/initramfs/buninu/apps/bunmsh/single-exe/entry.mjs +17 -0
  118. package/initramfs/buninu/apps/bunmsh/src/cat-fancy.js +117 -0
  119. package/initramfs/buninu/apps/bunmsh/src/cat-operands.js +31 -0
  120. package/initramfs/buninu/apps/bunmsh/src/completion.js +363 -0
  121. package/initramfs/buninu/apps/bunmsh/src/curl.js +1191 -0
  122. package/initramfs/buninu/apps/bunmsh/src/environment.js +61 -0
  123. package/initramfs/buninu/apps/bunmsh/src/fancy-ls.js +186 -0
  124. package/initramfs/buninu/apps/bunmsh/src/find.js +119 -0
  125. package/initramfs/buninu/apps/bunmsh/src/history.js +198 -0
  126. package/initramfs/buninu/apps/bunmsh/src/main.js +850 -0
  127. package/initramfs/buninu/apps/bunmsh/src/mouse.js +103 -0
  128. package/initramfs/buninu/apps/bunmsh/src/shell.js +3932 -0
  129. package/initramfs/buninu/apps/bunmsh/test/catfancy.test.js +102 -0
  130. package/initramfs/buninu/apps/bunmsh/test/curl.test.js +335 -0
  131. package/initramfs/buninu/apps/bunmsh/test/reference-source.sh +1 -0
  132. package/initramfs/buninu/apps/bunmsh/test/reference.test.js +817 -0
  133. package/initramfs/buninu/apps/bunmsh/test/serve/README.md +3 -0
  134. package/initramfs/buninu/apps/bunmsh/test/serve/bad.json +1 -0
  135. package/initramfs/buninu/apps/bunmsh/test/serve/data.json +1 -0
  136. package/initramfs/buninu/apps/bunmsh/test/serve/data.json5 +1 -0
  137. package/initramfs/buninu/apps/bunmsh/test/serve/data.jsonc +2 -0
  138. package/initramfs/buninu/apps/bunmsh/test/serve/data.jsonl +2 -0
  139. package/initramfs/buninu/apps/bunmsh/test/serve/data.ndjson +1 -0
  140. package/initramfs/buninu/apps/bunmsh/test/serve/data.toml +3 -0
  141. package/initramfs/buninu/apps/bunmsh/test/serve/data.ts +15 -0
  142. package/initramfs/buninu/apps/bunmsh/test/serve/data.xml +1 -0
  143. package/initramfs/buninu/apps/bunmsh/test/serve/data.yaml +3 -0
  144. package/initramfs/buninu/apps/bunmsh/test/serve/data.yml +1 -0
  145. package/initramfs/buninu/apps/bunmsh/test/serve.test.js +241 -0
  146. package/initramfs/buninu/apps/bunmsh/test/shell.test.js +2092 -0
  147. package/initramfs/buninu/apps/bunmsh/test/shell1.test.js +1087 -0
  148. package/initramfs/buninu/apps/bunmsh/test/shell2.test.js +457 -0
  149. package/initramfs/buninu/apps/bunmsh/test/shell3.test.js +741 -0
  150. package/initramfs/buninu/apps/bunmsh/test/t.sh +12 -0
  151. package/initramfs/buninu/apps/bunx/bunx.js +172 -0
  152. package/initramfs/buninu/apps/cmdlist +48 -0
  153. package/initramfs/buninu/apps/jsgotty/LICENSE +23 -0
  154. package/initramfs/buninu/apps/jsgotty/LICENSES/Apache-2.0-zmodem.js.txt +201 -0
  155. package/initramfs/buninu/apps/jsgotty/NOTICE +21 -0
  156. package/initramfs/buninu/apps/jsgotty/README.en.md +294 -0
  157. package/initramfs/buninu/apps/jsgotty/README.md +296 -0
  158. package/initramfs/buninu/apps/jsgotty/client.mjs +700 -0
  159. package/initramfs/buninu/apps/jsgotty/env.sh +2 -0
  160. package/initramfs/buninu/apps/jsgotty/gotty.js +3334 -0
  161. package/initramfs/buninu/apps/jsgotty/node_modules/.package-lock.json +35 -0
  162. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/LICENSE.md +9 -0
  163. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/README.md +319 -0
  164. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/common.gypi +20 -0
  165. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/except.gypi +25 -0
  166. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/index.js +12 -0
  167. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  168. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi-inl.h +6607 -0
  169. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/napi.h +3201 -0
  170. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/node_addon_api.gyp +32 -0
  171. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/node_api.gyp +9 -0
  172. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/noexcept.gypi +26 -0
  173. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/nothing.c +0 -0
  174. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/package-support.json +21 -0
  175. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/package.json +480 -0
  176. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/README.md +73 -0
  177. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/check-napi.js +99 -0
  178. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/clang-format.js +71 -0
  179. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/conversion.js +301 -0
  180. package/initramfs/buninu/apps/jsgotty/node_modules/node-addon-api/tools/eslint-format.js +79 -0
  181. package/initramfs/buninu/apps/jsgotty/node_modules/ws/LICENSE +20 -0
  182. package/initramfs/buninu/apps/jsgotty/node_modules/ws/README.md +548 -0
  183. package/initramfs/buninu/apps/jsgotty/node_modules/ws/browser.js +8 -0
  184. package/initramfs/buninu/apps/jsgotty/node_modules/ws/index.js +22 -0
  185. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/buffer-util.js +131 -0
  186. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/constants.js +19 -0
  187. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/event-target.js +292 -0
  188. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/extension.js +203 -0
  189. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/limiter.js +55 -0
  190. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/permessage-deflate.js +528 -0
  191. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/receiver.js +760 -0
  192. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/sender.js +607 -0
  193. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/stream.js +161 -0
  194. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/subprotocol.js +62 -0
  195. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/validation.js +152 -0
  196. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/websocket-server.js +562 -0
  197. package/initramfs/buninu/apps/jsgotty/node_modules/ws/lib/websocket.js +1407 -0
  198. package/initramfs/buninu/apps/jsgotty/node_modules/ws/package.json +70 -0
  199. package/initramfs/buninu/apps/jsgotty/node_modules/ws/wrapper.mjs +21 -0
  200. package/initramfs/buninu/apps/jsgotty/package-lock.json +46 -0
  201. package/initramfs/buninu/apps/jsgotty/package.json +19 -0
  202. package/initramfs/buninu/apps/jsgotty/patches/windowsPtyAgent.js +326 -0
  203. package/initramfs/buninu/apps/jsgotty/patches/windowsTerminal.js +204 -0
  204. package/initramfs/buninu/apps/jsgotty/rz.js +199 -0
  205. package/initramfs/buninu/apps/jsgotty/single-exe/README.md +384 -0
  206. package/initramfs/buninu/apps/jsgotty/single-exe/assetsHelper.js +371 -0
  207. package/initramfs/buninu/apps/jsgotty/single-exe/assetsLoader.mjs +85 -0
  208. package/initramfs/buninu/apps/jsgotty/single-exe/assetsPacker.js +218 -0
  209. package/initramfs/buninu/apps/jsgotty/single-exe/compiled.js +498 -0
  210. package/initramfs/buninu/apps/jsgotty/single-exe/entry.mjs +23 -0
  211. package/initramfs/buninu/apps/jsgotty/single-exe/packAssets.sh +7 -0
  212. package/initramfs/buninu/apps/jsgotty/static/css/index.css +13 -0
  213. package/initramfs/buninu/apps/jsgotty/static/css/kitty.css +61 -0
  214. package/initramfs/buninu/apps/jsgotty/static/css/xterm.css +218 -0
  215. package/initramfs/buninu/apps/jsgotty/static/css/xterm_customize.css +35 -0
  216. package/initramfs/buninu/apps/jsgotty/static/favicon.ico +0 -0
  217. package/initramfs/buninu/apps/jsgotty/static/help.md +125 -0
  218. package/initramfs/buninu/apps/jsgotty/static/icon.svg +66 -0
  219. package/initramfs/buninu/apps/jsgotty/static/icon_192.png +0 -0
  220. package/initramfs/buninu/apps/jsgotty/static/index.html +164 -0
  221. package/initramfs/buninu/apps/jsgotty/static/js/gotty.js +31537 -0
  222. package/initramfs/buninu/apps/jsgotty/static/js/gotty.js.LICENSE.txt +7 -0
  223. package/initramfs/buninu/apps/jsgotty/static/js/gotty.js.map +1 -0
  224. package/initramfs/buninu/apps/jsgotty/static/js/gotty.licenses.txt +650 -0
  225. package/initramfs/buninu/apps/jsgotty/static/js/kitty.js +1101 -0
  226. package/initramfs/buninu/apps/jsgotty/static/js/windows_bridge.js +194 -0
  227. package/initramfs/buninu/apps/jsgotty/static/js/xterm-addon-unicode11.js +2 -0
  228. package/initramfs/buninu/apps/jsgotty/static/js/zmodem.js +1 -0
  229. package/initramfs/buninu/apps/jsgotty/static/manifest.json +15 -0
  230. package/initramfs/buninu/apps/jsgotty/sz.js +273 -0
  231. package/initramfs/buninu/apps/jsgotty/tests/kitty-order.test.js +58 -0
  232. package/initramfs/buninu/apps/jsgotty/tests/websocket-origin.test.js +54 -0
  233. package/initramfs/buninu/apps/jsgotty/viu.mjs +422 -0
  234. package/initramfs/buninu/apps/jsgotty/wgotty +62 -0
  235. package/initramfs/buninu/apps/jsgotty/windows-bridge-node.js +60 -0
  236. package/initramfs/buninu/apps/jsgotty/zmodem-node.js +262 -0
  237. package/initramfs/buninu/apps/jsmdcui/CHANGELOG.md +1118 -0
  238. package/initramfs/buninu/apps/jsmdcui/LICENSE +22 -0
  239. package/initramfs/buninu/apps/jsmdcui/README.md +1283 -0
  240. package/initramfs/buninu/apps/jsmdcui/cdp-maze.js +141 -0
  241. package/initramfs/buninu/apps/jsmdcui/clean.sh +9 -0
  242. package/initramfs/buninu/apps/jsmdcui/demos/basic.jpg +0 -0
  243. package/initramfs/buninu/apps/jsmdcui/demos/chinese.md +32 -0
  244. package/initramfs/buninu/apps/jsmdcui/demos/event.md +170 -0
  245. package/initramfs/buninu/apps/jsmdcui/demos/good.jpg +0 -0
  246. package/initramfs/buninu/apps/jsmdcui/demos/image-processor.md +366 -0
  247. package/initramfs/buninu/apps/jsmdcui/demos/image-processor.zh-TW.md +366 -0
  248. package/initramfs/buninu/apps/jsmdcui/demos/img-change.md +73 -0
  249. package/initramfs/buninu/apps/jsmdcui/demos/imgtool-zh.md +298 -0
  250. package/initramfs/buninu/apps/jsmdcui/demos/imgtool.md +298 -0
  251. package/initramfs/buninu/apps/jsmdcui/demos/maze.md +149 -0
  252. package/initramfs/buninu/apps/jsmdcui/demos/reactive.md +40 -0
  253. package/initramfs/buninu/apps/jsmdcui/demos/reader.md +513 -0
  254. package/initramfs/buninu/apps/jsmdcui/demos/select.md +63 -0
  255. package/initramfs/buninu/apps/jsmdcui/demos/todo-zh.md +190 -0
  256. package/initramfs/buninu/apps/jsmdcui/demos/todo.md +191 -0
  257. package/initramfs/buninu/apps/jsmdcui/edit +9 -0
  258. package/initramfs/buninu/apps/jsmdcui/jsmdcui.sh +16 -0
  259. package/initramfs/buninu/apps/jsmdcui/llm-maze.txt +94 -0
  260. package/initramfs/buninu/apps/jsmdcui/package.json +29 -0
  261. package/initramfs/buninu/apps/jsmdcui/project_structure.txt +35 -0
  262. package/initramfs/buninu/apps/jsmdcui/runmd.mjs +1140 -0
  263. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/atom-dark.micro +33 -0
  264. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/bubblegum.micro +31 -0
  265. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/cmc-16.micro +47 -0
  266. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/cmc-tc.micro +43 -0
  267. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/darcula.micro +34 -0
  268. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/default.micro +1 -0
  269. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dracula-tc.micro +49 -0
  270. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukedark-tc.micro +38 -0
  271. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukelight-tc.micro +38 -0
  272. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/dukeubuntu-tc.micro +38 -0
  273. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/geany.micro +29 -0
  274. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gotham.micro +29 -0
  275. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gruvbox-tc.micro +29 -0
  276. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/gruvbox.micro +26 -0
  277. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/material-tc.micro +36 -0
  278. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/monokai-dark.micro +28 -0
  279. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/monokai.micro +34 -0
  280. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/one-dark.micro +39 -0
  281. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/railscast.micro +37 -0
  282. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/simple.micro +33 -0
  283. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/solarized-tc.micro +31 -0
  284. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/solarized.micro +30 -0
  285. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/sunny-day.micro +29 -0
  286. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/twilight.micro +40 -0
  287. package/initramfs/buninu/apps/jsmdcui/runtime/colorschemes/zenburn.micro +30 -0
  288. package/initramfs/buninu/apps/jsmdcui/runtime/help/actions.md +161 -0
  289. package/initramfs/buninu/apps/jsmdcui/runtime/help/cdp.md +130 -0
  290. package/initramfs/buninu/apps/jsmdcui/runtime/help/colors.md +421 -0
  291. package/initramfs/buninu/apps/jsmdcui/runtime/help/commands.md +161 -0
  292. package/initramfs/buninu/apps/jsmdcui/runtime/help/copypaste.md +149 -0
  293. package/initramfs/buninu/apps/jsmdcui/runtime/help/defaultkeys.md +148 -0
  294. package/initramfs/buninu/apps/jsmdcui/runtime/help/help.md +1283 -0
  295. package/initramfs/buninu/apps/jsmdcui/runtime/help/keybindings.md +355 -0
  296. package/initramfs/buninu/apps/jsmdcui/runtime/help/linter.md +90 -0
  297. package/initramfs/buninu/apps/jsmdcui/runtime/help/options.md +709 -0
  298. package/initramfs/buninu/apps/jsmdcui/runtime/help/plugins.md +544 -0
  299. package/initramfs/buninu/apps/jsmdcui/runtime/help/tutorial.md +112 -0
  300. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/cdp/cdp-server.js +1263 -0
  301. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/cdp/cdp.js +203 -0
  302. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/chapter/chapter.js +111 -0
  303. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/diff/diff.js +46 -0
  304. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/example/example.js +117 -0
  305. package/initramfs/buninu/apps/jsmdcui/runtime/jsplugins/linter/linter.js +281 -0
  306. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/autoclose/autoclose.lua +75 -0
  307. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/ftoptions/ftoptions.lua +17 -0
  308. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/literate/README.md +5 -0
  309. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/literate/literate.lua +55 -0
  310. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/status/help/status.md +21 -0
  311. package/initramfs/buninu/apps/jsmdcui/runtime/plugins/status/status.lua +62 -0
  312. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/LICENSE +22 -0
  313. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/PowerShell.yaml +128 -0
  314. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/README.md +63 -0
  315. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ada.yaml +43 -0
  316. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/apacheconf.yaml +59 -0
  317. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/arduino.yaml +101 -0
  318. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/asciidoc.yaml +51 -0
  319. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/asm.yaml +123 -0
  320. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ats.yaml +99 -0
  321. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/awk.yaml +44 -0
  322. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/b.yaml +87 -0
  323. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/bat.yaml +57 -0
  324. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/c.yaml +60 -0
  325. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/caddyfile.yaml +23 -0
  326. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cake.yaml +7 -0
  327. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/clojure.yaml +38 -0
  328. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cmake.yaml +42 -0
  329. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/coffeescript.yaml +56 -0
  330. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/colortest.yaml +19 -0
  331. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/conky.yaml +17 -0
  332. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cpp.yaml +91 -0
  333. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/crontab.yaml +36 -0
  334. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/crystal.yaml +72 -0
  335. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/csharp.yaml +52 -0
  336. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/css.yaml +44 -0
  337. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/csx.yaml +8 -0
  338. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cuda.yaml +68 -0
  339. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/cython.yaml +52 -0
  340. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/d.yaml +121 -0
  341. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dart.yaml +46 -0
  342. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/default.yaml +10 -0
  343. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dockerfile.yaml +36 -0
  344. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/dot.yaml +29 -0
  345. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/elixir.yaml +30 -0
  346. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/elm.yaml +38 -0
  347. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/erb.yaml +42 -0
  348. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/erlang.yaml +45 -0
  349. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fish.yaml +48 -0
  350. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/forth.yaml +34 -0
  351. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fortran.yaml +64 -0
  352. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/freebsd-kernel.yaml +14 -0
  353. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/fsharp.yaml +48 -0
  354. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gdscript.yaml +61 -0
  355. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gemini.yaml +19 -0
  356. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gentoo-ebuild.yaml +48 -0
  357. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gentoo-etc-portage.yaml +23 -0
  358. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-commit.yaml +35 -0
  359. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-config.yaml +14 -0
  360. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/git-rebase-todo.yaml +19 -0
  361. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gleam.yaml +69 -0
  362. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/glsl.yaml +26 -0
  363. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gnuplot.yaml +15 -0
  364. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/go.yaml +62 -0
  365. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/godoc.yaml +17 -0
  366. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/golo.yaml +73 -0
  367. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/gomod.yaml +31 -0
  368. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/graphql.yaml +47 -0
  369. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/groff.yaml +30 -0
  370. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/groovy.yaml +111 -0
  371. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/haml.yaml +16 -0
  372. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/hare.yaml +52 -0
  373. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/haskell.yaml +52 -0
  374. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/hc.yaml +52 -0
  375. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html.yaml +70 -0
  376. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html4.yaml +25 -0
  377. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/html5.yaml +25 -0
  378. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ini.yaml +23 -0
  379. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/inputrc.yaml +14 -0
  380. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/java.yaml +37 -0
  381. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/javascript.yaml +124 -0
  382. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/jinja2.yaml +19 -0
  383. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/json.yaml +39 -0
  384. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/jsonnet.yaml +92 -0
  385. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/julia.yaml +57 -0
  386. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/justfile.yaml +40 -0
  387. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/keymap.yaml +27 -0
  388. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kickstart.yaml +16 -0
  389. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kotlin.yaml +66 -0
  390. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/kvlang.yaml +67 -0
  391. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ledger.yaml +14 -0
  392. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lfe.yaml +17 -0
  393. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lilypond.yaml +26 -0
  394. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lisp.yaml +17 -0
  395. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/log.yaml +92 -0
  396. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/lua.yaml +111 -0
  397. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mail.yaml +25 -0
  398. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/makefile.yaml +38 -0
  399. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/man.yaml +12 -0
  400. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/markdown.yaml +65 -0
  401. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mc.yaml +23 -0
  402. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/meson.yaml +51 -0
  403. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/micro.yaml +34 -0
  404. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/mpdconf.yaml +13 -0
  405. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/msbuild.yaml +6 -0
  406. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nanorc.yaml +16 -0
  407. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nftables.yaml +30 -0
  408. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nginx.yaml +22 -0
  409. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nim.yaml +27 -0
  410. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nix.yaml +32 -0
  411. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/nu.yaml +114 -0
  412. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/objc.yaml +60 -0
  413. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ocaml.yaml +43 -0
  414. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/octave.yaml +83 -0
  415. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/odin.yaml +64 -0
  416. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pascal.yaml +45 -0
  417. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/patch.yaml +14 -0
  418. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/peg.yaml +16 -0
  419. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/perl.yaml +58 -0
  420. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/php.yaml +60 -0
  421. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pkg-config.yaml +12 -0
  422. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/po.yaml +12 -0
  423. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pony.yaml +37 -0
  424. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/pov.yaml +21 -0
  425. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-action.yaml +14 -0
  426. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-config.yaml +10 -0
  427. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/privoxy-filter.yaml +12 -0
  428. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/proto.yaml +40 -0
  429. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/prql.yaml +84 -0
  430. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/puppet.yaml +22 -0
  431. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/python2.yaml +60 -0
  432. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/python3.yaml +80 -0
  433. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/r.yaml +32 -0
  434. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/raku.yaml +42 -0
  435. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/reST.yaml +18 -0
  436. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/renpy.yaml +15 -0
  437. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/rpmspec.yaml +43 -0
  438. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/ruby.yaml +73 -0
  439. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/rust.yaml +78 -0
  440. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sage.yaml +60 -0
  441. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/scad.yaml +53 -0
  442. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/scala.yaml +33 -0
  443. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sed.yaml +13 -0
  444. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sh.yaml +69 -0
  445. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sls.yaml +15 -0
  446. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/smalltalk.yaml +55 -0
  447. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/solidity.yaml +41 -0
  448. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/sql.yaml +35 -0
  449. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/stata.yaml +67 -0
  450. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/svelte.yaml +27 -0
  451. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/swift.yaml +103 -0
  452. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/systemd.yaml +16 -0
  453. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/tcl.yaml +18 -0
  454. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/terraform.yaml +87 -0
  455. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/tex.yaml +32 -0
  456. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/toml.yaml +56 -0
  457. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/twig.yaml +55 -0
  458. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/typescript.yaml +49 -0
  459. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/v.yaml +80 -0
  460. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vala.yaml +26 -0
  461. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/verilog.yaml +60 -0
  462. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vhdl.yaml +37 -0
  463. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vi.yaml +31 -0
  464. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/vue.yaml +64 -0
  465. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/xml.yaml +37 -0
  466. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/xresources.yaml +14 -0
  467. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/yaml.yaml +34 -0
  468. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/yum.yaml +12 -0
  469. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zig.yaml +52 -0
  470. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zscript.yaml +72 -0
  471. package/initramfs/buninu/apps/jsmdcui/runtime/syntax/zsh.yaml +52 -0
  472. package/initramfs/buninu/apps/jsmdcui/single-exe/README.md +396 -0
  473. package/initramfs/buninu/apps/jsmdcui/single-exe/assetsHelper.js +371 -0
  474. package/initramfs/buninu/apps/jsmdcui/single-exe/assetsLoader.mjs +85 -0
  475. package/initramfs/buninu/apps/jsmdcui/single-exe/assetsPacker.js +218 -0
  476. package/initramfs/buninu/apps/jsmdcui/single-exe/compiled.js +498 -0
  477. package/initramfs/buninu/apps/jsmdcui/single-exe/entry.mjs +17 -0
  478. package/initramfs/buninu/apps/jsmdcui/single-exe/packAssets.sh +7 -0
  479. package/initramfs/buninu/apps/jsmdcui/src/MDCUI_DEFAULT_EDIT +0 -0
  480. package/initramfs/buninu/apps/jsmdcui/src/buffer/backup.js +165 -0
  481. package/initramfs/buninu/apps/jsmdcui/src/buffer/buffer.js +126 -0
  482. package/initramfs/buninu/apps/jsmdcui/src/buffer/fixed3-codec.js +140 -0
  483. package/initramfs/buninu/apps/jsmdcui/src/buffer/loc.js +38 -0
  484. package/initramfs/buninu/apps/jsmdcui/src/buffer/message.js +29 -0
  485. package/initramfs/buninu/apps/jsmdcui/src/build-args.js +40 -0
  486. package/initramfs/buninu/apps/jsmdcui/src/config/clean.js +172 -0
  487. package/initramfs/buninu/apps/jsmdcui/src/config/colorscheme.js +99 -0
  488. package/initramfs/buninu/apps/jsmdcui/src/config/config.js +125 -0
  489. package/initramfs/buninu/apps/jsmdcui/src/config/defaults.js +109 -0
  490. package/initramfs/buninu/apps/jsmdcui/src/cui/fence-events.mjs +144 -0
  491. package/initramfs/buninu/apps/jsmdcui/src/cui/heading-ids.mjs +1568 -0
  492. package/initramfs/buninu/apps/jsmdcui/src/cui/id-collision.mjs +111 -0
  493. package/initramfs/buninu/apps/jsmdcui/src/cui/identity.mjs +26 -0
  494. package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-debug.mjs +25 -0
  495. package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-images.mjs +280 -0
  496. package/initramfs/buninu/apps/jsmdcui/src/cui/kitty-mode.mjs +6 -0
  497. package/initramfs/buninu/apps/jsmdcui/src/cui/rerender-queue.mjs +66 -0
  498. package/initramfs/buninu/apps/jsmdcui/src/cui/rpc.mjs +1554 -0
  499. package/initramfs/buninu/apps/jsmdcui/src/cui/server.mjs +128 -0
  500. package/initramfs/buninu/apps/jsmdcui/src/cui/table-render.mjs +286 -0
  501. package/initramfs/buninu/apps/jsmdcui/src/cui/table-row-edit.mjs +226 -0
  502. package/initramfs/buninu/apps/jsmdcui/src/cui/task-checkbox.mjs +60 -0
  503. package/initramfs/buninu/apps/jsmdcui/src/cui/template-components.mjs +253 -0
  504. package/initramfs/buninu/apps/jsmdcui/src/cui/text-block-resize.mjs +177 -0
  505. package/initramfs/buninu/apps/jsmdcui/src/cui/tui-links.mjs +560 -0
  506. package/initramfs/buninu/apps/jsmdcui/src/display/ansi-style.js +60 -0
  507. package/initramfs/buninu/apps/jsmdcui/src/highlight/highlighter.js +243 -0
  508. package/initramfs/buninu/apps/jsmdcui/src/highlight/parser.js +225 -0
  509. package/initramfs/buninu/apps/jsmdcui/src/index.js +9586 -0
  510. package/initramfs/buninu/apps/jsmdcui/src/lua/engine.js +68 -0
  511. package/initramfs/buninu/apps/jsmdcui/src/platform/archive.js +50 -0
  512. package/initramfs/buninu/apps/jsmdcui/src/platform/clipboard.js +278 -0
  513. package/initramfs/buninu/apps/jsmdcui/src/platform/commands.js +221 -0
  514. package/initramfs/buninu/apps/jsmdcui/src/platform/terminal.js +5 -0
  515. package/initramfs/buninu/apps/jsmdcui/src/plugins/js-bridge.js +3377 -0
  516. package/initramfs/buninu/apps/jsmdcui/src/plugins/manager.js +674 -0
  517. package/initramfs/buninu/apps/jsmdcui/src/runtime/encodings.js +10 -0
  518. package/initramfs/buninu/apps/jsmdcui/src/runtime/registry.js +134 -0
  519. package/initramfs/buninu/apps/jsmdcui/src/screen/cell-buffer.js +81 -0
  520. package/initramfs/buninu/apps/jsmdcui/src/screen/events.js +263 -0
  521. package/initramfs/buninu/apps/jsmdcui/src/screen/screen.js +249 -0
  522. package/initramfs/buninu/apps/jsmdcui/src/screen/vt100.js +571 -0
  523. package/initramfs/buninu/apps/jsmdcui/src/shell/shell.js +70 -0
  524. package/initramfs/buninu/apps/jsmdcui/testapp.md +78 -0
  525. package/initramfs/buninu/apps/jsmdcui/tests/assets-helper.test.js +150 -0
  526. package/initramfs/buninu/apps/jsmdcui/tests/backup.test.js +158 -0
  527. package/initramfs/buninu/apps/jsmdcui/tests/cat-markdown.test.js +139 -0
  528. package/initramfs/buninu/apps/jsmdcui/tests/cdp-security.test.js +32 -0
  529. package/initramfs/buninu/apps/jsmdcui/tests/cdp-websocket-test.html +46 -0
  530. package/initramfs/buninu/apps/jsmdcui/tests/cmphex3b64.js +95 -0
  531. package/initramfs/buninu/apps/jsmdcui/tests/compiled-runtime.test.js +139 -0
  532. package/initramfs/buninu/apps/jsmdcui/tests/config-settings.test.js +52 -0
  533. package/initramfs/buninu/apps/jsmdcui/tests/demo.test.js +448 -0
  534. package/initramfs/buninu/apps/jsmdcui/tests/docs-sync.test.js +14 -0
  535. package/initramfs/buninu/apps/jsmdcui/tests/fence-events.test.js +1293 -0
  536. package/initramfs/buninu/apps/jsmdcui/tests/heading-ids.test.js +559 -0
  537. package/initramfs/buninu/apps/jsmdcui/tests/heading-list-selector.test.js +2393 -0
  538. package/initramfs/buninu/apps/jsmdcui/tests/id-collision.test.js +514 -0
  539. package/initramfs/buninu/apps/jsmdcui/tests/jmigt.js +16 -0
  540. package/initramfs/buninu/apps/jsmdcui/tests/js-plugin-prompts.test.js +110 -0
  541. package/initramfs/buninu/apps/jsmdcui/tests/key-event.md +10 -0
  542. package/initramfs/buninu/apps/jsmdcui/tests/kitty-demo.md +184 -0
  543. package/initramfs/buninu/apps/jsmdcui/tests/kitty-images.test.js +288 -0
  544. package/initramfs/buninu/apps/jsmdcui/tests/kitty-mode.test.js +14 -0
  545. package/initramfs/buninu/apps/jsmdcui/tests/platform-commands.test.js +18 -0
  546. package/initramfs/buninu/apps/jsmdcui/tests/platform-terminal.test.js +8 -0
  547. package/initramfs/buninu/apps/jsmdcui/tests/pty-demo.js +492 -0
  548. package/initramfs/buninu/apps/jsmdcui/tests/rerender-queue.test.js +130 -0
  549. package/initramfs/buninu/apps/jsmdcui/tests/table-render.test.js +150 -0
  550. package/initramfs/buninu/apps/jsmdcui/tests/table-row-edit.test.js +138 -0
  551. package/initramfs/buninu/apps/jsmdcui/tests/task-checkbox.test.js +33 -0
  552. package/initramfs/buninu/apps/jsmdcui/tests/template-components.test.js +422 -0
  553. package/initramfs/buninu/apps/jsmdcui/tests/text-block-resize.test.js +222 -0
  554. package/initramfs/buninu/apps/jsmdcui/tests/textarea.md +8 -0
  555. package/initramfs/buninu/apps/jsmdcui/tests/tui-links.test.js +298 -0
  556. package/initramfs/buninu/apps/jsmdcui/tests/wui-responsive-images.test.js +60 -0
  557. package/initramfs/buninu/apps/jsmdcui/tests/wui.test.js +108 -0
  558. package/initramfs/buninu/apps/jsmdcui/tests/wv-client.js +96 -0
  559. package/initramfs/buninu/apps/jsmdcui/tui +7 -0
  560. package/initramfs/buninu/apps/jsmdcui/wui +9 -0
  561. package/initramfs/buninu/apps/musl-la/LICENSES/GPL-3.0.txt +674 -0
  562. package/initramfs/buninu/apps/musl-la/LICENSES/gcc_runtime_exception.txt +73 -0
  563. package/initramfs/buninu/apps/musl-la/LICENSE_musl.txt +193 -0
  564. package/initramfs/buninu/apps/musl-la/NOTICE +41 -0
  565. package/initramfs/buninu/apps/musl-la/ld-musl-aarch64.so.1 +0 -0
  566. package/initramfs/buninu/apps/musl-la/libgcc_s.so.1 +0 -0
  567. package/initramfs/buninu/apps/musl-la/libstdc++.so.6 +0 -0
  568. package/initramfs/buninu/apps/musl-la/musl-la.sh +36 -0
  569. package/initramfs/buninu/apps/native-bridge/native-bridge.js +199 -0
  570. package/initramfs/buninu/apps/native-bridge/package.json +8 -0
  571. package/initramfs/buninu/apps/tts/tts.js +214 -0
  572. package/initramfs/buninu/apps/xclip/xclip.js +121 -0
  573. package/initramfs/buninu/apps/xdg-open/xdg-open.js +151 -0
  574. package/initramfs/buninu/bin/bun.bat +37 -0
  575. package/initramfs/buninu/bin/bun.sh +57 -0
  576. package/initramfs/buninu/bin/buninu-help.bat +4 -0
  577. package/initramfs/buninu/bin/buninu-help.sh +7 -0
  578. package/initramfs/buninu/bin/bunmsh.bat +3 -0
  579. package/initramfs/buninu/bin/bunmsh.sh +5 -0
  580. package/initramfs/buninu/bin/bunx.bat +3 -0
  581. package/initramfs/buninu/bin/glow.bat +3 -0
  582. package/initramfs/buninu/bin/glow.sh +5 -0
  583. package/initramfs/buninu/bin/init.js +779 -0
  584. package/initramfs/buninu/bin/install.js +570 -0
  585. package/initramfs/buninu/bin/jmi.bat +3 -0
  586. package/initramfs/buninu/bin/jmi.sh +5 -0
  587. package/initramfs/buninu/bin/jsgotty.bat +3 -0
  588. package/initramfs/buninu/bin/jsgotty.sh +5 -0
  589. package/initramfs/buninu/bin/jsmdcui.bat +11 -0
  590. package/initramfs/buninu/bin/libsh-loader.c +135 -0
  591. package/initramfs/buninu/bin/libsh-loader.so +0 -0
  592. package/initramfs/buninu/bin/multicall.sh +103 -0
  593. package/initramfs/buninu/bin/native-bridge.bat +3 -0
  594. package/initramfs/buninu/bin/rz.bat +3 -0
  595. package/initramfs/buninu/bin/rz.sh +5 -0
  596. package/initramfs/buninu/bin/shc.js +5 -0
  597. package/initramfs/buninu/bin/showimg.bat +3 -0
  598. package/initramfs/buninu/bin/showimg.sh +5 -0
  599. package/initramfs/buninu/bin/switch_to_android.sh +9 -0
  600. package/initramfs/buninu/bin/switch_to_linux.sh +7 -0
  601. package/initramfs/buninu/bin/sz.bat +3 -0
  602. package/initramfs/buninu/bin/sz.sh +5 -0
  603. package/initramfs/buninu/bin/tts.bat +3 -0
  604. package/initramfs/buninu/bin/xclip.bat +3 -0
  605. package/initramfs/buninu/bin/xdg-open.bat +3 -0
  606. package/initramfs/buninu/demo-server.js +64 -0
  607. package/initramfs/buninu/icon.png +0 -0
  608. package/initramfs/buninu/package.json +59 -0
  609. package/initramfs/etc/resolv.conf +1 -0
  610. package/initramfs/init.js +339 -0
  611. package/initramfs/lib/ld-musl-x86_64.so.1 +0 -0
  612. package/initramfs/lib/libc.musl-x86_64.so.1 +0 -0
  613. package/initramfs/lib/libgcc_s.so.1 +0 -0
  614. package/initramfs/lib/libstdc++.so.6 +0 -0
  615. package/initramfs/usr/bin/env +7 -0
  616. package/package.json +42 -0
  617. package/run-qemu.sh +44 -0
  618. package/scripts/fetch.sh +26 -0
  619. package/scripts/pack-initramfs.sh +41 -0
  620. package/test/build-init-bootstrap.sh +23 -0
  621. package/test/init-bootstrap.c +55 -0
@@ -0,0 +1,1118 @@
1
+ # Changelog
2
+
3
+ All notable user-visible changes to jsmdcui are documented here.
4
+
5
+ ## [0.19.0] - 2026-08-24
6
+
7
+ ### Fixed
8
+
9
+ - `--assets-external` now works in a compiled binary. Every embedded asset
10
+ was affected: `--demo-<name>` reported `demos/<name>.md was not found`,
11
+ `--demo-list` listed only `testapp.md`, `--readme` and `--changelog` failed
12
+ with `ENOENT`, and the runtime registry (colorschemes, syntax, help,
13
+ jsplugins) looked in the wrong directory. Two causes, both in the
14
+ bootstrap:
15
+ * `assetsHelper`'s `--asset` branch stayed live in tar builds, rooted at
16
+ the binary's own `/$bunfs/root`. With the embedded store switched off it
17
+ enumerated the executable and its own archive as if they were assets, so
18
+ `hasInternalAssets()` answered `true` and listings came back empty. A
19
+ store of `null` (the loader ran and was told to stay external) is now
20
+ told apart from `undefined` (no loader in the graph, the `--asset` back
21
+ end).
22
+ * The disk fallback looked for `<exe dir>/<key>`, but `--assets-extract`
23
+ writes the archive exactly as packed, namespace included:
24
+ `<exe dir>/assets/<name>@<version>/<key>`.
25
+
26
+ ### Added
27
+
28
+ - `assetsHelper` exports `getAssetKey(path)` and `assetDiskPath(path)` — the
29
+ key an asset is stored under, and the file its disk fallback reads. A
30
+ program that writes its own fallback needs the same two answers.
31
+ - `assetsHelper` exports `readAssetTextSync(path)` and
32
+ `readAssetBytesSync(path)`, sync twins of `readAssetText` /
33
+ `readAssetBytes` for callers that cannot await, such as argument parsing.
34
+
35
+ ### Changed
36
+
37
+ - jsmdcui reads its own assets through `readAssetText` / `assetDiskPath`
38
+ instead of joining `REPO_ROOT` by hand, so every read follows the
39
+ extracted tree as well as the embedded one.
40
+
41
+ ## [0.18.2] - 2026-08-23
42
+
43
+ - Added ASSETS_BUNFS=1 for the build system
44
+ * Use --asset to pack assets
45
+ * See single-exe/README.md
46
+ - Changed the tar build-exe to gzip compressed by default
47
+
48
+ ## [0.18.1] - 2026-08-19
49
+
50
+ ### Fixed
51
+
52
+ - Fix `switchBackend`'s unix-socket endpoint losing a leading NUL byte, which
53
+ broke reaching a Linux abstract-namespace socket (a name starting with
54
+ `"\0"`, as opposed to a filesystem path). `new URL()` percent-encodes a NUL
55
+ byte in the path to `%00`; `rpc.mjs` now runs the extracted path through
56
+ `decodeURIComponent()` before handing it to Bun's `unix` fetch option, so
57
+ the exact original byte reaches Bun rather than the three literal
58
+ characters `%00`. Filesystem-path endpoints are unaffected, since they have
59
+ nothing that needs decoding.
60
+
61
+ ## [0.18.0] - 2026-08-19
62
+
63
+ ### Added
64
+
65
+ - Add `switchBackend(endpoint)` to `rpc.mjs`, repointing every `rpc.*` call
66
+ (including `_discover`) at a different endpoint instead of the default
67
+ `"rpc"`. Returns the previous endpoint so a caller can restore it.
68
+ - Accept a Bun unix socket as that endpoint: pass `"unix:/path/to/sock"` (or
69
+ `"UNIX:/path/to/sock"`) to `switchBackend`, and every `rpc.*` fetch is
70
+ issued over that socket via Bun's `unix` fetch option instead of as an
71
+ http path. Dispatch is unaffected, since routing is by function name in
72
+ the request body rather than by HTTP path. Only meaningful when `rpc.mjs`
73
+ runs under Bun (the `unix` fetch option has no effect in a browser).
74
+
75
+ ## [0.17.3] - 2026-08-12
76
+
77
+ ### Fixed
78
+
79
+ - Request a redraw from every `$()` selector method that changes what is on
80
+ screen, not only `.data()` and `.val()`. `.show()`, `.hide()`, `.toggle()`,
81
+ `.push()`, `.pop()`, `.shift()`, `.unshift()`, `.splice()`, and
82
+ `.cell(row, col).text(value)` / `.cell(row, col).val(checked)` previously
83
+ updated the buffer without asking the TUI to repaint, so a call made
84
+ outside a keypress-driven handler (a `setInterval` tick, an awaited RPC
85
+ callback, a resolved promise) would sit invisible on screen until an
86
+ unrelated keypress or click happened to trigger the next redraw.
87
+
88
+ ## [0.17.2] - 2026-08-12
89
+
90
+ ### Fixed
91
+
92
+ - Keep `_mdcuiAnsiText` in sync while typing directly into an mdcui `text` or
93
+ `textarea` control. Plain character insertion, backspace, and forward
94
+ delete previously updated only the buffer's plain lines, so any later
95
+ action that rebuilds the document from the cached ANSI snapshot (for
96
+ example, refreshing Kitty images after a reactive `.data()` update) could
97
+ silently revert unsaved keystrokes back to their pre-edit value. These
98
+ edits now update the corresponding ANSI line the same way table-cell edits
99
+ already did, so the cached snapshot never falls behind what is on screen.
100
+
101
+ ## [0.17.0] - 2026-08-11
102
+
103
+ This release makes images first-class reactive Markdown data in both terminal
104
+ and browser applications. It adds a portable heading image selector, refreshes
105
+ Kitty graphics when template images change, accepts image data URLs, and
106
+ provides embedded-first asset readers with an external-file fallback. A new
107
+ bilingual image-switching demo and expanded documentation show both bundled
108
+ image sources and RPC-loaded data URLs.
109
+
110
+ ### Added
111
+
112
+ - Add cross-interface `$(heading).img(index = 0).src`. In the WUI it returns
113
+ the indexed real `<img>` element's resolved `src`; in the TUI it returns the
114
+ indexed image address from rendered OSC 8 metadata below the heading and
115
+ before the next heading. Missing or invalid indexes return an empty string.
116
+ - Add `readAssetText(path)` and `readAssetBytes(path)` to the single-executable
117
+ asset helpers. Both prefer `internalAssets` and automatically fall back to
118
+ the same path under `REPO_ROOT`; the bytes API consistently resolves to a
119
+ `Uint8Array`.
120
+ - Accept `data:image/...` URLs in Kitty rendering. Preserve them across Bun's
121
+ Markdown-to-ANSI conversion, decode their payload to image bytes, and feed
122
+ them through the existing size detection, compatibility conversion, stable
123
+ image ID, and Kitty transmission flow.
124
+ - Add `demos/img-change.md` and its two compact JPEG assets. The bilingual demo
125
+ loads the images through its back-end RPC as data URLs, initializes a
126
+ reactive image during `onMdcuiLoad()`, and alternates the sources with
127
+ heading-scoped `.data()` updates.
128
+ - Document reactive images, resolved bundled image sources, hidden source
129
+ headings, RPC-created data URLs, and the new selector API in the main README
130
+ and bundled help. Expand the single-executable guide with the shared text and
131
+ byte fallback readers.
132
+
133
+ ### Changed
134
+
135
+ - Queue reactive Kitty image preparation only when a changed template contains
136
+ an image. Coalesce repeated requests, rebuild image metadata safely from the
137
+ current ANSI document, and redraw the app after preparation completes.
138
+ - Reuse the new `readAssetText()` helper when generating WUI RPC and server
139
+ modules instead of maintaining a separate embedded-first fallback function.
140
+
141
+ ### Fixed
142
+
143
+ - Delete stale Kitty placements and prepare the replacement image when a
144
+ reactive template changes its Markdown image, including switching from a
145
+ normal path to a data URL or returning to a compiled embedded asset.
146
+ - Prevent an older asynchronous image preparation result from overwriting a
147
+ newer reactive update by tracking image revisions through the rerender
148
+ queue.
149
+
150
+ ## [0.16.0] - 2026-08-02
151
+
152
+ This release expands jsmdcui's reactive Markdown model with synchronous
153
+ JavaScript templates, heading-scoped state updates, and a post-load lifecycle
154
+ hook. It also introduces a shared TTS API for TUI and WUI and demonstrates the
155
+ new capabilities in a practical file-and-URL reader with paging, navigation,
156
+ speech controls, and configurable text replacement.
157
+
158
+ ### Added
159
+
160
+ - Add the optional async `onMdcuiLoad()` front export. It runs with the normal
161
+ front-code scope after initial TUI layout/rendering, or after WUI
162
+ `window.load` and installation of selectors and template component state.
163
+ - Let the built-in `tts` command accept the sentence to speak as an argument,
164
+ including calls such as `micro.cmd.tts('Hello world')`. Calling `tts` without
165
+ an argument retains selection-or-cursor reading behavior.
166
+ - Add the cross-interface async `$.tts(text, pitch, speed)` helper. The TUI uses
167
+ its native speech command and updates the current process's `TTS_PITCH` and
168
+ `TTS_SPEED`, while the WUI uses the browser Web Speech API and resolves after
169
+ the utterance ends. WUI speech failures resolve to an error-reason string
170
+ instead of rejecting the promise. Add `$.tts.stop()` as the shared stop API;
171
+ its TUI implementation uses the same dedicated stop path as Escape does while
172
+ speech is active.
173
+ - Add synchronous four-backtick `js template` components alongside
174
+ `md template`. Their source is used directly as the render function body, so
175
+ it can explicitly return Markdown while retaining the same heading-owned
176
+ `data` argument, component `this`, front matter, and reactive replacement
177
+ flow.
178
+ - Add the bilingual `demos/reader.md` reader demo. It provides reactive
179
+ ten-item file-list pages, editable page jumps, local directory completion,
180
+ direct file or URL selection, fixed-size document pages, keyboard paging,
181
+ and heading-scoped help.
182
+ - Let the reader fetch a web page and build its source list from `a[href]`
183
+ elements in document order. Link labels use anchor text while selected
184
+ values resolve relative links to complete HTTP(S) URLs.
185
+ - Add reader navigation and speech controls for numbered previous/next
186
+ chapters, speech speed and pitch, sequential sentence playback, automatic
187
+ page advancement, and cancellation that also stops the background reading
188
+ loop.
189
+ - Support optional JSON5 `replace.json` rules during reader loads. Each
190
+ two-item rule compiles its target as a global regular expression and inserts
191
+ its replacement literally. Local files use their own directory; URL loads
192
+ use `process.cwd()`.
193
+
194
+ ## [0.15.0] - 2026-08-01
195
+
196
+ ### Added
197
+
198
+ - Add reactive Markdown components with exactly four-backtick `md template`
199
+ fences. Each component belongs to its closest preceding heading, shares that
200
+ heading's data object, and exposes `source`, `initialData`, `last`, `data`,
201
+ `id`, `index`, and a `render(data = {})` function.
202
+ - Treat template source as a JavaScript template literal, allowing expressions
203
+ such as `${data.name}`. Component render results remain Markdown and pass
204
+ through an in-memory TUI or WUI Markdown conversion step before jsmdcui
205
+ replaces the component region.
206
+ - Parse optional leading template front matter with `Bun.YAML`, merge it into
207
+ the heading data before the first component render, and retain the parsed
208
+ object as `component.initialData`.
209
+ - Rerender every component under a heading when `.data(key, value)` or
210
+ `.data(object)` updates that heading. TUI components use invisible boundary
211
+ markers; WUI components use scoped `.mdcui-template` wrappers.
212
+ - Add post-edit `@input` handlers for named `text` and `textarea` controls in
213
+ both interfaces. WUI support is layered on top of the existing `onkeydown`
214
+ and mobile `onbeforeinput` paths rather than replacing them.
215
+ - Add `demos/reactive.md`, a bilingual reactive-template example using YAML
216
+ initial data and a 200 ms debounced text input.
217
+
218
+ ### Fixed
219
+
220
+ - Make TUI `@input` handlers observe the value after character insertion and
221
+ other successful edits instead of the preceding keydown value.
222
+ - Request a TUI redraw when an asynchronous `.data()` update replaces reactive
223
+ component output, preventing the display from remaining one update behind
224
+ until the next keypress.
225
+
226
+ ## [0.14.0] - 2026-07-29
227
+
228
+ ### Added
229
+
230
+ - Convert a leading `[ ]`, `[x]`, or `[X]` in every Markdown table cell into
231
+ a fixed-width `☐`/green `☒` TUI control or a native WUI checkbox, while
232
+ leaving matching text elsewhere in the cell unchanged. TUI conversion now
233
+ happens from the Markdown source before Bun lays out narrow cells, so the
234
+ checkbox cannot be split across rendered lines.
235
+ - Add cross-interface `$('#heading-id').cell(row, col).text()` and
236
+ `.text(value)` for reading or replacing zero-based cells in the
237
+ heading-associated table. TUI wrapped cell lines are joined on read; writes
238
+ remain inside the existing rendered rectangle, preserve ANSI styles and
239
+ OSC 8 links, and survive width rerenders. WUI writes retain the cell's
240
+ existing elements. Cell selections expose
241
+ `.row` and `.col`, plus bounded `.left()`, `.right()`, `.up()`, and `.down()`
242
+ navigation that returns `null` outside the table, with `.lt()`, `.rt()`, and
243
+ `.dn()` convenience aliases. A link event's `$(this).parent()` returns its
244
+ containing cell in both interfaces.
245
+ - Add cross-interface `.cell(row, col).val()`. It returns the first checkbox's
246
+ checked state as `true` or `false`, or falls back to the cell text when the
247
+ cell has no checkbox. Passing a boolean updates the first checkbox in either
248
+ interface.
249
+ - Make generated WUI tables directly editable while retaining embedded
250
+ checkbox and link elements.
251
+
252
+ ### Fixed
253
+
254
+ - Preserve edited TUI table cells, including their ANSI styles and OSC 8 data,
255
+ across terminal resize, `vsplit`, and closing a split. Refit edited contents
256
+ into the newly sized cells while leaving unchanged cells to the fresh
257
+ Markdown layout.
258
+ - Let TUI table overwrite mode accept double-width IME input such as Chinese
259
+ by consuming adjacent editable columns without crossing cell padding.
260
+ - Render a full-width divider between logical TUI table rows associated with
261
+ headings (without splitting wrapped cell text), and use
262
+ the active colorscheme's cursor-line or color-column color for the header
263
+ and alternating body-row backgrounds.
264
+ - Edit rendered TUI table rows in fixed-width overwrite mode so Backspace,
265
+ Delete, spaces, and printable input cannot remove cell separators or change
266
+ the row's visual width.
267
+ - Add default table borders, cell padding, striped rows, and hover highlighting
268
+ directly to the generated WUI HTML boilerplate.
269
+
270
+ ### Changed
271
+
272
+ - Replace the special-case `--demo-imgtool` and `--demo-imgtool-zh` aliases
273
+ with normal `demos/imgtool.md` discovery. Both commands now load compact
274
+ table-based image processor demos and create same-named local Markdown files.
275
+
276
+ ## [0.13.1] - 2026-07-29
277
+
278
+ ### Fixed
279
+
280
+ - Rerender MDCUI buffers at their new pane width immediately after `vsplit`
281
+ and after a split pane closes.
282
+ - Show a TUI message when checkbox state restoration is skipped because a
283
+ width rerender changed the number of checkboxes.
284
+ - Restore every rendered `☐` and `☒`, including its exact ANSI style, by
285
+ full-text order across ordinary text, tables, and fenced blocks when their
286
+ total count remains unchanged.
287
+
288
+ ## [0.13.0] - 2026-07-28
289
+
290
+ ### Added
291
+
292
+ - Add cross-interface heading selection APIs for stable `.id` values,
293
+ `.text()`, `.show()`, `.hide()`, `.toggle()`, `.data()`, and
294
+ `.removeData()`.
295
+ - Reserve the first visible grapheme of an identified heading as its section
296
+ toggle. It can be activated with a mouse click, `Enter`, or `Space`, while
297
+ the heading itself remains visible.
298
+ - Give local `javascript:` links and fenced keyboard handlers matching `this`,
299
+ `event.target`, and `event.currentTarget` values in both interfaces,
300
+ including keyboard modifiers and cancellation state.
301
+ - Add the `--demo-event` example for link and keyboard events, nested
302
+ selections, heading data, and heading visibility.
303
+ - Preserve heading-list mutations, checkbox states, fenced-control contents,
304
+ and collapsed headings when a terminal-width change rerenders a TUI
305
+ document.
306
+ - Accept Unicode letters, numbers, and combining marks in MDCUI IDs across
307
+ fenced declarations and selectors. Markdown headings whose usual generated
308
+ ID is empty receive a normalized Unicode ID or a stable `mdcui-h-...`
309
+ fallback.
310
+ - Give TUI link targets source-rendered inline label HTML through `innerHTML`,
311
+ with a visible-text fallback when source metadata is unavailable.
312
+ - Add `--outline FILE.md` to print every selectable heading ID as an indented
313
+ `-` item and every named fenced-block ID as a top-level `+` item.
314
+ - Let TUI `#heading-id` links move the cursor to the matching Markdown heading
315
+ and center it vertically, matching same-document WUI navigation.
316
+
317
+ ### Changed
318
+
319
+ - Canonicalize a `$()` object argument with a legal MDCUI ID immediately to
320
+ the corresponding `#id` selection. Other object fields are discarded,
321
+ wrapping may be nested to any depth, and objects without a legal ID retain
322
+ generic object-target behavior.
323
+ - Wrap WUI heading ranges in nested `<section>` elements so their visibility
324
+ boundaries match the TUI.
325
+ - Keep per-ID user data stable while headings are hidden, restored, or
326
+ replaced in the WUI DOM. `.removeData()` removes only user-owned data.
327
+ - Return semantic heading HTML without exposing the internal first-grapheme
328
+ toggle wrapper.
329
+ - Bound heading visibility and direct task-list lookup to the heading's
330
+ Markdown container, such as its enclosing blockquote or list item.
331
+
332
+ ### Fixed
333
+
334
+ - Prevent a heading concealed by an ancestor from resolving to an unrelated
335
+ visible heading or mutating that heading's task list.
336
+ - Make `.show()`, `.hide()`, and `.toggle()` update nested headings correctly
337
+ while one or more ancestors remain collapsed.
338
+ - Replay task-list mutations made through nested ID selections after a TUI
339
+ rerender.
340
+ - Prevent content, collapsed sections, or runtime list mutations from the
341
+ previous source from reappearing after a document is reopened, while
342
+ retaining user data.
343
+ - Let an earlier WUI click handler cancel a `javascript:` link and expose the
344
+ correct initial `event.defaultPrevented` state to the evaluated handler.
345
+ - Resolve legal pure IDs reliably in the WUI when their characters have CSS
346
+ selector meaning.
347
+ - Preserve quoted `>` characters in heading inline-HTML attributes when
348
+ adding the toggle target.
349
+ - Keep standalone `<code>` elements opaque to WUI heading-section generation,
350
+ so heading-like content inside them cannot create broken sections.
351
+ - Treat the first visible heading character as one complete grapheme cluster,
352
+ avoiding splits in combining-character and ZWJ emoji sequences.
353
+ - Discover selectable and event-enabled fenced blocks correctly inside
354
+ blockquotes and list items, and make `--check` report ATX, Setext, and fenced
355
+ declarations at their actual source lines.
356
+ - Keep wrapped TUI links active on every displayed row and retain the correct
357
+ complete label across repeated URLs, images, hidden sections, and rerenders.
358
+ - Preserve an emptied task list's insertion position and keep later heading
359
+ rows, `.line()`, and first-character toggles aligned when text controls
360
+ change height or the TUI rerenders.
361
+ - Resize prefixed text frames at their visible corners without pairing them
362
+ with an adjacent or differently nested frame.
363
+ - Coalesce overlapping TUI width rerenders and preserve terminal-input order,
364
+ including split `Alt` key sequences.
365
+ - Prevent the key used to dismiss an alert, prompt, or shell pause from being
366
+ replayed into the editor afterward.
367
+ - Apply one shared timeout budget to remote Kitty images in a TUI render,
368
+ abort stalled downloads, and retain the linked `📷` fallback.
369
+ - Preserve valid raw `%` expressions in WUI `javascript:` links and report
370
+ synchronous or asynchronous handler failures to the browser console.
371
+
372
+ ## [0.12.0] - 2026-07-27
373
+
374
+ This release makes Markdown images embedded by Bun's HTML bundler available to
375
+ the compiled terminal UI, adds environment-controlled Kitty rendering, and
376
+ consolidates the reusable single-executable asset helpers.
377
+
378
+ ### Added
379
+
380
+ - Add `JSMDCUI_KITTY_MODE=off|compat|extended` as an environment-controlled
381
+ alternative to the Kitty command-line flags. Explicit `--kitty` and
382
+ `--kitty-compat` arguments continue to take precedence.
383
+ - Preserve each generated WUI image source in `data-mdcui-src`. Bun can rewrite
384
+ the normal `src` to its content-hashed public asset path while the original
385
+ Markdown reference remains available for TUI lookup.
386
+ - Add reusable HTML bundle helpers to `single-exe/assetsHelper.js`. They match
387
+ compiled public image paths to `homepage.files`, canonicalize HTML entities
388
+ and percent-encoded image references, and build a Markdown-reference-to-bunfs
389
+ image map from `homepage.index`.
390
+ - Export the bundled `homepage` from generated Markdown server modules so a
391
+ compiled TUI can inspect the same HTML asset manifest without starting the
392
+ WUI server.
393
+
394
+ ### Changed
395
+
396
+ - Reuse images already embedded by Bun's HTML bundler instead of copying a
397
+ second image archive into the executable. The compiled TUI builds the image
398
+ path map once on first Kitty use, caches it, and reads image bytes lazily from
399
+ Bun's compiled virtual filesystem (`/$bunfs/root/...` on POSIX systems or
400
+ `B:/~BUN/...` on Windows).
401
+ - Load the bundled homepage only when running a compiled executable with
402
+ `global.MDCUI_MAIN` configured. Source-tree launches retain the existing
403
+ filesystem and authorized HTTP image fallbacks without importing a generated
404
+ server module.
405
+ - Consolidate runtime asset access on `single-exe/assetsHelper.js` and remove
406
+ the duplicate `src/runtime/assets.js` implementation.
407
+
408
+ ### Fixed
409
+
410
+ - Match compiled Markdown images independently of Bun's build-entry-relative
411
+ `homepage.files[].input` paths. This fixes images whose Markdown-relative
412
+ path and bundle-entry-relative path have different spellings.
413
+ - Normalize bare `process.env.JSMDCUI_KITTY_MODE=compat` build definitions into
414
+ JavaScript string literals before forwarding them to `bun build`.
415
+ - Use the global `process` binding for Kitty-mode build constants, allowing Bun
416
+ to replace `process.env.JSMDCUI_KITTY_MODE` at build time instead of missing
417
+ an imported and renamed `node:process` binding.
418
+
419
+ ## [0.11.2] - 2026-07-26
420
+
421
+ ### Added
422
+
423
+ - Add `--build-md-exe <file.md>` as a convenience alias for building a
424
+ current-platform executable with `global.MDCUI_MAIN` set to the specified
425
+ Markdown app.
426
+ - Add `--build-md-for <platform> <file.md>` for the equivalent
427
+ cross-compilation workflow. Both aliases expand into the existing build
428
+ arguments before generated application files are written.
429
+
430
+ ### Fixed
431
+
432
+ - Fix the final executable existence check for Windows builds by checking the
433
+ `.exe` output path for Windows targets, or for native Windows builds when no
434
+ target is specified.
435
+
436
+ ## [0.11.1] - 2026-07-26
437
+
438
+ ### Changed
439
+
440
+ - Accept a bare `global.MDCUI_MAIN` path in forwarded build arguments by
441
+ automatically encoding non-primitive define values as JavaScript strings.
442
+
443
+ ## [0.11.0] - 2026-07-26
444
+
445
+ This release adds custom Markdown-app embedding for Bun single-file
446
+ executables, with explicit per-buffer selection between embedded and
447
+ filesystem modules in both TUI and WUI.
448
+
449
+ ### Added
450
+
451
+ - Add the build-time `global.MDCUI_MAIN` string define for embedding a custom
452
+ Markdown app together with its generated front, RPC, back, HTML, and server
453
+ modules. Build preparation resolves and validates the source, copies it into
454
+ the bundled demos, derives `global.MDCUI_MAIN_BASE`, and selects the app on a
455
+ no-argument launch.
456
+ - Add a bundling mode to `extractJs()` and `createWui()`. It emits a
457
+ browser-only `.tmpfs.js` front module and a `.tmpfi.js` installer that exposes
458
+ the front exports on `window`, then makes the bundled HTML load that entry.
459
+ - Add embedded WUI server startup and report whether WUI is starting an
460
+ embedded or external server before launch.
461
+ - Add `micro.CurPane().Buf.MdcuiModuleSource`, returning `embedded` or
462
+ `external`, and show the value in the bundled `showpath` example.
463
+ - Allow Unicode letters and numbers, including Chinese, in custom demo names
464
+ while continuing to reject whitespace and path separators.
465
+ - Show `global.MDCUI_MAIN` and the generated `global.MDCUI_MAIN_BASE` in
466
+ `--version` distribution settings.
467
+
468
+ ### Changed
469
+
470
+ - Track embedded-module selection per buffer. The configured demo uses
471
+ embedded TUI front/RPC and WUI server modules when its local byte length
472
+ matches the bundled Markdown. Missing or overwritten copies are written
473
+ first and then use embedded modules; other files and changed-size demos use
474
+ filesystem companions.
475
+ - Document presence-based `MDCUI_*` defines with `=1`, supported build-flag
476
+ combinations, and commands for switching a TUI-default build to WUI or a
477
+ WUI-default build to TUI.
478
+
479
+ ### Fixed
480
+
481
+ - Bundle and load the configured app's front, RPC, back, server, and dependency
482
+ graph so custom apps with companion imports can run from a single
483
+ executable.
484
+ - Keep unrelated Markdown buffers on external modules instead of reusing the
485
+ embedded main app's front and RPC modules.
486
+ - Use the bundled file's byte length after `MDCUI_OVERWRITE_DEMO` replaces a
487
+ stale local demo, ensuring that the overwritten app selects embedded
488
+ modules.
489
+ - Install WUI front exports on `window` without relying on the generated front
490
+ module's process-dependent or self-import path.
491
+
492
+ ## [0.10.1] - 2026-07-25
493
+
494
+ ### Fixed
495
+
496
+ - Resolve and prepare `--demo` and `--demo-*` selections before entering WUI
497
+ mode, so combinations such as `--wui --demo-todo` serve the selected demo
498
+ instead of falling back to `testapp.md`.
499
+
500
+ ## [0.10.0] - 2026-07-24
501
+
502
+ This update adds distribution-oriented defaults for shipping jsmdcui as a text
503
+ editor, terminal application, or browser application; makes WUI startup and
504
+ demo replacement explicit; and improves command-line control over rendering,
505
+ syntax highlighting, and single-executable builds.
506
+
507
+ ### Added
508
+
509
+ - Add `--mdcui` and `--tui` as aliases for `-encoding mdcui`, allowing an
510
+ explicit terminal Markdown UI request to override an editor-oriented
511
+ distribution default.
512
+ - Add `--overwrite-demo` as a modifier for `--demo` and the automatically
513
+ discovered `--demo-*` commands. It replaces an existing local demo with the
514
+ bundled copy before opening it.
515
+ - Add `--print-ui` for WUI launches. The generated TUI preview, raw ANSI, and
516
+ HTML are printed only when this flag is present.
517
+ - Add the `src/MDCUI_DEFAULT_EDIT` distribution marker. When present, Markdown
518
+ files open as editable UTF-8 text by default while `--mdcui` remains
519
+ available explicitly.
520
+ - Add presence-based single-executable build constants:
521
+ `MDCUI_DEFAULT_EDIT`, `MDCUI_DEFAULT_DEMO`, and
522
+ `MDCUI_DEFAULT_DEMO_WUI` select an editor, no-argument TUI demo, or
523
+ no-argument WUI demo default. `MDCUI_OVERWRITE_DEMO` optionally makes a
524
+ bundled demo replace its local copy.
525
+ - Add distribution documentation for shipping a customized root
526
+ `testapp.md` as a standalone terminal or browser application.
527
+ - Add regression coverage for the `--mdcui` alias, forced CLI filetypes,
528
+ non-overwriting and overwriting demos, and WUI demo replacement.
529
+
530
+ ### Changed
531
+
532
+ - Parse `--wui` through the normal command-line argument flow, so it can appear
533
+ before or after the Markdown filename.
534
+ - Make WUI startup quieter by default. It continues to report file generation
535
+ and the server URL, while full generated UI output is opt-in through
536
+ `--print-ui`.
537
+ - Make direct `runmd.mjs` launches recognize `--overwrite-demo` and
538
+ `--print-ui`. Demo replacement is limited to the implicit `testapp.md`;
539
+ explicitly named Markdown files are protected from replacement.
540
+ - Forward every extra argument after `--build-exe`, or after the target passed
541
+ to `--build-for`, to the underlying `bun build` command.
542
+ - Align the `start`, `tui`, and `wui` package scripts with the repository
543
+ launchers, and add a `clean` package script.
544
+ - Recommend choosing only one of the three `MDCUI_DEFAULT_*` distribution
545
+ modes per build, with `MDCUI_OVERWRITE_DEMO` treated as an optional modifier.
546
+ - Show effective `MDCUI_*` distribution settings in `--version` output,
547
+ including `MDCUI_DEFAULT_EDIT` enabled through either its build constant or
548
+ the `src/MDCUI_DEFAULT_EDIT` marker.
549
+
550
+ ### Fixed
551
+
552
+ - Make `-filetype <name>` actually override automatic syntax detection in
553
+ editor buffers and `--cat`, including input read from stdin.
554
+
555
+ ## [0.9.0] - 2026-07-21
556
+
557
+ This update expands Chrome DevTools Protocol automation for the terminal UI,
558
+ adds a complete maze-solving example, and makes the optional Bun single-file
559
+ executable bootstrap easier to reuse and more reliable across platforms.
560
+
561
+ ### Added
562
+
563
+ - Add CDP automation support for reading the rendered ANSI document, activating
564
+ a 1-based terminal-buffer cell, and sending keyboard input through the TUI's
565
+ normal input parser and event pipeline. Key presses support Alt, Ctrl, Meta,
566
+ Shift, navigation keys, editing keys, text, and auto-repeat without emitting
567
+ duplicate input for paired CDP `keyDown` and `char` events.
568
+ - Add `micro.getAllAnsiText()` and `micro.clickBufferCell(x, y)` to the JS
569
+ plugin bridge. MDCUI cell clicks now activate the same callbacks as mouse
570
+ input, while clicks in ordinary buffers retain the previous `goto` behavior.
571
+ - Add `cdp-maze.js` and `llm-maze.txt`, a documented Bun.WebView example that
572
+ reads the maze from the running TUI, solves it with breadth-first search, and
573
+ completes it by clicking controls and sending arrow-key events through CDP.
574
+ - Add `--cdp-maze` to open the bundled maze, start a local CDP server on port
575
+ 9222, and automatically import and run the maze solver after a three-second
576
+ delay. The completed result is returned to the main program and displayed in
577
+ the TUI status message.
578
+ - Add `--export-cdp-maze` to write or overwrite `./cdp-maze.js` from the
579
+ bundled asset first, with a source-tree fallback, then exit. Include the
580
+ solver in the single-executable asset archive.
581
+ - Add a dedicated CDP automation section to the README and bundled help,
582
+ covering command-line and command-prompt startup, bind-address safety,
583
+ connection methods, and the maze solver workflow.
584
+ - Add a reusable single-file executable guide covering asset packing, embedded
585
+ and external resource fallbacks, build commands, cross-compilation, Node.js
586
+ compatibility, and adapting the bootstrap to another project.
587
+
588
+ ### Changed
589
+
590
+ - Move responsibility for awaiting bundled assets into the Bun-only
591
+ `single-exe/entry.mjs` bootstrap, then dynamically import the regular main
592
+ module. This keeps the main module free of Bun-specific asset-loader state
593
+ and preserves its uncompiled Node.js execution path.
594
+ - Detect Bun's compiled virtual paths on both POSIX (`/$bunfs/`) and Windows
595
+ (`B:/~BUN`) when resolving single-executable resources, and consolidate
596
+ compiled-runtime handling in `single-exe/compiled.js`.
597
+ - When initially launched with Node.js, restart under Bun with inherited stdio
598
+ and propagate its exit status instead of replacing the current process with
599
+ `process.execve()`.
600
+ - Display the maze completion message inside the game instead of opening a
601
+ blocking alert, and include reset instructions in the result.
602
+ - Export the maze solver as a reusable `runCdpMaze()` function while retaining
603
+ direct `bun cdp-maze.js` execution. Suppress its console result while stdin
604
+ is in terminal raw mode so TUI rendering is not corrupted.
605
+ - Replace the manual two-process maze automation instructions with the single
606
+ `--cdp-maze` workflow in the README and bundled help.
607
+ - Update the homepage and Kitty test images to use the smaller current demo and
608
+ maze screenshots; exclude the maze screenshot from the npm package.
609
+ - Document theme preview from the TUI command prompt and state Bun 1.3.12 as
610
+ the minimum required version.
611
+
612
+ ### Fixed
613
+
614
+ - Make CDP `view.click()` activate MDCUI links and controls at the requested
615
+ buffer coordinate instead of only moving the cursor there.
616
+ - Allow CDP input dispatch without an explicit session ID by selecting the
617
+ implicit target, matching other single-target CDP operations.
618
+ - Wait until the embedded asset archive is ready before starting the compiled
619
+ application, preventing startup from racing bundled resource loading.
620
+
621
+ ## [0.8.0] - 2026-07-20
622
+
623
+ This update adds portable inline keydown handling to Markdown text controls,
624
+ including mobile software-keyboard fallback behavior, and makes interactive
625
+ prompts safe across every TUI frontend action path.
626
+
627
+ ### Added
628
+
629
+ - Add quoted `@keydown="..."` attributes to named `text` and `textarea`
630
+ fences. The TUI preserves source event metadata and evaluates it before key
631
+ handling; the WUI emits a native inline event attribute. Add `.prevent` to
632
+ apply `event.preventDefault()` before the handler runs. Keyup is intentionally
633
+ not exposed because traditional terminals do not report key releases
634
+ reliably.
635
+ - In the WUI, automatically map `beforeinput.data` back through `onkeydown`
636
+ when a mobile software keyboard reports `event.key` as `Unidentified`.
637
+ Unidentified events are hidden from application handlers, while identified
638
+ desktop keydowns are marked briefly to prevent duplicate calls.
639
+ - Add native multiline editing to TUI `textarea` controls. Enter splits a body
640
+ row and expands the frame; Backspace at the start of a later row and Delete
641
+ at the end of a row join adjacent body rows without exposing frame borders.
642
+ - Add the `bun ./edit` launcher as a short equivalent of
643
+ `bun src/index.js --edit`, opening Markdown as ordinary editable UTF-8 source.
644
+ - Add the automatically discovered `--demo-maze` example, demonstrating
645
+ portable `@keydown.prevent` controls with keyboard and arrow-key navigation;
646
+ add `Ctrl-R` as a keyboard shortcut for resetting the maze.
647
+
648
+ ### Changed
649
+
650
+ - Install protected `alert`, `confirm`, and `prompt` globals once for the TUI
651
+ lifetime and share them across OSC 8 actions, fenced keyboard handlers, and
652
+ JS plugins. Restore Bun's original globals when the TUI stops.
653
+ - Make `micro.alert()`, `micro.confirm()`, and `micro.prompt()` synchronous like
654
+ their native counterparts, and update the bundled JS plugin examples so they
655
+ do not `await` these calls.
656
+ - Add TUI `.val(value)` replacements to Undo/Redo history, including multiline
657
+ layout, ANSI rendering metadata, image positions, and task-list anchors.
658
+
659
+ ### Fixed
660
+
661
+ - Prevent `alert()` called from a keydown handler from competing with the TUI
662
+ for stdin by suspending raw mode and screen rendering around native prompts.
663
+ - Restore the terminal's previous raw-mode and input-listener state after a
664
+ protected prompt, including setup, prompt, and cleanup error paths.
665
+ - Index fenced keyboard-event regions once and use binary lookup for each key,
666
+ instead of rescanning the rendered Markdown document on every keypress.
667
+ - Open Windows controlling-terminal input through read-only `CONIN$` when stdin
668
+ is redirected, so piped Markdown retains keyboard and protected-prompt input.
669
+ - Preserve `ctrlKey`, `shiftKey`, `altKey`, and `metaKey` when the WUI maps an
670
+ unidentified mobile keydown through its `beforeinput` fallback.
671
+ - Recover modified A-Z keys in the WUI from key codes 65-90 or physical
672
+ `KeyA`-`KeyZ` codes, including Android browsers that transform Alt-S into
673
+ `ß`; exclude AltGraph so international text composition remains intact.
674
+ - Add matching non-enumerable `event.toJSON()` methods to TUI and WUI keydown
675
+ events, allowing `JSON.stringify(event)` to produce portable event details.
676
+ - Keep fenced-block IDs visible to collision checking when the info string also
677
+ contains inline event attributes such as `@keydown="..."`.
678
+ - When the WUI's default port 3000 is already in use, retry with port 0 so the
679
+ operating system selects an available port, and print that actual port in the
680
+ generated URL. Other server startup errors continue to fail normally.
681
+
682
+ ## [0.7.0] - 2026-07-20
683
+
684
+ This update adds native Kitty image rendering, turns heading task lists into
685
+ Array-style collections in both interfaces, and keeps TUI layout, interaction,
686
+ and checkbox styling consistent at every terminal width.
687
+
688
+ ### Added
689
+
690
+ - Display local Markdown images at their rendered TUI positions with the
691
+ Kitty graphics protocol. Image rows are reserved according to intrinsic
692
+ dimensions, and placements follow scrolling, resizing, and split panes.
693
+ - With `--allow-url` and Kitty mode enabled, download HTTP(S) Markdown images
694
+ through the existing `curl`, `wget`, then Bun `fetch` fallback chain. Relative
695
+ image URLs in downloaded Markdown resolve against the original document URL.
696
+ - Keep Bun's normal linked `📷` fallback for missing, unsupported, and
697
+ unauthorized remote images, and scope Kitty cleanup to image IDs owned by
698
+ jsmdcui.
699
+ - Set Kitty's `C=1` placement flag so displaying an image cannot advance the
700
+ terminal cursor and trigger an unwanted scroll at the bottom of the screen.
701
+ - Add `.push()`, `.pop()`, `.shift()`, `.unshift()`, and `.splice()` to heading
702
+ selectors in both the TUI and WUI. The methods follow their
703
+ `Array.prototype` argument and return-value conventions, operate on direct
704
+ items in the first task list belonging to the heading, and remove nested
705
+ content together with its parent item.
706
+ - Allow inserted task items to be passed as strings for unchecked items or as
707
+ `{ value, checked }` objects, and preserve an emptied TUI list's insertion
708
+ point so later mutations still target the same list.
709
+ - Add read-only heading `.slice(start, end)`, returning fresh
710
+ `{ value, checked }` snapshots that include both checked and unchecked direct
711
+ task items.
712
+ - Add `demos/todo.md` and `demos/todo-zh.md`, runnable Todo examples that use
713
+ text controls and the new list methods to add and remove items and display
714
+ completed or pending tasks.
715
+ - Move secondary examples under `demos/` and add automatic
716
+ `--demo-<filename>` discovery, so newly bundled `demos/<filename>.md` files
717
+ need no parser changes. Keep `--demo` mapped to the root `testapp.md` and
718
+ retain the existing image-processor aliases.
719
+ - Add `--demo-list` to list the root demo and every automatically discovered
720
+ Markdown example from bundled assets or the source tree's `demos/` directory.
721
+ - Add `clean.sh` as a convenience helper for removing generated Markdown
722
+ companion files from the project directory.
723
+
724
+ ### Changed
725
+
726
+ - Document the Array-style heading task-list API, its return values, nested-item
727
+ behavior, existing-list requirement, and non-persistent rendered-state
728
+ semantics in the README and bundled help.
729
+ - Use the complete pane content width consistently for Markdown rendering,
730
+ soft wrapping, cursor and mouse mapping, and Kitty image sizing instead of
731
+ reserving the terminal's final column.
732
+
733
+ ### Fixed
734
+
735
+ - Fix soft wrapping at affected terminal widths shifting the visual cursor by
736
+ one row, which could activate the preceding Markdown action and leave the
737
+ final action unresponsive.
738
+ - Update the Bun Markdown ANSI glyph and style together when toggling a task
739
+ checkbox, so checked items become green and unchecked items no longer retain
740
+ the checked color.
741
+
742
+ ## [0.6.3] - 2026-07-18
743
+
744
+ This update enforces unique heading IDs at the Markdown source level and
745
+ clarifies the portable fenced-block identity contract shared by the TUI and
746
+ WUI.
747
+
748
+ ### Changed
749
+
750
+ - Treat duplicate Markdown headings that generate the same base ID as a
751
+ source-level collision. Later headings no longer pass `--check` merely
752
+ because Bun would silently assign generated suffixes such as `-1` or `-2`
753
+ that the Markdown author cannot see.
754
+ - Document that a selectable fenced-block declaration requires a tag and uses
755
+ the `tag#id.class` identity form. The officially supported portable control
756
+ tags are currently limited to `text` and `textarea` so the same Markdown
757
+ behaves consistently in both the TUI and WUI.
758
+ - Clarify that selector queries may omit the tag or classes after a valid
759
+ declaration.
760
+ - Expand checker and TUI selector regression coverage across tag/no-tag and
761
+ class/no-class combinations, heading-to-heading, heading-to-block, and
762
+ block-to-block ID collisions.
763
+
764
+ ### Fixed
765
+
766
+ - Fix duplicate source headings incorrectly passing the checker after Bun
767
+ automatically changed the generated ID of later headings.
768
+
769
+ ## [0.6.2] - 2026-07-18
770
+
771
+ This update makes Markdown ID-collision checks match the full TUI `$()` block
772
+ selector and gives check results clearer final status banners.
773
+
774
+ ### Changed
775
+
776
+ - Extend `--check FILE.md` from `text` and `textarea` controls to every
777
+ explicitly named fenced block accepted by the TUI `$()` selector, including
778
+ identities such as `hello#myid` and `json#config`.
779
+ - Report separate heading and fenced-block declaration counts, and describe
780
+ arbitrary block tags and their source lines in collision details.
781
+ - Replace the previous success label with a large green `PASSED` banner and
782
+ add a matching large red `FAILED` banner at the bottom of failed reports.
783
+ Both true-color foregrounds are generated with
784
+ `Bun.color(..., "ansi-16m")`, with standard ANSI fallbacks.
785
+ - Update the README and bundled help to clarify that generated heading IDs
786
+ share the selector namespace with all explicitly named fenced blocks, not
787
+ only editable text controls.
788
+
789
+ ### Fixed
790
+
791
+ - Fix `--check` overlooking collisions between a heading and a non-text
792
+ fenced block even though TUI `$().val()` could select both declarations.
793
+ - Add regression coverage for arbitrary fenced-block IDs and the colored
794
+ `PASSED` and `FAILED` terminal statuses.
795
+
796
+ ## [0.6.1] - 2026-07-18
797
+
798
+ This update adds Markdown UI ID-collision diagnostics and bundles a practical
799
+ Bun.Image processor demo in English and Traditional Chinese.
800
+
801
+ ### Added
802
+
803
+ - Add `--check FILE.md` to inspect Markdown heading and text-control IDs
804
+ without opening a UI or writing generated companion files. The report uses
805
+ `Bun.markdown.ansi()` headings and nested lists, identifies every collision
806
+ by ID, source type, line number, and original declaration, and exits with
807
+ status `0` for unique IDs, `1` for collisions, or `2` for usage and read
808
+ errors.
809
+ - Add `image-processor.md` and `image-processor.zh-TW.md`, runnable Bun.Image
810
+ tools for the TUI and WUI. They support image metadata inspection, resizing,
811
+ fit and resampling filters, enlargement prevention, EXIF auto-orientation,
812
+ rotation, vertical and horizontal mirroring, brightness and saturation
813
+ adjustment, and JPEG or PNG output options.
814
+ - Add detailed image-processing status fields. Successful writes show the
815
+ output path, dimensions, byte count, and all selected option values; failed
816
+ metadata reads and writes show the available error details and stack.
817
+ - Add `--demo-imgtool` and `--demo-imgtool-zh`. Each command preserves an
818
+ existing local processor Markdown file or writes its bundled language
819
+ version when missing, then opens it in the TUI.
820
+ - Bundle both image processor Markdown files in the single-executable asset
821
+ archive and add regression coverage for ID checks and both demo languages.
822
+
823
+ ### Changed
824
+
825
+ - Consolidate bundled demo Markdown loading behind one
826
+ `bundledMarkdownSource(filename)` implementation shared by `testapp.md`,
827
+ `select.md`, and both image processor variants.
828
+ - Document that heading selector values include the complete visible label.
829
+ Selection parsers should use deliberate substring, prefix, or token checks
830
+ when labels contain explanatory text instead of assuming exact identifiers.
831
+ - Document that generated heading IDs and explicitly named controls share the
832
+ same selector namespace and that every selectable ID should be unique.
833
+
834
+ ### Fixed
835
+
836
+ - Prevent explanatory text in image processor task-list labels from breaking
837
+ yes/no, fit, filter, and output-format selection parsing.
838
+ - Fix the English image processor status update silently targeting a heading
839
+ after `## Write Status` generated the same `#write-status` ID as its text
840
+ control.
841
+ - Catch image metadata and processing failures at both frontend and backend
842
+ boundaries so errors are displayed in the appropriate status field.
843
+
844
+ ## [0.6.0] - 2026-07-18
845
+
846
+ This update turns Markdown headings and task lists into cross-environment form
847
+ controls, improves the safety and consistency of the bundled demo workflow,
848
+ and adds a way to export the bundled README as a runnable Markdown app.
849
+
850
+ ### Added
851
+
852
+ - Add `--export-readme` to write or overwrite `./README.md` with the bundled
853
+ README source and exit.
854
+ - Add terminal task-checkbox activation. Activating a protected mdcui row at
855
+ or after its `☐` or `☒` toggles that checkbox and still allows the remaining
856
+ default cell callback to run. JavaScript links continue to take priority.
857
+ - Add hierarchical `<section>` wrappers to generated WUI HTML. Every h1-h6
858
+ opens a section; an equal or higher-level heading closes the applicable open
859
+ sections, while lower-level headings create nested sections. Content before
860
+ the first heading remains outside the generated sections.
861
+ - Add heading lookup to the TUI `$` API using the IDs generated by
862
+ `Bun.markdown.html(..., { headings: { ids: true } })`.
863
+ - Add `$('#heading-id').html()` in TUI to return a heading's inner HTML, and
864
+ `$('#heading-id').line()` to return its current 1-based terminal row or `0`
865
+ when it cannot be found. Line lookup follows text-block row additions,
866
+ removals, and multiline `.val(value)` replacements.
867
+ - Add `.html()` getters to WUI `$` selections. Any successfully selected DOM
868
+ element returns its `innerHTML`; missing or invalid selections return an
869
+ empty string.
870
+ - Add heading-based task-list values in both interfaces. `.val()` reads the
871
+ first task-list group directly following the selected heading, stops at the
872
+ next heading, and ignores nested task items. IDs beginning with `select`
873
+ return the first checked value or `null`; other IDs return all checked values
874
+ as an array or `[]`.
875
+ - Add `select.md`, a runnable multilevel heading and task-list example with
876
+ links that display single-select and multiple-select values through
877
+ `alert()`.
878
+ - Bundle `select.md` in packaged assets and add `--demo-select`. The command
879
+ preserves an existing `./select.md`, writes the bundled copy when missing,
880
+ opens it in the TUI, and generates its five companion files.
881
+
882
+ ### Changed
883
+
884
+ - Make `--demo` preserve an existing `./testapp.md`. The bundled source is now
885
+ written only when the file is missing, then opened in the terminal UI.
886
+ - Make `--wui` without a file follow the same source-file rule: use an existing
887
+ `./testapp.md`, or write the bundled demo there when missing, before creating
888
+ the generated companion files.
889
+ - Wrap generated WUI task-checkbox text in `<label>` so clicking the associated
890
+ text toggles the checkbox. Direct text and immediately following paragraph
891
+ elements are included; unrelated tags and nested lists remain outside.
892
+ - Extend the 0.5 `$().val()` contract: text and textarea controls retain their
893
+ string getter/setter behavior, while heading selections now return scalar,
894
+ array, or `null` task-list values according to the heading ID.
895
+ - Add a demo screenshot and expand the README and built-in help with clearer
896
+ TUI/WUI startup, demo preservation, and README export instructions.
897
+
898
+ ### Fixed
899
+
900
+ - Ensure WUI fallback to the bundled `testapp.md` materializes the Markdown
901
+ source in the current working directory instead of generating only its
902
+ companion files.
903
+ - Protect comments and `script`, `style`, `pre`, `code`, `textarea`, and
904
+ `template` regions while wrapping WUI headings, preventing heading-like HTML
905
+ strings inside those regions from changing the section hierarchy.
906
+ - Keep TUI heading lookup independent of ANSI heading text and duplicate
907
+ labels by mapping Bun-generated heading order and level to Bun's current
908
+ h1-h6 ANSI signatures.
909
+
910
+ ## [0.5.0] - 2026-07-16
911
+
912
+ This update adds cross-environment form-like text blocks and a small
913
+ jQuery-style selector API, while keeping the same Markdown source usable in
914
+ both the terminal and browser interfaces.
915
+
916
+ ### Added
917
+
918
+ - Add a minimal global `$` API to terminal frontend evaluation, JavaScript
919
+ plugins, generated browser frontend modules, and `javascript:` links.
920
+ - Support tag, ID, class, and combined selectors such as `$('text')`,
921
+ `$('#answer')`, `$('.field')`, and `$('text#answer.field')`.
922
+ - Add `.val()` and `.val(value)` for reading and replacing block contents.
923
+ Getters always return a string and use an empty string for missing elements,
924
+ invalid selectors, or lookup errors. Setters support chaining and resize
925
+ terminal blocks to fit multiline values.
926
+ - Recognize both raw Markdown fenced blocks and rendered Bun ANSI blocks,
927
+ including ASCII and Unicode frame characters.
928
+ - Add editable terminal `text` blocks. Content after the protected `│ ` or
929
+ `| ` prefix can be edited, while frame characters, line joins, inserted
930
+ newlines, and multiline pastes remain protected.
931
+ - Add interactive terminal text-block resizing. Activating the lower-left
932
+ frame corner adds an empty content row; activating the upper-left corner
933
+ removes only a trailing empty row and never deletes non-empty content.
934
+ - Add the optional frontend lifecycle callback
935
+ `onMdcuiExit({ reason, path, $ })`. The terminal awaits it before closing an
936
+ mdcui buffer and invokes it at most once per buffer.
937
+ - Add Markdown syntax completions for fenced block language identifiers.
938
+
939
+ ### Changed
940
+
941
+ - Convert `text` and `textarea` fenced blocks into native browser
942
+ `<textarea>` elements while preserving their ID, classes, original language
943
+ metadata, and selector compatibility.
944
+ - Prefer native `document.querySelector()` in the browser `$` implementation,
945
+ then fall back to mdcui metadata and the original `pre > code` structure.
946
+ - Automatically wrap and resize generated browser textareas on page load,
947
+ input, `.val(value)`, and window resize. Initial `rows` and `cols` are
948
+ derived from the Markdown content.
949
+ - Generate complete HTML5 documents for WUI output, including `<!doctype
950
+ html>`, UTF-8 metadata, a responsive viewport, a document title, and
951
+ `lang="zh-TW"`.
952
+ - Enable `softwrap` by default.
953
+ - Close modified mdcui buffers without displaying a save prompt. Applications
954
+ can use `onMdcuiExit` to collect edited field values or call backend RPC
955
+ functions before closing.
956
+ - Update the bundled example with editable text fields, selector API examples,
957
+ answer validation, and manual text-box resizing instructions.
958
+
959
+ ### Fixed
960
+
961
+ - Keep terminal text-block frame prefixes intact during editing and prevent
962
+ Delete at the end of a content row from merging it with the next row.
963
+ - Preserve browser textarea IDs and classes during Markdown-to-HTML
964
+ conversion, including compatibility metadata for original `text` selectors.
965
+ - Keep README and built-in help lifecycle documentation synchronized.
966
+
967
+ ## [0.4.0] - 2026-07-16
968
+
969
+ This release separates executable Markdown UI views from ordinary editable
970
+ buffers, makes encoding behavior predictable across opens, tabs, splits, and
971
+ reopens, and adds explicit demo and trusted-remote execution modes.
972
+
973
+ ### Added
974
+
975
+ - Add `--demo`. It outputs and overwrites `./testapp.md`, opens it as a terminal
976
+ Markdown UI, and writes the five generated companion files beside it.
977
+ - Add `--allow-url` for trusted remote Markdown apps. It downloads an HTTP(S)
978
+ resource into the current directory, opens the downloaded copy through the
979
+ normal local Markdown UI pipeline, writes the five generated companion files,
980
+ and permits its embedded frontend and backend code to run.
981
+ - Add regression coverage for global encoding handling, mdcui backup isolation,
982
+ the bundled demo workflow, implicit Markdown rendering, and explicit UTF-8
983
+ editing.
984
+
985
+ ### Changed
986
+
987
+ - Treat `mdcui` buffers as independent, derived, read-only views. Every mdcui
988
+ open creates a new buffer instead of entering the same-path editable-buffer
989
+ cache.
990
+ - Continue sharing ordinary buffers opened from the same absolute path.
991
+ UTF-8 and other non-mdcui views share content, modification state, saves, and
992
+ reopens.
993
+ - Re-evaluate buffer sharing after `reopen`:
994
+ - reopening an mdcui view as a normal encoding joins an existing same-path
995
+ editable buffer, or registers itself when no such buffer exists;
996
+ - reopening a shared editable view as mdcui detaches only the current pane
997
+ into a new mdcui buffer and leaves the other shared panes unchanged.
998
+ - Make interactive `open`, `tab`, `vsplit`, and `hsplit` operations perform
999
+ fresh `.md` automatic detection for files that are not already represented
1000
+ by a normal cached buffer.
1001
+ - Ignore a top-level global `encoding` value read from `settings.json`.
1002
+ Encoding is selected per invocation or buffer; command-line encoding options
1003
+ remain effective for the current run and are not persisted.
1004
+ - Organize `--testapp.md` and `--demo` under a dedicated `Demo` section in
1005
+ `--help`, and document commands that overwrite source or generated files.
1006
+
1007
+ ### Fixed
1008
+
1009
+ - Fix `.md` files opened from inside the editor failing to enter mdcui mode.
1010
+ - Fix encoding changes leaking between independent mdcui tabs.
1011
+ - Fix `reopen mdcui` mutating every pane that shared the original editable
1012
+ buffer.
1013
+ - Fix mdcui-to-UTF-8 reopens remaining outside the normal same-path buffer
1014
+ cache.
1015
+ - Delay applying an explicit reopen encoding until the reopen is confirmed, so
1016
+ canceling the save prompt does not alter the shared buffer.
1017
+
1018
+ ### Security
1019
+
1020
+ - Exclude mdcui buffers completely from crash-recovery backups: they do not
1021
+ create, apply, prompt for, or remove backups. This prevents a derived
1022
+ read-only view from consuming or deleting a backup belonging to an editable
1023
+ view of the same Markdown source.
1024
+ - Remote HTTP(S) Markdown remains non-executable and does not write companion
1025
+ files by default.
1026
+ - `--allow-url` is an explicit trust boundary. It writes downloaded content and
1027
+ generated JavaScript/HTML files into the current directory, may overwrite
1028
+ files with the same names, and runs code from the remote document with the
1029
+ permissions of the jsmdcui process. Use it only with trusted URLs and in a
1030
+ directory where those writes are safe.
1031
+
1032
+ ## [0.3.1] - 2026-07-16
1033
+
1034
+ ### Added
1035
+
1036
+ - Add `--edit` to open Markdown files as editable UTF-8 source instead of
1037
+ automatically entering mdcui mode.
1038
+ - Add `--cat` regression coverage for implicit mdcui rendering and explicit
1039
+ UTF-8 overrides.
1040
+
1041
+ ### Fixed
1042
+
1043
+ - Prevent an explicit encoding choice from being replaced by automatic mdcui
1044
+ detection.
1045
+ - Correct terminal raw-mode handling around log and prompt output.
1046
+
1047
+ ## [0.3.0] - 2026-07-16
1048
+
1049
+ Initial usable release, based on the bunmicro terminal editor.
1050
+
1051
+ ### Added
1052
+
1053
+ - Open local Markdown files as interactive, read-only terminal interfaces while
1054
+ retaining navigation, selection, search, copy, mouse support, and automatic
1055
+ reflow when the terminal is resized.
1056
+ - Open HTTP(S) Markdown files in the terminal without generating local
1057
+ companion files or executing their `javascript:` links.
1058
+ - Start a browser interface with `--wui [FILE.md]`. Browser pages support normal
1059
+ links, clickable `javascript:` actions, heading anchors, and task checkboxes
1060
+ that can be toggled for the current page session.
1061
+ - Build interactive Markdown apps with `js front`, `js back`, and
1062
+ `javascript:` links. Frontend actions can use `alert`, `confirm`, `prompt`,
1063
+ and call published backend functions through `rpc`.
1064
+ - Activate local terminal actions with `Enter`, `Space`, or a left click, with
1065
+ visible reporting for synchronous and asynchronous frontend errors.
1066
+ - Generate five companion files beside each local Markdown source:
1067
+ `.front.js`, `.back.js`, `.html`, `-rpc.js`, and `-server.js`.
1068
+ - Print terminal output with `--cat`, print the bundled example source with
1069
+ `--testapp.md`, and choose a WUI port with the `PORT` environment variable.
1070
+ - Provide the `jsmdcui`, `tui`, and `wui` launchers, Bun scripts for common
1071
+ development tasks, bundled runtime assets, and experimental single-executable
1072
+ build commands.
1073
+ - Retain the normal bunmicro-based editor for non-Markdown buffers, including
1074
+ file editing, syntax highlighting, search and replace, undo and redo, tabs,
1075
+ split panes, clipboard support, themes, and shell commands.
1076
+ - Show this README as the built-in `Ctrl-G` help page.
1077
+
1078
+ ### Changed
1079
+
1080
+ - Local `.md` files now enter read-only Markdown UI mode automatically. Starting
1081
+ jsmdcui without a file still opens the normal terminal editor.
1082
+ - Opening or rendering a local Markdown file regenerates its five companion
1083
+ files in terminal, `--cat`, and `--wui` modes.
1084
+ - Running `--wui` without a file uses `testapp.md` in the current directory when
1085
+ present, otherwise the bundled demo, and writes generated files in the current
1086
+ directory.
1087
+ - Every WUI start prints a fresh UUID-based page URL. Requests without the
1088
+ trailing slash redirect to the canonical page URL.
1089
+ - `js front` and `js back` blocks are removed from the displayed Markdown and
1090
+ written to their generated modules.
1091
+
1092
+ ### Fixed
1093
+
1094
+ - Preserved Markdown ANSI colors in the terminal UI and prevented the rendered
1095
+ document background from obscuring the editor theme.
1096
+ - Correctly detected links at the active terminal cell and loaded the matching
1097
+ generated frontend module.
1098
+ - Restored terminal display state after `alert`, `confirm`, and `prompt`.
1099
+ - Reported frontend errors instead of letting them crash or silently fail.
1100
+ - Corrected generated module paths and imports, supported bundled runtime
1101
+ templates, and removed redundant file generation.
1102
+ - Made JavaScript plugin commands available through command lookup and
1103
+ completion, and added `js`, `py`, and `sh` choices for `eval` completion.
1104
+
1105
+ ### Security
1106
+
1107
+ - Browser RPC discovery and calls expose only exported backend functions whose
1108
+ exported names do not begin with `_`. This restriction applies to WUI RPC;
1109
+ the local TUI imports the backend module directly.
1110
+ - WUI pages use a fresh UUID path on each start. This reduces accidental
1111
+ discovery but is not authentication or authorization.
1112
+ - The WUI has no login or HTTPS, may be reachable through the machine's network
1113
+ interfaces, and permits cross-origin RPC responses. Anyone who can reach it
1114
+ and obtains the complete URL can call every backend function published by the
1115
+ Markdown app.
1116
+ - Frontend code runs in the browser, while terminal frontend code and backend
1117
+ code can run with the permissions of the jsmdcui process. Only open or serve
1118
+ Markdown apps from trusted sources.