karnel-termux 4.17.44 → 4.18.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 (177) hide show
  1. package/README.md +14 -14
  2. package/docs/CHANGELOG.md +16 -0
  3. package/docs/_layouts/base.html +1 -1
  4. package/docs/cli/index.md +1 -1
  5. package/docs/index.md +5 -5
  6. package/docs/karnel/ai/index.md +1 -1
  7. package/docs/karnel/auto/index.md +1 -1
  8. package/docs/karnel/db/index.md +1 -1
  9. package/docs/karnel/deploy/index.md +1 -1
  10. package/docs/karnel/dev/index.md +1 -1
  11. package/docs/karnel/editor/index.md +1 -1
  12. package/docs/karnel/games/index.md +1 -1
  13. package/docs/karnel/lang/index.md +1 -1
  14. package/docs/karnel/network/index.md +1 -1
  15. package/docs/karnel/npm/index.md +1 -1
  16. package/docs/karnel/osint/index.md +1 -1
  17. package/docs/karnel/plugin/index.md +1 -1
  18. package/docs/karnel/security/index.md +1 -1
  19. package/docs/karnel/shell/index.md +1 -1
  20. package/docs/karnel/ui/index.md +1 -1
  21. package/docs/karnel/utils/index.md +1 -1
  22. package/docs/karnel/voice/index.md +1 -1
  23. package/docs/troubleshooting/index.md +2 -2
  24. package/install.sh +1 -1
  25. package/karnel/RELEASE_COMMIT +1 -1
  26. package/karnel/bin/karnel +1 -1
  27. package/karnel/cli/commands/doctor/fixes.sh +8 -13
  28. package/karnel/cli/commands/doctor.sh +70 -10
  29. package/karnel/cli/commands/init.sh +9 -8
  30. package/karnel/cli/commands/install.sh +8 -6
  31. package/karnel/cli/commands/reinstall.sh +1 -0
  32. package/karnel/cli/commands/update.sh +10 -8
  33. package/karnel/tools/ai/10router/install.sh +4 -3
  34. package/karnel/tools/ai/all.sh +35 -14
  35. package/karnel/tools/ai/antigravity-cli/README.md +1 -1
  36. package/karnel/tools/ai/cactus-needle/README.md +1 -1
  37. package/karnel/tools/ai/claude-code/README.md +1 -1
  38. package/karnel/tools/ai/cline/install.sh +7 -6
  39. package/karnel/tools/ai/codebuff/README.md +1 -1
  40. package/karnel/tools/ai/codegraph/README.md +1 -1
  41. package/karnel/tools/ai/codex/README.md +1 -1
  42. package/karnel/tools/ai/codex/install.sh +4 -3
  43. package/karnel/tools/ai/command-code/README.md +1 -1
  44. package/karnel/tools/ai/command-code/install.sh +4 -3
  45. package/karnel/tools/ai/copilot-termux/install.sh +5 -4
  46. package/karnel/tools/ai/crush/install.sh +4 -3
  47. package/karnel/tools/ai/ctx7/install.sh +4 -3
  48. package/karnel/tools/ai/engram/README.md +1 -1
  49. package/karnel/tools/ai/freebuff/install.sh +228 -7
  50. package/karnel/tools/ai/gemini-cli/README.md +1 -1
  51. package/karnel/tools/ai/gemini-cli/install.sh +4 -3
  52. package/karnel/tools/ai/gga/README.md +1 -1
  53. package/karnel/tools/ai/hermes-agent/README.md +1 -1
  54. package/karnel/tools/ai/keelcode/install.sh +12 -6
  55. package/karnel/tools/ai/kilocode-cli/README.md +1 -1
  56. package/karnel/tools/ai/kimchi-code/README.md +1 -1
  57. package/karnel/tools/ai/kimi-code/README.md +1 -1
  58. package/karnel/tools/ai/kimi-code/install.sh +4 -3
  59. package/karnel/tools/ai/mimocode/README.md +1 -1
  60. package/karnel/tools/ai/minimax-cli/README.md +1 -1
  61. package/karnel/tools/ai/minimax-cli/install.sh +4 -3
  62. package/karnel/tools/ai/mistral-vibe/README.md +1 -1
  63. package/karnel/tools/ai/ollama/README.md +1 -1
  64. package/karnel/tools/ai/omni-route/README.md +1 -1
  65. package/karnel/tools/ai/omni-route/install.sh +3 -2
  66. package/karnel/tools/ai/openclaude/README.md +1 -1
  67. package/karnel/tools/ai/openclaude/install.sh +4 -3
  68. package/karnel/tools/ai/openclaw/README.md +1 -1
  69. package/karnel/tools/ai/openclaw/install.sh +5 -4
  70. package/karnel/tools/ai/opencode/README.md +1 -1
  71. package/karnel/tools/ai/openspec/install.sh +4 -3
  72. package/karnel/tools/ai/pi/README.md +1 -1
  73. package/karnel/tools/ai/pi/install.sh +4 -3
  74. package/karnel/tools/ai/puter/install.sh +4 -3
  75. package/karnel/tools/ai/qwen-code/README.md +1 -1
  76. package/karnel/tools/ai/qwen-code/install.sh +4 -3
  77. package/karnel/tools/ai/supercode-cli/README.md +1 -1
  78. package/karnel/tools/ai/supercode-cli/install.sh +4 -3
  79. package/karnel/tools/ai/walkie/install.sh +6 -5
  80. package/karnel/tools/auto/n8n/README.md +1 -1
  81. package/karnel/tools/auto/n8n/install.sh +4 -3
  82. package/karnel/tools/db/mariadb/README.md +1 -1
  83. package/karnel/tools/db/mongodb/README.md +1 -1
  84. package/karnel/tools/db/postgresql/README.md +1 -1
  85. package/karnel/tools/db/redis/README.md +1 -1
  86. package/karnel/tools/db/sqlite/README.md +1 -1
  87. package/karnel/tools/deploy/netlify/install.sh +5 -4
  88. package/karnel/tools/deploy/railway/install.sh +4 -3
  89. package/karnel/tools/deploy/vercel/install.sh +4 -3
  90. package/karnel/tools/dev/bat/README.md +1 -1
  91. package/karnel/tools/dev/bc/README.md +1 -1
  92. package/karnel/tools/dev/cloudflared/README.md +1 -1
  93. package/karnel/tools/dev/curl/README.md +1 -1
  94. package/karnel/tools/dev/fzf/README.md +1 -1
  95. package/karnel/tools/dev/gh/README.md +1 -1
  96. package/karnel/tools/dev/html2text/README.md +1 -1
  97. package/karnel/tools/dev/imagemagick/README.md +1 -1
  98. package/karnel/tools/dev/jq/README.md +1 -1
  99. package/karnel/tools/dev/lsd/README.md +1 -1
  100. package/karnel/tools/dev/make/README.md +1 -1
  101. package/karnel/tools/dev/ncurses/README.md +1 -1
  102. package/karnel/tools/dev/openssh/README.md +1 -1
  103. package/karnel/tools/dev/proot/README.md +1 -1
  104. package/karnel/tools/dev/shfmt/README.md +1 -1
  105. package/karnel/tools/dev/snyk/install.sh +4 -3
  106. package/karnel/tools/dev/tmate/README.md +1 -1
  107. package/karnel/tools/dev/tmux/README.md +1 -1
  108. package/karnel/tools/dev/translate/README.md +1 -1
  109. package/karnel/tools/dev/tree/README.md +1 -1
  110. package/karnel/tools/dev/udocker/README.md +1 -1
  111. package/karnel/tools/dev/wget/README.md +1 -1
  112. package/karnel/tools/editor/neovim/README.md +1 -1
  113. package/karnel/tools/editor/nvchad/README.md +1 -1
  114. package/karnel/tools/lang/clang/README.md +1 -1
  115. package/karnel/tools/lang/golang/README.md +1 -1
  116. package/karnel/tools/lang/nodejs/README.md +1 -1
  117. package/karnel/tools/lang/perl/README.md +1 -1
  118. package/karnel/tools/lang/php/README.md +1 -1
  119. package/karnel/tools/lang/python/README.md +1 -1
  120. package/karnel/tools/lang/rust/README.md +1 -1
  121. package/karnel/tools/network/dark/README.md +1 -1
  122. package/karnel/tools/network/dedsec-network/README.md +1 -1
  123. package/karnel/tools/npm/live-server/README.md +1 -1
  124. package/karnel/tools/npm/live-server/install.sh +4 -3
  125. package/karnel/tools/npm/localtunnel/README.md +1 -1
  126. package/karnel/tools/npm/localtunnel/install.sh +4 -3
  127. package/karnel/tools/npm/markserv/README.md +1 -1
  128. package/karnel/tools/npm/markserv/install.sh +4 -3
  129. package/karnel/tools/npm/ncu/README.md +1 -1
  130. package/karnel/tools/npm/ncu/install.sh +4 -3
  131. package/karnel/tools/npm/nestjs/README.md +1 -1
  132. package/karnel/tools/npm/nestjs/install.sh +4 -3
  133. package/karnel/tools/npm/ngrok/README.md +1 -1
  134. package/karnel/tools/npm/ngrok/install.sh +4 -3
  135. package/karnel/tools/npm/prettier/README.md +1 -1
  136. package/karnel/tools/npm/prettier/install.sh +4 -3
  137. package/karnel/tools/npm/psqlformat/README.md +1 -1
  138. package/karnel/tools/npm/psqlformat/install.sh +4 -3
  139. package/karnel/tools/npm/turbopack/README.md +1 -1
  140. package/karnel/tools/npm/typescript/README.md +1 -1
  141. package/karnel/tools/npm/typescript/install.sh +4 -3
  142. package/karnel/tools/npm/vercel/README.md +1 -1
  143. package/karnel/tools/npm/vercel/install.sh +4 -3
  144. package/karnel/tools/plugins/install.sh +1 -1
  145. package/karnel/tools/security/wafw00f/install.sh +3 -1
  146. package/karnel/tools/security/wpscan/install.sh +3 -1
  147. package/karnel/tools/shell/better-npm/README.md +1 -1
  148. package/karnel/tools/shell/fzf-tab/README.md +1 -1
  149. package/karnel/tools/shell/history-substring/README.md +1 -1
  150. package/karnel/tools/shell/powerlevel10k/README.md +1 -1
  151. package/karnel/tools/shell/you-should-use/README.md +1 -1
  152. package/karnel/tools/shell/zsh-autopair/README.md +1 -1
  153. package/karnel/tools/shell/zsh-autosuggestions/README.md +1 -1
  154. package/karnel/tools/shell/zsh-completions/README.md +1 -1
  155. package/karnel/tools/shell/zsh-defer/README.md +1 -1
  156. package/karnel/tools/shell/zsh-syntax-highlighting/README.md +1 -1
  157. package/karnel/tools/ui/banner/README.md +1 -1
  158. package/karnel/tools/ui/cursor/README.md +1 -1
  159. package/karnel/tools/ui/extra-keys/README.md +1 -1
  160. package/karnel/tools/ui/font/README.md +1 -1
  161. package/karnel/tools/utils/applaunch/README.md +1 -1
  162. package/karnel/tools/utils/fconv/README.md +1 -1
  163. package/karnel/tools/utils/filecheck/README.md +1 -1
  164. package/karnel/tools/utils/httptmux/README.md +1 -1
  165. package/karnel/tools/utils/httptmux/install.sh +4 -3
  166. package/karnel/tools/utils/notes/README.md +1 -1
  167. package/karnel/tools/utils/passman/README.md +1 -1
  168. package/karnel/tools/utils/qrcode/README.md +1 -1
  169. package/karnel/tools/utils/splash/README.md +1 -1
  170. package/karnel/tools/utils/treex/README.md +1 -1
  171. package/karnel/tools/utils/websites/README.md +1 -1
  172. package/karnel/tools/utils/zork/README.md +1 -1
  173. package/karnel/utils/compat.sh +543 -0
  174. package/karnel/utils/npm.sh +95 -0
  175. package/karnel/utils/tools.sh +49 -0
  176. package/karnel/utils/version.sh +10 -8
  177. package/package.json +3 -3
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/israelmarques1024-dotcom/karnel-termux/main/assets/images/karnel-logo.png" alt="Karnel Termux Logo" width="400">
2
+ <img src="https://raw.githubusercontent.com/karnel-termuxOFC/karnel-termux/main/assets/images/karnel-logo.png" alt="Karnel Termux Logo" width="400">
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -7,8 +7,8 @@
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
- <a href="https://github.com/israelmarques1024-dotcom/karnel-termux">
11
- <img src="https://img.shields.io/badge/version-4.17.44-0078D4?style=for-the-badge" alt="Version">
10
+ <a href="https://github.com/karnel-termuxOFC/karnel-termux">
11
+ <img src="https://img.shields.io/badge/version-4.18.0-0078D4?style=for-the-badge" alt="Version">
12
12
  </a>
