Fix: Additional ruff issues - RUF006, RUF002/RUF003, and Unicode
GitHub Actions
8b8f140
- RUF006: Store reference to asyncio.create_task in model_distribution.py
- RUF002/RUF003: Replace Unicode characters with ASCII equivalents in comments
- Fixed en-dash and multiplication sign in docstrings
fix: asyncio.get_running_loop() across backends; expand mesh/capability/model UI docs
GitHub Actions
8ee8138
asyncio fix (Invalid file descriptor: -1 on Python 3.10):
Replace asyncio.get_event_loop() with get_running_loop() in all async
methods across 13 files (24 occurrences). get_event_loop() can silently
create a new loop when called outside a running loop, which gets orphaned
and triggers ValueError in __del__ on GC. get_running_loop() raises
RuntimeError immediately if no loop is running — failing fast is correct.
Settings tab - 'Join This Mesh' section rewritten with:
- Option A (same LAN / mDNS): exact commands, timing, verify step
- Option B (invite QR): redeem command, HF Space invite URL example
- Option C (relay): config.toml snippet
- Connecting 3+ meshes: multi-community bridge pattern with code
Getting Started tab - new sections:
- 'Calling a Capability on Any Node': bus.call() Python + CLI examples
for llm.chat / rag.query / chat.send / market.list / registry.all()
- 'Getting Model Weights from a Peer Node': model.list / model.pull /
model.status…
fix: 0 test failures; FileService; real RagService; emergency probe; chat return
GitHub Actions
4aaae80
TESTS:
- conftest.py: nest_asyncio.apply() fixes Python 3.13 + pytest-asyncio 0.26
event-loop isolation — was causing 32 cross-test failures; now 102 passed 0 failed
- pyproject.toml: asyncio_mode=strict + asyncio_default_fixture_loop_scope=function
SERVICES (no mocks, no fakes in production):
- hearthnet/services/__init__.py: import real RagService not demo.RagService
- hearthnet/services/files/: new FileService providing file.put/file.get/file.list/
file.delete via bus (BLAKE3 CID, in-memory or disk store)
- node.py: register FileService in both install_demo_services and install_services
- marketplace: add market.delete capability (alias for expire)
UI BUGS FIXED:
- ui/tabs/chat.py: add missing return in except block (was returning None on error)
- ui/tabs/emergency.py: wire Run Connectivity Probe button with sync probe +
show results; was defined but never connected
- ui/tabs/settings.py: gen_invite gracefully handles missing nacl/community manifest
APP.PY (HF Space):
- Reg…
feat: implement all M01-M13, X01-X04 modules + quality gate fixes