500 Commits
Author SHA1 Message Date
Torlando ac9c14e8f9 Merge pull request #91 from torlando-tech/feat/map-pack-v3-browser-safe
Build and Deploy Firmware / build-and-deploy (push) Waiting to run
Test / Pyxis pytest suite (build_scripts + native) (push) Waiting to run
Test / microReticulum native unit tests (PlatformIO native17) (push) Waiting to run
feat: browser-side safe map-pack v3 installer (web flasher parity)
v0.3.7
2026-08-31 20:33:34 -04:00
Torlando a10e5381ce chore: bump map installer cache tag for the progress fix 2026-08-31 15:28:00 +00:00
Torlando b0cc13a428 fix: report every map install phase in the flasher UI 2026-08-31 15:26:39 +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 39b0faf07c test: exercise map installation through Chromium filesystem APIs 2026-08-31 04:33:31 +00:00
Torlando f6d1317a96 fix: scope browser map lock to same-origin tabs 2026-08-31 03:18:06 +00:00
Torlando 5a586461be feat: publish browser map-set activation with read-back ordering 2026-08-30 23:18:27 +00:00
Torlando e03ac40ad6 fix: validate every inherited map pack before browser activation 2026-08-30 23:04:27 +00:00
Torlando 38f1139066 feat: derive browser PMAS v3 activation plans 2026-08-30 22:31:49 +00:00
Torlando d2620060e5 feat: publish indexless PMPK v3 from browser installs 2026-08-30 22:23:32 +00:00
Torlando 1a526eb888 feat: add browser PMPK and PMAS v3 codecs 2026-08-30 20:44:57 +00:00
Torlando e3008cf025 test: align map installer filesystem mock with browsers 2026-08-30 20:37:01 +00:00
Torlando 954c1a807e Merge pull request #90 from torlando-tech/feat/map-pack-v3-cli-safe
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
feat: safe CLI PMPK v3 / PMAS v3 map-pack writers
2026-08-30 16:12:48 -04:00
Torlando 562776fe2c fix: distinguish committed activation durability from failed activation
Greptile P2 (round 1): a post-rename parent-fsync failure during activation now reports that the record is committed and visible with only durability uncertain, instead of the generic 'activation failed' message; and the subprocess lock-holder helper repr-escapes the pyxis-map path so a path containing a quote still yields valid child Python.
2026-08-30 18:37:36 +00:00
Torlando ac7e380c96 fix: guard legacy PMAS decode and document v3 strictness 2026-08-30 07:12:26 +00:00
Torlando 9897f1d895 docs: document PMPK v3 CLI installation contract 2026-08-30 05:56:05 +00:00
Torlando 0fb4256aa6 feat: enable safe CLI PMAS v3 activation 2026-08-30 05:51:40 +00:00
Torlando 3595fdaa1c feat: validate inherited packs before activation
feat: publish activation atomically with read-back
2026-08-30 02:48:47 +00:00
Torlando 59d2805d5f feat: derive PMAS v3 activation plans 2026-08-30 02:35:13 +00:00
Torlando cc280cdf78 feat: build style-qualified PMPK v3 packs
fix: serialize CLI map installs with flock
2026-08-30 02:30:21 +00:00
Torlando 7cccca3a75 test: freeze PMPK and PMAS v3 wire vectors
feat: parse indexless PMPK v3 manifests

feat: serialize indexless PMPK v3 manifests

feat: encode and decode PMAS v3 selections
2026-08-30 02:17:57 +00:00
Torlando 27a207a633 Merge pull request #88 from torlando-tech/feat/map-visible-resolution
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
feat(maps): resolve visible tiles without span indexes
2026-08-28 19:03:15 -04:00
Torlando 0f6309c5a6 fix: widen MapTileStore path buffer for 31-char pack IDs
Raise MapTileStore::PATH_CAPACITY from 64 to 80 so the mount buffer
(PATH_CAPACITY + 4) holds the 80-character mounted tile path produced by
a maximum-length (31-char) pack ID with full-width tile coordinates.
Pre-fix, any tile with a two-digit x or y returned INVALID_ARGUMENT from
the mount-prefix snprintf, which MapTilePack maps to IO_ERROR and the UI
shows as 'Tile I/O error' even though the file exists and is intact.

The host regression test added in the prior commit now passes under both
strict C++11 and ASan/UBSan; reverting this change fails it.
2026-08-28 22:44:27 +00:00
Torlando b7ab97d624 test: add host regression for MapTileStoreSD mount-path overflow
A 31-character pack ID makes mounted tile paths
(/sd/pyxis-map/packs/<id>/tiles/<z>/<x>/<y>.png) exceed the 68-byte mount
buffer once either x or y is two digits, so beginRead returns
INVALID_ARGUMENT and the UI shows 'Tile I/O error' at z4+ even though the
file exists and is intact.