13
13
  <a href="https://www.npmjs.com/package/karnel-termux">
14
14
  <img src="https://img.shields.io/npm/v/karnel-termux?style=for-the-badge&logo=npm&color=cb3837" alt="npm">
@@ -16,7 +16,7 @@
16
16
  <a href="https://www.npmjs.com/package/karnel-termux">
17
17
  <img src="https://img.shields.io/npm/dt/karnel-termux?style=for-the-badge&logo=npm&color=cb3837" alt="npm downloads">
18
18
  </a>
19
- <a href="https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/LICENSE">
19
+ <a href="https://github.com/karnel-termuxOFC/karnel-termux/blob/main/LICENSE">
20
20
  <img src="https://img.shields.io/badge/license-MIT-0078D4?style=for-the-badge" alt="License">
21
21
  </a>
22
22
  <a href="https://termux.dev/">
@@ -78,9 +78,9 @@ Why it's great:
78
78
  ### Via checksummed GitHub release (recommended)
79
79
 
80
80
  ```bash
81
- version=4.17.44
81
+ version=4.18.0
82
82
  tmpdir=$(mktemp -d) && trap 'rm -rf "$tmpdir"' EXIT
83
- base="https://github.com/israelmarques1024-dotcom/karnel-termux/releases/download/v$version"
83
+ base="https://github.com/karnel-termuxOFC/karnel-termux/releases/download/v$version"
84
84
  curl -fsSL "$base/karnel-termux-install.sh" -o "$tmpdir/karnel-termux-install.sh"
85
85
  curl -fsSL "$base/karnel-termux-install.sh.sha256" -o "$tmpdir/karnel-termux-install.sh.sha256"
86
86
  (cd "$tmpdir" && sha256sum -c karnel-termux-install.sh.sha256) && bash "$tmpdir/karnel-termux-install.sh" --ref "v$version"
@@ -250,7 +250,7 @@ optional checksum, and informational capabilities. Native command names and
250
250
  plugin-to-plugin command collisions are rejected.
251
251
 
252
252
  The installed plugin directory is `${XDG_DATA_HOME:-$HOME/.local/share}/karnel-data/plugins`.
253
- See the [official plugin registry](https://github.com/israelmarques1024-dotcom/karnel-plugins)
253
+ See the [official plugin registry](https://github.com/karnel-termuxOFC/karnel-plugins)
254
254
  for schemas, review policy, and safe publication requirements.
255
255
 
256
256
  ## AI CLIs
@@ -408,7 +408,7 @@ definitions across 68 distinct tool labels. It detects subprojects, executes
408
408
  checks in the matching project or subproject directory, preserves command exit status, and writes
409
409
  timestamped text reports under `$KARNEL_DATA/doctor_code_reports/`.
410
410
 
411
- Read the **[complete Doctor reference](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/doctor/index.md)** for modes,
411
+ Read the **[complete Doctor reference](https://github.com/karnel-termuxOFC/karnel-termux/blob/main/docs/doctor/index.md)** for modes,
412
412
  supported ecosystems, tool coverage, JSON schema, reports, and auto-fix safety.
413
413
 
414
414
  ---
@@ -565,12 +565,12 @@ Documentation loads from https://karneltermux.vercel.app.
565
565
 
566
566
  ## Documentation
567
567
 
568
- - [Documentation index](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/index.md)
569
- - [CLI reference](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/cli/index.md)
570
- - [Doctor reference](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/doctor/index.md)
571
- - [Troubleshooting](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/troubleshooting/index.md)
572
- - [Architecture](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/ARCHITECTURE/index.md)
573
- - [Documentation changelog](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/CHANGELOG.md)
568
+ - [Documentation index](https://github.com/karnel-termuxOFC/karnel-termux/blob/main/docs/index.md)
569
+ - [CLI reference](https://github.com/karnel-termuxOFC/karnel-termux/blob/main/docs/cli/index.md)
570
+ - [Doctor reference](https://github.com/karnel-termuxOFC/karnel-termux/blob/main/docs/doctor/index.md)
571
+ - [Troubleshooting](https://github.com/karnel-termuxOFC/karnel-termux/blob/main/docs/troubleshooting/index.md)
572
+ - [Architecture](https://github.com/karnel-termuxOFC/karnel-termux/blob/main/docs/ARCHITECTURE/index.md)
573
+ - [Documentation changelog](https://github.com/karnel-termuxOFC/karnel-termux/blob/main/docs/CHANGELOG.md)
574
574
  - [Official website](https://karneltermux.vercel.app)
575
575
 
576
576
  ---
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,22 @@ layout: base
6
6
 
7
7
  # Documentation Changelog
8
8
 
9
+ ## 4.18.0
10
+
11
+ - **Three-tier compatibility layer:** a foreign glibc binary is no longer handled by one fixed trick. `compat_adapt` wraps, probes and climbs to the cheapest tier that actually starts the tool — the glibc loader alone (free, installs nothing), the glibc userland (`$PREFIX/glibc/bin`, 383 glibc tools, prepended to `PATH` together with the glibc exec shim so child processes resolve the same way), or proot over a synthetic `/lib`, `/usr` and `/etc` assembled from the sysroot already on the device. That last tier replaces `proot-distro install ubuntu` for binaries that merely hardcode an absolute path, and it downloads nothing. A tier that cannot be reached is refused before the wrapper is written, so `proot -r ''` can never ship, and every step unwraps back to `<path>.karnel-real`.
12
+ - **Shebang repair that survives symlinks:** `compat_fix_shebang` edits the target of a link rather than the link itself. `sed -i` unlinks its argument, so repairing `$PREFIX/bin/npm` used to replace that symlink with a detached copy of `npm-cli.js` whose relative `require('../lib/cli.js')` then resolved from `$PREFIX/bin` — one broken `npm` traded for another. The same bug was live in `karnel doctor`, whose `_fix_npm_shebangs` ran `sed -i` over every entry in `$PREFIX/bin`.
13
+ - **`npm` and the CLIs on top of it were dead on arrival:** Android has no `/usr`, so `#!/usr/bin/env node` exits 126 with `bad interpreter` even though node is installed, and none of the three `termux-exec` preloads intercepts the kernel's shebang resolution. `npm`, `npx`, `kc`, `kcode`, `keel`, `snyk`, `httptmuxd`, `gdbus-codegen`, `glib-genmarshal` and `glib-mkenums` all now resolve to their Termux interpreter; `$PREFIX/bin` reports 0 unresolvable shebangs.
14
+ - **Doctor:** the check asks whether the interpreter path exists instead of grepping for the literal `#!/usr/bin/env`, so a stale absolute path is caught and a resolvable `env` line is left alone; the fix delegates to the compatibility layer; a new *Android Compatibility Layer* section reports the glibc sysroot, how many tools are riding a wrapper, whether proot is reachable for the FHS tier, and any shebang that still does not resolve.
15
+ - **Tests:** `tests/android-compat.sh` covers classification, wrapping, re-tiering without disturbing the parked original, escalation, falling back when no tier helps, building the FHS root exactly once, refusing tier 4 without a root, shebang repair through a symlink, and agreement with `readelf` (17 cases).
16
+
17
+ ## 4.17.45
18
+
19
+ - **npm on a real Termux host:** every npm call goes through `karnel_npm()`, which runs npm through `node` when its `#!/usr/bin/env node` shebang cannot be executed (Termux ships no `/usr`, so the kernel answered `bad interpreter`) and retries with `--force` only on `EBADPLATFORM`. The remaining bare `npm install/uninstall/update/view/ls` calls in the installers were converted; guests inside proot keep plain npm.
20
+ - **Installers that could never succeed:** wpscan and wafw00f read their recorded backend with a redirection-only command (`< file`) that prints nothing, so update and uninstall always failed; KeelCode validated the base package digest instead of the `linux-arm64` release it actually downloads; Cline, Command Code, Copilot Termux and Walkie repaired the shebang on the failure branch, leaving the installed binary unrunnable.
21
+ - **Stub detection:** `karnel_is_stub_binary()` replaces a word-list heuristic that reported real CLIs (`supercode`, `python-config`) as offline placeholders right after a successful install.
22
+ - **Test harness:** `run_test` runs the body under `set -e` so intermediate failures surface. This exposed a Turbopack contract that always failed on the x86_64 CI runner, a Kilo Code install aborted by a `tar` stub and an Odysseus uninstall that had to assert its refusal explicitly.
23
+ - **Output noise:** the version spinner probes `/dev/tty` for real instead of trusting `-c`, which passed without a controlling terminal and leaked `No such device or address` into every `karnel update`.
24
+
9
25
  ## 4.17.44
