karnel-termux 4.17.10 → 4.17.19

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 (71) hide show
  1. package/README.md +43 -24
  2. package/docs/ARCHITECTURE/index.md +13 -5
  3. package/docs/CHANGELOG.md +126 -1
  4. package/docs/_config.yml +1 -2
  5. package/docs/_layouts/base.html +1 -1
  6. package/docs/_layouts/default.html +43 -0
  7. package/docs/assets/css/style.scss +15 -49
  8. package/docs/cli/index.md +72 -13
  9. package/docs/index.md +19 -7
  10. package/docs/karnel/ai/index.md +17 -0
  11. package/docs/karnel/auto/index.md +17 -0
  12. package/docs/karnel/db/index.md +17 -0
  13. package/docs/karnel/deploy/index.md +17 -0
  14. package/docs/karnel/dev/index.md +17 -0
  15. package/docs/karnel/editor/index.md +17 -0
  16. package/docs/karnel/games/index.md +17 -0
  17. package/docs/karnel/lang/index.md +17 -0
  18. package/docs/karnel/network/index.md +17 -0
  19. package/docs/karnel/npm/index.md +17 -0
  20. package/docs/karnel/osint/index.md +17 -0
  21. package/docs/karnel/plugin/index.md +17 -0
  22. package/docs/karnel/security/index.md +17 -0
  23. package/docs/karnel/shell/index.md +17 -0
  24. package/docs/karnel/ui/index.md +17 -0
  25. package/docs/karnel/utils/index.md +21 -0
  26. package/docs/karnel/voice/index.md +17 -0
  27. package/docs/troubleshooting/index.md +4 -2
  28. package/karnel/RELEASE_COMMIT +1 -1
  29. package/karnel/bin/karnel +1 -1
  30. package/karnel/cli/commands/backup.sh +2 -2
  31. package/karnel/cli/commands/brain.sh +4 -4
  32. package/karnel/cli/commands/doctor/code_exec.sh +9 -0
  33. package/karnel/cli/commands/doctor/fixes.sh +14 -2
  34. package/karnel/cli/commands/doctor.sh +33 -8
  35. package/karnel/cli/commands/env.sh +6 -0
  36. package/karnel/cli/commands/ia.sh +6 -2
  37. package/karnel/cli/commands/init.sh +2 -2
  38. package/karnel/cli/commands/list.sh +1 -0
  39. package/karnel/cli/commands/open.sh +34 -73
  40. package/karnel/cli/commands/pg.sh +7 -3
  41. package/karnel/cli/commands/restore.sh +3 -3
  42. package/karnel/cli/commands/voice.sh +3 -3
  43. package/karnel/modules/shell.sh +4 -2
  44. package/karnel/tools/ai/cactus/install.sh +1 -1
  45. package/karnel/tools/ai/cline/install.sh +54 -6
  46. package/karnel/tools/ai/crush/install.sh +1 -1
  47. package/karnel/tools/ai/cursor-cli/install.sh +2 -1
  48. package/karnel/tools/ai/droid/install.sh +10 -10
  49. package/karnel/tools/ai/hermes-agent/install.sh +1 -1
  50. package/karnel/tools/ai/keelcode/install.sh +54 -6
  51. package/karnel/tools/ai/kilocode-cli/install.sh +54 -6
  52. package/karnel/tools/ai/kimchi-code/install.sh +16 -14
  53. package/karnel/tools/ai/kiro/install.sh +54 -6
  54. package/karnel/tools/ai/oh-my-pi/install.sh +14 -14
  55. package/karnel/tools/deploy/supabase/install.sh +54 -6
  56. package/karnel/tools/lang/bun/install.sh +6 -6
  57. package/karnel/tools/utils/all.sh +2 -0
  58. package/karnel/tools/utils/applaunch/applaunch.py +18 -14
  59. package/karnel/tools/utils/herdr/README.md +33 -0
  60. package/karnel/tools/utils/herdr/install.sh +160 -0
  61. package/karnel/tools/utils/passman/passman.py +20 -1
  62. package/karnel/tools/utils/splash/splash.py +10 -2
  63. package/karnel/tools/utils/treex/treex.py +4 -0
  64. package/karnel/tools/utils/zork/install.sh +2 -7
  65. package/karnel/tools/utils/zork/zork.sh +29 -5
  66. package/karnel/utils/agent_actions.sh +40 -16
  67. package/karnel/utils/agent_llm.sh +9 -9
  68. package/karnel/utils/tools.sh +6 -0
  69. package/package.json +2 -2
  70. package/scripts/completion.bash +1 -1
  71. package/scripts/completion.zsh +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.10-0078D4?style=for-the-badge" alt="Version">
11
+ <img src="https://img.shields.io/badge/version-4.17.19-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,23 +23,23 @@
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
40
40
  - **5 databases** — PostgreSQL, MariaDB, SQLite, MongoDB, Redis
41
41
  - **22 dev tools** — gh, curl, fzf, bat, lsd, jq, tmux, openssh, snyk and more
42
- - **12 utility tools** — fconv, notes, treex, qrcode, SuperFile, zork and more
42
+ - **13 utility tools** — fconv, notes, treex, qrcode, SuperFile, zork, herdr and more
43
43
  - **2 network tools** — dark, dedsec-network
44
44
  - **4 deploy CLIs** — Vercel, Railway, Netlify, Supabase
45
45
  - **Responsible OSINT** — Robin v2.8 through Tor with a loopback-only web UI
@@ -54,6 +54,23 @@ Core agent contributions by **devcorex**.
54
54
 
55
55
 
56
56
 
57
+ ---
58
+
59
+ ## 🌟 Featured: Herdr — terminal AI assistant
60
+
61
+ Karnel now ships **[Herdr](https://herdr.dev)**, a blazing-fast terminal AI assistant CLI, as a first-class utility. Install it with:
62
+
63
+ ```bash
64
+ karnel install utils --herdr
65
+ ```
66
+
67
+ Why it's great:
68
+ - **Checksum-verified** download from the official Herdr release manifest (`https://herdr.dev/latest.json`).
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 AI agents Karnel manages.
71
+
72
+ > Open its docs anytime with `karnel open herdr`.
73
+
57
74
  ---
58
75
 
59
76
  ## Installation
@@ -61,7 +78,7 @@ Core agent contributions by **devcorex**.
61
78
  ### Via checksummed GitHub release (recommended)
62
79
 
63
80
  ```bash
64
- version=4.17.10
81
+ version=4.17.19
65
82
  tmpdir=$(mktemp -d) && trap 'rm -rf "$tmpdir"' EXIT
66
83
  base="https://github.com/israelmarques1024-dotcom/karnel-termux/releases/download/v$version"
67
84
  curl -fsSL "$base/karnel-termux-install.sh" -o "$tmpdir/karnel-termux-install.sh"
@@ -106,6 +123,7 @@ aliases, or options; use `karnel help` and the CLI reference for the full set.
106
123
  | `karnel update <module>` | Update modules or karnel |
107
124
  | `karnel uninstall <module>` | Remove installed modules |
108
125
  | `karnel reinstall <module>` | Reinstall modules |
126
+ | `karnel upgrade` | Upgrade the framework (self-update) |
109
127
  | `karnel doctor termux` | Diagnose the Termux environment (30+ sections) |
110
128
  | `karnel doctor code` | Detect project ecosystems and run code checks |
111
129
  | `karnel doctor robin` | Diagnose Robin, Tor, dependencies, and local UI |
@@ -152,7 +170,7 @@ aliases, or options; use `karnel help` and the CLI reference for the full set.
152
170
  karnel install ai --keelcode
153
171
 
154
172
  # Install the SuperFile terminal file manager
155
- karnel install utils --superfile
173
+ karnel install utils --superfile --herdr
156
174
  ```
157
175
 
158
176
  Both tools support `update`, `reinstall`, and `uninstall` with the same module and flag.
@@ -343,7 +361,7 @@ karnel doctor termux --quick # Run essential system/package checks only
343
361
  karnel doctor termux --fix # Apply queued fixes without group confirmation
344
362
 
345
363
  karnel doctor code # Quick project analysis
346
- karnel doctor code --standard . # Add security, deps, coverage and complexity
364
+ karnel doctor code --standard . # Add security, deps, dead-code and complexity
347
365
  karnel doctor code --deep --json . # All 76 definitions as standalone JSON
348
366
  karnel doctor code --fix . # Apply fixes classified as safe
349
367
  karnel doctor robin # Robin/Tor/dependency diagnostics
@@ -357,7 +375,7 @@ definitions across 68 distinct tool labels. It detects subprojects, executes
357
375
  checks in the matching project or subproject directory, preserves command exit status, and writes
358
376
  timestamped text reports under `$KARNEL_DATA/doctor_code_reports/`.
359
377
 
360
- 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,
361
379
  supported ecosystems, tool coverage, JSON schema, reports, and auto-fix safety.
362
380
 
363
381
  ---
@@ -388,7 +406,7 @@ karnel voice claude-code --lang en # Speak in English -> claude -p
388
406
  karnel voice "!" # Shortcut for "text"
389
407
  ```
390
408
 
391
- ### Supported Agents (15)
409
+ ### Supported Agents (14)
392
410
 
393
411
  | Agent | Command executed |
394
412
  |-------|-----------------|
@@ -407,6 +425,7 @@ karnel voice "!" # Shortcut for "text"
407
425
  | `crush` | `crush "..."` |
408
426
  | `kiro` | `kiro-cli "..."` |
409
427
  | `text` | Prints prompt to terminal |
428
+ | `!` | Alias for `text` |
410
429
 
411
430
  ### Options
412
431
 
@@ -430,7 +449,7 @@ Microphone -> termux-speech-to-text -> editor (edit) -> clipboard -> AI agent
430
449
  ### Requirements
431
450
 
432
451
  - Termux:API: `pkg install termux-api`
433
- - App Termux:API: https://karneltermux.vercel.app/termux/api
452
+ - App Termux:API: https://github.com/termux/termux-api
434
453
  - Editor (optional): `karnel install editor`; otherwise use `--raw` or the automatic raw fallback
435
454
 
436
455
  ---
@@ -513,12 +532,12 @@ Documentation loads from https://israelmarques1024-dotcom.github.io/karnel-termu
513
532
 
514
533
  ## Documentation
515
534
 
516
- - [Documentation index](docs/index.md)
517
- - [CLI reference](docs/cli/index.md)
518
- - [Doctor reference](docs/doctor/index.md)
519
- - [Troubleshooting](docs/troubleshooting/index.md)
520
- - [Architecture](docs/ARCHITECTURE/index.md)
521
- - [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)
522
541
  - [Official website](https://israelmarques1024-dotcom.github.io/karnel-termux)
523
542
 
524
543
  ---
@@ -574,9 +593,12 @@ karnel/
574
593
  │ │ ├── ui/ # 4 UI components
575
594
  │ │ ├── auto/ # 1 automation tool
576
595
  │ │ ├── network/ # 2 network tools
577
- │ │ ├── utils/ # 12 utility tools
596
+ │ │ ├── utils/ # 13 utility tools
578
597
  │ │ ├── games/ # 6 games
579
598
  │ │ ├── security/ # 30 security tools
599
+ │ │ ├── osint/ # Robin OSINT (Tor + LLM)
600
+ │ │ ├── voice/ # Speech-to-agent via Termux:API
601
+ │ │ ├── plugins/ # Plugin manager
580
602
  │ │ └── deploy/ # 4 deploy CLIs
581
603
  │ └── utils/ # Utilities (banner, log, env, etc.)
582
604
  ├── install.sh # Installation script
@@ -626,8 +648,8 @@ once every 24 hours; the check can use npm or GitHub and writes state under
626
648
 
627
649
  The repository CI validates Bash/Zsh syntax, ShellCheck errors, CLI smoke tests,
628
650
  version behavior, Robin contracts, plugin lifecycle contracts, and npm package
629
- contents. The official documentation site validates its catalog contracts,
630
- 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.
631
653
 
632
654
  These checks do not install every external tool or prove behavior on every Android
633
655
  device. Before relying on a new installer, test it in native Termux aarch64 with
@@ -654,7 +676,4 @@ MIT © Israel Marques
654
676
  <a href="https://israelmarques1024-dotcom.github.io/karnel-termux">
655
677
  <img src="https://img.shields.io/badge/Full%20Documentation-0078D4?style=for-the-badge" alt="Documentation">
656
678
  </a>
657
- <a href="https://www.youtube.com/@capideb">
658
- <img src="https://img.shields.io/badge/YouTube-Capi.deb-FF0000?style=for-the-badge&logo=youtube&logoColor=white" alt="YouTube — Capi.deb">
659
- </a>
660
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
@@ -45,7 +45,7 @@ karnel-termux/
45
45
  │ │ ├── deploy/ # 4 deploy CLIs
46
46
  │ │ ├── games/ # 6 games
47
47
  │ │ ├── network/ # 2 network tools (dark, dedsec-network)
48
- │ │ ├── utils/ # 12 utility tools (fconv, notes, zork, SuperFile, etc.)
48
+ │ │ ├── utils/ # 13 utility tools (fconv, notes, zork, SuperFile, herdr, etc.)
49
49
  │ │ ├── security/ # 30 security tools
50
50
  │ │ ├── voice/ # Speech-to-agent via Termux:API
51
51
  │ │ ├── plugins/ # Built-in plugin manager
@@ -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,131 @@ layout: base
6
6
 
7
7
  # Documentation Changelog
8
8
 
9
+ ## 4.17.19
10
+
11
+ - **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.
12
+ - Version references bumped to `4.17.19`.
13
+
14
+ ## 4.17.18
15
+
16
+ - **Core fixes (2):**
17
+ - `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.
18
+ - `karnel/cli/commands/open.sh`: `karnel open` help did not list the `robin` target even though the dispatcher handled it (`osint / robin`).
19
+ - **npm/GitHub readme audit + site fixes (10):**
20
+ - `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.
21
+ - `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.
22
+ - `docs/ARCHITECTURE/index.md`: the commands tree said "27 .sh files" — the directory has 28.
23
+ - `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.
24
+ - `docs/karnel/dev/index.md`: listed `proot-distro` as a dev tool; the module installs `proot` (a different package).
25
+ - `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.
26
+ - `docs/_layouts/base.html`: the "Live Site" nav item linked to the site itself; now points to the GitHub repository.
27
+ - `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.
28
+ - `docs/CHANGELOG.md`: the permanent "## Unreleased - 2026-07-16" heading (for long-shipped features) retitled honestly as historical.
29
+ - `docs/cli/index.md`: removed the `karnel ia sessions --all` example (flag removed).
30
+ - Version references bumped to `4.17.18`.
31
+
32
+ ## 4.17.17
33
+
34
+ - **Core fixes (8, incl. one broken tool and a 4.17.16 regression):**
35
+ - `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.
36
+ - `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.
37
+ - `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.
38
+ - `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.
39
+ - `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.
40
+ - `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`.
41
+ - `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.
42
+ - `karnel/tools/utils/splash/splash.py`: delay prompt crashed with an unhandled `ValueError` on non-numeric input; input is now validated (non-negative integer).
43
+ - **Docs / site fixes (10):**
44
+ - `docs/cli/index.md`: removed five duplicated rows at the end of the `list` module table (network/utils/osint/voice/security appeared twice).
45
+ - `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.
46
+ - `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.
47
+ - `README.md`: the Site badge displayed a nonexistent domain (`karneltermux.github.io`); now shows the real `israelmarques1024-dotcom.github.io/karnel-termux`.
48
+ - `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`).
49
+ - `README.md`: the "Project Structure" tree omitted `osint/`, `voice/`, and `plugins/` under `karnel/tools/`; added.
50
+ - `README.md`: fixed the broken intro sentence (the "install and manage:" colon was followed by the credits instead of the feature list).
51
+ - `docs/karnel/security/index.md`: "30+ tools" → "30 tools" (the module has exactly 30).
52
+ - `docs/assets/css/style.scss`: removed the dead `.karnel-note` admonition CSS (referenced nowhere, same class of orphaned selector as the removed `.karnel-nav`).
53
+ - Version references bumped to `4.17.17`.
54
+
55
+ ## 4.17.16
56
+
57
+ - **Core hardening (10 critical bug fixes):**
58
+ - `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).
59
+ - `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`.
60
+ - `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).
61
+ - `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).
62
+ - `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.
63
+ - `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.
64
+ - **Docs / site fixes:**
65
+ - Removed the duplicate logo on the documentation homepage (it was rendered both in the header and in the page body).
66
+ - 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`.
67
+ - `README.md`: "45 other AI agents" → "45 AI agents" (Herdr is a utility, not one of the 45).
68
+ - `docs/cli/index.md`: the `list` table was missing `network`, `osint`, `voice`, `security`, `utils`, and `plugin`; all six rows were added.
69
+ - `docs/cli/index.md`: added the `osint --robin` install flag to the per-module flags table.
70
+ - `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`).
71
+ - Bumped version references to `4.17.16` (README badge, install snippet, `package.json`).
72
+
73
+ ## 4.17.15
74
+
75
+ - **Core hardening (10+ bug fixes):**
76
+ - `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).
77
+ - `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`.
78
+ - `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.
79
+ - `karnel/tools/ai/oh-my-pi/install.sh`: replaced predictable `/tmp/omp-install` / `/tmp/omp-update` with `mktemp -d`.
80
+ - `karnel/tools/ai/crush/install.sh`: `mktemp -d` now uses a safe template (no bare `/tmp` fallback).
81
+ - `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`.
82
+ - **Full site overhaul (10+ fixes):**
83
+ - Removed the YouTube `capi.deb` channel references from the README.
84
+ - Fixed the README install snippet (stale `4.17.11` → `4.17.15`) and the `45+` AI-agents count (→ `45`).
85
+ - Fixed a dead `/termux/api` link (now points to the official termux-api repo).
86
+ - `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).
87
+ - `docs/index.md`: module names are now clickable links to their per-module pages.
88
+ - All 17 module pages gained a `CLI reference` cross-link in their footer.
89
+ - Removed dead `.karnel-nav` CSS and added the branding logo site-wide via the `default.html` page header.
90
+ - Verified the existing GitHub Pages deploy already honors `docs/_config.yml` (baseurl/theme load correctly) — no deploy change needed.
91
+
92
+ ## 4.17.14
93
+
94
+ - **Core security audit — fixed 12 critical bugs:**
95
+ - `agent_llm.sh`: config save now uses `%q` instead of `%s`, closing a command-injection/RCE vector when `source`ing saved agent config.
96
+ - `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.
97
+ - `zork/zork.sh`: rewritten with a self-contained safe extractor that rejects `..`/absolute paths and symlink escapes before moving files into `ZORK_DIR`.
98
+ - `zork/install.sh` / `bun/install.sh`: removed unsafe `unzip -o` / tar fallbacks; extraction now uses the hardened `safe_extract_zip` / `safe_extract_tar` helpers.
99
+ - `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.
100
+ - `restore.sh` / `pg.sh`: database restore no longer silences `tar` / `pg_restore` errors with `2>/dev/null`; failures are surfaced to the user.
101
+ - `shell.sh`: `OH_MY_ZSH_REF` is now escaped before being substituted into `sed` patterns, preventing delimiter injection.
102
+ - **Site overhaul:**
103
+ - Fixed single-brace Liquid (`{{ }}`) on all 17 per-module pages (34 broken links resolved).
104
+ - `karnel open` gained a `robin` target (opens the OSINT module page) and a `herdr` target row in the CLI reference.
105
+ - Added a `## Modules` anchor section to the CLI reference so `/cli/#<module>` links resolve.
106
+ - 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.
107
+
108
+ ## 4.17.13
109
+
110
+ - Fixed the shell completion catalog (`scripts/completion.bash` / `completion.zsh`) to include the `herdr` utils tool, satisfying the `completion-catalog` CI gate.
111
+
112
+ ## 4.17.12
113
+
114
+ - Generated real per-module documentation pages under `/karnel/<module>/` (all 17 modules: ai, auto, db, deploy, dev, editor, games, lang, network, npm, osint, plugin, security, shell, ui, utils, voice).
115
+ - `karnel open <module>` now opens the in-site page (`/karnel/<module>/`) instead of the GitHub source; added a dedicated `herdr` open target that opens the utils page.
116
+ - Featured **Herdr** prominently in the README and on the site landing page, with a `karnel install utils --herdr` callout.
117
+ - Added `karnel/tools/utils/herdr/README.md` so `karnel show utils --herdr` renders proper documentation.
118
+ - Site/CLI audit: fixed the stale "12 scripts" utils summary in the CLI reference (now lists all 13 tools including Herdr).
119
+
120
+ ## 4.17.11
121
+
122
+ - Added the **Herdr** CLI to the `utils` module (`karnel install utils --herdr`), with checksum-verified download, atomic install, and Karnel ownership markers.
123
+ - Critical runtime fixes:
124
+ - `cursor-cli`, `hermes-agent` and the `doctor` psutil patch now extract archives with the guarded `safe_extract_tar` (path-traversal/symlink protection).
125
+ - `pg schedule` now exports `PATH`/`PREFIX` in the cron job and logs failures instead of discarding output.
126
+ - `pg restore` uses `--single-transaction` and surfaces errors instead of silently retrying.
127
+ - `doctor --fix` no longer auto-applies destructive fixes (install-class, cache wipes, mass symlink deletion) without explicit confirmation; non-interactive sessions skip them (fail-closed).
128
+ - `doctor code --fix` now snapshots each rewritten file to `<file>.karnel-bak` before applying in-place formatters.
129
+ - `_fix_broken_symlinks` only removes broken symlinks that point into Karnel-managed paths.
130
+ - `karnel upgrade` no longer triggers a concurrent update check.
131
+ - `shell.sh` temp directory falls back to `KARNEL_CACHE` instead of `/tmp`.
132
+ - Website/documentation overhaul: `karnel open` now resolves to real GitHub source URLs (no more 404s), canonical site URL unified to GitHub Pages, utility-tool count corrected to 13 (Herdr added), cloud-backup docs corrected to rclone, added `karnel upgrade` to the command table, and added favicon/SEO meta + Troubleshooting nav.
133
+
9
134
  ## 4.17.10
10
135
 
11
136
  - Round 10 security/correctness hardening (23 distinct fixes):
@@ -281,7 +406,7 @@ layout: base
281
406
  error gating, npm package inspection, CI, and release automation.
282
407
  - Corrected competing stderr redirections in three installers.
283
408
 
284
- ## Unreleased - 2026-07-16
409
+ ## 2026-07-16 — Doctor command surface (shipped before 4.8.0)
285
410
 
286
411
  ### Doctor command surface
287
412
 
package/docs/_config.yml CHANGED
@@ -4,10 +4,9 @@ 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
- logo: /assets/images/karnel-logo.png
10
- custom_css: /karnel-termux/assets/css/style.css
11
10
  baseurl: /karnel-termux
12
11
  show_downloads: false
13
12
  exclude:
@@ -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://israelmarques1024-dotcom.github.io/karnel-termux/">Live Site</a>
12
+ <a href="https://github.com/israelmarques1024-dotcom/karnel-termux">GitHub</a>
13
13
  </nav>
14
14
 
15
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;