Skip to content

Release 0.5.0a2#94

Open
github-actions[bot] wants to merge 24 commits into
masterfrom
release-0.5.0a2
Open

Release 0.5.0a2#94
github-actions[bot] wants to merge 24 commits into
masterfrom
release-0.5.0a2

Conversation

@github-actions
Copy link
Copy Markdown

Human review requested!

renovate Bot and others added 24 commits December 18, 2025 09:25
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* fix: add warning if websocket connection isnt open

* fix: add warning if websocket connection isnt open

* 📝 Add docstrings to `fix/ws_open_chck` (#84)

* 📝 Add docstrings to `fix/ws_open_chck`

Docstrings generation was requested by @JarbasAl.

* #83 (comment)

The following files were modified:

* `hivemind_bus_client/client.py`

* Update client.py

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: JarbasAI <33701864+JarbasAl@users.noreply.github.com>

* chore: avoid infinite recursion

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
JSON stores encoded values as str, but z85base91 decoders expect bytes.
Added _to_bytes() conversion for ciphertext, tag, and nonce before
passing to the decoder.

This fixes all Z85P encoding roundtrip failures.

AI-Generated Change:
- Model: Claude Opus 4.6
- Intent: Fix Z85P decode — not an upstream bug, just str/bytes mismatch
- Impact: All 7 encoding schemes now roundtrip correctly
- Verified via: uv run pytest test_embedded_interop.py (all Z85P tests pass)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: HiveMessage.__init__ nested payload normalization and BitStream bool bug

- HiveMessage.__init__ now normalizes nested HiveMessage payloads to
  dict via as_dict, matching the behavior of the payload setter.
- Fix _decode_bitstring_v1 using bool(BitStream) which checks length
  (always True) instead of .bool which reads the actual bit value.
- Replace bare except with except Exception in deserialize().

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add docs/, FAQ.md, and update README

- docs/index.md: overview, quick start, component index
- docs/api.md: HiveMessage, HiveMessageType, HiveMessageBusClient, BinaryDataCallbacks, NodeIdentity
- docs/cli.md: all hivemind-client CLI commands
- docs/examples.md: chat, HTTP, TTS, intercom, broadcast examples
- docs/identity.md: NodeIdentity and credential management
- docs/installation.md: install and dependencies
- FAQ.md: comprehensive Q&A covering connection, messages, encryption, binary protocol, CLI
- README.md: fix install command (pip → uv pip)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: add unit tests for message, encryption, and serialization

- test_message.py: HiveMessage init, payload types, serialization
  roundtrips, routing, item access (30 tests)
- test_encryption.py: AES-GCM, ChaCha20, JSON encrypt/decrypt
  roundtrips across all encodings (26 tests)
- test_serialization.py: bitstring encode/decode for all message
  types, compression, binary payloads (11 tests)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* build: migrate from setup.py to pyproject.toml

- Add pyproject.toml with setuptools backend, dynamic version from
  hivemind_bus_client.version.VERSION, all deps from requirements.txt
- Add VERSION string to version.py for setuptools.dynamic
- Update classifiers to Python 3.10-3.13
- setup.py kept for backwards compatibility

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: migrate to standard OpenVoiceOS gh-automations@dev workflows

Replace custom TigreGotico/gh-automations@master workflows with
standard OpenVoiceOS/gh-automations@dev reusable workflows.

Added: build-tests, lint, coverage, license_check, pip_audit,
  release-preview, repo-health, conventional-label
Replaced: release_workflow, publish_stable (removed inline PyPI
  publish and sync jobs — now handled by reusable workflow)
Removed: build_tests.yml (old custom), conventional-label.yaml (dup),
  python-support.yml (deprecated)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: add type hints and docstrings to decorators.py and util.py

- decorators.py: full type annotations and docstrings for all classes
  and decorator functions (HiveMessageListener, HivePayloadListener,
  on_hive_message, on_mycroft_message, etc.)
- util.py: full type annotations and docstrings for all functions,
  replace bare except with except Exception
- version.py: add __version__ alias (OVOS standard)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
#90)

* feat: add flood-based PING network discovery and hive topology mapping

Add HiveMapper/NodeInfo (hive_map.py) to collect PING responses and
render the network topology as ASCII tree or JSON. Satellites now handle
PROPAGATE(PING) with flood_id deduplication and respond with their own
PING upstream. New `hivemind-client ping` CLI command initiates a flood
and displays the reachable hive map.

Also fixes:
- HiveMessage.__init__ now normalizes nested HiveMessage payloads
- BitStream bool() bug in serialization (was always True)
- Replace bare except with except Exception
- Remove dead downstream forwarding from handle_broadcast/handle_propagate

Includes initial docs/ structure, FAQ, and CLI reference.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address CodeRabbit PR feedback for ping feature

- hive_map.py: reject empty flood_id in on_ping(), guard against
  malformed (non-dict) route hops, rename rtt_ms → latency_ms with
  docstring clarifying it's clock-diff not true RTT
- protocol.py: fix _handle_ping docstring (remove false claim about
  hive.ping.received emit), replace cache clear() with pop() eviction
  to avoid re-accepting in-flight duplicates
- scripts.py: validate host before adding ws:// scheme so empty host
  is caught by the RuntimeError check, bail on connection timeout
- message.py: guard route property against non-dict entries

Skipped:
- docs/identity.md fixes (not in this PR scope, addressed in docs branch)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant