Skip to content

Add Maps app (first version, tested on T-Deck only) - #65

Open
AdaSzi wants to merge 2 commits into
TactilityProject:mainfrom
AdaSzi:maps
Open

AdaSzi wants to merge 2 commits into
TactilityProject:mainfrom
AdaSzi:maps

Conversation

@AdaSzi

@AdaSzi AdaSzi commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

Adds Maps, an offline vector map app using OpenFreeMap tiles.

This is the very first version (0.0.1). It has only been tested on the LilyGO T-Deck (ESP32-S3 with PSRAM),
so it targets esp32s3 only for now.

  • Download an area once over Wi-Fi, then use it offline from the SD card
  • Pan and zoom by keyboard, trackball and touch, your position from Tactility's location service
  • Follows OpenFreeMap's download limits (3,000 tiles / 50 MB per area), with attribution on the map

Licence: GPL-3.0-or-later.

Offline vector maps from OpenFreeMap. Download an area once over Wi-Fi and use it offline from the SD card.
First version (0.0.1), tested on the LilyGO T-Deck only.
@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 111 files, which is 11 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: fe094469-b708-40bf-aec5-85e27774a8fc
Commits

Reviewing files that changed from the base of the PR and between 5cf76a5 and 4f55771.

Files ignored due to path filters: 3
  • Apps/Maps/tests/fixtures/golden-14.png is excluded by !**/*.png
  • Apps/Maps/tests/fixtures/golden-16.png is excluded by !**/*.png
  • Apps/Maps/tests/fixtures/golden-18.png is excluded by !**/*.png
Files selected for processing: 111
  • Apps/Maps/CHANGELOG.md
  • Apps/Maps/CMakeLists.txt
  • Apps/Maps/LICENSE
  • Apps/Maps/README.md
  • Apps/Maps/THIRD_PARTY.md
  • Apps/Maps/host/CMakeLists.txt
  • Apps/Maps/host/FakeFont.h
  • Apps/Maps/host/FakePosition.h
  • Apps/Maps/host/ImageDiff.h
  • Apps/Maps/host/PlatformHost.cpp
  • Apps/Maps/host/Png.cpp
  • Apps/Maps/host/Png.h
  • Apps/Maps/host/check_symbols.py
  • Apps/Maps/host/device_run.py
  • Apps/Maps/host/fetch_tiles.py
  • Apps/Maps/host/prepare_tiles.cpp
  • Apps/Maps/host/push_region.py
  • Apps/Maps/host/render_tile.cpp
  • Apps/Maps/host/tests.cpp
  • Apps/Maps/host/third_party/miniz/LICENSE
  • Apps/Maps/host/third_party/miniz/miniz.c
  • Apps/Maps/host/third_party/miniz/miniz.h
  • Apps/Maps/host/ui_preview.cpp
  • Apps/Maps/main/CMakeLists.txt
  • Apps/Maps/main/Source/app/BinFontText.cpp
  • Apps/Maps/main/Source/app/BinFontText.h
  • Apps/Maps/main/Source/app/Debug.cpp
  • Apps/Maps/main/Source/app/Debug.h
  • Apps/Maps/main/Source/app/DisplayOutput.cpp
  • Apps/Maps/main/Source/app/DisplayOutput.h
  • Apps/Maps/main/Source/app/Downloader.cpp
  • Apps/Maps/main/Source/app/Downloader.h
  • Apps/Maps/main/Source/app/Input.cpp
  • Apps/Maps/main/Source/app/Input.h
  • Apps/Maps/main/Source/app/IoTask.cpp
  • Apps/Maps/main/Source/app/IoTask.h
  • Apps/Maps/main/Source/app/LocationSource.cpp
  • Apps/Maps/main/Source/app/LocationSource.h
  • Apps/Maps/main/Source/app/MapApp.cpp
  • Apps/Maps/main/Source/app/MapInput.cpp
  • Apps/Maps/main/Source/app/MapScreens.cpp
  • Apps/Maps/main/Source/app/MapView.cpp
  • Apps/Maps/main/Source/app/MapView.h
  • Apps/Maps/main/Source/app/PlatformTactility.cpp
  • Apps/Maps/main/Source/app/RootCertificates.h
  • Apps/Maps/main/Source/app/StallProbe.cpp
  • Apps/Maps/main/Source/app/StallProbe.h
  • Apps/Maps/main/Source/app/TileWorker.cpp
  • Apps/Maps/main/Source/app/TileWorker.h
  • Apps/Maps/main/Source/mvt/ByteInput.cpp
  • Apps/Maps/main/Source/mvt/ByteInput.h
  • Apps/Maps/main/Source/mvt/InflateReader.cpp
  • Apps/Maps/main/Source/mvt/InflateReader.h
  • Apps/Maps/main/Source/mvt/MvtDecoder.cpp
  • Apps/Maps/main/Source/mvt/MvtDecoder.h
  • Apps/Maps/main/Source/mvt/Schema.cpp
  • Apps/Maps/main/Source/mvt/Schema.h
  • Apps/Maps/main/Source/platform/Platform.h
  • Apps/Maps/main/Source/platform/Position.h
  • Apps/Maps/main/Source/render/CacheIndex.cpp
  • Apps/Maps/main/Source/render/CacheIndex.h
  • Apps/Maps/main/Source/render/CacheWalker.cpp
  • Apps/Maps/main/Source/render/CacheWalker.h
  • Apps/Maps/main/Source/render/Compose.cpp
  • Apps/Maps/main/Source/render/Compose.h
  • Apps/Maps/main/Source/render/PreparedScanner.cpp
  • Apps/Maps/main/Source/render/PreparedScanner.h
  • Apps/Maps/main/Source/render/PreparedTile.cpp
  • Apps/Maps/main/Source/render/PreparedTile.h
  • Apps/Maps/main/Source/render/Raster.cpp
  • Apps/Maps/main/Source/render/Raster.h
  • Apps/Maps/main/Source/render/Style.cpp
  • Apps/Maps/main/Source/render/Style.h
  • Apps/Maps/main/Source/render/TileCache.cpp
  • Apps/Maps/main/Source/render/TileCache.h
  • Apps/Maps/main/Source/render/TileCodec.cpp
  • Apps/Maps/main/Source/render/TileCodec.h
  • Apps/Maps/main/Source/render/TileRenderer.cpp
  • Apps/Maps/main/Source/render/TileRenderer.h
  • Apps/Maps/main/Source/tiles/DownloadPlan.cpp
  • Apps/Maps/main/Source/tiles/DownloadPlan.h
  • Apps/Maps/main/Source/tiles/IoQueue.h
  • Apps/Maps/main/Source/tiles/RegionMeta.cpp
  • Apps/Maps/main/Source/tiles/RegionMeta.h
  • Apps/Maps/main/Source/tiles/TileJson.cpp
  • Apps/Maps/main/Source/tiles/TileJson.h
  • Apps/Maps/main/Source/tiles/TileMath.cpp
  • Apps/Maps/main/Source/tiles/TileMath.h
  • Apps/Maps/main/Source/tiles/TilePaths.cpp
  • Apps/Maps/main/Source/tiles/TilePaths.h
  • Apps/Maps/main/Source/tiles/TileStore.cpp
  • Apps/Maps/main/Source/tiles/TileStore.h
  • Apps/Maps/main/Source/ui/Canvas.cpp
  • Apps/Maps/main/Source/ui/Canvas.h
  • Apps/Maps/main/Source/ui/Controls.cpp
  • Apps/Maps/main/Source/ui/Controls.h
  • Apps/Maps/main/Source/ui/DownloadFrame.cpp
  • Apps/Maps/main/Source/ui/DownloadFrame.h
  • Apps/Maps/main/Source/ui/Gestures.cpp
  • Apps/Maps/main/Source/ui/Gestures.h
  • Apps/Maps/main/Source/ui/MapOverlay.cpp
  • Apps/Maps/main/Source/ui/MapOverlay.h
  • Apps/Maps/main/Source/ui/PositionTracker.cpp
  • Apps/Maps/main/Source/ui/PositionTracker.h
  • Apps/Maps/main/Source/ui/Settings.cpp
  • Apps/Maps/main/Source/ui/Settings.h
  • Apps/Maps/main/Source/ui/Widgets.cpp
  • Apps/Maps/main/Source/ui/Widgets.h
  • Apps/Maps/manifest.properties
  • Apps/Maps/tests/fixtures/14-9058-5729.pbf
  • Apps/Maps/tests/fixtures/golden.txt

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Comment thread Apps/Maps/docs/images/about.png Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you remove the images from the docs? It's too hard for me to maintain for now.
I hope to auto-generate them in the future with a simulator in GitHub Actions.

Comment thread Apps/Maps/docs/MEASUREMENTS.md Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

measurements.md and plan.md can be removed

#include "../platform/Platform.h"
#include "../render/Raster.h"

#include <binfont/binfont.h>

@KenVanHoeylandt KenVanHoeylandt Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use binfont-module from the SDK?

app.0.name=Maps
app.0.binary=maps
name=Maps
description=Offline vector maps from OpenFreeMap

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we know if the app works without PSRAM?
If not, you can set requires.ram=2M or something similar for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants