- /api/repeaters: bad ?limit= falls back to 25 instead of crashing the handler
- repeaters.load(): tolerate a corrupted repeaters.json (JSONDecodeError -> [])
- tune_repeater/do_POST: catch TypeError so a null field yields {ok:false} not a reset
- offset amount (0x0D) is REJECTED (NG) by the radio -> removed the offset
codec + set_offset/get_offset; tune_repeater now sets only duplex direction
(radio applies its configured auto-offset)
- repeater tone (0x1B/00) uses a 3-byte field (00 + 2-byte BCD); set_tone
prepends the pad, get_tone strips it
- duplex (0x0F) and tone-switch (0x16/42) verified working
- added get_duplex; verified full tune_repeater on a live repeater (all steps OK)