10
26
 
11
27
  - **CLI correctness:** `karnel search` builds its catalog from tool READMEs in one pass instead of per-directory subshells; `karnel stats` counts modules that actually carry install markers and prints `not installed` instead of empty probes; `karnel open` gained routes for `doctor`, `brain`, `pg`, `init`, `env`, `backup`, `show`, `cleanup`, `supabase`, `linux`, `plugin`, `voice`, `security`, `osint`, `termux`, `termux-api` and `terms`.
@@ -9,7 +9,7 @@ layout: default
9
9
  <a href="{{ '/troubleshooting/' | relative_url }}">Troubleshooting</a>
10
10
  <a href="{{ '/ARCHITECTURE/' | relative_url }}">Architecture</a>
11
11
  <a href="{{ '/CHANGELOG/' | relative_url }}">Changelog</a>
12
- <a href="https://github.com/israelmarques1024-dotcom/karnel-termux">GitHub</a>
12
+ <a href="https://github.com/karnel-termuxOFC/karnel-termux">GitHub</a>
13
13
  </nav>
14
14
 
15
15
  {{ content }}
package/docs/cli/index.md CHANGED
@@ -349,7 +349,7 @@ karnel robin doctor --network
349
349
  karnel robin purge-data --yes
350
350
  ```
351
351
 
352
- See the [Robin reference](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/karnel/tools/osint/robin/README.md) for detailed
352
+ See the [Robin reference](https://github.com/karnel-termuxOFC/karnel-termux/blob/main/karnel/tools/osint/robin/README.md) for detailed
353
353
  lifecycle, data locations, and troubleshooting.
354
354
 
355
355
  ---
package/docs/index.md CHANGED
@@ -37,11 +37,11 @@ Open its docs with `karnel open herdr`.
37
37
  <a href="./cli/">CLI Commands — full reference for every <code>karnel</code> subcommand</a>
38
38
  <a href="./doctor/">Doctor System — environment checks and the code-analysis engine</a>
39
39
  <a href="./troubleshooting/">Troubleshooting — common issues and fixes</a>
40
- <a href="https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/karnel/tools/osint/robin/README.md">Robin OSINT — responsible use, lifecycle, data locations</a>
41
- <a href="https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/karnel/tools/network/dark/README.md">Network Tools — dark, dedsec-network</a>
42
- <a href="https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/karnel/tools/ai/keelcode/README.md">KeelCode — hosted coding-agent CLI</a>
43
- <a href="https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/karnel/tools/utils/superfile/README.md">SuperFile — terminal file manager</a>
44
- <a href="https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/karnel/tools/utils/fconv/README.md">Utility Scripts — fconv, notes, treex, and more</a>
40
+ <a href="https://github.com/karnel-termuxOFC/karnel-termux/blob/main/karnel/tools/osint/robin/README.md">Robin OSINT — responsible use, lifecycle, data locations</a>
41
+ <a href="https://github.com/karnel-termuxOFC/karnel-termux/blob/main/karnel/tools/network/dark/README.md">Network Tools — dark, dedsec-network</a>
42
+ <a href="https://github.com/karnel-termuxOFC/karnel-termux/blob/main/karnel/tools/ai/keelcode/README.md">KeelCode — hosted coding-agent CLI</a>
43
+ <a href="https://github.com/karnel-termuxOFC/karnel-termux/blob/main/karnel/tools/utils/superfile/README.md">SuperFile — terminal file manager</a>
44
+ <a href="https://github.com/karnel-termuxOFC/karnel-termux/blob/main/karnel/tools/utils/fconv/README.md">Utility Scripts — fconv, notes, treex, and more</a>
45
45
  <a href="./cli/#supabase--remote-project-helpers">Supabase CLI — remote-project helpers</a>
46
46
  <a href="./CHANGELOG/">Changelog — version history and fixes</a>
47
47
  </div>
@@ -12,6 +12,6 @@ AI coding agents and assistants (Claude Code, Codex, Cline, Goose, and many more
12
12
  | `ai` | `--qwen-code`, `--gemini-cli`, `--claude-code`, `--mistral-vibe`, `--openclaude`, `--openclaw`, `--ollama`, `--codex`, `--opencode`, `--mimocode`, `--engram`, `--codegraph`, `--pi`, `--antigravity-cli`, `--minimax-cli`, `--gentle-ai`, `--gga`, `--hermes-agent`, `--kimi-code`, `--command-code`, `--codebuff`, `--freebuff`, `--kilocode-cli`, `--kiro`, `--crush`, `--cline`, `--odysseus`, `--kimchi-code`, `--omni-route`, `--ctx7`, `--openspec`, `--supercode-cli`, `--puter`, `--keelcode`, `--copilot-termux`, `--qoder`, `--ampcode`, `--cursor-cli`, `--oh-my-pi`, `--goose`, `--droid`, `--cactus`, `--cactus-needle`, `--walkie`, `--hugging-face` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#ai) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/ai.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/ai.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Automation and workflow tooling (n8n).
12
12
  | `auto` | `--n8n` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#auto) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/auto.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/auto.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Databases such as PostgreSQL, MongoDB, Redis and companions.
12
12
  | `db` | `--postgresql`, `--mariadb`, `--sqlite`, `--mongodb`, `--redis` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#db) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/db.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/db.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Deploy CLIs (Railway, Netlify, Vercel, Supabase).
12
12
  | `deploy` | `--vercel`, `--railway`, `--netlify`, `--supabase` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#deploy) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/deploy.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/deploy.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ General development utilities (fzf, bat, make, proot, tmux, and more).
12
12
  | `dev` | `--gh`, `--wget`, `--curl`, `--lsd`, `--bat`, `--proot`, `--ncurses`, `--tmate`, `--openssh`, `--tmux`, `--cloudflared`, `--translate`, `--html2text`, `--jq`, `--bc`, `--tree`, `--fzf`, `--imagemagick`, `--shfmt`, `--make`, `--udocker`, `--snyk` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#dev) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/dev.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/dev.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Terminal and browser-based editors (code-server, Neovim, and more).
12
12
  | `editor` | `--code-server`, `--neovim`, `--nvchad` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#editor) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/editor.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/editor.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Terminal games to relax between sessions.
12
12
  | `games` | `--buzz`, `--ctfgod`, `--detective`, `--pet-friends`, `--tamagotchi`, `--arcade` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#games) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/games.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/games.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Programming-language runtimes (Python, Node.js, Rust, Go, and more).
12
12
  | `lang` | `--bun`, `--nodejs`, `--python`, `--perl`, `--php`, `--rust`, `--clang`, `--golang` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#lang) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/lang.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/lang.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Network utilities (dark, dedsec-network).
12
12
  | `network` | `--dark`, `--dedsec-network` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#network) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/network.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/network.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Node.js packages and JavaScript tooling.
12
12
  | `npm` | `--typescript`, `--nestjs`, `--prettier`, `--live-server`, `--localtunnel`, `--vercel`, `--markserv`, `--psqlformat`, `--ncu`, `--ngrok`, `--turbopack` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#npm) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/npm.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/npm.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ OSINT tooling, centered on Robin.
12
12
  | `osint` | Robin OSINT |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#osint) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/osint.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/osint.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ The plugin system and manager.
12
12
  | `plugin` | Plugin system |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#plugin) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/plugin.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/plugin.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Security and pentest tooling (30 tools).
12
12
  | `security` | Security tools |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#security) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/security.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/security.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Shell enhancements (ZSH, Oh My Zsh, zoxide).
12
12
  | `shell` | `--powerlevel10k`, `--zsh-defer`, `--zsh-autosuggestions`, `--zsh-syntax-highlighting`, `--history-substring`, `--zsh-completions`, `--fzf-tab`, `--you-should-use`, `--zsh-autopair`, `--better-npm` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#shell) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/shell.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/shell.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Termux UI components.
12
12
  | `ui` | `--font`, `--extra-keys`, `--cursor`, `--banner` |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#ui) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/ui.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/ui.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -16,6 +16,6 @@ and tracked with Karnel ownership markers so `karnel uninstall utils --herdr` is
16
16
  | `utils` | `--fconv`, `--filecheck`, `--websites`, `--notes`, `--treex`, `--passman`, `--applaunch`, `--splash`, `--httptmux`, `--zork`, `--qrcode`, `--superfile`, `--herdr` |
17
17
 
18
18
  See the [CLI reference]({{ '/cli/' | relative_url }}#utils) for the full command list, or the
19
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/utils.sh).
19
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/utils.sh).
20
20
 
21
21
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -12,6 +12,6 @@ Voice commands for AI agents.
12
12
  | `voice` | Voice command |
13
13
 
14
14
  See the [CLI reference]({{ '/cli/' | relative_url }}#voice) for the full command list, or the
15
- [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/voice.sh).
15
+ [source on GitHub](https://github.com/karnel-termuxOFC/karnel-termux/tree/main/karnel/modules/voice.sh).
16
16
 
17
17
  [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -40,7 +40,7 @@ Create an npm **granular access token** with:
40
40
  - **Permissions**: Automation (Bypass 2FA)
41
41
 
42
42
  Save it as the `NPM_TOKEN` Actions secret in the
43
- `israelmarques1024-dotcom/karnel-termux` repository. Never paste a token into
43
+ `karnel-termuxOFC/karnel-termux` repository. Never paste a token into
44
44
  issues, chat, shell history, or screenshots. If a token is ever exposed,
45
45
  revoke it immediately at https://www.npmjs.com/settings/<user>/tokens.
46
46
 
@@ -58,7 +58,7 @@ the Vercel production site, `https://karneltermux.vercel.app`. The `Publish Docs
58
58
  workflow (`.github/workflows/docs.yml`) runs `actions/jekyll-build-pages` on
