karnel-termux 4.17.13 → 4.17.20

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 (63) hide show
  1. package/README.md +22 -21
  2. package/docs/ARCHITECTURE/index.md +12 -4
  3. package/docs/CHANGELOG.md +117 -1
  4. package/docs/_config.yml +1 -0
  5. package/docs/_layouts/base.html +1 -7
  6. package/docs/_layouts/default.html +43 -0
  7. package/docs/assets/css/style.scss +15 -49
  8. package/docs/cli/index.md +67 -8
  9. package/docs/index.md +10 -6
  10. package/docs/karnel/ai/index.md +2 -2
  11. package/docs/karnel/auto/index.md +2 -2
  12. package/docs/karnel/db/index.md +2 -2
  13. package/docs/karnel/deploy/index.md +2 -2
  14. package/docs/karnel/dev/index.md +3 -3
  15. package/docs/karnel/editor/index.md +2 -2
  16. package/docs/karnel/games/index.md +2 -2
  17. package/docs/karnel/lang/index.md +2 -2
  18. package/docs/karnel/network/index.md +2 -2
  19. package/docs/karnel/npm/index.md +2 -2
  20. package/docs/karnel/osint/index.md +2 -2
  21. package/docs/karnel/plugin/index.md +2 -2
  22. package/docs/karnel/security/index.md +3 -3
  23. package/docs/karnel/shell/index.md +2 -2
  24. package/docs/karnel/ui/index.md +2 -2
  25. package/docs/karnel/utils/index.md +2 -2
  26. package/docs/karnel/voice/index.md +2 -2
  27. package/docs/troubleshooting/index.md +4 -2
  28. package/karnel/RELEASE_COMMIT +1 -1
  29. package/karnel/cli/commands/backup.sh +2 -2
  30. package/karnel/cli/commands/brain.sh +4 -4
  31. package/karnel/cli/commands/doctor/code_exec.sh +5 -0
  32. package/karnel/cli/commands/env.sh +6 -0
  33. package/karnel/cli/commands/ia.sh +6 -2
  34. package/karnel/cli/commands/init.sh +47 -34
  35. package/karnel/cli/commands/list.sh +1 -0
  36. package/karnel/cli/commands/open.sh +4 -0
  37. package/karnel/cli/commands/pg.sh +7 -4
  38. package/karnel/cli/commands/restore.sh +3 -3
  39. package/karnel/cli/commands/search.sh +2 -2
  40. package/karnel/cli/commands/supabase.sh +4 -1
  41. package/karnel/cli/commands/voice.sh +3 -3
  42. package/karnel/modules/shell.sh +3 -1
  43. package/karnel/tools/ai/cactus/install.sh +1 -1
  44. package/karnel/tools/ai/cline/install.sh +54 -6
  45. package/karnel/tools/ai/crush/install.sh +1 -1
  46. package/karnel/tools/ai/droid/install.sh +10 -10
  47. package/karnel/tools/ai/keelcode/install.sh +54 -6
  48. package/karnel/tools/ai/kilocode-cli/install.sh +54 -6
  49. package/karnel/tools/ai/kimchi-code/install.sh +16 -14
  50. package/karnel/tools/ai/kiro/install.sh +54 -6
  51. package/karnel/tools/ai/oh-my-pi/install.sh +14 -14
  52. package/karnel/tools/deploy/supabase/install.sh +54 -6
  53. package/karnel/tools/lang/bun/install.sh +6 -6
  54. package/karnel/tools/utils/applaunch/applaunch.py +18 -14
  55. package/karnel/tools/utils/passman/passman.py +20 -1
  56. package/karnel/tools/utils/splash/splash.py +10 -2
  57. package/karnel/tools/utils/treex/treex.py +4 -0
  58. package/karnel/tools/utils/zork/install.sh +2 -7
  59. package/karnel/tools/utils/zork/zork.sh +29 -5
  60. package/karnel/utils/agent_actions.sh +40 -16
  61. package/karnel/utils/agent_llm.sh +9 -9
  62. package/karnel/utils/tools.sh +6 -0
  63. package/package.json +1 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://github.com/israelmarques1024-dotcom/karnel-termux">
11
- <img src="https://img.shields.io/badge/version-4.17.13-0078D4?style=for-the-badge" alt="Version">
11
+ <img src="https://img.shields.io/badge/version-4.17.20-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">
@@ -23,17 +23,17 @@
23
23
  <img src="https://img.shields.io/badge/platform-Termux%20%7C%20Android-0078D4?style=for-the-badge" alt="Platform">
24
24
  </a>
25
25
  <a href="https://israelmarques1024-dotcom.github.io/karnel-termux">
26
- <img src="https://img.shields.io/badge/Site-karneltermux.github.io-0078D4?style=for-the-badge" alt="Website">
26
+ <img src="https://img.shields.io/badge/Site-israelmarques1024--dotcom.github.io%2Fkarnel--termux-0078D4?style=for-the-badge" alt="Website">
27
27
  </a>
28
28
  </p>
29
29
 
30
30
  ---
31
31
 
32
- **Karnel Termux** is a modular development environment that transforms Termux into a complete workstation. With a single CLI (`karnel`), install and manage:
32
+ **Karnel Termux** is a modular development environment that transforms Termux into a complete workstation.
33
33
 
34
- Created by **Israel Marques**.
34
+ Created by **Israel Marques**. Core agent contributions by **devcorex**.
35
35
 
36
- Core agent contributions by **devcorex**.
36
+ With a single CLI (`karnel`), install and manage:
37
37
 
38
38
  - **45 AI tools** — Claude, Gemini, OpenCode, Cactus, Hugging Face, Ollama, KeelCode, Goose, Factory Droid and more
39
39
  - **8 languages** — Node.js, Python, Go, Rust, C/C++, PHP, Perl, Bun
@@ -67,7 +67,7 @@ karnel install utils --herdr
67
67
  Why it's great:
