Skip to content

feat!: modernize onto the HiveMind bus-client 2.x stack - #30

Merged
JarbasAl merged 1 commit into
devfrom
modernize/deps-tests-docs-2026-06
Jun 25, 2026
Merged

feat!: modernize onto the HiveMind bus-client 2.x stack#30
JarbasAl merged 1 commit into
devfrom
modernize/deps-tests-docs-2026-06

Conversation

@JarbasAl

Copy link
Copy Markdown
Member

Modernizes the terminal client onto the bus-client 2.x stack and the shared CI.

Dependencies & packaging

  • Consolidated requirements.txt into pyproject.toml [project.dependencies]; deleted requirements.txt + MANIFEST.in (pyproject is the single source of truth). No setup.py/setup.cfg existed.
  • Bumped the whole graph to the bus-client 2.x stack via prerelease floor pins (resolved with no --pre):
    • hivemind-bus-client>=0.9.2a1, hivemind-presence>=0.0.2a2, ovos-bus-client>=2.0.0a3, ovos-spec-tools>=0.8.0a1
  • Renamed the test extra to [e2e] (hivescope>=0.5.2a1, hivemind-core>=4.6.2a1, hivemind-plugin-manager>=0.6.0a1, hivemind-ovos-agent-plugin>=0.3.0a1), kept a [test] alias, added a [license] extra.
  • Verified resolvable with uv pip compile --prerelease=allow --extra e2e → resolves to ovos-bus-client==2.2.0a1, hivescope==0.5.2a1, hivemind-core==4.6.7a1. No torch/ovos-audio heaviness (62 packages, thin client).

Single test directory

  • Removed the stale test/ dir. Dropped the redundant license_tests.py (license compliance is handled by the shared license-check workflow, as in sibling repos).
  • Removed dead importlib/skipif machinery from test_bridge1_conformance.py — the policy stack is now a hard [e2e] dependency, so nothing is skipped to dodge deps.

End-to-end coverage

  • Added tests/e2e/test_cli_client.py (9 tests) + a cli_harness fixture: boots a real hivemind-core master in-process over hivescope's loopback WebSocket and drives the real JarbasCliTerminal over a real HiveMessageBusClient. Asserts a typed utterance reaches the hub's agent bus and a speak from the hub is rendered back. Terminal I/O is mocked: stdin via the say() path (no input()/TTY), stdout by replacing terminal.speak. No network beyond loopback; no importorskip/skipif.

Workflows (all shared gh-automations @dev)

  • build_tests: now installs the [e2e] extra instead of pre_install_pip pins.
  • Added: lint, coverage, pip_audit, release_preview, repo_health (alongside existing license/publish/release).

Docs

  • Refreshed README (install-from-source, bus-client 2.x note, testing section, screenshot); added docs/development.md; removed the stale lowercase readme.md.

Local: pytest tests/ → 19 passed, 1 skipped, 2 xfailed; ruff check clean; python -m build OK.

🤖 Generated with Claude Code

Dependencies / packaging:
- consolidate requirements.txt into pyproject [project.dependencies]; drop
  requirements.txt + MANIFEST.in (pyproject is the single source of truth)
- bump the whole graph to the bus-client 2.x stack via prerelease floor pins
  (no --pre): hivemind-bus-client>=0.9.2a1, ovos-bus-client>=2.0.0a3,
  ovos-spec-tools>=0.8.0a1, hivemind-presence>=0.0.2a2
- rename the test extra to [e2e] (hivescope>=0.5.2a1, hivemind-core>=4.6.2a1,
  policy plugins); keep a [test] alias and add a [license] extra

Test layout:
- consolidate to a single tests/ directory; drop the stale test/ dir and the
  redundant license_tests.py (covered by the shared license-check workflow)
- remove dead importlib/skipif machinery from the bridge conformance test
  (the policy stack is now a hard [e2e] dependency)
- add tests/e2e/test_cli_client.py: boot a real hivemind-core master in-process
  over hivescope's loopback WebSocket and drive the real JarbasCliTerminal over a
  real HiveMessageBusClient; stdin/stdout I/O is mocked (no TTY, loopback only)

