Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
f7981be
Project setup
TBxy Apr 19, 2026
c7a3e81
Correct from, but no bitmaps
TBxy Apr 23, 2026
8c9bb63
Add node_modules
TBxy Apr 23, 2026
168084c
Frist time bitmap is shown
TBxy Apr 25, 2026
d2c8be1
Archive specs
TBxy Apr 25, 2026
3921fbb
Further improvbemetns, still not working
TBxy Apr 26, 2026
25d528a
Update analyse script
TBxy Apr 26, 2026
a9efb60
Update anaylse script, ready to run pipeline performance updates
TBxy Apr 26, 2026
135db0a
Moved opensepcs
TBxy Apr 26, 2026
526f5c9
Works with still soem missing tiles
TBxy Apr 29, 2026
77fe2c4
Working but with missing tiles (or tile write wrrors?)
TBxy Apr 30, 2026
37b546f
Improve raster writting, still some artifacts
TBxy Apr 30, 2026
c1735ef
Only minor white lines visible, still not good
TBxy May 1, 2026
3b4a3dd
Add logo
TBxy May 1, 2026
d0277ea
It finally works
TBxy May 1, 2026
ac4b0cf
Update scripts
TBxy May 1, 2026
5f3e1f7
Use rasterio
TBxy May 1, 2026
0d35b42
Improve tile processing
TBxy May 2, 2026
b9ba922
Synced specs
TBxy May 2, 2026
c2490dc
Optimize jpeg quality and fix size issue, but nw not all GMPs are cor…
TBxy May 4, 2026
20db61b
Quality parameter works!
TBxy May 4, 2026
8c1aedd
Add thread executor
TBxy May 6, 2026
a7cbbe3
Improrved gpsdevcie levels
TBxy May 8, 2026
3d78e8c
Update opensepc
TBxy May 9, 2026
bae03a8
Improved speed, hierarchy map
TBxy May 10, 2026
33e3d21
Archibed hierarchical change
TBxy May 10, 2026
ed5f0a1
Update docs
TBxy May 10, 2026
6637c4a
Update docu
TBxy May 10, 2026
6d7f708
Ignore external refs pdfs
TBxy May 10, 2026
38d2d6e
Add composition support
TBxy May 11, 2026
5b1a7df
Improved stac download
TBxy May 13, 2026
5ed8abf
Fix geotiff issues, not all yet
TBxy May 13, 2026
a556cfa
Improve geotiff and config
TBxy May 14, 2026
7cd801c
Add gpkg changes
TBxy May 14, 2026
6761bd9
Add vector stuff
TBxy May 15, 2026
66fb7d4
Working on refactoring layers
TBxy May 18, 2026
f7d3519
Refactor config
TBxy May 18, 2026
c65ca47
Improve unified config
TBxy May 18, 2026
0f9e2d2
Archived changes
TBxy May 18, 2026
4250e6d
Add watermark feature
TBxy May 21, 2026
5ded37f
Archive review opensepc
TBxy May 23, 2026
1508000
Imrproved docker buiild
TBxy May 23, 2026
e3ac13c
Minor bug fixes
TBxy May 25, 2026
a0b674d
Fixed not working on garmin
TBxy May 25, 2026
36fd40e
Add swisstopot stuff
TBxy May 26, 2026
f254259
Cleanup example files
TBxy May 26, 2026
4ef5e39
Update docu
TBxy May 26, 2026
2f28f8a
Update readme
TBxy Jun 12, 2026
8cffc76
Added openspecs
TBxy Jun 12, 2026
e613aca
Fixed types
TBxy Jun 12, 2026
bb114fb
Fixed types
TBxy Jun 12, 2026
b8748c7
Run ty fix
TBxy Jun 20, 2026
f15196f
Update ty
TBxy Jun 20, 2026
fd80071
Update check to include type checkng
TBxy Jun 20, 2026
9b770d8
Fixed tests
TBxy Jun 20, 2026
0402602
Removed not needed ci on develop
TBxy Jun 20, 2026
9049b5f
Improve tests
TBxy Jun 20, 2026
74a27cf
Add changelog
TBxy Jun 26, 2026
54e0e15
Add version paramter
TBxy Jun 26, 2026
66bb2f0
Stop tracking generated docs/cli.md
TBxy Jun 26, 2026
006f9cc
Add -h flag as alias for --help
TBxy Jun 26, 2026
5e1c9c0
Add documentation build and publish workflow
TBxy Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version =
current_version = 0.1.0
commit = False
tag = False
allow_dirty = True
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ on:
- main
tags:
- "v*.*.*"
repository_dispatch:
types: [new-tag-created]
workflow_dispatch:
inputs:
variant:
Expand Down Expand Up @@ -39,7 +41,7 @@ jobs:
uses: actions/checkout@v4

# Only build on main if the merged PR has a "BUILD" label.
# Tag pushes and manual dispatch always build.
# Tag pushes, repository_dispatch, and manual dispatch always build.
- name: Check for BUILD label on main branch
id: check-build
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
Expand Down Expand Up @@ -97,7 +99,11 @@ jobs:
github.event_name != 'push' ||
steps.check-build.outputs.result == 'true'
run: |
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
if [[ "${{ github.event_name }}" == "repository_dispatch" ]]; then
VERSION="${{ github.event.client_payload.tag }}"
LATEST="latest"
VERSION_TAG=true
elif [[ "${{ github.ref }}" == refs/tags/v* ]]; then
VERSION="${{ github.ref_name }}"
LATEST="latest"
VERSION_TAG=true
Expand Down
52 changes: 52 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Documentation

on:
push:
tags: ["v*.*.*"]
repository_dispatch:
types: [new-tag-created]
workflow_dispatch:

# Builds the zensical docs and deploys them to GitHub Pages on release.
# Requires Pages to be enabled in repo settings with Source = GitHub Actions.

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deploy.outputs.page_url }}
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v4

- name: Set up Python
run: uv python install 3.12

# Sync the project (so generate-cli-docs can import cartoload) + docs group
- name: Install dependencies
run: uv sync --group docs

- name: Generate CLI docs
run: uv run python scripts/generate-cli-docs.py

- name: Build docs
run: uv run --group docs zensical build -f docs/zensical.toml

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/site

- name: Deploy to GitHub Pages
id: deploy
uses: actions/deploy-pages@v4
60 changes: 60 additions & 0 deletions .github/workflows/new-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: New Version

# After CI passes on main, check whether the version in pyproject.toml has a
# matching git tag. If not, a new version was merged: create + push the tag,
# then dispatch 'new-tag-created' so the downstream publish/release/docker
# workflows run (a tag pushed with GITHUB_TOKEN does not re-trigger them).
on:
workflow_run:
workflows: ["CI"]
branches: [main]
types: [completed]

jobs:
tag:
if: ${{ github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-tags: true

- name: Check if tag exists
id: check
run: |
VERSION=$(grep -E '^version\s*=' pyproject.toml | head -1 | cut -d'"' -f2)
TAG="v${VERSION}"
if git tag -l "$TAG" | grep -q .; then
echo "exists=true" >> "$GITHUB_OUTPUT"
echo "Tag $TAG already exists, skipping."
else
echo "exists=false" >> "$GITHUB_OUTPUT"
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
echo "New version detected: $TAG"
fi

- name: Create and push tag
if: steps.check.outputs.exists == 'false'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag "${{ steps.check.outputs.tag }}"
git push origin "${{ steps.check.outputs.tag }}"

- name: Trigger downstream workflows
if: steps.check.outputs.exists == 'false'
uses: actions/github-script@v7
with:
script: |
github.rest.repos.createDispatchEvent({
owner: context.repo.owner,
repo: context.repo.repo,
event_type: 'new-tag-created',
client_payload: {
tag: '${{ steps.check.outputs.tag }}'
}
})
2 changes: 2 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ on:
push:
tags:
- "v*"
repository_dispatch:
types: [new-tag-created]

jobs:
publish:
Expand Down
19 changes: 15 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ on:
push:
tags:
- "v*.*.*"
repository_dispatch:
types: [new-tag-created]

jobs:
create-release:
Expand All @@ -26,15 +28,24 @@ jobs:
- name: Install dependencies
run: uv sync --only-group dev

- name: Determine tag
id: tag
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
echo "name=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"
else
echo "name=${{ github.event.client_payload.tag }}" >> "$GITHUB_OUTPUT"
fi

- name: Get changelog for this version
id: changelog
run: |
VERSION="${{ github.ref_name }}"
echo "version=$VERSION" >> "$GITHUB_ENV"
TAG="${{ steps.tag.outputs.name }}"
echo "version=$TAG" >> "$GITHUB_ENV"
echo "body<<EOF" >> "$GITHUB_ENV"
# Extract changelog for this version from CHANGELOG.md
if [ -f CHANGELOG.md ]; then
BODY=$(uv run git-cliff --tag "$VERSION" --strip all | tail -n +2 || true)
BODY=$(uv run git-cliff --tag "$TAG" --strip all | tail -n +2 || true)
else
BODY=""
fi
Expand All @@ -44,7 +55,7 @@ jobs:
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.version }}
tag_name: ${{ steps.tag.outputs.name }}
name: ${{ env.version }}
body: ${{ env.body }}
draft: false
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ htmlcov/
cache/
output/
docs/site/
# Generated from src/cartoload/cli.py by scripts/generate-cli-docs.py
docs/cli.md

# IDE
.idea/
Expand Down
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!-- Auto generated. Run 'just release' in order to update -->

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.0] - 2026-06-26

- Initial release
- Convert WMTS and GeoTIFF raster geodata into Garmin GPS raster maps (`*.img`)
- Unified YAML configuration for sources, layers, and styles
- WMTS tile downloading with on-disk caching and JPEG optimization (mozjpeg trellis quantization)
- Custom Garmin IMG binary writer (GMP container with TRE/RGN/LBL sections and RGN2 raster records)
- CLI (`cartoload build`, `cartoload analyze img`) and reusable Python library (`build_layer`, `SourceConfig`, `LayerConfig`)
- `analyze img` tool for inspecting IMG files and exporting a GeoTIFF mosaic for validation
- Docker image bundling GDAL, mozjpeg, and GMapTool (`gmt`)

[0.1.0]: https://github.com/burgdev/cartoload/releases/tag/v0.1.0
Loading
Loading