kamilkrzywda
b7b2044d84
mesh: GET /api/forwarded — last 100 messages forwarded to opencode; v0.16.0 docs
CI / build + unit (pull_request) Successful in 41s
2026-09-25 15:51:43 +00:00
kamilkrzywda
bd18bdfd8a
docs: v0.15.0 changelog, README/AGENTS respond + notifier wrapper updates, version bump
2026-09-25 15:39:52 +00:00
kamilkrzywda
83e47c9609
docs+changelog: v0.14.0 — in-process opencode notifier replaces the forwarder
CI / build + unit (pull_request) Successful in 1m0s
2026-09-25 14:14:37 +00:00
kamilkrzywda
1b712f7eee
battery: send alerts on channel "testowy" (index 2), not the pinned send channel
...
CI / build + unit (pull_request) Successful in 1m0s
Owner request. BatteryAlertService reads new env BATTERY_ALERT_CHANNEL
(default 2) at construction and passes it through MeshService.sendText,
which gains an optional trailing channel argument defaulting to the
pinned MESH_SEND_CHANNEL — every other sender is untouched. Threshold,
cooldown, merged one-message-per-cycle format and @mentions unchanged.
2026-09-25 13:02:56 +00:00
kamilkrzywda
d0b71e6e91
battery: low-battery alert module (v0.13.0)
...
BatteryAlertModule + BatteryAlertService wired into app.module like
the weather module. Every BATTERY_CHECK_INTERVAL_MS (default 60 s) the
service scans the node state backing GET /api/nodes and broadcasts a
single-packet '⚠️ @!<8-hex> battery low: <X>% (<name>)' alert for every
node at or below BATTERY_ALERT_THRESHOLD percent (default 20, <= on
purpose) not alerted within BATTERY_ALERT_COOLDOWN_MS (default 6 h,
in-memory map — resets on restart). Sends ride the pinned send channel
via MeshService.sendText like every other bot send.
2026-09-25 12:39:45 +00:00
kamilkrzywda
6ce0b1ae7b
MESHTASTIC.md: questions get their answer on the channel (owner standing rule) ( #32 )
CI / build + unit (push) Successful in 20s
2026-09-25 14:09:10 +02:00
kamilkrzywda
15d93ec2a4
Optional replyId on send (API + MCP) — protocol-level threaded replies ( #31 )
CI / build + unit (push) Successful in 33s
2026-09-25 13:53:47 +02:00
kamilkrzywda
0909fbc6e2
MESHTASTIC.md: back to channel-only replies (no DMs) ( #30 )
CI / build + unit (push) Successful in 33s
2026-09-25 13:00:05 +02:00
kamilkrzywda
b8ae5d39f7
MESHTASTIC.md: reply to senders as DMs; always respond before starting work ( #29 )
CI / build + unit (push) Successful in 33s
2026-09-25 12:52:11 +02:00
kamilkrzywda
5999159e17
Forwarder: resolve opencode workspace/session dynamically per request ( #28 )
CI / build + unit (push) Successful in 32s
2026-09-25 12:24:39 +02:00
kamilkrzywda
36021ec2e8
Retry notify webhook POST with backoff (2 s / 10 s / 30 s) before dropping ( #27 )
CI / build + unit (push) Successful in 1m2s
2026-09-25 11:48:39 +02:00
kamilkrzywda
dca0dfa894
Run notify forwarder as a compose service (host networking, restart policy) ( #26 )
CI / build + unit (push) Successful in 19s
2026-09-25 10:49:51 +02:00
kamilkrzywda
5e03546f40
Fix weather module DI (MeshService export + value import) and pass WEATHER_CRON through compose ( #25 )
CI / build + unit (push) Successful in 31s
2026-09-25 10:01:38 +02:00
kamilkrzywda
261f7ed18c
Hourly cron weather report for Lublin (Open-Meteo) broadcast on mesh ( #24 )
CI / build + unit (push) Successful in 1m5s
2026-09-25 09:48:03 +02:00
kamilkrzywda
180a9ce134
Add MESHTASTIC.md communication rules + AGENTS.md mention ( #23 )
CI / build + unit (push) Successful in 1m5s
2026-09-25 09:37:30 +02:00
kamilkrzywda
d3d1913b83
Self-echo filter for notify webhook (skip own-node messages) ( #22 )
CI / build + unit (push) Successful in 43s
2026-09-25 08:51:03 +02:00
kamilkrzywda
3d0e369230
Notify webhook also fires for injected messages (channel match) + compose env passthroughs ( #21 )
CI / build + unit (push) Successful in 35s
2026-09-25 03:56:53 +02:00
kamilkrzywda
024dabda97
Outbound notification webhook (MESH_NOTIFY_URL) on RX text — issue #17 ( #20 )
CI / build + unit (push) Successful in 36s
2026-09-25 03:35:50 +02:00
kamilkrzywda
74f3080626
Persist message history to SQLite with 1s poller ( #15 ) ( #19 )
CI / build + unit (push) Successful in 1m4s
2026-09-25 02:46:17 +02:00
kamilkrzywda
756086d107
Inbox injection endpoint: POST /api/messages + MCP inject_message ( #12 ) ( #18 )
CI / build + unit (push) Successful in 1m14s
2026-09-25 01:51:50 +02:00
kamilkrzywda
0571c7095e
Telemetry stream: GET /api/telemetry + MCP get_telemetry ( #16 )
CI / build + unit (push) Successful in 21s
2026-09-24 23:56:11 +02:00
kamilkrzywda
ba5e60daf0
Fix BigInt serialization in GET /api/device (500 on real hardware) ( #14 )
CI / build + unit (push) Successful in 18s
2026-09-24 23:14:32 +02:00
kamilkrzywda
4beaa377c4
Device info endpoint + richer node summaries (GET /api/device, MCP device_info) ( #13 )
CI / build + unit (push) Successful in 36s
2026-09-24 22:46:40 +02:00
kamilkrzywda
b31fb35464
MCP server at POST /mcp (official SDK, stateless Streamable HTTP) ( #11 )
CI / build + unit (push) Successful in 1m6s
2026-09-24 20:39:45 +02:00
kamilkrzywda
108aa400d3
Publish on 'test' channel (index 3) by default ( #10 )
CI / build + unit (push) Successful in 34s
2026-09-24 19:44:11 +02:00
kamilkrzywda
f640f6658c
Send to by node name or broadcast sentinel (GET-free resolution via node DB) ( #9 )
CI / build + unit (push) Successful in 33s
2026-09-24 16:47:51 +02:00
kamilkrzywda
57ad27d66f
Message history with delivery tracking (GET /api/messages) ( #8 )
CI / build + unit (push) Successful in 32s
2026-09-24 16:19:32 +02:00
kamilkrzywda
5292303786
Node database: collect nodes during sync, expose GET /api/nodes ( #7 )
CI / build + unit (push) Successful in 39s
2026-09-24 15:37:03 +02:00
kamilkrzywda
adfbc9800b
Send want_config_id on connect to trigger initial sync ( #6 )
...
CI / build + unit (push) Successful in 39s
Send want_config_id on connect to trigger initial sync (#6 )
Firmware only streams myInfo/channels/configComplete after receiving a
ToRadio with want_config_id — the service previously wrote nothing on
connect, so /api/channels stayed [] and myNodeNum null. v0.1.4.
2026-09-23 22:42:03 +02:00
kamilkrzywda
3062f40899
feat: pin sends to testowy channel (index 2), never primary (v0.1.3) ( #5 )
...
CI / build + unit (push) Successful in 36s
feat: pin sends to testowy channel (index 2), never primary (v0.1.3)
2026-09-23 22:06:01 +02:00
kamilkrzywda
266aadf635
ci: Gitea Actions test pipeline (v0.1.2) ( #4 )
...
CI / build + unit (push) Successful in 40s
ci: Gitea Actions test pipeline (v0.1.2)
2026-09-23 21:53:57 +02:00
kamilkrzywda
22a209e654
fix: bridge port is 4403, not 4003 (v0.1.1) ( #3 )
...
fix: bridge port is 4403, not 4003 (v0.1.1)
2026-09-23 21:40:36 +02:00
kamilkrzywda
75a10c195f
feat: /api/channels endpoint, /api namespace, Scalar at root (v0.1.0) ( #2 )
...
feat: /api/channels endpoint, /api namespace, Scalar at root (v0.1.0) — closes #1
2026-09-23 21:05:22 +02:00
kamilkrzywda
83e46b8f07
Initial commit: NestJS meshtastic bridge bot
2026-09-23 17:36:11 +00:00