CI:
- build_tests installs the [e2e] extra instead of pre_install_pip pins
- wire missing shared gh-automations workflows @dev: lint, coverage, pip_audit,
  release_preview, repo_health

Docs:
- refresh README (install-from-source, bus-client 2.x note, testing) and add
  docs/development.md; drop the stale lowercase readme.md
- fix bare except in __main__.py; add .gitignore and untrack committed pyc

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@JarbasAl, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 23 minutes and 40 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e1ddf9bf-326e-4551-a79d-87f43cf98685

📥 Commits

Reviewing files that changed from the base of the PR and between 919499a and 3f41f95.

⛔ Files ignored due to path filters (4)
  • remote_cli.png is excluded by !**/*.png
  • tests/e2e/__pycache__/conftest.cpython-311-pytest-9.0.3.pyc is excluded by !**/*.pyc
  • tests/e2e/__pycache__/test_acl.cpython-311-pytest-9.0.3.pyc is excluded by !**/*.pyc
  • tests/e2e/__pycache__/test_bridge1_conformance.cpython-311-pytest-9.0.3.pyc is excluded by !**/*.pyc
📒 Files selected for processing (19)
  • .github/workflows/build_tests.yml
  • .github/workflows/coverage.yml
  • .github/workflows/lint.yml
  • .github/workflows/pip_audit.yml
  • .github/workflows/release_preview.yml
  • .github/workflows/repo_health.yml
  • .gitignore
  • MANIFEST.in
  • README.md
  • docs/development.md
  • docs/index.md
  • hivemind_cli_terminal/__main__.py
  • pyproject.toml
  • readme.md
  • requirements.txt
  • test/license_tests.py
  • tests/e2e/conftest.py
  • tests/e2e/test_bridge1_conformance.py
  • tests/e2e/test_cli_client.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch modernize/deps-tests-docs-2026-06

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown

I've done the heavy lifting! Here are the check results. 🏋️‍♂️

I've aggregated the results of the automated checks for this PR below.

📋 Repo Health

Evaluating the repository's overall condition. 📋

✅ All required files present.

Latest Version: 0.5.1a1

hivemind_cli_terminal/version.py — Version file
README.md — README
LICENSE — License file
pyproject.toml — pyproject.toml
⚠️ setup.py — setup.py
CHANGELOG.md — Changelog
hivemind_cli_terminal/version.py has valid version block markers

⚖️ License Check

A detailed legal audit of your PR. 📖

✅ No license violations found.

Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed.

🏷️ Release Preview

Checking if we've met all our release criteria. ✅

Caution

Breaking change — this PR will bump the MAJOR version (0.5.1a11.0.0a1).
Downstream dependents may break. Double-check compatibility before merging.

Current: 0.5.1a1Next: 1.0.0a1

Signal Value
Label (none)
PR title feat!: modernize onto the HiveMind bus-client 2.x stack
Bump major

✅ PR title follows conventional commit format.


🚀 Release Channel Compatibility

Predicted next version: 1.0.0a1

Channel Status Note Current Constraint
Stable Not in channel -
Testing Not in channel -
Alpha Not in channel -

🔍 Lint

The latest findings are now at your fingertips. ⌨️

ruff: no issues

📊 Coverage

Quantifying the invisible strength of your code. 💪

27.5% total coverage

Per-file coverage (3 files)
File Coverage Missing lines
hivemind_cli_terminal/__main__.py 0.0% 40
hivemind_cli_terminal/version.py 0.0% 5
hivemind_cli_terminal/__init__.py 46.9% 34

Full report: download the coverage-report artifact.

🔨 Build Tests

Assembling the puzzle pieces of your PR. 🧩

✅ All versions pass

Python Build Install Tests
3.10
3.11
3.12
3.13

The bits must flow. 🌊

@JarbasAl
JarbasAl merged commit e5ba54e into dev Jun 25, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant