James Rich and Claude Fable 5
3c8e94b40b
feat(debug): color-accurate mirror via DisplayPalette
...
DisplayMirrorManager reassembles FromRadio.display_palette chunks
(signature-keyed, defaults captured on the offset-0 chunk) into a
MirrorPalette; frames carry palette_signature and the renderer resolves
each pixel through the region table (last overlapping region wins,
matching firmware precedence) with RGB565 conversion, falling back to
monochrome when the referenced palette hasn't arrived. Renderer split
into MirrorFrameRenderer.kt.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-09 11:19:43 -05:00
James Rich and Claude Fable 5
e34dea7ac1
refactor(debug): harden screen mirror from adversarial review
...
Manager: validate format (MONO_VLSB only) and geometry (width/height must
describe exactly total_size bytes) so malformed device input can't reach
aspectRatio and crash; unit tests for reassembly, drops, restarts.
AdminController: setDisplayMirror/sendInputEvent become non-suspend
immediate sends (teardown-safe, input never queues behind bulk admin) and
gain requestDisplayFrame. Mirror tab: render each frame once into a 1:1
ImageBitmap scaled with FilterQuality.None (kills the fractional-scale
seams), gate controls on connection state, reset the toggle on disconnect,
stop the stream on tab dispose and ViewModel clear, add a one-shot Refresh,
inject AdminController/ConnectionStateProvider instead of RadioController.
Dispatch: display_frame test coverage incl. revoked-session.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-09 11:19:43 -05:00
James Rich and Claude Fable 5
c33fa4d225
feat(debug): PoC live device screen mirror + remote D-pad (Mirror tab)
...
Consumes the DisplayFrame PoC protobufs (2.99.0-screen-mirror-poc-SNAPSHOT
from mavenLocal, useMavenLocal committed on this branch): DisplayMirrorManager
reassembles FromRadio.display_frame chunks into MirrorFrame snapshots,
AdminController gains setDisplayMirror + sendInputEvent, and the Debug panel
gains a Mirror tab rendering the device's 1bpp framebuffer live with a D-pad
driving the firmware InputBroker. PoC: tab strings deliberately unlocalized.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-09 11:19:43 -05:00
James Rich
1fe80834e1
fix(network): never send heartbeat nonce 1, the firmware NodeInfo-ping trigger ( #7078 )
2026-09-08 22:56:12 +00:00
James Rich
0d15707f9a
fix(firmware): move firmware artifact fetching onto the R2 hosts ( #7073 )
2026-09-08 15:06:06 -05:00
James Rich
5a0cb5cf41
feat: mark nodes not heard since the LoRa config changed ( #7055 )
2026-09-07 10:44:43 +00:00
James Rich
a5f7c5d917
feat(firmware): factory erase through the OTAFIX bootloader when the drive advertises it ( #7058 )
2026-09-06 14:46:59 +00:00
Jeremiah K
e2d033ae6f
fix(connections): scope region warnings to the active connection ( #7015 )
2026-09-03 19:31:17 +00:00
James Rich and Claude Sonnet 5
60019db962
feat(ui): blend noise floor into signal quality rating (design#15) ( #7009 )
...
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com >
2026-09-02 20:21:51 +00:00
James Rich
ca231c3db0
ci: clear the recurring warnings and dead job the workflow logs carry ( #6982 )
2026-08-31 17:08:38 +00:00
James Rich
ab0c8d4dba
fix(ai): bound assistant messages at what the send path will actually encode ( #6970 )
2026-08-30 23:35:04 +00:00
James Rich and Claude Fable 5
ce137a7f5e
feat(discovery): suppress beacon invitations for channels the radio already has ( #6964 )
...
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-08-30 18:05:25 +00:00
James Rich
f78268581e
feat(messaging): mark unread, swipe row actions, and pinned conversations ( #6857 )
2026-08-24 20:44:07 +00:00
James Rich
1ab4da0fa6
feat(messaging): per-contact drafts and a quieter composer ( #6851 )
2026-08-24 10:43:59 -05:00
James Rich
e549d24ea3
fix(messaging): clear and suppress notifications for the conversation on screen ( #6849 )
2026-08-24 15:01:46 +00:00
James Rich and Claude Fable 5
5447674bb4
fix(connection): extend BLE handshake deadlines while config progress flows ( #6848 )
...
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-08-24 06:18:42 -05:00
James Rich and Claude Sonnet 5
99075c5dbe
feat(hardware): fetch the maintenance UF2 manifest from the API, digest-pinned ( #6803 )
...
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com >
2026-08-21 17:58:51 +00:00
James Rich and Claude Sonnet 5
4651c85361
feat(hardware): fetch bootloader OTA quirks from the API, seeded from the bundled asset ( #6802 )
...
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com >
2026-08-21 13:23:32 +00:00
James Rich
2df817db7a
fix(node): make node-list search case-insensitive for non-ASCII names ( #6753 )
2026-08-17 17:37:23 +00:00
James Rich and Claude Opus 5
19bb682c9c
feat(firmware): add nRF52/RP2040 factory erase and OTAFIX bootloader upgrade over USB ( #6526 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-08-17 16:43:07 +00:00
Jeremiah K
e9d09a3380
fix(lifecycle): harden packet admission and transport ownership ( #6716 )
2026-08-15 21:44:17 +00:00
99c5be7858
fix(notifications): stop repeated protected position alerts ( #6700 )
...
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
Co-authored-by: James Rich <james.a.rich@gmail.com >
2026-08-14 13:08:40 +00:00
simulationstation
2f387369c1
fix(messaging): disambiguate sender-scoped packet IDs ( #6624 )
2026-08-13 13:50:37 +00:00
simulationstation
b4bedd92fc
fix(settings): restore channels from device profiles ( #6618 )
2026-08-13 12:10:18 +00:00
James Rich and Claude Fable 5
b3e3804b78
fix(database): recover from Room's silent connection-pool wedge ( #6608 ) ( #6658 )
...
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-08-13 03:08:37 +00:00
James Rich and Claude Opus 5
492afbde5c
fix(telemetry): repoint 1-Wire temperature at per-channel fields, adopt ADC voltage ( #6653 )
...
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-12 19:39:54 +00:00
James Rich and Claude Fable 5
dda971b5ce
fix(messaging): time out orphaned "Sending..." messages into a retryable failure ( #6630 )
...
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-08-12 02:10:30 +00:00
James Rich and Claude Opus 5
bfb66eb988
fix(data): stop "1 hour" log retention from wiping the MeshLog table ( #6635 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-08-12 02:01:32 +00:00
simulationstation
fd8414abe3
fix(database): delete nodes and metadata atomically ( #6623 )
2026-08-12 01:36:57 +00:00
simulationstation
7a7bc50a75
fix(messaging): wait for shared-contact routing ACK ( #6603 )
2026-08-11 15:35:07 +00:00
James Rich and Claude Opus 5
1dac0f3ac9
fix(service): unwedge the inbound pipeline behind stale-Connected zombies ( #6587 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-08-06 00:57:35 +00:00
Jeremiah K
2f191868e9
fix(database): recover wedged observer pools ( #6540 )
2026-08-01 21:39:16 +00:00
Jeremiah K
064c8c92d9
fix(nodes): suppress alerts during initial database sync ( #6538 )
2026-08-01 21:38:51 +00:00
James Rich and Claude Opus 5
07d253130b
refactor(di): replace Koin string qualifiers with distinct types ( #6522 )
...
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-30 20:56:07 +00:00
James Rich and Claude Opus 5
2d20cd8a47
fix(ui): give rx_snr real presence semantics end to end ( #6523 )
...
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-30 16:40:41 +00:00
James Rich and Claude Opus 5
d714b22571
chore(deps): bump protobufs to 2.7.26.140 (optional rx_time) ( #6510 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-07-29 18:08:24 +00:00
James Rich and Claude Fable 5
be320ec622
fix(mqtt): stop reporting transport failures as credential rejections ( #6506 )
...
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-28 20:09:23 -05:00
James Rich and Claude Fable 5
8a4e2e3567
fix(connections): send set_time_only at MyNodeInfo instead of onNodeDbReady ( #6503 )
...
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-28 23:14:19 +00:00
James Rich and Claude Opus 5
39139398e6
fix(model): rssi explicit presence for protobufs 2.7.26.138 ( #6498 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-07-28 21:12:28 +00:00
James Rich and Claude Opus 5
6c32af9a84
test: revive 80 dormant tests in eight abstract Common*Test classes ( #6501 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-07-28 21:11:42 +00:00
James Rich and Claude Opus 5
b4105e3e3f
fix(event): honor disabled node events, gate brand URLs, observe the manifest ( #6499 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-07-28 21:09:13 +00:00
James Rich and Claude Opus 5
5235b8fc51
fix(logging): stop reporting expected conditions as crashes ( #6470 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-07-27 18:53:54 +00:00
James Rich and Claude Opus 5
2d63db8dd4
fix(mqtt): scope user-CA trust to the MQTT connection ( #6464 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-07-27 16:35:32 +00:00
James Rich and Claude Opus 5
01cd54907d
chore: harden untrusted-input handling and diagnostic output ( #6441 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-07-26 08:32:07 -05:00
James Rich and Claude Opus 5
237c0674c4
fix(data): don't let coarse position reports overwrite precise coordinates ( #6432 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-07-25 19:24:46 +00:00
James Rich and Claude Opus 5
c75223c43a
fix(messaging): use mesh time for message timestamps and grouping ( #6422 )
...
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-07-24 22:12:13 +00:00
James Rich and Claude Opus 4.8
bfbf74df1e
fix(channels): store channel set per-device to stop cross-device duplicates ( #4623 ) ( #6409 )
...
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-24 13:57:39 -05:00
Jeremiah K
8cf8214162
fix(hardware): throttle repeated catalog refreshes for cache misses ( #6399 )
2026-07-24 16:29:10 +00:00
James Rich and Claude Opus 4.8
c07c9141c0
fix(settings): stop dropping admin config responses (0% stall, missing remote channels) ( #6391 )
...
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-23 19:58:13 +00:00
Jeremiah K
09555a4398
fix(node): reconcile stale identity replays after renumbering ( #6259 )
2026-07-22 23:53:43 +00:00