Compiles the unmodified MapTilePack/MapTileStoreSD/SDAccess/codec/manifest
sources against small Arduino/FreeRTOS host shims. The core section (no
card needed) drives the real store with a model of the mount-prefix
arithmetic and asserts the 31-char-ID boundary loads at z4/z5; an optional
end-to-end section runs the real MapTilePack over a bound card root when
/sd is writable.

Fails on the current 64-byte PATH_CAPACITY: red by design.
2026-08-28 22:44:27 +00:00
Torlando 30c0d73565 fix(flasher): fully validate PNG tiles before publish 2026-08-20 05:00:06 +00:00
Torlando ca5d582588 fix(flasher): install indexless map archives 2026-08-20 04:53:01 +00:00
Torlando 7c96ffac82 fix(maps): cancel stale tile rendering safely 2026-08-20 04:53:00 +00:00
Torlando d9cb64a1ea feat(maps): resolve visible tiles without span indexes 2026-08-20 04:53:00 +00:00
Torlando 4693e20b9a Merge pull request #85 from torlando-tech/feat/release-merged-binary
Test / Pyxis pytest suite (build_scripts + native) (push) Canceled after 0s
Build and Deploy Firmware / build-and-deploy (push) Canceled after 0s
Test / microReticulum native unit tests (PlatformIO native17) (push) Canceled after 0s
release: ship merged full-flash binary on releases
v0.3.6
2026-08-18 13:23:34 -04:00
torlando-agent[bot] f9e23a5825 docs: split esptool provisioning into separate erase_flash and write_flash
esptool accepts exactly one operation per invocation; the combined
'erase_flash write_flash 0x0 ...' form is rejected with a usage error.
Document erase_flash and write_flash as separate commands in the README
and the merge tool docstring (verified against esptool 5.3.1).
2026-08-18 16:37:50 +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 8b1d7dcff7 Merge pull request #84 from torlando-tech/feat/nomadnet-partials-ui
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
feat(nomadnet): integrate dynamic partial rendering
v0.3.5
2026-08-18 00:34:36 -04:00
Torlando 1818801691 Merge pull request #83 from torlando-tech/feat/nomadnet-partials-core
feat(nomadnet): add bounded partial core
2026-08-18 00:34:19 -04:00
torlando-agent[bot] 26de7c3e41 fix(nomadnet): keep partial refresh status in chrome 2026-08-18 01:30:14 +00:00
torlando-agent[bot] 1027667f5a feat(nomadnet): integrate dynamic partial rendering 2026-08-17 23:49:13 +00:00
torlando-agent[bot] b793f356e3 test(nomadnet): accept attested package reference 2026-08-17 20:09:48 +00:00
torlando-agent[bot] b6faec8104 feat(nomadnet): add bounded partial core 2026-08-17 19:54:41 +00:00
Torlando 51e4b586c4 Merge pull request #82 from torlando-tech/feat/nomadnet-limits-observability
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
feat: enforce NomadNet limits and observability
2026-08-17 13:54:54 -04:00
Torlando 76f42c4d2a Merge pull request #81 from torlando-tech/feat/nomadnet-sd-page-cache-impl
feat: add bounded NomadNet SD page cache
2026-08-17 13:54:38 -04:00
torlando-agent[bot] 27ac127f5e fix: preserve eight-column NomadNet tables 2026-08-17 16:50:21 +00:00
torlando-agent[bot] ca73ff2e3f fix: show NomadNet navigation progress promptly 2026-08-17 15:47:41 +00:00
torlando-agent[bot] 5b76abfdbe fix: align NomadNet cache response policy 2026-08-17 14:50:00 +00:00
torlando-agent[bot] 2f0f7900ca feat: enforce NomadNet limits and observability 2026-08-17 09:11:10 +00:00
torlando-agent[bot] 3658c54cc7 fix: retry cache lookup after busy operation 2026-08-17 06:03:38 +00:00
torlando-agent[bot] 16af3b53af feat: add bounded NomadNet SD page cache 2026-08-17 05:48:30 +00:00
Torlando da55131c44 Merge pull request #80 from torlando-tech/fix/nomadnet-form-input-rendering
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
feat: add bounded NomadNet forms
2026-08-16 22:48:34 -04:00
torlando-agent[bot] 2ef6b0254d ci: provision mandatory NomadNet peer gate 2026-08-17 02:34:24 +00:00
torlando-agent[bot] f40fec17c4 fix: refine NomadNet form input handling 2026-08-17 01:07:19 +00:00
torlando-agent[bot] 050289a1bc test: track secure microReticulum pin 2026-08-16 21:44:50 +00:00