Commit Graph
118 Commits
Author SHA1 Message Date
Torlando 28ea218a18 refactor(settings): move status readouts to Status screen, reorganize by use
Settings held live status (GPS fix, storage/RAM/identity) that belongs
on the Status screen, plus a per-second tick() doing SPI flash stat
reads and label churn mid-scroll — the main cause of laggy scrolling.

- GPS section (sats/location/altitude/HDOP/time) -> StatusScreen
- System Info (firmware build, storage, RAM) -> StatusScreen, with
  storage/RAM stat reads throttled to ~5s and stack-buffer snprintfs
  instead of Arduino String concatenation
- Settings gains a Status link row (trackball-reachable) that opens
  Route::STATUS; the per-second SettingsScreen tick/refresh is deleted
- Reordered sections by frequency of use: General (name/brightness/
  timeout/kb-light), Notifications, Network (now includes the
  TCP/Auto/BLE interface switches), Radio (LoRa + params), Delivery,
  Advanced, DANGER: Transport Mode (still final)
- Identity/LXMF hashes shown in Settings were truncated duplicates of
  the Status screen's full display; removed
- main.cpp publishes firmware build + GPS to the Status screen
- Contract test for the storage readout follows the code to StatusScreen
2026-09-04 04:56:07 +00:00
Pike 2816c2db10 test(map): enforce pin label color placement in marker loop
Greptile note: the derive-before-apply position check could pass even if
the color call regressed to the wrong branch. Tighten the contract test
to assert exactly one label-color call, located after the marker loop's
hidden-marker continue (i.e. in the main render branch, not the hide
path), and that the once-per-frame derivation precedes it.
2026-09-03 00:34:54 +00:00
Pike 902df6554c ui(map): contrast pin labels against active basemap
Marker (pin) labels previously inherited the app's default text color,
which reads white and disappears on light basemaps. Set each label's
text color in applyFrame() against the active style: black by default
(light basemaps osm-bright/positron/toner) and white only on the one
dark basemap (dark-matter). Re-evaluated every frame so a style switch
re-colors visible labels on the next applied frame.

Add a contract test pinning the dark-basemap detection and the
black-by-default / white-on-dark ternary.
2026-09-02 21:20:24 +00:00
Torlando 40c1869765 fix(lxmf): drop SIGNATURE_INVALID inbound messages
A message whose source identity is KNOWN but whose signature fails to
validate is spoofed or malicious and must not be rendered. The
opportunistic (on_packet) and direct (on_resource_concluded) router
paths already reject these, but the propagated (store-and-forward) path
in process_propagated_lxmf queues them without a signature check, so
UIManager::on_message_received is the single choke point that covers
all three inbound routes.

Drop the message at the top of on_message_received — before the key
request, location ingest, persistence, chat render, and notification
beep — when !signature_validated() && reason == SIGNATURE_INVALID.
SOURCE_UNKNOWN (first contact) is untouched: those still render and
trigger the bounded key request from PR #92. Validated messages are
unaffected.

Add a source-level contract test locking in the drop gate's ordering
relative to every side effect and its enum specificity.
2026-09-02 17:51:52 +00:00
Torlando a10e5381ce chore: bump map installer cache tag for the progress fix 2026-08-31 15:28:00 +00:00
Torlando 410f65984c fix: close browser review findings (slot parity, smoke asserts, cache-bust) 2026-08-31 06:07:44 +00:00
Torlando a3d1e04ffb docs: define browser map installer safety contract 2026-08-31 04:43:30 +00:00
Torlando f6d1317a96 fix: scope browser map lock to same-origin tabs 2026-08-31 03:18:06 +00:00
Torlando e3008cf025 test: align map installer filesystem mock with browsers 2026-08-30 20:37:01 +00:00
Torlando 9897f1d895 docs: document PMPK v3 CLI installation contract 2026-08-30 05:56:05 +00:00
Torlando 7c96ffac82 fix(maps): cancel stale tile rendering safely 2026-08-20 04:53:00 +00:00
torlando-agent[bot] 01fc9adc79 release: ship merged full-flash binary on releases
Add tools/merge_pyxis_release.py, which assembles the four validated
release assets (bootloader, partition table, OTA selector, application)
into a single 8 MiB image at their fixed flash offsets on an erased
canvas, with per-image read-back and gap checks.

Wire it into release-firmware.yml so every tag build publishes
pyxis-<tag>-merged.bin as a release asset, and document the
provisioning semantics in the README: the merged image is a
first-install image (it erases NVS and LittleFS); data-preserving
updates keep using firmware.bin or the Columba .pyxis package.
2026-08-18 16:28:02 +00:00
torlando-agent[bot] 050289a1bc test: track secure microReticulum pin 2026-08-16 21:44:50 +00:00
torlando-agent[bot] 98dca8e516 feat: add bounded NomadNet forms 2026-08-16 21:36:30 +00:00
torlando-agent[bot] 2a23a14d1e Use published dependency pins 2026-08-15 01:32:56 +00:00
torlando-agent[bot] 1238fa7c2a Pin microStore compaction fix locally 2026-08-15 00:37:32 +00:00
torlando-agent[bot] fd776d7b78 Bound NomadNet pages and preserve decompression headroom 2026-08-14 22:50:00 +00:00
torlando-agent[bot] f605aa386d fix(nomadnet): release directory memory before navigation 2026-08-13 20:58:23 +00:00
torlando-agent[bot] 77e5123455 feat(nomadnet): checkpoint compact page lifecycle
Add bounded compact page rendering, serialized Link and Resource lifecycle handling, TCP reconnect corrections, and deterministic Python RNS conformance coverage.

