karnel-termux 4.17.31 → 4.17.33

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 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.31-0078D4?style=for-the-badge" alt="Version">
11
+ <img src="https://img.shields.io/badge/version-4.17.33-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">
@@ -78,7 +78,7 @@ Why it's great:
78
78
  ### Via checksummed GitHub release (recommended)
79
79
 
80
80
  ```bash
81
- version=4.17.31
81
+ version=4.17.33
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"
@@ -1 +1 @@
1
- 385a0757314adc4d9fdd8d005fb42b6f8b5c29d1
1
+ 90bb3622bf61156e730dea73a6e700e4d98c9b13
@@ -176,15 +176,10 @@ _download_kilocode_binary_impl() {
176
176
  return 1
177
177
  fi
178
178
 
179
- if declare -F github_release_asset_sha256 >/dev/null; then
180
- local expected actual
181
- expected=$(github_release_asset_sha256 Kilo-Org/kilocode "$latest_version" "$tarball") || expected=""
182
- actual=$(sha256sum "$staging_dir/$tarball" 2>/dev/null | awk '{print $1}')
183
- if [[ ! "$expected" =~ ^[0-9a-f]{64}$ || "$actual" != "$expected" ]]; then
184
- rm -rf "$staging_dir"
185
- log_error "Kilo Code archive failed official SHA-256 validation"
186
- return 1
187
- fi
179
+ if ! verify_github_release_asset Kilo-Org/kilocode "$latest_version" "$tarball" "$staging_dir/$tarball"; then
180
+ rm -rf "$staging_dir"
181
+ log_error "Kilo Code archive failed official SHA-256 validation"
182
+ return 1
188
183
  fi
189
184
 
190
185
  if ! safe_extract_tar "$staging_dir/$tarball" "$staging_dir"; then
@@ -201,8 +201,27 @@ activate_installer_file() {
201
201
 
202
202
  github_release_asset_sha256() {
203
203
  local repo="$1" version="$2" asset="$3" digest=""
204
- # GitHub's release API does not expose per-asset digests, so fetch the
205
- # companion checksum file published alongside the asset (common convention).
204
+ # Modern GitHub releases expose an official SHA-256 in each asset's digest
205
+ # field. Prefer it so installers do not depend on companion checksum files.
206
+ if command -v jq >/dev/null 2>&1; then
207
+ digest=$(curl -fsSL --connect-timeout 10 --max-time 30 \
208
+ -H 'Accept: application/vnd.github+json' \
209
+ "https://api.github.com/repos/$repo/releases/tags/$version" 2>/dev/null \
210
+ | jq -r --arg asset "$asset" '.assets[] | select(.name == $asset) | .digest // empty' 2>/dev/null \
211
+ | awk -F: 'NR == 1 { print $NF }' | tr -d '\r')
212
+ elif command -v python3 >/dev/null 2>&1; then
213
+ digest=$(curl -fsSL --connect-timeout 10 --max-time 30 \
214
+ -H 'Accept: application/vnd.github+json' \
215
+ "https://api.github.com/repos/$repo/releases/tags/$version" 2>/dev/null \
216
+ | python3 -c 'import json, sys; asset = sys.argv[1]; release = json.load(sys.stdin); print(next((item.get("digest", "") for item in release.get("assets", []) if item.get("name") == asset), ""))' "$asset" 2>/dev/null \
217
+ | awk -F: 'NR == 1 { print $NF }' | tr -d '\r')
218
+ fi
219
+ if [[ "$digest" =~ ^[0-9a-f]{64}$ ]]; then
220
+ echo "$digest"
221
+ return 0
222
+ fi
223
+ # Older GitHub releases may not have an API digest. Try the companion
224
+ # checksum file published alongside the asset (a common convention).
206
225
  digest=$(curl -fsSL --connect-timeout 10 --max-time 30 \
207
226
  "https://github.com/$repo/releases/download/$version/$asset.sha256" 2>/dev/null \
208
227
  | awk '{print $1; exit}' | tr -d '\r')
@@ -284,15 +303,9 @@ managed_file_matches() {
284
303
  }
285
304
 
286
305
  github_download_and_extract() {
287
- local repo="$1" version="$2" asset="$3" outdir="$4"
288
- local tarball expected
306
+ local repo="$1" version="$2" asset="$3" outdir="$4" tarball
289
307
  tarball=$(github_download_release "$repo" "$version" "$asset" "$outdir") || return 1
290
- expected=$(github_release_asset_sha256 "$repo" "$version" "$asset") || expected=""
291
- if [[ "$expected" =~ ^[0-9a-f]{64}$ ]]; then
292
- verify_sha256 "$tarball" "$expected" || return 1
293
- else
294
- log_warn "No published SHA-256 digest for $repo/$asset; skipping integrity verification"
295
- fi
308
+ verify_github_release_asset "$repo" "$version" "$asset" "$tarball" || { rm -f "$tarball"; return 1; }
296
309
  extract_tarball "$tarball" "$outdir" || return 1
297
310
  return 0
298
311
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karnel-termux",
3
- "version": "4.17.31",
3
+ "version": "4.17.33",
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"