Release 0.4.0a1#19
Open
github-actions[bot] wants to merge 20 commits into
Open
Conversation
Configure Renovate
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* feat!: modernize to hivemind-bus-client + pyproject packaging Port the pre-rename Mycroft-era stack to the modern HiveMind ecosystem and move packaging off setup.py. - packaging: setup.py -> pyproject.toml with dynamic version (attr=hivemind_webchat.version.__version__); add __version__ + VERSION_BLOCK to version.py; drop tracked build/dist/egg-info artifacts; add .gitignore. - deps: requirements.txt now tornado + hivemind-bus-client>=0.9.0,<1.0.0 + ovos-utils. all_in_one/requirements.txt drops jarbas_hive_mind==0.10.7 and the mycroft-lib pins. - client port: new hivemind_webchat/bridge.py provides an optional headless WebchatBridge built on HiveMessageBusClient/HiveMessage/HiveMessageType. The browser UI keeps talking to the hub directly via HiveMind-js. - all_in_one: launch.py rewritten to serve the UI + optional bridge; the bundled Mycroft bus.py/skills.py/config.json and the jarbas_hive_mind listener are removed (hub=hivemind-core, skills=ovos-core now). Dockerfile updated to python:3.11 + modern deps. - CI: replace legacy publish_*/build/license/dev2master workflows with the OpenVoiceOS/gh-automations reusable set @dev (build-tests, license-check, publish-alpha/stable, conventional labels). - tests: consolidate to a single tests/ dir; add tests/test_smoke.py covering import, version, server construction (no socket), and bridge construction (mocked client, no connect). Refs #12 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat!: modernize JS consumer to HiveMind Protocol V1 client Load the modernized HiveMind-js V1 client (PBKDF2 password handshake + AES-GCM, native Web Crypto) from jsDelivr and drop the no-longer-needed asmcrypto.js / webcrypto-shim.js. Wire app.js + index.html to the V1 API: the connection form now takes a Password (used for the handshake) instead of a raw encryption key, passed straight to connect(host, port, user, key, pw). Add a Node end-to-end test (tests/e2e.mjs) that loads the exact client the page ships, connects to a real loopback hivemind-core hub (tests/hub_fixture.py via hivescope), performs the V1 handshake, and asserts the hub decrypts and receives an encrypted utterance — plus an npm test script and a node CI workflow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(ci): pin hivescope prerelease floor for js-e2e hub fixture The js-e2e job installed plain `pip install hivescope`, which resolves the stable hivescope 0.1.0 — that release predates the loopback + get_client_by_id fixes (hivescope#26), so the loopback hub fixture saw 0 injected utterances and the handshake/round-trip test failed despite the V1 handshake completing. Pin the published prerelease floors so a plain pip install (no --pre, no git branch) resolves the 2.x stack: hivescope>=0.5.1a1 and hivemind-bus-client>=0.9.2a1. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(ci): floor hivemind-core to the 2.x prerelease line for js-e2e The previous floor still let plain pip pull stable hivemind-core 4.0.0, which pins an old bus-client and so conflicts with hivemind-bus-client>=0.9.2a1 (ResolutionImpossible: 4.0.0 vs ovos_bus_client>=2.0.0a3). Floor hivemind-core>=4.6.7a1 so the whole 2.x stack (core + bus-client + ovos-bus-client>=2.0.0a3 + hivescope>=0.5.1a1) resolves under a plain pip install with no --pre and no git branch. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat!: full-scope modernization — pyproject deps, shared CI, docs, Python e2e Bring the modernization PR to the same bar as the modernized satellites. Packaging (pyproject = single source of truth) - Inline runtime deps into pyproject [project.dependencies]; drop requirements.txt, MANIFEST.in, and all_in_one/requirements.txt. - Floor hivemind-bus-client>=0.9.2a1,<1.0.0 (2.x line; prerelease min-pin, no --pre). package-data ships static/ + templates/. - Add [e2e] extra with the HiveMind 2.x stack + transitive prerelease floors (hivescope, hivemind-core, ovos-bus-client, ovos-plugin-manager, hivemind-ovos-agent-plugin, hivemind-plugin-manager, json-database, hivemind-sqlite-database, hivemind-json-db-plugin, hivemind-websocket-protocol, ovos-utils, ovos-workshop). `test` alias kept for shared CI. Resolves with uv, no --pre. Dockerfile no longer pins deps separately. CI (shared OpenVoiceOS/gh-automations @dev only) - build_tests: install_extras=e2e + smoke tests across py3.10-3.13. - Add e2e_tests, coverage, lint, pip_audit, release_preview, repo_health. - license_tests: exclude first-party HiveMind/OVOS packages. Keep js_e2e_tests. docs/ - Full tree: index, getting-started, configuration, architecture (Python backend + JS frontend + headless bridge), deployment, dependencies, testing, troubleshooting. README gains docs + deps notes and a two-suite Tests section. Python e2e (tests/e2e/) - Real hivemind-core master in-process (hivescope loopback) + the real WebchatBridge over a real HiveMessageBusClient. Chat message -> hub -> recognizer_loop:utterance; hub speak -> routed back -> rendered. Only the browser/websocket frontend is mocked. No importorskip/skipif. Single tests/ dir. JS e2e (js_e2e_tests) kept and verified. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test: use strong e2e satellite passphrase for poorman_handshake strength floor --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat: adopt HiveMind-js protocol v3 (Noise) with v1 fallback The CDN-loaded hivemind-js client (dev) negotiates the highest protocol version both peers support: v3 over the AES-GCM Noise suite where the hub offers it, else the legacy v1 password handshake. - connect() now forwards an options object (provisioned psk, server key pin) read from a new optional 'Protocol v3' section of the connect dialog - password alone negotiates v3 against a PBKDF2-KDF hub; document the argon2id limitation (Web Crypto has no argon2id -> provisioned PSK required) - add tests/v3_negotiation.test.mjs (+ test:v3 script) exercising the browser v3 negotiation + PBKDF2 PSK derivation path directly Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs: describe full v3 ChaChaPoly+argon2id parity (password alone suffices) Against a v3 hub HiveMind-js negotiates the default ChaChaPoly Noise suite and derives PSK = argon2id(password, SHA-256(node_id)) in-browser via @noble, with full cipher parity to hivemind-core and no server-side configuration. Update the README, the connect-dialog Protocol v3 help text, and code comments: the password alone is enough; provisioned PSK and PBKDF2 remain optional fallbacks; only a minimal bundle without @noble falls back to AES-GCM/PBKDF2. Code wiring unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs: name the central server hivemind-core, not hub Refer to the central server explicitly as hivemind-core throughout the README. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs: add pre-release warning Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human review requested!