From 49fa03ba680a6e5aa24e39d094e6e1c1e2372706 Mon Sep 17 00:00:00 2001 From: "torlando-agent[bot]" <281092095+torlando-agent[bot]@users.noreply.github.com> Date: Fri, 7 Aug 2026 16:58:14 +0000 Subject: [PATCH] feat: add composable offline map packs --- docs/flasher/index.html | 133 + docs/flasher/js/map-installer.js | 602 ++++ docs/flasher/js/vendor/README.md | 11 + docs/flasher/js/vendor/fflate.LICENSE | 21 + docs/flasher/js/vendor/fflate.js | 2692 +++++++++++++++++ docs/offline-map-packs.md | 76 +- lib/tdeck_ui/Hardware/TDeck/MapTilePack.cpp | 334 +- lib/tdeck_ui/Hardware/TDeck/MapTilePack.h | 53 +- lib/tdeck_ui/UI/LXMF/MapPackManifest.cpp | 229 +- lib/tdeck_ui/UI/LXMF/MapPackManifest.h | 24 +- lib/tdeck_ui/UI/LXMF/MapScreen.cpp | 4 +- .../test_map_web_installer_contract.py | 42 + tests/native/test_map_pack_manifest.cpp | 68 +- tests/native/test_map_pack_manifest.py | 2 +- tests/native/test_map_tile_pack.cpp | 153 +- tests/native/test_map_tile_pack.py | 2 +- tests/tools/test_build_map_pack.py | 21 +- tests/web/test_map_installer.mjs | 356 +++ tools/maps/build_map_pack.py | 183 +- 19 files changed, 4898 insertions(+), 108 deletions(-) create mode 100644 docs/flasher/js/map-installer.js create mode 100644 docs/flasher/js/vendor/README.md create mode 100644 docs/flasher/js/vendor/fflate.LICENSE create mode 100644 docs/flasher/js/vendor/fflate.js create mode 100644 tests/build_scripts/test_map_web_installer_contract.py create mode 100644 tests/web/test_map_installer.mjs diff --git a/docs/flasher/index.html b/docs/flasher/index.html index 40d429b5..cfcb8215 100644 --- a/docs/flasher/index.html +++ b/docs/flasher/index.html @@ -235,6 +235,19 @@ .custom-firmware-status.success { color: var(--success); } .custom-firmware-status.error { color: var(--error); } + .map-installer-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 1rem; + margin: 1rem 0; + } + .map-field label { display: block; color: var(--muted); font-size: 0.875rem; margin-bottom: 0.4rem; } + .map-field input { width: 100%; box-sizing: border-box; color: var(--text); background: var(--surface); border: 1px solid var(--border); border-radius: 6px; padding: 0.65rem; } + .map-status { margin: 0.8rem 0; color: var(--muted); overflow-wrap: anywhere; } + .map-status.success { color: var(--success); } + .map-status.error { color: var(--error); } + .map-note { color: var(--muted); font-size: 0.875rem; line-height: 1.5; } + footer { text-align: center; margin-top: 2rem; @@ -297,6 +310,37 @@

Firmware version: loading...

+
+

Install Offline Maps

+

+ Select a Coalition/MUI XYZ ZIP already downloaded to this computer, then choose the mounted SD-card root. + Turn the T-Deck off and remove its SD card before installation. Existing unrelated SD-card files are preserved. +

+
+
+ + +
+
+ + +
+
+ + +
+
+

+ Source profile: Coalition MUI OSM Bright user download.
+ Attribution: Map data (c) OpenStreetMap contributors — ODbL-1.0.
+ Compatible OSM Bright packs are enabled together. The newest pack takes priority where coverage overlaps. +

+
Choose a ZIP to validate it locally. No tiles are uploaded.
+
+ +
+
+

Requirements