68
68
  - **Checksum-verified** download from the official Herdr release manifest (`https://herdr.dev/latest.json`).
69
69
  - **Atomic, safe install** into `$PREFIX/bin/herdr` with a Karnel ownership marker — so `karnel uninstall utils --herdr` is clean and never touches files it didn't manage.
70
- - Pairs perfectly with the 45+ other AI agents Karnel manages.
70
+ - Pairs perfectly with the 45 AI agents Karnel manages.
71
71
 
72
72
  > Open its docs anytime with `karnel open herdr`.
73
73
 
@@ -78,7 +78,7 @@ Why it's great:
78
78
  ### Via checksummed GitHub release (recommended)
79
79
 
80
80
  ```bash
81
- version=4.17.11
81
+ version=4.17.20
82
82
  tmpdir=$(mktemp -d) && trap 'rm -rf "$tmpdir"' EXIT
83
83
  base="https://github.com/israelmarques1024-dotcom/karnel-termux/releases/download/v$version"
84
84
  curl -fsSL "$base/karnel-termux-install.sh" -o "$tmpdir/karnel-termux-install.sh"
@@ -375,7 +375,7 @@ definitions across 68 distinct tool labels. It detects subprojects, executes
375
375
  checks in the matching project or subproject directory, preserves command exit status, and writes
376
376
  timestamped text reports under `$KARNEL_DATA/doctor_code_reports/`.
377
377
 
378
- Read the **[complete Doctor reference](docs/doctor/index.md)** for modes,
378
+ Read the **[complete Doctor reference](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/doctor/index.md)** for modes,
379
379
  supported ecosystems, tool coverage, JSON schema, reports, and auto-fix safety.
380
380
 
381
381
  ---
@@ -406,7 +406,7 @@ karnel voice claude-code --lang en # Speak in English -> claude -p
406
406
  karnel voice "!" # Shortcut for "text"
407
407
  ```
408
408
 
409
- ### Supported Agents (15)
409
+ ### Supported Agents (14)
410
410
 
411
411
  | Agent | Command executed |
412
412
  |-------|-----------------|
@@ -425,6 +425,7 @@ karnel voice "!" # Shortcut for "text"
425
425
  | `crush` | `crush "..."` |
426
426
  | `kiro` | `kiro-cli "..."` |
427
427
  | `text` | Prints prompt to terminal |
428
+ | `!` | Alias for `text` |
428
429
 
429
430
  ### Options
430
431
 
@@ -448,7 +449,7 @@ Microphone -> termux-speech-to-text -> editor (edit) -> clipboard -> AI agent
448
449
  ### Requirements
449
450
 
450
451
  - Termux:API: `pkg install termux-api`
451
- - App Termux:API: https://israelmarques1024-dotcom.github.io/karnel-termux/termux/api
452
+ - App Termux:API: https://github.com/termux/termux-api
452
453
  - Editor (optional): `karnel install editor`; otherwise use `--raw` or the automatic raw fallback
453
454
 
454
455
  ---
@@ -531,12 +532,12 @@ Documentation loads from https://israelmarques1024-dotcom.github.io/karnel-termu
531
532
 
532
533
  ## Documentation
533
534
 
534
- - [Documentation index](docs/index.md)
535
- - [CLI reference](docs/cli/index.md)
536
- - [Doctor reference](docs/doctor/index.md)
537
- - [Troubleshooting](docs/troubleshooting/index.md)
538
- - [Architecture](docs/ARCHITECTURE/index.md)
539
- - [Documentation changelog](docs/CHANGELOG.md)
535
+ - [Documentation index](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/index.md)
536
+ - [CLI reference](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/cli/index.md)
537
+ - [Doctor reference](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/doctor/index.md)
538
+ - [Troubleshooting](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/troubleshooting/index.md)
539
+ - [Architecture](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/ARCHITECTURE/index.md)
540
+ - [Documentation changelog](https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/docs/CHANGELOG.md)
540
541
  - [Official website](https://israelmarques1024-dotcom.github.io/karnel-termux)
541
542
 
542
543
  ---
@@ -595,6 +596,9 @@ karnel/
595
596
  │ │ ├── utils/ # 13 utility tools
596
597
  │ │ ├── games/ # 6 games
597
598
  │ │ ├── security/ # 30 security tools
599
+ │ │ ├── osint/ # Robin OSINT (Tor + LLM)
600
+ │ │ ├── voice/ # Speech-to-agent via Termux:API
601
+ │ │ ├── plugins/ # Plugin manager
598
602
  │ │ └── deploy/ # 4 deploy CLIs
599
603
  │ └── utils/ # Utilities (banner, log, env, etc.)
600
604
  ├── install.sh # Installation script
@@ -644,8 +648,8 @@ once every 24 hours; the check can use npm or GitHub and writes state under
644
648
 
645
649
  The repository CI validates Bash/Zsh syntax, ShellCheck errors, CLI smoke tests,
646
650
  version behavior, Robin contracts, plugin lifecycle contracts, and npm package
647
- contents. The official documentation site validates its catalog contracts,
648
- TypeScript, formatting, tests, and production build.
651
+ contents. The documentation site is built by the `Publish Docs` workflow with
652
+ `actions/jekyll-build-pages`, so a broken Jekyll page fails that build.
649
653
 
650
654
  These checks do not install every external tool or prove behavior on every Android
651
655
  device. Before relying on a new installer, test it in native Termux aarch64 with
@@ -672,7 +676,4 @@ MIT © Israel Marques
672
676
  <a href="https://israelmarques1024-dotcom.github.io/karnel-termux">
673
677
  <img src="https://img.shields.io/badge/Full%20Documentation-0078D4?style=for-the-badge" alt="Documentation">
674
678
  </a>
675
- <a href="https://www.youtube.com/@capideb">
676
- <img src="https://img.shields.io/badge/YouTube-Capi.deb-FF0000?style=for-the-badge&logo=youtube&logoColor=white" alt="YouTube — Capi.deb">
677
- </a>
678
679
  </p>
@@ -25,7 +25,7 @@ karnel-termux/
25
25
  │ │ ├── voice.sh
26
26
  │ │ ├── init.sh
27
27
  │ │ ├── deploy.sh
28
- │ │ ├── ... (27 .sh files + doctor/ subdir)
28
+ │ │ ├── ... (28 .sh files + doctor/ subdir)
29
29
  │ ├── modules/ # Module orchestrators
30
30
  │ │ ├── ai.sh # AI agent installer
31
31
  │ │ ├── lang.sh # Language installer
@@ -137,12 +137,20 @@ installation. Uninstall does not delete persistent data.
137
137
 
138
138
  ### Tool Installer Pattern
139
139
 
140
+ Each tool lives in `karnel/tools/<module>/<tool>/install.sh` and exposes
141
+ lifecycle entry points named after the tool:
142
+
140
143
  ```bash
141
- _tool_dependencies() { ... } # Declare dependencies
142
- _tool_install() { ... } # Install the tool
143
- _tool_postinstall() { ... } # Post-installation setup
144
+ install_<tool>() # Install the tool; 0 = installed, 2 = already installed
145
+ uninstall_<tool>() # Remove the tool; 0 = removed, 2 = was not installed
146
+ update_<tool>() # Update the tool
147
+ reinstall_<tool>() # Uninstall + install
144
148
  ```
145
149
 
150
+ The module orchestrator (`karnel/modules/<module>.sh`) discovers these
151
+ functions, checks ownership markers before touching files, and treats exit
152
+ code `2` as a no-op rather than a failure.
153
+
146
154
  ## Doctor Subsystem Architecture
147
155
 
148
156
  See [Doctor System](../doctor/) for the complete breakdown of the doctor code analysis engine.
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,122 @@ layout: base
6
6
 
7
7
  # Documentation Changelog
8
8
 
9
+ ## 4.17.20
10
+
11
+ - **PostgreSQL and Supabase (3):**
12
+ - `pg stop` now returns failure when `pg_ctl stop` fails; `pg restart` now stops immediately on either stop or start failure instead of printing a false success.
13
+ - `pg schedule` now returns failure if `crontab` rejects the generated entry instead of returning success after temporary-file cleanup.
14
+ - `supabase remote-status` now preserves a failed Supabase CLI status instead of logging a warning and exiting 0.
15
+ - **Search (1):** `karnel search` now treats user input as literal text in tool and brain searches. Regex metacharacters such as `[` no longer cause grep errors, and option-like input cannot change grep behavior.
16
+ - **Project initializer (7):**
17
+ - `karnel init` now requires explicit confirmation before templates that may overwrite existing files.
18
+ - Next landing pages no longer import a Button component that the initializer never creates.
19
+ - React's generated Button now has its `clsx` and `tailwind-merge` runtime dependencies installed.
20
+ - Express templates no longer import ungenerated entities/routes, and production PostgreSQL TLS now verifies certificates.
21
+ - Go templates derive imports from the actual `go.mod` module name rather than hard-coding `project`.
22
+ - Rust Dockerfiles derive the release binary from `Cargo.toml` instead of assuming `project`.
23
+ - **Regression coverage:** added PostgreSQL/Supabase contracts (5) and init/search contracts (10); the isolated full suite passes.
24
+ - Version references bumped to `4.17.20`.
25
+
26
+ ## 4.17.19
27
+
28
+ - **Release gate:** `tests/bun-installer.sh` did not mock the integrity helpers required by the hardened Bun native installer (`github_release_asset_sha256`, `verify_sha256`, `safe_extract_zip`). The test exited 1 before printing its result, causing `tests/run-isolated.sh`, CI, npm publishing, and GitHub release creation to fail from 4.17.14 through 4.17.18 despite the preceding suites passing. The test now supplies contract-faithful stubs; the full isolated suite exits 0.
29
+ - Version references bumped to `4.17.19`.
30
+
31
+ ## 4.17.18
32
+
33
+ - **Core fixes (2):**
34
+ - `karnel/cli/commands/ia.sh`: `karnel ia sessions --all` was a silent no-op — the flag was bound and never used, and agent names were always displayed anyway. Removed from the help text; the parser still accepts `--all` for back-compat.
35
+ - `karnel/cli/commands/open.sh`: `karnel open` help did not list the `robin` target even though the dispatcher handled it (`osint / robin`).
36
+ - **npm/GitHub readme audit + site fixes (10):**
37
+ - `README.md`: documentation links were repo-relative (`docs/doctor/index.md`, `docs/index.md`, …), which 404 on npmjs.com — the README is also the npm package readme. All seven links now use absolute GitHub URLs.
38
+ - `README.md`: "Supported Agents (15)" → 14 (the count included `text`, which the same docs describe as "no agent"), and the `!` alias row was missing from the table; added.
39
+ - `docs/ARCHITECTURE/index.md`: the commands tree said "27 .sh files" — the directory has 28.
40
+ - `docs/ARCHITECTURE/index.md`: the "Tool Installer Pattern" documented `_tool_dependencies()`/`_tool_install()`/`_tool_postinstall()`, which exist nowhere in the repo; replaced with the real `install_<tool>`/`uninstall_<tool>`/`update_<tool>`/`reinstall_<tool>` contract and the 0/2 exit-code semantics.
41
+ - `docs/karnel/dev/index.md`: listed `proot-distro` as a dev tool; the module installs `proot` (a different package).
42
+ - `docs/_layouts/default.html`: Google Fonts was only `rel="preload"` — no stylesheet link existed anywhere, so Open Sans never loaded; replaced with a normal stylesheet link.
43
+ - `docs/_layouts/base.html`: the "Live Site" nav item linked to the site itself; now points to the GitHub repository.
44
+ - `docs/assets/css/style.scss`: the dark palette was set unconditionally on `:root`, making every light-mode fallback in the stylesheet unreachable; added a `prefers-color-scheme: light` override so OS theme is respected.
45
+ - `docs/CHANGELOG.md`: the permanent "## Unreleased - 2026-07-16" heading (for long-shipped features) retitled honestly as historical.
46
+ - `docs/cli/index.md`: removed the `karnel ia sessions --all` example (flag removed).
47
+ - Version references bumped to `4.17.18`.
48
+
49
+ ## 4.17.17
50
+
51
+ - **Core fixes (8, incl. one broken tool and a 4.17.16 regression):**
52
+ - `karnel/tools/utils/treex/treex.py`: **the entire tool was broken** — an `IndentationError` (a lost `while True:`/`try:`/`os.scandir` block in `explorer_mode`) made every invocation crash. Reconstructed the block; all bundled Python tools now compile.
53
+ - `karnel/tools/utils/applaunch/applaunch.py`: launched a nonexistent `Settings.py` after every action, printing a Python "can't open file" error on every run; removed.
54
+ - `karnel/tools/utils/applaunch/applaunch.py`: replaced `os.system` f-string interpolation and `shell=True` (3× `am start`, `mkdir -p`, `aapt dump badging`) with argv-list `subprocess.run` / `os.makedirs` — removes shell-injection surface from package-manager-derived values.
55
+ - `karnel/cli/commands/doctor/code_exec.sh`: **reverted the 4.17.16 fix-command guard** — it refused the legitimate multi-statement `Go:gofmt` fix (and would refuse `Java:javac`/`bandit` checks), silently disabling Go auto-fix. Check/fix commands come exclusively from the in-repo `LANG_TOOLS` registry, so the guard was a functional regression, not security. A comment now documents this so it is not re-added.
56
+ - `karnel/cli/commands/brain.sh`: `_brain_update_related` appended the raw `$slug` in its `sed` branch while the escaped `$escaped` value was computed but unused — a slug containing `/` or `&` corrupted memory files. Now uses `$escaped` on both branches.
57
+ - `karnel/cli/commands/list.sh`: `karnel list utils` showed 12 tools while docs (and the module) promise 13 — the Herdr row was missing from `_list_utils`.
58
+ - `karnel/tools/utils/splash/splash.py`: `update_delay` rewrote *any* line containing "sleep" inside the loading-screen block, including the embedded `python3 -c "... sed /sleep 12;..."` cleanup line, corrupting the `bash.bashrc` self-cleanup; now only `sleep`-prefixed lines are rewritten.
59
+ - `karnel/tools/utils/splash/splash.py`: delay prompt crashed with an unhandled `ValueError` on non-numeric input; input is now validated (non-negative integer).
60
+ - **Docs / site fixes (10):**
61
+ - `docs/cli/index.md`: removed five duplicated rows at the end of the `list` module table (network/utils/osint/voice/security appeared twice).
62
+ - `docs/index.md`: the Supabase anchor was "fixed" in the wrong direction — kramdown generates `supabase--remote-project-helpers` (double dash) from `## supabase — Remote-project helpers`; restored the double-dash link and corrected the 4.17.16 changelog note.
63
+ - `docs/troubleshooting/index.md`: corrected the claim that `karnel update karnel` logs to `install_dev.log`/`install_npm.log` — the updater prints to the terminal only; those files belong to the dev/npm module installers.
64
+ - `README.md`: the Site badge displayed a nonexistent domain (`karneltermux.github.io`); now shows the real `israelmarques1024-dotcom.github.io/karnel-termux`.
65
+ - `README.md`: removed the false CI claim that the docs site validates "catalog contracts, TypeScript, formatting, tests, and production build" (no TypeScript exists in the repo; `docs.yml` only runs `jekyll-build-pages`).
66
+ - `README.md`: the "Project Structure" tree omitted `osint/`, `voice/`, and `plugins/` under `karnel/tools/`; added.
67
+ - `README.md`: fixed the broken intro sentence (the "install and manage:" colon was followed by the credits instead of the feature list).
68
+ - `docs/karnel/security/index.md`: "30+ tools" → "30 tools" (the module has exactly 30).
69
+ - `docs/assets/css/style.scss`: removed the dead `.karnel-note` admonition CSS (referenced nowhere, same class of orphaned selector as the removed `.karnel-nav`).
70
+ - Version references bumped to `4.17.17`.
71
+
72
+ ## 4.17.16
73
+
74
+ - **Core hardening (10 critical bug fixes):**
75
+ - `karnel/tools/lang/bun/install.sh`: the proot install/update paths now reject Bun archives containing path-traversal or absolute-path members before `unzip -o` runs (defense-in-depth alongside the SHA-256 check).
76
+ - `karnel/tools/utils/passman/passman.py`: **fixed a critical defect** — the module referenced `os.*` without importing `os`, which broke the entire password manager. Added `import os`.
77
+ - `karnel/tools/utils/passman/passman.py`: the encrypted vault is now written with `0600` permissions (was world-readable), and `import_vault` now backs up the existing vault to `<vault>.bak` before overwriting (prevents silent data loss).
78
+ - `karnel/cli/commands/backup.sh` and `restore.sh`: temporary directories now use a safe `mktemp` template under `TMPDIR`/`KARNEL_CACHE` instead of a bare `mktemp -d` (avoids an insecure `/tmp` fallback).
79
+ - `karnel/cli/commands/doctor/code_exec.sh`: `_exec_apply_fix` now validates the fix command with `_exec_fix_cmd_is_safe`, rejecting shell operators, stray braces, and destructive leading commands such as `rm`/`sudo`/`mv` — closing a command-injection path via a malicious project doctor config.
80
+ - `karnel/cli/commands/env.sh`: when a variable name looks like a secret (`SECRET`/`TOKEN`/`KEY`/`PASSWORD`/…), the shell rc file is tightened to `0600` so other local users cannot read stored secrets.
81
+ - **Docs / site fixes:**
82
+ - Removed the duplicate logo on the documentation homepage (it was rendered both in the header and in the page body).
83
+ - Fixed two `karnel voice` help URLs that pointed at a custom redirector (`karneltermux.vercel.app/termux/api`); they now point to the official `https://github.com/termux/termux-api`.
84
+ - `README.md`: "45 other AI agents" → "45 AI agents" (Herdr is a utility, not one of the 45).
85
+ - `docs/cli/index.md`: the `list` table was missing `network`, `osint`, `voice`, `security`, `utils`, and `plugin`; all six rows were added.
86
+ - `docs/cli/index.md`: added the `osint --robin` install flag to the per-module flags table.
87
+ - `docs/index.md`: removed a broken `./ARCHITECTURE/` link (that page does not exist) and corrected the Supabase anchor direction (`#supabase--remote-project-helpers`, double dash as generated by kramdown from `## supabase — Remote-project helpers`).
88
+ - Bumped version references to `4.17.16` (README badge, install snippet, `package.json`).
89
+
90
+ ## 4.17.15
91
+
92
+ - **Core hardening (10+ bug fixes):**
93
+ - `karnel/utils/tools.sh`: `_register_safe_reinstall_handlers` now rejects any tool/module name containing shell metacharacters before `eval`-ing the generated reinstall handler (prevents code injection via a crafted tool directory name).
94
+ - `karnel/tools/ai/droid/install.sh`: dropped the predictable `/tmp/droid-install` / `/tmp/droid-update` paths inside the proot container in favor of `mktemp -d`.
95
+ - `karnel/tools/ai/kimchi-code/install.sh`: replaced predictable `/tmp/kimchi-install` with `mktemp -d` and added an archive-member path-traversal check before extraction.
96
+ - `karnel/tools/ai/oh-my-pi/install.sh`: replaced predictable `/tmp/omp-install` / `/tmp/omp-update` with `mktemp -d`.
97
+ - `karnel/tools/ai/crush/install.sh`: `mktemp -d` now uses a safe template (no bare `/tmp` fallback).
98
+ - `karnel/cli/commands/{init,voice,brain,ia}.sh`: bare `mktemp` calls now use a safe `$KARNEL_CACHE`/`$TMPDIR` template instead of falling back to `/tmp`.
99
+ - **Full site overhaul (10+ fixes):**
100
+ - Removed the YouTube `capi.deb` channel references from the README.
101
+ - Fixed the README install snippet (stale `4.17.11` → `4.17.15`) and the `45+` AI-agents count (→ `45`).
102
+ - Fixed a dead `/termux/api` link (now points to the official termux-api repo).
103
+ - `docs/cli/index.md`: corrected the misleading "resolves the `/cli/#<module>` anchors" note, renamed the duplicate `Modules` heading to `Module documentation pages`, and fixed the `network` module description (no longer misattributes OSINT).
104
+ - `docs/index.md`: module names are now clickable links to their per-module pages.
105
+ - All 17 module pages gained a `CLI reference` cross-link in their footer.
106
+ - Removed dead `.karnel-nav` CSS and added the branding logo site-wide via the `default.html` page header.
107
+ - Verified the existing GitHub Pages deploy already honors `docs/_config.yml` (baseurl/theme load correctly) — no deploy change needed.
108
+
109
+ ## 4.17.14
110
+
111
+ - **Core security audit — fixed 12 critical bugs:**
112
+ - `agent_llm.sh`: config save now uses `%q` instead of `%s`, closing a command-injection/RCE vector when `source`ing saved agent config.
113
+ - `agent_actions.sh`: PLAN (read-only) mode now enforces a strict allowlist (`_agent_cmd_is_readonly`) so non-inspection commands (ruby, php, lua, etc.) can no longer bypass the guard.
114
+ - `zork/zork.sh`: rewritten with a self-contained safe extractor that rejects `..`/absolute paths and symlink escapes before moving files into `ZORK_DIR`.
115
+ - `zork/install.sh` / `bun/install.sh`: removed unsafe `unzip -o` / tar fallbacks; extraction now uses the hardened `safe_extract_zip` / `safe_extract_tar` helpers.
116
+ - `supabase`, `kiro`, `cline`, `kilocode-cli`, `keelcode` installers: replaced the local `safe_extract_tar` (which fell back to an unsafe `tar -xzf` on missing integrity helpers) with a self-contained, safe implementation that has no unsafe fallback.
117
+ - `restore.sh` / `pg.sh`: database restore no longer silences `tar` / `pg_restore` errors with `2>/dev/null`; failures are surfaced to the user.
118
+ - `shell.sh`: `OH_MY_ZSH_REF` is now escaped before being substituted into `sed` patterns, preventing delimiter injection.
119
+ - **Site overhaul:**
120
+ - Fixed single-brace Liquid (`{{ }}`) on all 17 per-module pages (34 broken links resolved).
121
+ - `karnel open` gained a `robin` target (opens the OSINT module page) and a `herdr` target row in the CLI reference.
122
+ - Added a `## Modules` anchor section to the CLI reference so `/cli/#<module>` links resolve.
123
+ - Moved favicon + SEO meta into `<head>` via a `docs/_layouts/default.html` override of the cayman theme (previously dead `<body>`-level meta); set `logo:` for rich-link previews.
124
+
9
125
  ## 4.17.13
10
126
 
11
127
  - Fixed the shell completion catalog (`scripts/completion.bash` / `completion.zsh`) to include the `herdr` utils tool, satisfying the `completion-catalog` CI gate.
@@ -307,7 +423,7 @@ layout: base
307
423
  error gating, npm package inspection, CI, and release automation.
308
424
  - Corrected competing stderr redirections in three installers.
309
425
 
310
- ## Unreleased - 2026-07-16
426
+ ## 2026-07-16 — Doctor command surface (shipped before 4.8.0)
311
427
 
312
428
  ### Doctor command surface
313
429
 
package/docs/_config.yml CHANGED
@@ -4,6 +4,7 @@ description: >-
4
4
  editors, and more with one command.
5
5
  author: Israel Marques
6
6
  lang: en-US
7
+ logo: /assets/images/karnel-logo.png
7
8
  theme: jekyll-theme-cayman
8
9
  markdown: kramdown
9
10
  baseurl: /karnel-termux
@@ -2,12 +2,6 @@
2
2
  layout: default
3
3
  ---
4
4
 
5
- <link rel="icon" href="{{ '/assets/images/karnel-logo.png' | relative_url }}">
6
- <meta name="description" content="Modular Dev Environment for Termux — install languages, databases, AI agents, editors, and more with one command.">
7
- <meta property="og:title" content="Karnel Termux">
8
- <meta property="og:description" content="Modular Dev Environment for Termux.">
9
- <meta property="og:type" content="website">
10
-
11
5
  <nav class="site-nav" aria-label="Documentation">
12
6
  <a href="{{ '/' | relative_url }}">Docs</a>
13
7
  <a href="{{ '/cli/' | relative_url }}">CLI</a>
@@ -15,7 +9,7 @@ layout: default
15
9
  <a href="{{ '/troubleshooting/' | relative_url }}">Troubleshooting</a>
16
10
  <a href="{{ '/ARCHITECTURE/' | relative_url }}">Architecture</a>
17
11
  <a href="{{ '/CHANGELOG/' | relative_url }}">Changelog</a>
18
- <a href="https://israelmarques1024-dotcom.github.io/karnel-termux/">Live Site</a>
12
+ <a href="https://github.com/israelmarques1024-dotcom/karnel-termux">GitHub</a>
19
13
  </nav>
20
14
 
21
15
  {{ content }}
@@ -0,0 +1,43 @@
1
+ <!DOCTYPE html>
2
+ <html lang="{{ site.lang | default: "en-US" }}">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <link rel="icon" href="{{ '/assets/images/karnel-logo.png' | relative_url }}">
6
+ <link rel="apple-touch-icon" href="{{ '/assets/images/karnel-logo.png' | relative_url }}">
7
+ {% seo %}
8
+ <link rel="preconnect" href="https://fonts.gstatic.com">
9
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700&display=swap" crossorigin>
10
+ <meta name="viewport" content="width=device-width, initial-scale=1">
11
+ <meta name="theme-color" content="#157878">
12
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
13
+ <link rel="stylesheet" href="{{ '/assets/css/style.css?v=' | append: site.github.build_revision | relative_url }}">
14
+ {% include head-custom.html %}
15
+ </head>
16
+ <body>
17
+ <a id="skip-to-content" href="#content">Skip to the content.</a>
18
+
19
+ <header class="page-header" role="banner">
20
+ <img class="karnel-logo" src="{{ '/assets/images/karnel-logo.png' | relative_url }}" alt="Karnel Termux" width="120" height="120">
21
+ <h1 class="project-name">{{ page.title | default: site.title | default: site.github.repository_name }}</h1>
22
+ <h2 class="project-tagline">{{ page.description | default: site.description | default: site.github.project_tagline }}</h2>
23
+ {% if site.github.is_project_page %}
24
+ <a href="{{ site.github.repository_url }}" class="btn">View on GitHub</a>
25
+ {% endif %}
26
+ {% if site.show_downloads %}
27
+ <a href="{{ site.github.zip_url }}" class="btn">Download .zip</a>
28
+ <a href="{{ site.github.tar_url }}" class="btn">Download .tar.gz</a>
29
+ {% endif %}
30
+ </header>
31
+
32
+ <main id="content" class="main-content" role="main">
33
+ {{ content }}
34
+
35
+ <footer class="site-footer">
36
+ {% if site.github.is_project_page %}
37
+ <span class="site-footer-owner"><a href="{{ site.github.repository_url }}">{{ site.github.repository_name }}</a> is maintained by <a href="{{ site.github.owner_url }}">{{ site.github.owner_name }}</a>.</span>
38
+ {% endif %}
39
+ <span class="site-footer-credits">This page was generated by <a href="https://pages.github.com">GitHub Pages</a>.</span>
40
+ </footer>
41
+ </main>
42
+ </body>
43
+ </html>
@@ -17,6 +17,21 @@
17
17
  color-scheme: dark light;
18
18
  }
19
19
 
20
+ /* Respect the OS theme: without this the dark palette above is unconditional
21
+ and the light fallbacks used across the stylesheet are unreachable. */
22
+ @media (prefers-color-scheme: light) {
23
+ :root {
24
+ --karnel-bg: #ffffff;
25
+ --karnel-panel: #f6f8fa;
26
+ --karnel-border: #d0d7de;
27
+ --karnel-accent: #0969da;
28
+ --karnel-accent-2: #0078d4;
29
+ --karnel-text: #24292f;
30
+ --karnel-muted: #57606a;
31
+ --karnel-code-bg: #f6f8fa;
32
+ }
33
+ }
34
+
20
35
  html {
21
36
  scroll-behavior: smooth;
22
37
  }
@@ -79,45 +94,6 @@ body {
79
94
  font-size: 1.1rem;
80
95
  }
81
96
 
82
- /* Landing navigation */
83
- .karnel-nav {
84
- display: flex;
85
- flex-wrap: wrap;
86
- gap: 0.6rem;
87
- margin: 1.5rem 0 2rem;
88
- padding: 0;
89
- list-style: none;
90
- }
91
-
92
- .karnel-nav li {
93
- margin: 0;
94
- }
95
-
96
- .karnel-nav a {
97
- display: inline-block;
98
- padding: 0.5rem 1rem;
99
- border: 1px solid var(--karnel-accent-2, #0078d4);
100
- border-radius: 999px;
101
- text-decoration: none;
102
- font-weight: 600;
103
- font-size: 0.92rem;
104
- color: #fff;
105
- background: rgba(0, 120, 212, 0.12);
106
- transition: background 0.15s ease, transform 0.15s ease;
107
- }
108
-
109
- .karnel-nav a:hover {
110
- background: rgba(0, 120, 212, 0.28);
111
- transform: translateY(-1px);
112
- }
113
-
114
- @media (prefers-color-scheme: dark) {
115
- .karnel-nav a {
116
- color: #c9d1d9;
117
- border-color: var(--karnel-border);
118
- }
119
- }
120
-
121
97
  /* Tables */
122
98
  .main-content table {
123
99
  display: table;
@@ -184,16 +160,6 @@ body {
184
160
  border-radius: 0 6px 6px 0;
185
161
  }
186
162
 
187
- /* Admonition callouts */
188
- .karnel-note {
189
- border: 1px solid var(--karnel-accent-2, #0078d4);
190
- border-left-width: 4px;
191
- border-radius: 8px;
192
- padding: 0.75rem 1rem;
193
- margin: 1.25rem 0;
194
- background: rgba(0, 120, 212, 0.06);
195
- }
196
-
197
163
  /* Section spacing */
198
164
  .main-content h2 {
199
165
  margin-top: 2.5rem;
package/docs/cli/index.md CHANGED
@@ -23,7 +23,7 @@ karnel install <module> # Install all tools in a module
23
23
  karnel install <module> --tool1 --tool2 # Install specific tools only
24
24
  ```
25
25
 
26
- ### Modules
26
+ ### Available modules
27
27
 
28
28
  | Module | Description |
29
29
  |-----------|-------------|
@@ -38,7 +38,7 @@ karnel install <module> --tool1 --tool2 # Install specific tools only
38
38
  | `auto` | n8n automation |
39
39
  | `deploy` | Vercel, Railway, Netlify, Supabase CLIs |
40
40
  | `games` | Buzz, CTF God, Detective, Tamagotchi, Arcade, Pet Friends |
41
- | `network` | Dark Web OSINT, DedSec Network Toolkit |
41
+ | `network` | Dark-web and anonymity tooling, plus the DedSec Network Toolkit |
42
42
  | `utils` | fconv, filecheck, websites, notes, treex, passman, applaunch, splash, httptmux, zork, qrcode, superfile, herdr (13 scripts) |
43
43
  | `osint` | Robin v2.8 — dark web OSINT via Tor + LLM |
44
44
  | `voice` | Speech-to-agent via Termux:API |
@@ -59,6 +59,7 @@ karnel install <module> --tool1 --tool2 # Install specific tools only
59
59
  | `ui` | `--font`, `--extra-keys`, `--cursor`, `--banner` |
60
60
  | `auto` | `--n8n` |
61
61
  | `deploy` | `--vercel`, `--railway`, `--netlify`, `--supabase` |
62
+ | `osint` | `--robin` |
62
63
  | `games` | `--buzz`, `--ctfgod`, `--detective`, `--pet-friends`, `--tamagotchi`, `--arcade` |
63
64
  | `network` | `--dark`, `--dedsec-network` |
64
65
  | `utils` | `--fconv`, `--filecheck`, `--websites`, `--notes`, `--treex`, `--passman`, `--applaunch`, `--splash`, `--httptmux`, `--zork`, `--qrcode`, `--superfile`, `--herdr` |
@@ -152,10 +153,11 @@ binary/command name, and current install status.
152
153
  | `deploy` | 4 deploy CLIs |
153
154
  | `games` | 6 games |
154
155
  | `network` | 2 network tools |
155
- | `utils` | 13 utility scripts |
156
- | `osint` | Robin OSINT |
157
- | `voice` | Voice commands |
156
+ | `osint` | Robin OSINT (Tor + LLM) |
157
+ | `voice` | Voice command |
158
158
  | `security`| 30 security tools |
159
+ | `utils` | 13 utility scripts |
160
+ | `plugin` | Installed plugins |
159
161
 
160
162
  ```bash
161
163
  karnel list ai
@@ -216,9 +218,10 @@ Opens the official documentation page for a module using
216
218
  | `cleanup` | Cache cleanup |
217
219
  | `network` | Network tools |
218
220
  | `utils` | Utility tools |
221
+ | `herdr` | Herdr terminal AI assistant |
219
222
  | `voice` | Voice command |
220
- | `plugin` | Plugin system |
221
- | `security` | Security tools |
223
+ | `plugin` | Plugin system |
224
+ | `security` | Security tools |
222
225
  | `osint` / `robin` | OSINT tools |
223
226
 
224
227
  ```bash
@@ -511,7 +514,6 @@ karnel ia <command> [options]
511
514
 
512
515
  ```bash
513
516
  karnel ia sessions
514
- karnel ia sessions --all
515
517
  karnel ia install omni-route
516
518
  karnel ia routes
517
519
  ```
@@ -889,3 +891,60 @@ The main tool modules work with `install`, `uninstall`, `reinstall`, `update`,
889
891
 
890
892
  `plugin` works with `install`, `uninstall`, `reinstall`, `update`, `list`, and
891
893
  `open`, but does not expose tool documentation through `show`.
894
+
895
+ ---
896
+
897
+ ## Module documentation pages
898
+
899
+ Per-module documentation pages:
900
+
901
+ ### ai
902
+ Documentation page: [ai module]({{ '/karnel/ai/' | relative_url }}).
903
+
904
+ ### auto
905
+ Documentation page: [auto module]({{ '/karnel/auto/' | relative_url }}).
906
+
907
+ ### db
908
+ Documentation page: [db module]({{ '/karnel/db/' | relative_url }}).
909
+
910
+ ### deploy
911
+ Documentation page: [deploy module]({{ '/karnel/deploy/' | relative_url }}).
912
+
913
+ ### dev
914
+ Documentation page: [dev module]({{ '/karnel/dev/' | relative_url }}).
915
+
916
+ ### editor
917
+ Documentation page: [editor module]({{ '/karnel/editor/' | relative_url }}).
918
+
919
+ ### games
920
+ Documentation page: [games module]({{ '/karnel/games/' | relative_url }}).
921
+
922
+ ### lang
923
+ Documentation page: [lang module]({{ '/karnel/lang/' | relative_url }}).
924
+
925
+ ### network
926
+ Documentation page: [network module]({{ '/karnel/network/' | relative_url }}).
927
+
928
+ ### npm
929
+ Documentation page: [npm module]({{ '/karnel/npm/' | relative_url }}).
930
+
931
+ ### osint
932
+ Documentation page: [osint module]({{ '/karnel/osint/' | relative_url }}).
933
+
934
+ ### plugin
935
+ Documentation page: [plugin module]({{ '/karnel/plugin/' | relative_url }}).
936
+
937
+ ### security
938
+ Documentation page: [security module]({{ '/karnel/security/' | relative_url }}).
939
+
940
+ ### shell
941
+ Documentation page: [shell module]({{ '/karnel/shell/' | relative_url }}).
942
+
943
+ ### ui
944
+ Documentation page: [ui module]({{ '/karnel/ui/' | relative_url }}).
945
+
946
+ ### utils
947
+ Documentation page: [utils module]({{ '/karnel/utils/' | relative_url }}), including the [Herdr](https://herdr.dev) terminal AI assistant (`karnel install utils --herdr`).
948
+
949
+ ### voice
950
+ Documentation page: [voice module]({{ '/karnel/voice/' | relative_url }}).
package/docs/index.md CHANGED
@@ -4,8 +4,6 @@ permalink: /
4
4
  layout: base
5
5
  ---
6
6
 
7
- <img class="karnel-logo" src="{{ '/assets/images/karnel-logo.png' | relative_url }}" alt="Karnel Termux">
8
-
9
7
  > Modular Dev Environment for Termux — install languages, databases, AI agents, editors, and more with one command
10
8
 
11
9
  ## What is Karnel?
@@ -15,9 +13,16 @@ With a single CLI (`karnel`), you can install and manage 45 AI tools, 3 editors,
15
13
  8 languages, 5 databases, 22 dev tools, 11 npm packages, 10 shell plugins,
16
14
  4 UI components, 4 deploy CLIs, 6 games, 2 network tools, 13 utility tools,
17
15
  30 security tools, 1 automation tool, responsible OSINT, a second brain,
18
- voice commands, and reviewed plugins — all from modules: `ai`, `auto`, `db`,
19
- `deploy`, `dev`, `editor`, `games`, `lang`, `network`, `npm`, `osint`,
20
- `security`, `shell`, `ui`, `utils`, `voice`, `plugin`.
16
+ voice commands, and reviewed plugins — all from modules:
17
+ [ai]({{ '/karnel/ai/' | relative_url }}), [auto]({{ '/karnel/auto/' | relative_url }}),
18
+ [db]({{ '/karnel/db/' | relative_url }}), [deploy]({{ '/karnel/deploy/' | relative_url }}),
19
+ [dev]({{ '/karnel/dev/' | relative_url }}), [editor]({{ '/karnel/editor/' | relative_url }}),
20
+ [games]({{ '/karnel/games/' | relative_url }}), [lang]({{ '/karnel/lang/' | relative_url }}),
21
+ [network]({{ '/karnel/network/' | relative_url }}), [npm]({{ '/karnel/npm/' | relative_url }}),
22
+ [osint]({{ '/karnel/osint/' | relative_url }}), [security]({{ '/karnel/security/' | relative_url }}),
23
+ [shell]({{ '/karnel/shell/' | relative_url }}), [ui]({{ '/karnel/ui/' | relative_url }}),
24
+ [utils]({{ '/karnel/utils/' | relative_url }}), [voice]({{ '/karnel/voice/' | relative_url }}),
25
+ [plugin]({{ '/karnel/plugin/' | relative_url }}).
21
26
 
22
27
  ## 🌟 Featured: Herdr
23
28
 
@@ -38,7 +43,6 @@ Open its docs with `karnel open herdr`.
38
43
  <a href="https://github.com/israelmarques1024-dotcom/karnel-termux/blob/main/karnel/tools/utils/superfile/README.md">SuperFile — terminal file manager</a>
39
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
45
  <a href="./cli/#supabase--remote-project-helpers">Supabase CLI — remote-project helpers</a>
41
- <a href="./ARCHITECTURE/">Architecture — project structure and module system</a>
42
46
  <a href="./CHANGELOG/">Changelog — version history and fixes</a>
43
47
  </div>
44
48
 
@@ -11,7 +11,7 @@ AI coding agents and assistants (Claude Code, Codex, Cline, Goose, and many more
11
11
 
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
- See the [CLI reference]({ '/cli/' | relative_url }#ai) for the full command list, or the
14
+ See the [CLI reference]({{ '/cli/' | relative_url }}#ai) for the full command list, or the
15
15
  [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/ai.sh).
16
16
 
17
- [← Back to docs]({ '/' | relative_url })
17
+ [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})
@@ -11,7 +11,7 @@ Automation and workflow tooling (n8n).
11
11
 
12
12
  | `auto` | `--n8n` |
13
13
 
14
- See the [CLI reference]({ '/cli/' | relative_url }#auto) for the full command list, or the
14
+ See the [CLI reference]({{ '/cli/' | relative_url }}#auto) for the full command list, or the
15
15
  [source on GitHub](https://github.com/israelmarques1024-dotcom/karnel-termux/tree/main/karnel/modules/auto.sh).
16
16
 
17
- [← Back to docs]({ '/' | relative_url })
17
+ [← Back to docs]({{ '/' | relative_url }}) · [CLI reference]({{ '/cli/' | relative_url }})