59
59
  every push to `main` that changes `docs/**`, uploads the result as a Pages
60
60
  artifact and deploys it to the `github-pages` environment; that mirror,
61
- `https://israelmarques1024-dotcom.github.io/karnel-termux/`, is served only
61
+ `https://karnel-termuxOFC.github.io/karnel-termux/`, is served only
62
62
  while GitHub Pages is enabled for the repository.
63
63
 
64
64
  If a build fails, open the Actions run for the failing job and read the Jekyll
package/install.sh CHANGED
@@ -11,7 +11,7 @@ readonly P_FAIL='\e[1;31m'
11
11
  readonly P_HL='\e[38;5;213m'
12
12
  readonly P_NC='\e[0m'
13
13
 
14
- REPO="https://github.com/israelmarques1024-dotcom/karnel-termux"
14
+ REPO="https://github.com/karnel-termuxOFC/karnel-termux"
15
15
  BRANCH="main"
16
16
  RELEASE_REF=""
17
17
  INSTALL_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -1 +1 @@
1
- 993646aa095b290adc04835c38c98a56ff05c212
1
+ a6c1aeb11507e48d4e14c3f6c2eb9bd9e9f969da
package/karnel/bin/karnel CHANGED
@@ -90,7 +90,7 @@ check_for_updates() {
90
90
  fi
91
91
  if ! _valid_semver "$remote_version"; then
92
92
  remote_version=""
93
- if remote_output=$(curl -fsSL --max-time 5 "https://raw.githubusercontent.com/israelmarques1024-dotcom/karnel-termux/main/package.json" 2>/dev/null); then
93
+ if remote_output=$(curl -fsSL --max-time 5 "https://raw.githubusercontent.com/karnel-termuxOFC/karnel-termux/main/package.json" 2>/dev/null); then
94
94
  remote_version=$(printf '%s\n' "$remote_output" | sed -nE 's/^[[:space:]]*"version":[[:space:]]*"([^"]+)".*/\1/p' | head -1)
95
95
  fi
96
96
  fi
@@ -4,6 +4,7 @@
4
4
  import "@/utils/log"
5
5
  import "@/utils/colors"
6
6
  import "@/utils/install"
7
+ import "@/utils/compat"
7
8
 
8
9
  _fix_storage() {
9
10
  termux-setup-storage 2>/dev/null
@@ -219,19 +220,13 @@ _fix_pip_check() {
219
220
  }
220
221
 
221
222
  _fix_npm_shebangs() {
222
- local fixed=0
223
- for f in "$PREFIX/bin/"*; do
224
- [[ -f "$f" ]] || continue
225
- local shebang
226
- shebang=$(head -1 "$f" 2>/dev/null | tr -d '\0\r' | xargs)
227
- if [[ "$shebang" == "#!/usr/bin/env node" ]]; then
228
- sed -i "1s|^.*$|#!$PREFIX/bin/node|" "$f" && ((fixed++))
229
- elif [[ "$shebang" == "#!/usr/bin/env bash" ]] || [[ "$shebang" == "#!/usr/bin/env sh" ]]; then
230
- sed -i "1s|^.*$|#!$PREFIX/bin/bash|" "$f" && ((fixed++))
231
- elif [[ "$shebang" == "#!/usr/bin/env python3" ]] || [[ "$shebang" == "#!/usr/bin/env python" ]]; then
232
- sed -i "1s|^.*$|#!$PREFIX/bin/python3|" "$f" && ((fixed++))
233
- fi
234
- done
223
+ # Delegates to the compatibility layer instead of sed-ing $PREFIX/bin
224
+ # itself: most of those entries are symlinks into node_modules, and
225
+ # `sed -i` unlinks its argument, which would replace npm's symlink with a
226
+ # detached copy whose relative require() resolves from the wrong directory.
227
+ # compat_fix_shebang edits the target and copes with any interpreter, not
228
+ # just node/bash/python3.
229
+ compat_fix_shebangs "$PREFIX/bin" >/dev/null 2>&1
235
230
  return 0
236
231
  }
237
232
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  import "@/utils/log"
4
4
  import "@/utils/colors"
5
+ import "@/utils/compat"
5
6
 
6
7
  doctor_main() {
7
8
  local subcommand="${1:-termux}"
@@ -769,19 +770,31 @@ doctor_termux() {
769
770
  separator_section "Binary & Shebang Health"
770
771
  echo
771
772
 
772
- # Check for bad shebangs (#!/usr/bin/env) in PREFIX/bin (fast grep)
773
+ # Interpreters that do not exist on this device. Android has no /usr, so
774
+ # every "#!/usr/bin/env node" the kernel meets answers ENOENT and the shell
775
+ # reports 126, even though node itself is installed. The check is on the
776
+ # interpreter path rather than on the literal "#!/usr/bin/env" prefix, so a
777
+ # shebang pointing at a stale absolute path is caught too.
773
778
  local bad_shebangs=0
774
- local bad_files
775
- bad_files=$(timeout 10 rg -l "^#!/usr/bin/env" "$PREFIX/bin/" 2>/dev/null || true)
776
- if [[ -n "$bad_files" ]]; then
777
- bad_shebangs=$(echo "$bad_files" | wc -l)
778
- log_warn "$bad_shebangs binary(s) with #!/usr/bin/env — will fail on Termux"
779
- echo "$bad_files" | while IFS= read -r f; do
780
- list_item "$(basename "$f")"
779
+ bad_shebangs="$(timeout 20 compat_count_broken_shebangs "$PREFIX/bin" 2>/dev/null)"
780
+ bad_shebangs="${bad_shebangs:-0}"
781
+ if [[ "$bad_shebangs" =~ ^[0-9]+$ ]] && ((bad_shebangs > 0)); then
782
+ log_warn "$bad_shebangs binary(s) point at an interpreter that does not exist"
783
+ local sb_file sb_name
784
+ for sb_file in "$PREFIX/bin"/*; do
785
+ [[ -f "$sb_file" && -r "$sb_file" ]] || continue
786
+ IFS= read -r sb_head <"$sb_file" 2>/dev/null || continue
787
+ [[ "$sb_head" == '#!'* ]] || continue
788
+ sb_name="${sb_head#\#!}"
789
+ sb_name="${sb_name# }"
790
+ sb_name="${sb_name%% *}"
791
+ if [[ "$sb_name" == /* && ! -x "$sb_name" ]]; then
792
+ list_item "$(basename "$sb_file") ($sb_name)"
793
+ fi
781
794
  done
782
795
  ((warnings++))
783
- fix_commands+=("karnel install npm 2>/dev/null || true")
784
- fix_descriptions+=("Reinstall npm tools to fix shebangs")
796
+ fix_commands+=("karnel doctor --fix")
797
+ fix_descriptions+=("Repoint $bad_shebangs shebang(s) at their Termux interpreter")
785
798
  fix_callbacks+=("_fix_npm_shebangs")
786
799
  else
787
800
  log_success "All binaries have valid shebangs"
@@ -963,6 +976,53 @@ doctor_termux() {
963
976
  log_info "proot not installed (optional)"
964
977
  fi
965
978
 
979
+ # ===== ANDROID COMPATIBILITY LAYER =====
980
+ echo
981
+ separator_section "Android Compatibility Layer"
982
+ echo
983
+ # A foreign (glibc) binary cannot be started by the Android kernel at all;
984
+ # karnel hands it to the loader from the glibc sysroot instead. This block
985
+ # reports which of the three tiers are reachable and how many tools are
986
+ # currently riding them.
987
+ local compat_root compat_wrapped=0 compat_entry compat_fixable
988
+ if compat_glibc_ready; then
989
+ compat_root="$(compat_glibc_root)"
990
+ log_success "glibc sysroot: available ($compat_root)"
991
+ else
992
+ log_info "glibc sysroot: not installed (required to run glibc-only tools)"
993
+ fix_commands+=("pkg install -y glibc-repo glibc")
994
+ fix_descriptions+=("Install the glibc sysroot so foreign binaries can run")
995
+ fix_callbacks+=("_fix_pkg_install")
996
+ fi
997
+
998
+ for compat_entry in "$PREFIX/bin"/*; do
999
+ [[ -f "$compat_entry" ]] || continue
1000
+ if _compat_is_wrapper "$compat_entry"; then
1001
+ compat_wrapped=$((compat_wrapped + 1))
1002
+ fi
1003
+ done
1004
+ if ((compat_wrapped > 0)); then
1005
+ log_success "$compat_wrapped tool(s) running through the compatibility wrapper"
1006
+ else
1007
+ log_info "no tool on PATH currently needs a compatibility wrapper"
1008
+ fi
1009
+
1010
+ if compat_proot_available; then
1011
+ log_success "proot: available (tier 4 for binaries that hardcode /usr or /etc)"
1012
+ elif command -v proot >/dev/null 2>&1; then
1013
+ log_info "proot: installed, but the FHS root could not be assembled"
1014
+ else
1015
+ log_info "proot: not installed (optional; only needed for absolute-path tools)"
1016
+ fi
1017
+
1018
+ compat_fixable="$(timeout 20 compat_count_broken_shebangs "$PREFIX/bin" 2>/dev/null)"
1019
+ compat_fixable="${compat_fixable:-0}"
1020
+ if [[ "$compat_fixable" =~ ^[0-9]+$ ]] && ((compat_fixable > 0)); then
1021
+ log_warn "$compat_fixable shebang(s) still point at a missing interpreter"
1022
+ else
1023
+ log_success "every shebang in $PREFIX/bin resolves"
1024
+ fi
1025
+
966
1026
  # ===== TERMUX:API =====
967
1027
  echo
968
1028
  separator_section "Termux:API"
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
+ import "@/utils/npm"
3
4
  import "@/utils/log"
4
5
  import "@/utils/colors"
5
6
 
@@ -169,8 +170,8 @@ EOF
169
170
  }
170
171
 
171
172
  _install_next_deps() {
172
- npm install axios lucide-react framer-motion sonner zod react-hook-form @hookform/resolvers @tanstack/react-query zustand tailwindcss &>"$LOG_FILE"
173
- npm install -D prettier prettier-plugin-tailwindcss &>>"$LOG_FILE"
173
+ karnel_npm install axios lucide-react framer-motion sonner zod react-hook-form @hookform/resolvers @tanstack/react-query zustand tailwindcss &>"$LOG_FILE"
174
+ karnel_npm install -D prettier prettier-plugin-tailwindcss &>>"$LOG_FILE"
174
175
  }
175
176
 
176
177
  # ===== REACT + VITE =====
@@ -295,8 +296,8 @@ EOF
295
296
  }
296
297
 
297
298
  _install_react_deps() {
298
- npm install axios lucide-react framer-motion sonner zod react-hook-form @hookform/resolvers @tanstack/react-query zustand tailwindcss clsx tailwind-merge &>"$LOG_FILE"
299
- npm install -D prettier prettier-plugin-tailwindcss &>>"$LOG_FILE"
299
+ karnel_npm install axios lucide-react framer-motion sonner zod react-hook-form @hookform/resolvers @tanstack/react-query zustand tailwindcss clsx tailwind-merge &>"$LOG_FILE"
300
+ karnel_npm install -D prettier prettier-plugin-tailwindcss &>>"$LOG_FILE"
300
301
  }
301
302
 
302
303
  # ===== EXPRESS.JS =====
@@ -355,11 +356,11 @@ configure_express() {
355
356
  }
356
357
 
357
358
  _install_express_deps() {
358
- npm install express pg typeorm reflect-metadata jsonwebtoken cookie-parser morgan cors bcryptjs helmet cloudinary multer express-rate-limit tsconfig-paths zod &>"$LOG_FILE"
359
+ karnel_npm install express pg typeorm reflect-metadata jsonwebtoken cookie-parser morgan cors bcryptjs helmet cloudinary multer express-rate-limit tsconfig-paths zod &>"$LOG_FILE"
359
360
  }
360
361
 
361
362
  _install_express_dev() {
362
- npm install -D typescript ts-node-dev tsconfig-paths tsc-alias @types/node @types/multer @types/morgan @types/jsonwebtoken @types/helmet @types/express @types/cors @types/cookie-parser @types/bcryptjs &>>"$LOG_FILE"
363
+ karnel_npm install -D typescript ts-node-dev tsconfig-paths tsc-alias @types/node @types/multer @types/morgan @types/jsonwebtoken @types/helmet @types/express @types/cors @types/cookie-parser @types/bcryptjs &>>"$LOG_FILE"
363
364
  }
364
365
 
365
366
  _setup_express_structure() {
@@ -578,8 +579,8 @@ configure_nest() {
578
579
  }
579
580
 
580
581
  _install_nest_deps() {
581
- npm install @nestjs/typeorm typeorm pg @nestjs/jwt @nestjs/passport passport passport-jwt passport-local class-validator class-transformer bcryptjs helmet cloudinary &>>"$LOG_FILE"
582
- npm install -D @types/passport-jwt @types/passport-local @types/bcryptjs &>>"$LOG_FILE"
582
+ karnel_npm install @nestjs/typeorm typeorm pg @nestjs/jwt @nestjs/passport passport passport-jwt passport-local class-validator class-transformer bcryptjs helmet cloudinary &>>"$LOG_FILE"
583
+ karnel_npm install -D @types/passport-jwt @types/passport-local @types/bcryptjs &>>"$LOG_FILE"
583
584
  }
584
585
 
585
586
  configure_python() {
@@ -3,6 +3,7 @@
3
3
  import "@/utils/log"
4
4
  import "@/utils/colors"
5
5
  import "@/utils/tools"
6
+ import "@/utils/compat"
6
7
 
7
8
  install_main() {
8
9
 
@@ -235,18 +236,19 @@ _install_specific_tools() {
235
236
  IFS=',' read -ra _bin_list <<< "$bins"
236
237
  for _bin in "${_bin_list[@]}"; do
237
238
  if command -v "$_bin" &>/dev/null; then
238
- # Check if it is a stub
239
239
  local _bin_path
240
240
  _bin_path=$(command -v "$_bin")
241
- if [ -f "$_bin_path" ] && [ -x "$_bin_path" ]; then
242
- if ! grep -qiE "offline|unreachable|not.available|stub|indisponivel|inacessivel" "$_bin_path" 2>/dev/null || [ "$(head -c 2 "$_bin_path")" != "#!" ]; then
243
- found_bin="$_bin"
244
- break
245
- fi
241
+ if [ -f "$_bin_path" ] && [ -x "$_bin_path" ] && ! karnel_is_stub_binary "$_bin_path"; then
242
+ found_bin="$_bin"
243
+ break
246
244
  fi
247
245
  fi
248
246
  done
249
247
  if [ -n "$found_bin" ]; then
248
+ for _bin in "${_bin_list[@]}"; do
249
+ declare -f compat_adapt_installed >/dev/null 2>&1 &&
250
+ compat_adapt_installed "$_bin" || true
251
+ done
250
252
  ((installed_count++))
251
253
  else
252
254
  log_warn "$tool: binary not found in PATH after installation"
@@ -3,6 +3,7 @@
3
3
  import "@/utils/log"
4
4
  import "@/utils/colors"
5
5
  import "@/utils/tools"
6
+ import "@/utils/compat"
6
7
 
7
8
  reinstall_main() {
8
9