Physically verified anonymous index retrieval and rendering on T-Deck. Same-destination Link reuse and italic rendering remain follow-up fixes.
2026-08-13 20:58:23 +00:00
torlando-agent[bot] a3d8c55874 fix: keep opened chats at newest message 2026-08-12 20:15:33 +00:00
torlando-agent[bot] b7b39a16df fix: keep navigation responsive during style activation 2026-08-12 19:02:03 +00:00
torlando-agent[bot] 38dab57240 fix: fence map style activation on navigation 2026-08-12 18:40:12 +00:00
torlando-agent[bot] 78300b00ee Merge origin/main into feat/map-style-picker 2026-08-12 18:22:33 +00:00
torlando-agent[bot] 9b7ab160ad fix: keep stable firmware as flasher default 2026-08-12 17:40:55 +00:00
torlando-agent[bot] 6627c9ccbb fix: improve flasher release selector contrast 2026-08-12 17:30:18 +00:00
torlando-agent[bot] aa40e78df3 test: bind prerelease option label 2026-08-12 17:17:32 +00:00
torlando-agent[bot] acfddc4c54 fix: show prereleases in web flasher 2026-08-12 17:13:42 +00:00
torlando-agent[bot] b003e00bf8 test: bind LittleFS lookup arguments 2026-08-12 16:44:56 +00:00
torlando-agent[bot] 7c0daca322 test: lock LittleFS partition selection 2026-08-12 16:40:13 +00:00
torlando-agent[bot] b5aae24e77 fix: safely initialize erased LittleFS partitions 2026-08-12 15:44:26 +00:00
torlando-agent[bot] f6fc95d046 fix: prevent tile worker starvation on unchanged map model 2026-08-11 01:19:07 +00:00
torlando-agent[bot] f03e1c5937 fix: serialize map style activation lifecycle 2026-08-08 18:10:02 +00:00
torlando-agent[bot] c1a27fdf08 fix: version local map installer module 2026-08-08 16:21:18 +00:00
torlando-agent[bot] 06f477e771 fix: refresh map installer archive identity 2026-08-08 16:19:13 +00:00
torlando-agent[bot] 66f551515f feat: add offline map style switcher 2026-08-08 15:21:42 +00:00
Torlando edeb4c9989 Merge pull request #66 from torlando-tech/fix/retire-legacy-map-cache
Build and Deploy Firmware / build-and-deploy (push) Canceled after 0s
Test / Pyxis pytest suite (build_scripts + native) (push) Canceled after 0s
Test / microReticulum native unit tests (PlatformIO native17) (push) Canceled after 0s
fix: retire legacy map tile fallback
2026-08-08 09:48:14 -04:00
Torlando 3f4a70d32c Merge pull request #64 from torlando-tech/docs/map-installer-steps
docs: add guided offline map installation steps
2026-08-08 09:47:57 -04:00
torlando-tech ca59aee704 fix: retire legacy map tile fallback 2026-08-08 05:15:28 +00:00
torlando-tech 84c03e7606 fix: clear stale map status while loading 2026-08-08 04:42:26 +00:00
torlando-tech 1e5be6b617 fix: summarize visible map tile status 2026-08-08 04:31:12 +00:00
torlando-agent[bot] 62509e0be8 docs: add guided offline map install steps 2026-08-07 21:27:15 +00:00
torlando-agent[bot] 924d24f10b fix: serialize map installs across browser tabs 2026-08-07 20:04:53 +00:00
torlando-agent[bot] 9cbee873f1 merge: update review contract placement 2026-08-07 19:41:32 +00:00
torlando-agent[bot] 4f21689ac7 merge: update location contract boundary
# Conflicts:
#	tests/build_scripts/test_message_persistence_contract.py
2026-08-07 19:41:20 +00:00
torlando-agent[bot] f41dcb6a54 test: verify guarded outgoing admission ordering 2026-08-07 19:41:13 +00:00
torlando-agent[bot] 4988a0fd89 test: cover guarded and legacy message admission 2026-08-07 19:41:01 +00:00
torlando-agent[bot] 0e6d95b8de merge: update offline Maps review boundary 2026-08-07 19:34:43 +00:00
torlando-agent[bot] 5a2e4757fa fix: admit outgoing messages before persistence 2026-08-07 19:30:29 +00:00
torlando-agent[bot] 49fa03ba68 feat: add composable offline map packs 2026-08-07 16:58:14 +00:00
torlando-agent[bot] 117d3894bd feat: make maps SD-pack only 2026-08-07 05:26:34 +00:00