Commit Graph
10 Commits
Author SHA1 Message Date
swaitsandClaude Opus 4.7 e2ecbc747d fix(ai): forbid preamble in response-shortener output
Tighten the system/user prompts so the shortener returns ONLY the
rewritten message — no "Here's a version at N characters:" preamble,
no quotes, no labels. Previously such preamble was being transmitted
on-air and consumed the byte budget, causing the actual content to
truncate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 13:34:29 -06:00
swaits 61cb91c490 fix(meshcore): use correct syncword 2026-05-11 14:46:34 -06:00
swaits d92b6cb950 chore(deps): bump donglora to 1.1.0 for per-board tx_power clamping 2026-04-25 20:46:50 -06:00
swaits 72dd8fefc4 chore: release 1.0.0
Bump version to 1.0.0 and pin the donglora dep to >=1.0.0,<2.0.0 (PyPI), matching the freshly-published donglora 1.0.0 client.


Also knock out two preexisting lint failures surfaced by the release-time `just check` gauntlet:

* orac/crypto.py: drop the redundant int() wrap around round() (RUF046).

* orac/state.py: widen _state value type to include list[list[float]] so heard_positions type-checks under pyright.
v1.0.0
2026-04-22 09:58:12 -06:00
swaits a0a26a32f1 feat!: orac on donglora 1.0 async Dongle API
Upgrade the MeshCore bot to talk the DongLoRa Protocol v2 via donglora 1.0.0.

* BotRuntime now holds a donglora.Dongle instead of a raw serial conn. All transmit / receive / ADVERT plumbing goes through the async Dongle surface.

* Drop the direct pyserial imports; SerialException handling is now dongle-level (reconnect is handled by donglora.connect()).

* Update constants and dispatch to match the Dongle accessors (info, set_config, transmit, start_rx) exposed by the 1.0 client.
2026-04-22 09:57:01 -06:00
swaits 54228a6f92 feat: advertise IQR-trimmed mean position derived from heard repeater adverts 2026-04-16 13:47:18 -06:00
swaits 228432f9e3 refactor: split bot.py into runtime/dispatch/worker modules; add retry scheduler, route TTL, ack tracking, follow-up screener, structured event log, and test suite 2026-04-16 13:47:17 -06:00
swaitsandClaude Opus 4.6 9e6f171c5d feat!: modularize into orac/ package, add Public channel, deduplicate
Split 1424-line monolith into orac/ package with clean separation:
- constants.py — bot identity, radio config, triggers, limits
- crypto.py — Ed25519 identity, channel/peer crypto, ECDH
- meshcore.py — packet parsing/building, routing, dedup, node registry
- ai.py — Claude API integration, query extraction
- state.py — JSON persistence, history tracking
- bot.py — main loop, packet dispatch, connection management

Removed duplicated donglora library code (cobs_frame, read_frame,
encode_radio_config, encode_command, decode_response) — now uses
donglora.send/recv/connect directly.

Added MeshCore Public channel (fixed PSK 8b3387e9...cd72) and
expanded built-in hashtag channels: #nodeops, #repeater-ops, #test,
#weather, #protest, #general, #bot, #net, #emcomm.

Replaced ANSI print() with stdlib logging (color formatter for TTY).
Fixed dependency (donglora-python -> donglora). Strict ruff linting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 13:34:18 -06:00
swaits 9130b3c478 chore: add consistent mise.toml, justfile, and tooling config 2026-04-07 14:41:28 -06:00
swaits 5f1e778a2d chore: massive repo reorganization 2026-04-03 10:28:38 -06:00