Skip to content

fix(termux): heartbeat on install + termux-all extras profile + install.sh network prereqs#21489

Merged
teknium1 merged 4 commits into
mainfrom
hermes/hermes-565884c2
May 7, 2026
Merged

fix(termux): heartbeat on install + termux-all extras profile + install.sh network prereqs#21489
teknium1 merged 4 commits into
mainfrom
hermes/hermes-565884c2

Conversation

@teknium1

@teknium1 teknium1 commented May 7, 2026

Copy link
Copy Markdown
Contributor

Salvages the four pure-Termux / install-UX commits from #21433 onto current main. Excludes the three commits in that PR that touched desktop-impacting code paths (TUI markdown list rendering, cli.py resize scrollback behavior, browser_tool lightpanda fallback logic, and a doctor.py venv-preference reorder). Those were bundled into #21433 under a title that only described the heartbeat change — they deserve their own scoped PRs.

Commits (all @adybag14-cyber)

  • fix(update): add heartbeat during dependency install — wraps the three subprocess.run dep-install calls in _install_python_dependencies_with_optional_fallback with a 30s elapsed-time heartbeat thread so hermes update doesn't look frozen during silent Rust/C build phases. Universal benefit, Termux-motivated.
  • fix: strengthen termux install network prerequisites — adds check_network_prerequisites() to scripts/install.sh that probes pypi + duckduckgo with curl before trying pkg installs; adds ca-certificates curl to the Termux package list; Termux-gated guidance on failure.
  • fix: add termux-all install profile and safe fallbacks — adds a new [termux-all] extra in pyproject.toml that bundles the extras known to resolve on Android (excludes matrix + voice which have broken Android wheels). Additive; doesn't touch existing [termux] or [all].
  • feat: add termux doctor fallback guidance for blocked extras — 14-line addition to doctor.py with Termux-specific fallback hints when an extra is unavailable.

Not included from #21433

Left to contributor to resubmit as separate scoped PRs if desired:

  • fix(termux): preserve CLI scrollback and harden lightpanda open fallback — removes \x1b[3J from ALL platforms' resize recovery (not Termux-gated). Also refactors lightpanda→Chrome fallback URL logic for every user.
  • fix(tui): stabilize list/url wrapping in assistant markdown — changes TUI+dashboard markdown list rendering globally. Needs embedded-TUI dashboard smoke test, not just messages.test.ts.
  • fix(termux): prefer active .venv and reduce doctor noise — reorders venv detection for every desktop user from (venv, .venv) to (active, .venv, venv). Defensible but cross-platform and deserves its own review.

Validation

scripts/run_tests.sh tests/hermes_cli/test_update_autostash.py tests/hermes_cli/test_doctor.py \
  tests/test_install_sh_termux_network_prereqs.py tests/test_termux_all_extra_compat.py \
  tests/hermes_cli/test_update_yes_flag.py tests/hermes_cli/test_cmd_update.py
# 76 passed

git log --diff-filter=A origin/main..HEAD --stat  # No stray files outside termux/install scope

Closes #21433.

@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

🔎 Lint report: hermes/hermes-565884c2 vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 7645 on HEAD, 7645 on base (➖ 0)

🆕 New issues (3):

Rule Count
invalid-argument-type 3
First entries
run_agent.py:6645: [invalid-argument-type] invalid-argument-type: Argument to function `build_anthropic_client` is incorrect: Expected `str`, found `str | dict[Unknown | str, Unknown | str | dict[str, str]] | Any | ... omitted 3 union elements`
run_agent.py:12521: [invalid-argument-type] invalid-argument-type: Argument to function `_is_oauth_token` is incorrect: Expected `str`, found `str | dict[Unknown | str, Unknown | str | dict[str, str]] | Any | ... omitted 3 union elements`
run_agent.py:12524: [invalid-argument-type] invalid-argument-type: Argument to function `len` is incorrect: Expected `Sized`, found `(str & ~AlwaysFalsy) | (dict[Unknown | str, Unknown | str | dict[str, str]] & ~AlwaysFalsy) | (Any & ~AlwaysFalsy) | ... omitted 3 union elements`

✅ Fixed issues (3):

Rule Count
invalid-argument-type 3
First entries
run_agent.py:12524: [invalid-argument-type] invalid-argument-type: Argument to function `len` is incorrect: Expected `Sized`, found `(str & ~AlwaysFalsy) | (dict[Unknown, Unknown] & ~AlwaysFalsy) | (Any & ~AlwaysFalsy) | ... omitted 3 union elements`
run_agent.py:6645: [invalid-argument-type] invalid-argument-type: Argument to function `build_anthropic_client` is incorrect: Expected `str`, found `str | dict[Unknown, Unknown] | Any | ... omitted 3 union elements`
run_agent.py:12521: [invalid-argument-type] invalid-argument-type: Argument to function `_is_oauth_token` is incorrect: Expected `str`, found `str | dict[Unknown, Unknown] | Any | ... omitted 3 union elements`

Unchanged: 4015 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

Comment thread tests/test_install_sh_termux_network_prereqs.py Dismissed
@teknium1 teknium1 merged commit 732a6c4 into main May 7, 2026
12 of 14 checks passed
@teknium1 teknium1 deleted the hermes/hermes-565884c2 branch May 7, 2026 20:04
@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard labels May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants