karnel-termux 4.17.9 → 4.17.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -12
- package/docs/ARCHITECTURE/index.md +7 -1
- package/docs/CHANGELOG.md +52 -0
- package/docs/_config.yml +0 -2
- package/docs/_layouts/base.html +21 -0
- package/docs/assets/css/style.scss +34 -0
- package/docs/cli/index.md +13 -7
- package/docs/doctor/index.md +6 -0
- package/docs/index.md +14 -13
- package/docs/karnel/ai/index.md +17 -0
- package/docs/karnel/auto/index.md +17 -0
- package/docs/karnel/db/index.md +17 -0
- package/docs/karnel/deploy/index.md +17 -0
- package/docs/karnel/dev/index.md +17 -0
- package/docs/karnel/editor/index.md +17 -0
- package/docs/karnel/games/index.md +17 -0
- package/docs/karnel/lang/index.md +17 -0
- package/docs/karnel/network/index.md +17 -0
- package/docs/karnel/npm/index.md +17 -0
- package/docs/karnel/osint/index.md +17 -0
- package/docs/karnel/plugin/index.md +17 -0
- package/docs/karnel/security/index.md +17 -0
- package/docs/karnel/shell/index.md +17 -0
- package/docs/karnel/ui/index.md +17 -0
- package/docs/karnel/utils/index.md +21 -0
- package/docs/karnel/voice/index.md +17 -0
- package/docs/troubleshooting/index.md +7 -1
- package/karnel/RELEASE_COMMIT +1 -1
- package/karnel/bin/karnel +1 -1
- package/karnel/cli/commands/brain.sh +2 -2
- package/karnel/cli/commands/doctor/code_exec.sh +4 -0
- package/karnel/cli/commands/doctor/code_langs.sh +1 -1
- package/karnel/cli/commands/doctor/fixes.sh +14 -2
- package/karnel/cli/commands/doctor.sh +33 -8
- package/karnel/cli/commands/open.sh +31 -74
- package/karnel/cli/commands/pg.sh +22 -5
- package/karnel/cli/commands/show.sh +5 -0
- package/karnel/cli/commands/update.sh +3 -3
- package/karnel/modules/shell.sh +1 -1
- package/karnel/tools/ai/cline/install.sh +9 -1
- package/karnel/tools/ai/cursor-cli/install.sh +2 -1
- package/karnel/tools/ai/goose/install.sh +1 -1
- package/karnel/tools/ai/hermes-agent/install.sh +1 -1
- package/karnel/tools/ai/kiro/install.sh +9 -1
- package/karnel/tools/deploy/supabase/install.sh +1 -1
- package/karnel/tools/plugins/install.sh +17 -3
- package/karnel/tools/security/amass/install.sh +1 -1
- package/karnel/tools/security/burpsuite/install.sh +1 -1
- package/karnel/tools/security/ffuf/install.sh +1 -1
- package/karnel/tools/security/gobuster/install.sh +1 -1
- package/karnel/tools/security/subfinder/install.sh +1 -1
- package/karnel/tools/security/zap/install.sh +1 -1
- package/karnel/tools/utils/all.sh +2 -0
- package/karnel/tools/utils/herdr/README.md +33 -0
- package/karnel/tools/utils/herdr/install.sh +160 -0
- package/karnel/tools/utils/zork/zork.sh +8 -3
- package/karnel/utils/agent_actions.sh +12 -4
- package/karnel/utils/log.sh +1 -1
- package/karnel/utils/tools.sh +1 -1
- package/karnel/utils/version.sh +1 -1
- package/package.json +2 -2
- package/scripts/completion.bash +1 -1
- package/scripts/completion.zsh +1 -1
|
@@ -19,7 +19,7 @@ _install_gobuster_bin() (
|
|
|
19
19
|
x86_64) checksum="871be404ce5f80c96b864586b3caa90f894598d1a8222ae316c19e5f70e04cfc" ;;
|
|
20
20
|
esac
|
|
21
21
|
local url="https://github.com/OJ/gobuster/releases/download/v${_GOBUSTER_VERSION}/$asset"
|
|
22
|
-
tmpdir=$(mktemp -d "${TMPDIR
|
|
22
|
+
tmpdir=$(mktemp -d "${TMPDIR:-${KARNEL_CACHE:-$HOME/.cache/karnel}}/gobuster.XXXXXX") || return 1
|
|
23
23
|
staged_bin=""
|
|
24
24
|
trap 'rm -rf "$tmpdir"; [ -z "$staged_bin" ] || rm -f "$staged_bin"' EXIT
|
|
25
25
|
archive="$tmpdir/gobuster.tar.gz"
|
|
@@ -47,7 +47,7 @@ install_subfinder() (
|
|
|
47
47
|
esac
|
|
48
48
|
url="https://github.com/projectdiscovery/subfinder/releases/download/v${_SUBFINDER_VERSION}/$asset"
|
|
49
49
|
|
|
50
|
-
tmpdir=$(mktemp -d "${TMPDIR
|
|
50
|
+
tmpdir=$(mktemp -d "${TMPDIR:-${KARNEL_CACHE:-$HOME/.cache/karnel}}/subfinder.XXXXXX") || return 1
|
|
51
51
|
staged_bin=""
|
|
52
52
|
trap 'rm -rf "$tmpdir"; [ -z "$staged_bin" ] || rm -f "$staged_bin"' EXIT
|
|
53
53
|
archive="$tmpdir/subfinder.zip"
|
|
@@ -34,7 +34,7 @@ install_zap() (
|
|
|
34
34
|
|
|
35
35
|
local url="https://github.com/zaproxy/zaproxy/releases/download/v${_ZAP_VERSION}/$ZAP_ASSET"
|
|
36
36
|
|
|
37
|
-
tmpdir=$(mktemp -d "${TMPDIR
|
|
37
|
+
tmpdir=$(mktemp -d "${TMPDIR:-${KARNEL_CACHE:-$HOME/.cache/karnel}}/zap.XXXXXX") || {
|
|
38
38
|
log_error "Falha ao criar diretório temporário"
|
|
39
39
|
return 1
|
|
40
40
|
}
|
|
@@ -19,6 +19,7 @@ TOOLS_PACKAGES=(
|
|
|
19
19
|
"zork"
|
|
20
20
|
"qrcode"
|
|
21
21
|
"superfile"
|
|
22
|
+
"herdr"
|
|
22
23
|
)
|
|
23
24
|
|
|
24
25
|
TOOLS_DISPLAY=(
|
|
@@ -34,6 +35,7 @@ TOOLS_DISPLAY=(
|
|
|
34
35
|
"Zork (text adventure games I, II, III)"
|
|
35
36
|
"QR Code (link-to-QR generator)"
|
|
36
37
|
"SuperFile (terminal file manager)"
|
|
38
|
+
"Herdr (terminal AI assistant CLI)"
|
|
37
39
|
)
|
|
38
40
|
|
|
39
41
|
for _tool in "${TOOLS_PACKAGES[@]}"; do
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Herdr — terminal AI assistant
|
|
2
|
+
|
|
3
|
+
[Herdr](https://herdr.dev) is a fast terminal AI assistant CLI, distributed by the
|
|
4
|
+
Herdr project and integrated into Karnel Termux as a managed utility.
|
|
5
|
+
|
|
6
|
+
## Install
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
karnel install utils --herdr
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
The installer:
|
|
13
|
+
- Resolves the latest release via the official manifest at `https://herdr.dev/latest.json`.
|
|
14
|
+
- Verifies the SHA-256 checksum before extracting.
|
|
15
|
+
- Installs atomically into `$PREFIX/bin/herdr` and writes a Karnel ownership marker
|
|
16
|
+
(`.karnel-wrapper-herdr`) so the binary is tracked.
|
|
17
|
+
- Honors `TMPDIR` / `KARNEL_CACHE` (never hardcodes `/tmp`, which is broken on Termux).
|
|
18
|
+
|
|
19
|
+
## Uninstall / Update
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
karnel uninstall utils --herdr # clean removal, only the managed binary
|
|
23
|
+
karnel update utils --herdr # re-fetch and re-verify latest release
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
herdr --help
|
|
30
|
+
herdr --version
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
See https://herdr.dev for full documentation.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
import "@/utils/log"
|
|
4
|
+
|
|
5
|
+
HERDR_BIN="$PREFIX/bin/herdr"
|
|
6
|
+
HERDR_DATA_DIR="$KARNEL_DATA/herdr"
|
|
7
|
+
HERDR_MARKER="$HERDR_DATA_DIR/.karnel-managed"
|
|
8
|
+
HERDR_WRAPPER_MARKER="$HERDR_DATA_DIR/.karnel-wrapper-herdr"
|
|
9
|
+
HERDR_MANIFEST_URL="https://herdr.dev/latest.json"
|
|
10
|
+
|
|
11
|
+
_herdr_binary_owned() {
|
|
12
|
+
[[ -f "$HERDR_WRAPPER_MARKER" && -f "$HERDR_BIN" ]] || return 1
|
|
13
|
+
[[ "$(sha256sum "$HERDR_BIN" 2>/dev/null)" == "$(<"$HERDR_WRAPPER_MARKER")" ]]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
_herdr_verify_ownership() {
|
|
17
|
+
if [[ -e "$HERDR_DATA_DIR" && ! -f "$HERDR_MARKER" ]]; then
|
|
18
|
+
log_error "Refusing to replace unowned data directory: $HERDR_DATA_DIR"
|
|
19
|
+
return 1
|
|
20
|
+
fi
|
|
21
|
+
if [[ -e "$HERDR_BIN" ]] && ! _herdr_binary_owned; then
|
|
22
|
+
log_error "Refusing to replace unowned command: $HERDR_BIN"
|
|
23
|
+
return 1
|
|
24
|
+
fi
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
_herdr_detect_target() {
|
|
28
|
+
local os arch
|
|
29
|
+
os="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
|
30
|
+
[[ "$os" == "linux" ]] || {
|
|
31
|
+
log_error "Herdr supports Linux/macOS; this system reports: $os"
|
|
32
|
+
return 1
|
|
33
|
+
}
|
|
34
|
+
arch="$(uname -m)"
|
|
35
|
+
case "$arch" in
|
|
36
|
+
aarch64 | arm64) arch="aarch64" ;;
|
|
37
|
+
x86_64 | amd64) arch="x86_64" ;;
|
|
38
|
+
*) log_error "Unsupported architecture for Herdr: $arch"; return 1 ;;
|
|
39
|
+
esac
|
|
40
|
+
printf 'linux-%s' "$arch"
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
_herdr_resolve() {
|
|
44
|
+
local target="$1" manifest tmpf rc
|
|
45
|
+
manifest="$(curl -fsSL --retry 3 --connect-timeout 10 --max-time 20 "$HERDR_MANIFEST_URL" 2>/dev/null)" || return 1
|
|
46
|
+
tmpf="$(mktemp "${KARNEL_CACHE}/.herdr-manifest.XXXXXX")" || return 1
|
|
47
|
+
printf '%s' "$manifest" >"$tmpf"
|
|
48
|
+
python3 -c '
|
|
49
|
+
import sys, json
|
|
50
|
+
with open(sys.argv[1]) as fh:
|
|
51
|
+
data = json.load(fh)
|
|
52
|
+
target = sys.argv[2]
|
|
53
|
+
assets = data.get("assets", {})
|
|
54
|
+
sha = data.get("sha256", {})
|
|
55
|
+
url = assets.get(target)
|
|
56
|
+
digest = sha.get(target)
|
|
57
|
+
version = data.get("version")
|
|
58
|
+
if not url or not digest:
|
|
59
|
+
sys.exit(1)
|
|
60
|
+
print(url)
|
|
61
|
+
print(digest)
|
|
62
|
+
print(version or "")
|
|
63
|
+
' "$tmpf" "$target"
|
|
64
|
+
rc=$?
|
|
65
|
+
rm -f "$tmpf"
|
|
66
|
+
return $rc
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
_herdr_download_and_install() {
|
|
70
|
+
local target="$1" info url sha version tmp actual temporary_bin
|
|
71
|
+
|
|
72
|
+
info="$(_herdr_resolve "$target")" || {
|
|
73
|
+
log_error "Failed to resolve the Herdr release for $target"
|
|
74
|
+
return 1
|
|
75
|
+
}
|
|
76
|
+
url="$(printf '%s' "$info" | sed -n '1p')"
|
|
77
|
+
sha="$(printf '%s' "$info" | sed -n '2p')"
|
|
78
|
+
version="$(printf '%s' "$info" | sed -n '3p')"
|
|
79
|
+
|
|
80
|
+
if [[ ! "$sha" =~ ^[0-9a-fA-F]{64}$ ]]; then
|
|
81
|
+
log_error "Herdr release manifest did not include a valid SHA-256 for $target"
|
|
82
|
+
return 1
|
|
83
|
+
fi
|
|
84
|
+
sha="${sha,,}"
|
|
85
|
+
|
|
86
|
+
mkdir -p "$KARNEL_DATA" "$PREFIX/bin" "${KARNEL_CACHE}" || return 1
|
|
87
|
+
_herdr_verify_ownership || return 1
|
|
88
|
+
|
|
89
|
+
tmp="$(mktemp -d "${KARNEL_CACHE}/.herdr.XXXXXX")" || return 1
|
|
90
|
+
if ! curl -fsSL --retry 3 --connect-timeout 10 --max-time 120 "$url" -o "$tmp/herdr"; then
|
|
91
|
+
rm -rf "$tmp"
|
|
92
|
+
log_error "Failed to download Herdr from $url"
|
|
93
|
+
return 1
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
actual="$(sha256sum "$tmp/herdr" 2>/dev/null | awk '{print $1}')"
|
|
97
|
+
if [[ "$actual" != "$sha" ]]; then
|
|
98
|
+
rm -rf "$tmp"
|
|
99
|
+
log_error "Herdr checksum verification failed (expected $sha, got $actual)"
|
|
100
|
+
return 1
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
temporary_bin="$(mktemp "$PREFIX/bin/.herdr.XXXXXX")" || { rm -rf "$tmp"; return 1; }
|
|
104
|
+
if ! install -m 755 "$tmp/herdr" "$temporary_bin" || ! mv -f "$temporary_bin" "$HERDR_BIN"; then
|
|
105
|
+
rm -f "$temporary_bin"
|
|
106
|
+
rm -rf "$tmp"
|
|
107
|
+
log_error "Failed to install the Herdr binary"
|
|
108
|
+
return 1
|
|
109
|
+
fi
|
|
110
|
+
|
|
111
|
+
mkdir -p "$HERDR_DATA_DIR" || return 1
|
|
112
|
+
sha256sum "$HERDR_BIN" >"$HERDR_WRAPPER_MARKER" || return 1
|
|
113
|
+
: >"$HERDR_MARKER"
|
|
114
|
+
rm -rf "$tmp"
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
install_herdr() {
|
|
118
|
+
if command -v herdr &>/dev/null; then
|
|
119
|
+
log_info "Herdr is already installed"
|
|
120
|
+
return 2
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
local target
|
|
124
|
+
target="$(_herdr_detect_target)" || return 1
|
|
125
|
+
|
|
126
|
+
log_info "Installing Herdr..."
|
|
127
|
+
_herdr_download_and_install "$target" || return 1
|
|
128
|
+
log_success "Herdr installed"
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
uninstall_herdr() {
|
|
132
|
+
if [[ ! -e "$HERDR_BIN" && ! -d "$HERDR_DATA_DIR" ]]; then
|
|
133
|
+
log_info "Herdr is not installed"
|
|
134
|
+
return 2
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
if _herdr_binary_owned && ! rm -f "$HERDR_BIN"; then
|
|
138
|
+
log_error "Failed to remove the Herdr command"
|
|
139
|
+
return 1
|
|
140
|
+
fi
|
|
141
|
+
if [[ -f "$HERDR_MARKER" ]] && ! rm -rf "$HERDR_DATA_DIR"; then
|
|
142
|
+
log_error "Failed to uninstall Herdr"
|
|
143
|
+
return 1
|
|
144
|
+
fi
|
|
145
|
+
log_success "Herdr uninstalled"
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
update_herdr() {
|
|
149
|
+
local target
|
|
150
|
+
target="$(_herdr_detect_target)" || return 1
|
|
151
|
+
|
|
152
|
+
log_info "Updating Herdr..."
|
|
153
|
+
_herdr_download_and_install "$target" || return 1
|
|
154
|
+
log_success "Herdr updated"
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
reinstall_herdr() {
|
|
158
|
+
uninstall_herdr || [[ $? -eq 2 ]] || return 1
|
|
159
|
+
install_herdr
|
|
160
|
+
}
|
|
@@ -3,8 +3,13 @@ ZORK_DIR="$HOME/.local/share/karnel-data/zork"
|
|
|
3
3
|
if [ ! -f "$ZORK_DIR/zork1.dat" ]; then
|
|
4
4
|
mkdir -p "$ZORK_DIR"
|
|
5
5
|
echo "Baixando Zork I..."
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
tmpdir="$(mktemp -d "${TMPDIR:-${KARNEL_CACHE:-$HOME/.cache/karnel}}/zork.XXXXXX")" || exit 1
|
|
7
|
+
curl -fsSL "https://www.infocom-if.org/downloads/zork1.zip" -o "$tmpdir/zork1.zip"
|
|
8
|
+
if unzip -l "$tmpdir/zork1.zip" 2>/dev/null | grep -qE '\.\.[/\\]|^/|[A-Za-z]:\\'; then
|
|
9
|
+
echo "Refusing potentially unsafe Zork archive" >&2
|
|
10
|
+
rm -rf "$tmpdir"; exit 1
|
|
11
|
+
fi
|
|
12
|
+
unzip -o "$tmpdir/zork1.zip" -d "$ZORK_DIR" 2>/dev/null
|
|
13
|
+
rm -rf "$tmpdir"
|
|
9
14
|
fi
|
|
10
15
|
exec frotz "$ZORK_DIR/zork1.dat" "$@"
|
|
@@ -481,8 +481,10 @@ _agent_exec_to_file() {
|
|
|
481
481
|
# ------------------------------------------------------------
|
|
482
482
|
_agent_cmd_is_write() {
|
|
483
483
|
local cmd="$1"
|
|
484
|
-
# file redirections: >file >>file 2>file 1>>file &>file
|
|
485
|
-
|
|
484
|
+
# file redirections: >file >>file 2>file 1>>file &>file (also without a
|
|
485
|
+
# preceding space, e.g. echo x>file). Excludes fd-to-fd like >&2 and
|
|
486
|
+
# numeric comparisons >= / =>.
|
|
487
|
+
if printf '%s\n' "$cmd" | grep -qE '(^|[;&|[:space:]]|[A-Za-z0-9])(>|>>|&>)([^&=]|$)'; then
|
|
486
488
|
return 0
|
|
487
489
|
fi
|
|
488
490
|
# command substitution / backticks execute arbitrary code → write
|
|
@@ -497,8 +499,14 @@ _agent_cmd_is_write() {
|
|
|
497
499
|
if printf '%s\n' "$cmd" | grep -qiE '(^|[;&|[:space:]])(vim|nvim|emacs|ed|ex|vi|nano)[[:space:]]'; then
|
|
498
500
|
return 0
|
|
499
501
|
fi
|
|
502
|
+
# interpreters that can execute arbitrary code / spawn processes / modify
|
|
503
|
+
# files even without a trailing redirection or -i flag (sed 'w', perl
|
|
504
|
+
# open(">"), awk system(), env/setsid/nohup running a command, make, xargs)
|
|
505
|
+
if printf '%s\n' "$cmd" | grep -qiE '(^|[;&|[:space:]])(sed|awk|perl|xargs|make|env|nohup|setsid)[[:space:]]'; then
|
|
506
|
+
return 0
|
|
507
|
+
fi
|
|
500
508
|
# blocklist of commands that write to disk / change state / spawn a shell
|
|
501
|
-
printf '%s\n' "$cmd" | grep -qiE '(^|[;&|[:space:]])(rm|rmdir|unlink|mv|cp|mkdir|touch|ln|chmod|chown|chgrp|install|truncate|tee|dd|mkfs|mount|umount|tar|gzip|gunzip|bzip2|xz|zstd|curl|wget|python3|python|node|npm|bun|yarn|pnpm|cargo|go |rustc|git (add|commit|push|pull|merge|rebase|reset|checkout|switch|restore|clean|stash|tag|clone|init|rm|mv)|pkg (install|uninstall|upgrade|reinstall|update)|apt( |-)|apt-get|dpkg|yum|dnf|pacman|brew|pip|pip3|uv|conda|mysql|psql|sqlite3|redis-cli|mongosh|kill|pkill|killall|service|systemctl|halt|reboot|shutdown|sudo|doas|su|pkexec|chroot|bash|sh|dash|zsh|ksh|eval|source|exec|screen|tmux|ssh|scp|sftp|rsync|telnet|nc|ncat|ftp|lftp|rsh|sshpass|socat|crontab|at |iptables|nft|ufw|docker|podman|kubectl|helm)[[:space:]]' && return 0
|
|
509
|
+
printf '%s\n' "$cmd" | grep -qiE '(^|[;&|[:space:]])(rm|rmdir|unlink|mv|cp|mkdir|touch|ln|chmod|chown|chgrp|install|truncate|tee|dd|mkfs|mount|umount|tar|gzip|gunzip|bzip2|xz|zstd|curl|wget|python3|python|node|npm|bun|yarn|pnpm|cargo|go |rustc|git (add|commit|push|pull|merge|rebase|reset|checkout|switch|restore|clean|stash|tag|clone|init|rm|mv|apply|am|worktree|read-tree|update-index|write-tree|checkout-index)|pkg (install|uninstall|upgrade|reinstall|update)|apt( |-)|apt-get|dpkg|yum|dnf|pacman|brew|pip|pip3|uv|conda|mysql|psql|sqlite3|redis-cli|mongosh|kill|pkill|killall|service|systemctl|halt|reboot|shutdown|sudo|doas|su|pkexec|chroot|bash|sh|dash|zsh|ksh|eval|source|exec|screen|tmux|ssh|scp|sftp|rsync|telnet|nc|ncat|ftp|lftp|rsh|sshpass|socat|crontab|at |iptables|nft|ufw|docker|podman|kubectl|helm)[[:space:]]' && return 0
|
|
502
510
|
return 1
|
|
503
511
|
}
|
|
504
512
|
|
|
@@ -898,7 +906,7 @@ agent_exec_loading() {
|
|
|
898
906
|
local delay=0.08
|
|
899
907
|
local tmpfile
|
|
900
908
|
local _ktmpdir="${KARNEL_CACHE:-${XDG_CACHE_HOME:-$HOME/.cache}/karnel}"
|
|
901
|
-
mkdir -p "$_ktmpdir" 2>/dev/null || _ktmpdir="${TMPDIR
|
|
909
|
+
mkdir -p "$_ktmpdir" 2>/dev/null || _ktmpdir="${TMPDIR:-${KARNEL_CACHE:-$HOME/.cache/karnel}}"
|
|
902
910
|
tmpfile="$(mktemp "$_ktmpdir/karnel.XXXXXX" 2>/dev/null)" || tmpfile="$(mktemp 2>/dev/null)"
|
|
903
911
|
|
|
904
912
|
local stty_saved=""
|
package/karnel/utils/log.sh
CHANGED
|
@@ -430,7 +430,7 @@ loading() {
|
|
|
430
430
|
local delay=0.08
|
|
431
431
|
local tmpfile
|
|
432
432
|
local _ktmpdir="${KARNEL_CACHE:-${XDG_CACHE_HOME:-$HOME/.cache}/karnel}"
|
|
433
|
-
mkdir -p "$_ktmpdir" 2>/dev/null || _ktmpdir="${TMPDIR
|
|
433
|
+
mkdir -p "$_ktmpdir" 2>/dev/null || _ktmpdir="${TMPDIR:-${KARNEL_CACHE:-$HOME/.cache/karnel}}"
|
|
434
434
|
tmpfile="$(mktemp "$_ktmpdir/karnel.XXXXXX" 2>/dev/null)" || tmpfile="$(mktemp 2>/dev/null)"
|
|
435
435
|
local cmd_pid=""
|
|
436
436
|
|
package/karnel/utils/tools.sh
CHANGED
package/karnel/utils/version.sh
CHANGED
|
@@ -52,7 +52,7 @@ _spin_capture() {
|
|
|
52
52
|
local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
|
|
53
53
|
local tmp
|
|
54
54
|
local _ktmpdir="${KARNEL_CACHE:-${XDG_CACHE_HOME:-$HOME/.cache}/karnel}"
|
|
55
|
-
mkdir -p "$_ktmpdir" 2>/dev/null || _ktmpdir="${TMPDIR
|
|
55
|
+
mkdir -p "$_ktmpdir" 2>/dev/null || _ktmpdir="${TMPDIR:-${KARNEL_CACHE:-$HOME/.cache/karnel}}"
|
|
56
56
|
tmp=$(mktemp "$_ktmpdir/karnel.XXXXXX" 2>/dev/null) || tmp=$(mktemp 2>/dev/null)
|
|
57
57
|
local spinner_fd
|
|
58
58
|
if [ -c /dev/tty ] 2>/dev/null; then
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "karnel-termux",
|
|
3
|
-
"version": "4.17.
|
|
3
|
+
"version": "4.17.13",
|
|
4
4
|
"description": "Modular Dev Environment for Termux — install languages, databases, AI agents, editors, and more with one command",
|
|
5
5
|
"bin": {
|
|
6
6
|
"karnel": "karnel/bin/karnel"
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"bugs": {
|
|
47
47
|
"url": "https://github.com/israelmarques1024-dotcom/karnel-termux/issues"
|
|
48
48
|
},
|
|
49
|
-
"homepage": "https://
|
|
49
|
+
"homepage": "https://israelmarques1024-dotcom.github.io/karnel-termux"
|
|
50
50
|
}
|
package/scripts/completion.bash
CHANGED
|
@@ -20,7 +20,7 @@ _karnel_tool_flags() {
|
|
|
20
20
|
security) tools="aircrack-ng amass binwalk burpsuite dirb dnsrecon enum4linux exiftool ffuf foremost gobuster hashcat hydra john masscan metasploit netcat nikto nmap smbclient sqlmap steghide subfinder tcpdump theharvester wafw00f whatweb whois wpscan zap" ;;
|
|
21
21
|
shell) tools="powerlevel10k zsh-defer zsh-autosuggestions zsh-syntax-highlighting history-substring zsh-completions fzf-tab you-should-use zsh-autopair better-npm" ;;
|
|
22
22
|
ui) tools="font extra-keys cursor banner" ;;
|
|
23
|
-
utils) tools="fconv filecheck websites notes treex passman applaunch splash httptmux zork qrcode superfile" ;;
|
|
23
|
+
utils) tools="fconv filecheck websites notes treex passman applaunch splash httptmux zork qrcode superfile herdr" ;;
|
|
24
24
|
esac
|
|
25
25
|
|
|
26
26
|
local flags=""
|
package/scripts/completion.zsh
CHANGED
|
@@ -82,7 +82,7 @@ _karnel_tool_flags() {
|
|
|
82
82
|
security) tools="aircrack-ng amass binwalk burpsuite dirb dnsrecon enum4linux exiftool ffuf foremost gobuster hashcat hydra john masscan metasploit netcat nikto nmap smbclient sqlmap steghide subfinder tcpdump theharvester wafw00f whatweb whois wpscan zap" ;;
|
|
83
83
|
shell) tools="powerlevel10k zsh-defer zsh-autosuggestions zsh-syntax-highlighting history-substring zsh-completions fzf-tab you-should-use zsh-autopair better-npm" ;;
|
|
84
84
|
ui) tools="font extra-keys cursor banner" ;;
|
|
85
|
-
utils) tools="fconv filecheck websites notes treex passman applaunch splash httptmux zork qrcode superfile" ;;
|
|
85
|
+
utils) tools="fconv filecheck websites notes treex passman applaunch splash httptmux zork qrcode superfile herdr" ;;
|
|
86
86
|
esac
|
|
87
87
|
|
|
88
88
|
local -a flags=()
|