Commit Graph

  • d37403b221 docs(packet-capture): document a working waev.app MQTT broker docs/waev-mqtt-broker agessaman 2026-10-25 16:42:31 -07:00
  • b07b7af53e Merge pull request #356 from agessaman/feat/web-viewer-ui-refinements dev Adam Gessaman 2026-10-25 10:24:30 -07:00
  • 8082aa7b47 fix(web_viewer): narrow template preview types so mypy passes agessaman 2026-10-24 17:22:14 -07:00
  • 332a61eb35 feat(web_viewer): fetch a message row's packet by hash when it's opened on Real-time agessaman 2026-10-24 16:11:16 -07:00
  • b057ad9622 fix(web_viewer): explain a message row's missing packet in its detail instead of on the row agessaman 2026-10-24 16:01:21 -07:00
  • 2a131a3b4e docs: changelog entries for the web viewer honest-state, recovery, first-run and color pass agessaman 2026-10-24 15:01:49 -07:00
  • bcebeadcab style(web_viewer): polish the dashboard and Real-time after the critique agessaman 2026-10-24 14:59:35 -07:00
  • 3657bea8ec style(web_viewer): one color per packet type and role, and 20 channel colors that aren't status lamps agessaman 2026-10-24 14:52:30 -07:00
  • 12672f432f feat(web_viewer): an RX lamp on Real-time and the newest node by name agessaman 2026-10-24 14:48:49 -07:00
  • 732ac72b76 feat(web_viewer): a first-run panel and a listening clock for a station that hasn't heard anything agessaman 2026-10-24 14:45:16 -07:00
  • b42f3c39b2 fix(web_viewer): say when the radio comes back and where the tape has gaps agessaman 2026-10-24 14:33:08 -07:00
  • 87aaac3006 fix(web_viewer): stop claiming the station is up when it isn't agessaman 2026-10-24 14:14:14 -07:00
  • 9eaebf9778 docs: changelog entry for the web viewer screen-reader fixes agessaman 2026-10-24 13:38:34 -07:00
  • da2bb91226 fix(web_viewer): announce connection changes and let the log stream take focus agessaman 2026-10-24 13:38:15 -07:00
  • 02868841dd fix(web_viewer): give pages a real heading outline and dialogs their names agessaman 2026-10-24 13:38:15 -07:00
  • e2f5149927 fix(web_viewer): hide decorative icons from screen readers agessaman 2026-10-24 13:38:15 -07:00
  • 3b491e1537 fix(web_viewer): tag chips and Multibyte's filter buttons pass contrast agessaman 2026-10-24 13:28:34 -07:00
  • 319a69b401 fix(web_viewer): keep the Mesh map's shapes out of the tab order agessaman 2026-10-24 13:28:34 -07:00
  • 75cd6efd13 fix(web_viewer): give every page a main landmark and a skip link agessaman 2026-10-24 13:28:34 -07:00
  • f98caf7e56 style(web_viewer): give the Mesh page one palette that follows its map theme agessaman 2026-10-24 12:41:05 -07:00
  • 8d1c5ea9c0 build(web_viewer): vendor the last CDN libraries and keep them updated with Dependabot agessaman 2026-10-24 12:02:40 -07:00
  • 49b369025b fix(web_viewer): rebuild the browser packet decoder from meshcore-decoder 0.4.0 agessaman 2026-10-17 22:31:03 -07:00
  • c841f91ca2 style(web_viewer): color stat tiles, quiet loud row buttons, tint dashboard list counts agessaman 2026-10-17 20:55:36 -07:00
  • 2fa8641645 style(web_viewer): put color back in Real-time's controls, the byte breakdown and Contacts' tiles agessaman 2026-10-17 20:43:25 -07:00
  • 163033535d fix(web_viewer): float toasts in one stack, give Contacts' actions their color back agessaman 2026-10-17 20:37:52 -07:00
  • 931afd778b style(web_viewer): polish the Contacts page agessaman 2026-10-17 20:27:30 -07:00
  • c5ea5b8aa1 fix(web_viewer): rebuild the browser packet decoder from meshcore-decoder 0.3.0 agessaman 2026-10-17 20:13:15 -07:00
  • 84f06f8ebf fix(web_viewer): polish the packet byte breakdown and stop trusting the old decoder on multibyte packets agessaman 2026-10-17 19:57:53 -07:00
  • 79e6dfe96d fix(web_viewer): keep Real-time's phone strip from overlapping agessaman 2026-10-17 19:47:28 -07:00
  • 6da8d6daf6 docs: js-sha256 is vendored, not on a CDN agessaman 2026-10-17 19:42:17 -07:00
  • 2a1c2f86d8 feat(web_viewer): rebuild Real-time as one tape of what the radio heard agessaman 2026-10-17 19:40:23 -07:00
  • 73e7b95140 fix(core): replace a stale radio-offline flag at startup agessaman 2026-10-17 18:37:46 -07:00
  • 4fb63d91bf docs: changelog entries for the web viewer accessibility and offline pass agessaman 2026-10-17 18:20:59 -07:00
  • e0b7eca4fd style(web_viewer): retire legacy blue and green, quiet the packet stream agessaman 2026-10-17 18:14:04 -07:00
  • b7aa0ac0c5 fix(web_viewer): show banner times in local time with their age agessaman 2026-10-17 18:11:44 -07:00
  • 4d9f758eff perf(web_viewer): load page libraries where used and vendor the map stack agessaman 2026-10-17 18:09:58 -07:00
  • 270680e6f1 fix(web_viewer): touch-sized controls, /config fits a phone, compact banners agessaman 2026-10-17 18:00:58 -07:00
  • c514dd5361 fix(web_viewer): hold text at the 0.7rem floor and use one monospace stack agessaman 2026-10-17 17:51:23 -07:00
  • ebdc44cd90 fix(web_viewer): status and accent text passes contrast in both themes agessaman 2026-10-17 17:46:51 -07:00
  • b5bf8c26e2 test(web_viewer): accept escapeAttribute in the contacts XSS guard agessaman 2026-10-17 17:46:06 -07:00
  • ae4235dcf0 fix(web_viewer): link plugin settings, contacts and radio fields to their labels agessaman 2026-10-17 17:08:04 -07:00
  • 15a6096430 fix(web_viewer): name every icon-only button agessaman 2026-10-17 17:04:39 -07:00
  • 80ffe163ef fix(web_viewer): give every Feeds and Greeter field an accessible name agessaman 2026-10-17 16:59:41 -07:00
  • 1371d6d537 fix(web_viewer): open realtime packet details from the keyboard agessaman 2026-10-17 16:58:38 -07:00
  • 34f59bddf5 fix(web_viewer): open plugin cards from the keyboard agessaman 2026-10-17 16:57:27 -07:00
  • 52822feeda fix(web_viewer): make contact column sorting work from the keyboard agessaman 2026-10-17 16:56:06 -07:00
  • d0a5c1218f docs: add PRODUCT.md and DESIGN.md for the web viewer agessaman 2026-10-17 16:53:23 -07:00
  • f66308864c fix(mqtt_weather): round {temperature_c} to one decimal fix/mqtt-weather-temperature-c agessaman 2026-10-04 22:56:51 +00:00
  • f5f3b6e52a fix(web_viewer): review fixes for plugin settings coverage and template previews agessaman 2026-10-04 15:55:17 -07:00
  • 7758403148 feat(web_viewer): cover every plugin setting, with a template reference and preview agessaman 2026-10-04 15:31:49 -07:00
  • 58c2f8a4b8 Merge pull request #347 from agessaman/fix/geocode-language Adam Gessaman 2026-10-04 15:09:53 -07:00
  • c18d0e4893 test(geocode): fake geocoders take the language argument agessaman 2026-10-04 11:39:37 -07:00
  • a902f1c221 Merge remote-tracking branch 'origin/dev' into fix/geocode-language agessaman 2026-10-04 11:35:45 -07:00
  • d131f30fed fix(geocode): name places in the bot's language, with an opt-out agessaman 2026-10-04 11:35:44 -07:00
  • ee5ec9dfa1 Merge pull request #346 from agessaman/feat/wx-openmeteo-fallback Adam Gessaman 2026-10-04 11:33:27 -07:00
  • 6468ae03d4 Merge dev (#344) into feat/wx-openmeteo-fallback agessaman 2026-10-04 11:20:00 -07:00
  • 3fced8219a Merge pull request #344 from agessaman/refactor/maintainability Adam Gessaman 2026-10-04 11:15:53 -07:00
  • 6cbe4e1ca8 Merge dev (#345) into refactor/maintainability refactor/maintainability agessaman 2026-10-04 11:06:43 -07:00
  • 180a361a57 Merge pull request #345 from agessaman/fix/reload-literal-percent Adam Gessaman 2026-10-04 11:03:10 -07:00
  • 388540cbc7 fix(config): a bare '%' in a value no longer blocks config reload agessaman 2026-10-04 09:04:43 -07:00
  • 0e7b9fef0f feat(wx): optional Open-Meteo fallback for places outside NWS coverage agessaman 2026-10-04 08:28:02 -07:00
  • fd1e8d1926 refactor(commands): read the help method's own signature, not the one functools.wraps copies agessaman 2026-10-03 23:51:32 -07:00
  • f0649558e8 refactor(commands): direct help call only when the method also accepts the message agessaman 2026-10-03 23:47:56 -07:00
  • dabb59b823 refactor(commands): help retry re-reads get_help_text; a reused bundled function stays bundled agessaman 2026-10-03 23:26:00 -07:00
  • d60e7cf135 refactor(commands): tell bundled help methods apart by their defining class, not __module__ agessaman 2026-10-03 23:19:00 -07:00
  • ba293bb262 refactor(commands): keep the help TypeError retry for local plugins; fix two doc claims agessaman 2026-10-03 22:57:26 -07:00
  • 132f157f0c test: pin packet decoding over the committed MQTT packet fixture agessaman 2026-10-03 22:52:53 -07:00
  • 2a506bc327 refactor(weather): one reader for the Open-Meteo unit settings agessaman 2026-10-03 22:50:52 -07:00
  • eed455ce85 refactor(command_manager): send_channel_message and its budget predictor share one scope resolution agessaman 2026-10-03 22:48:59 -07:00
  • b569ed5de6 docs(local-plugins): document the base class hooks the refactor added agessaman 2026-10-03 22:47:20 -07:00
  • 36ab4f983c test: a missing golden file fails instead of being written agessaman 2026-10-03 22:46:30 -07:00
  • 853f86d8a5 build(mypy): type-check the modules the refactor created, tracking included agessaman 2026-10-03 22:45:42 -07:00
  • 495df80e2f refactor(commands): choose the help call by signature instead of retrying on TypeError agessaman 2026-10-03 22:43:24 -07:00
  • a81720700b refactor(web_viewer): one helper reads the subscribers for each live broadcast agessaman 2026-10-03 22:38:59 -07:00
  • 647202bc5b refactor: get_running_loop() where get_event_loop() was called inside a coroutine agessaman 2026-10-03 22:37:37 -07:00
  • 2c971875c1 refactor(commands): share the pubkey ACL check and the [Keywords] response format agessaman 2026-10-03 22:34:11 -07:00
  • 7aba432b54 refactor(commands): every bundled get_help_text takes message=None agessaman 2026-10-03 22:28:45 -07:00
  • 596a369204 refactor(location): one sender-position and one repeater-name query for every command agessaman 2026-10-03 22:24:48 -07:00
  • ba8e3f0229 fix(refactor): restore 24 module-level names the moves stopped binding, and guard all of them agessaman 2026-10-03 22:13:19 -07:00
  • 145e4d1e29 test(web_viewer): treat the platform's two .ico MIME types as one in the endpoint inventory agessaman 2026-10-03 21:43:37 -07:00
  • a0d3c1497c refactor(web_viewer): move the cleanup scheduler into CleanupSchedulerMixin agessaman 2026-10-03 21:19:40 -07:00
  • acbe6f3c34 refactor(web_viewer): move the Socket.IO client handlers into SocketClientsMixin agessaman 2026-10-03 21:14:00 -07:00
  • e433049606 refactor(weather_service): move _check_weather_alerts's entry parsing and sending into helpers agessaman 2026-10-03 20:52:27 -07:00
  • b780bbedc9 refactor(weather_service): move the forecast's location-name lookup and tomorrow suffix into helpers agessaman 2026-10-03 20:51:24 -07:00
  • 793767581d refactor(gwx): move _open_meteo_current's visibility conversion and extra conditions into helpers agessaman 2026-10-03 20:50:19 -07:00
  • 4bcc152bca refactor(wx): move execute's alert-only geocoding into _send_alert_list_for agessaman 2026-10-03 20:49:11 -07:00
  • d7c4704bf6 refactor(wx): skip the city prefix for an unrecognized location type instead of discarding it agessaman 2026-10-03 20:48:06 -07:00
  • 97b6d20e89 refactor(wx): split get_noaa_weather's current-period line and Tomorrow append into helpers agessaman 2026-10-03 20:42:00 -07:00
  • 3c5f31ecbb refactor(wx): split _get_weather_for_location_sync into location, forecast and alert steps agessaman 2026-10-03 20:27:18 -07:00
  • c905024102 test(weather): let the dispatch golden's wx WXSIM fake take location_name agessaman 2026-10-03 17:48:30 -07:00
  • 13b1ff5092 refactor(gwx): split geocode_location and _format_location_display into named steps agessaman 2026-10-03 17:47:48 -07:00
  • e76383f257 refactor(weather): wx and gwx execute share their dispatch steps agessaman 2026-10-03 17:24:44 -07:00
  • bbeff40573 test(weather): characterize how wx and gwx execute dispatch a request agessaman 2026-10-03 17:20:02 -07:00
  • 355d442dff Merge remote-tracking branch 'origin/dev' into refactor/maintainability agessaman 2026-10-03 14:53:22 -07:00
  • c44e8f472e Merge pull request #343 from agessaman/fix/telegram-stop-without-token Adam Gessaman 2026-10-03 14:51:23 -07:00
  • 56a366ff7c fix(bridges): stop cleanly when the bridge disabled itself at startup fix/telegram-stop-without-token agessaman 2026-10-03 14:42:16 -07:00
  • 7732464b2b refactor(bridges): split the sender before the DM and mapping guards, as before agessaman 2026-10-03 14:31:32 -07:00
  • bdb59221da refactor(core): move reload_config's helpers into ConfigReloadMixin agessaman 2026-10-03 14:27:59 -07:00
  • e6c9a74e71 refactor(core): move radio device setup into DeviceSetupMixin agessaman 2026-10-03 14:24:49 -07:00
  • 9b86cd631f refactor(bridges): Discord and Telegram share ChannelBridgeBase agessaman 2026-10-03 14:20:18 -07:00