Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
6af6e6b
feat(viewing-groups): bake per-feature vg tag + client selection UI
beetlebugorg Jun 30, 2026
59883b2
fix(web): settings panel polish — stacked rows, sticky section headers
beetlebugorg Jun 30, 2026
34bf183
feat(tile57): opt-in CGO backend linking native libtile57
beetlebugorg Jun 30, 2026
b06652d
feat(tile57): mariner-driven, set-aware engine style + style-diff end…
beetlebugorg Jul 1, 2026
d0a139e
feat(web): render tile57 tiles from the engine style (both live serve…
beetlebugorg Jul 1, 2026
4e62967
fix(tile57): always bake with libtile57 — kill the "reverts to go" bug
beetlebugorg Jul 1, 2026
ecc17b6
build(tile57): zig-cc cross-compile tooling for CGO+libtile57 binaries
beetlebugorg Jul 1, 2026
f4e5611
feat(tile57): per-band bake parity — cp bake --tile57 --bands
beetlebugorg Jul 1, 2026
fe34751
feat(tile57)!: delete the Go bake/portrayal engine — libtile57 is the…
beetlebugorg Jul 1, 2026
026d57f
refactor(tile57): adopt the new libtile57 ABI
beetlebugorg Jul 1, 2026
706fdcd
fix(tile57): serve the engine style for any baked pack, drop the spri…
beetlebugorg Jul 1, 2026
1733354
fix(tile57): bundle bake was EMPTY — MaxZoom 0 clamps to z0, not "no …
beetlebugorg Jul 1, 2026
bfce37e
refactor(tile57)!: make libtile57 unconditional — drop the -tags tile…
beetlebugorg Jul 1, 2026
edde447
build(tile57): flip `make build` to CGO+libtile57 (drop embed_s101 path)
beetlebugorg Jul 1, 2026
2fd2ff8
ci(tile57): build libtile57 with Zig before go build/test [UNVALIDATED]
beetlebugorg Jul 1, 2026
0b65f46
build(tile57): make xbuild the zig cross-build; drop the dead embed_s…
beetlebugorg Jul 1, 2026
3212ff8
docs(claude): invert the CGO-free invariant — CGO required, libtile57…
beetlebugorg Jul 1, 2026
56552ca
feat(tile57): multi-source engine style for multi-pack installs (Phas…
beetlebugorg Jul 1, 2026
8350152
chore(tile57): delete the dead s101catalog pkg + embed_s101 Makefile …
beetlebugorg Jul 1, 2026
fe49da4
fix(web): rank pick candidates by geometry primitive before drawing p…
beetlebugorg Jul 1, 2026
1e8e694
fix(make): force the relink in 'make build' — go doesn't hash externa…
beetlebugorg Jul 1, 2026
0f29e92
fix(scamin): apply the SCAMIN filter-gate cutoff on the initial engin…
beetlebugorg Jul 2, 2026
2d582b9
perf(web): increase tile cache zoom levels and reduce fade duration
beetlebugorg Jul 2, 2026
cdfc2cb
chore: delete the dead pure-Go S-101 portrayal support (pkg/s100, pkg…
beetlebugorg Jul 2, 2026
c75068a
refactor(s57)!: slim the Go S-57 stack to metadata + simulator essent…
beetlebugorg Jul 2, 2026
85df764
fix(style): pass the set's real tile floor as the chart source minzoom
beetlebugorg Jul 2, 2026
73a5675
perf(web): apply the SCAMIN filter-gate at gesture settle, not per mo…
beetlebugorg Jul 2, 2026
34a7935
perf(web): re-apply the SCAMIN gate at most every 500ms while zooming
beetlebugorg Jul 2, 2026
24d03d4
feat(web): rewrite the band-handoff smax clause alongside the SCAMIN …
beetlebugorg Jul 2, 2026
edda220
fix(web): treat smax-only layers as SCAMIN-gated for denom injection
beetlebugorg Jul 2, 2026
b79efaa
fix(web): apply the showNoData toggle in engine mode
beetlebugorg Jul 2, 2026
ad2adee
fix(web): retry the SCAMIN/smax cutoff injection after style diffs
beetlebugorg Jul 2, 2026
9d4d44f
feat(web): viewing-group quick-toggle rail on the left map edge
beetlebugorg Jul 2, 2026
ed5317a
feat(tiles): MLT-default bakes end-to-end — encoding hint through sty…
beetlebugorg Jul 2, 2026
08e500d
chore: open-source prep — mechanical hygiene batch
beetlebugorg Jul 2, 2026
c5c2dab
chore: rename the engine module path to beetlebugorg/tile57
beetlebugorg Jul 2, 2026
3f2886a
fix(web): survive stale layer ids in the SCAMIN gate apply loop
beetlebugorg Jul 2, 2026
83d9a89
docs(readme): tell the truth about the build — libtile57 engine, CGO,…
beetlebugorg Jul 2, 2026
4790841
docs(site): truth pass — sibling-clone install, libtile57 architectur…
beetlebugorg Jul 2, 2026
acb6897
feat(web): include live SCAMIN/smax gate denominators in the debug sn…
beetlebugorg Jul 2, 2026
42bfca5
docs(notices): regenerate the dependency inventory; honest IHO fetch-…
beetlebugorg Jul 2, 2026
5165be4
ci: source-only release stub; public tile57 sibling + Zig in CI and d…
beetlebugorg Jul 2, 2026
4bd8365
Merge docs-truth pass: README/site/notices/CI rewritten for the open-…
beetlebugorg Jul 2, 2026
69c06bd
style: gofmt the three drifted files
beetlebugorg Jul 2, 2026
9bcddc1
feat(overscale): client half of the engine overscale indication — osc…
beetlebugorg Jul 2, 2026
beeea1b
docs: the public repo is chartplotter-go — fix self-URLs
beetlebugorg Jul 2, 2026
6c7ba6a
refactor(server): decode CATALOG.031 via the tile57 binding
beetlebugorg Jul 2, 2026
6e73bbe
refactor(meta): extract cell metadata and index cell bounds via the e…
beetlebugorg Jul 2, 2026
36053f2
refactor(sim): build the water mask from tile57_chart_features GeoJSON
beetlebugorg Jul 2, 2026
3363dc0
refactor(s57)!: delete the Go S-57/ISO-8211 parser stack — libtile57 …
beetlebugorg Jul 2, 2026
d1fe559
Merge s57-removal: the Go S-57 stack is at zero — libtile57 is the on…
beetlebugorg Jul 2, 2026
32b9671
build(engine)!: vendor tile57 as a git submodule instead of a sibling…
beetlebugorg Jul 2, 2026
e2949fe
ci: replace the sibling tile57 checkout with one recursive submodule …
beetlebugorg Jul 2, 2026
037c189
docs: describe the vendored tile57 submodule build and the dev-overri…
beetlebugorg Jul 2, 2026
12547a9
build(engine): fix bump-tile57 nested-pin semantics; pin tile57 at a3…
beetlebugorg Jul 2, 2026
93c0c7a
chore: point engine-spec comment references at the tile57/ submodule …
beetlebugorg Jul 2, 2026
072e5c0
Merge submodule conversion: tile57 vendored + used for the build
beetlebugorg Jul 2, 2026
e83441f
fix(web): straggler-sweep reload after each SCAMIN gate apply
beetlebugorg Jul 2, 2026
b466314
perf(web): stop the coverage-boxes setData storm during zoom gestures
beetlebugorg Jul 2, 2026
8d02363
perf(web): make mid-zoom SCAMIN gate applies reload-free (light applies)
beetlebugorg Jul 2, 2026
f17ade2
Merge perf/interactive-zoom-smoothness: kill the coverage-boxes setDa…
beetlebugorg Jul 2, 2026
2bde4f8
feat: engine-commit stamp — show which tile57 commit baked the visibl…
beetlebugorg Jul 2, 2026
e214ca0
Merge engine-commit stamp: bake-time engine id on the map by the NOAA…
beetlebugorg Jul 2, 2026
96bd434
feat(pick-report): copy feature data as self-diagnosing JSON
beetlebugorg Jul 2, 2026
a6e07fa
build(engine)!: depend on tile57 as a public sibling clone, not a sub…
beetlebugorg Jul 2, 2026
bcf72cb
Merge chore/tile57-sibling-clone: drop the submodule, depend on the p…
beetlebugorg Jul 2, 2026
bc2aa90
Merge pick-report copy button: copy selected feature's debug JSON (+g…
beetlebugorg Jul 2, 2026
66e2c5f
feat(server): cacheable tile responses keyed on the bake-generation t…
beetlebugorg Jul 2, 2026
cac56ec
feat(server): stamp ?g on engine-style tile URLs + cache 204s
beetlebugorg Jul 2, 2026
22eeec3
ci(release): reinstate prebuilt binary releases driven by xbuild
beetlebugorg Jul 2, 2026
1bca94f
Merge binary-release tooling: xbuild + macOS jobs, prebuilt packaging
beetlebugorg Jul 2, 2026
3dc160b
ci(release): package binaries with plain shell, not GoReleaser Pro
beetlebugorg Jul 2, 2026
7ec9c20
feat(web): allow user map rotation in free orientation mode
beetlebugorg Jul 2, 2026
678ff68
feat(web): Shift+drag map rotation in free mode (cross-platform)
beetlebugorg Jul 2, 2026
38f22b7
feat(web): 3D pitch in free mode — Shift+drag vertical tilts, touch p…
beetlebugorg Jul 2, 2026
b46ea0c
feat(docker): tiny multi-arch scratch image from a static musl binary
beetlebugorg Jul 3, 2026
4b65764
Merge feat/docker-static-musl: tiny FROM-scratch multi-arch Docker image
beetlebugorg Jul 3, 2026
98d2068
perf(web): make queryRenderedFeatures calls cheaper (layers + throttle)
beetlebugorg Jul 3, 2026
8f1b31b
perf(web): kill per-move-frame HUD/scalebar re-parse + add ?fps overlay
beetlebugorg Jul 3, 2026
920257d
fix(server): proxy the OSM basemap to fix 403s (compliant User-Agent)
beetlebugorg Jul 3, 2026
a580ead
perf(web): give each chart source its pack bounds (skip non-covering …
beetlebugorg Jul 3, 2026
60eb7da
perf(web): load tiles during zoom, not after it settles
beetlebugorg Jul 3, 2026
b1c5981
perf(web): run the SCAMIN straggler-sweep reload once at boot, not pe…
beetlebugorg Jul 3, 2026
52dd0e6
feat(scamin): add ?scaminmerge A/B toggle collapsing the SCAMIN layer…
beetlebugorg Jul 3, 2026
4454324
Merge SCAMIN merged-layer toggle (?scaminmerge): collapse the bucket …
beetlebugorg Jul 3, 2026
cfc8c5b
perf(web): make the merged SCAMIN gate the default
beetlebugorg Jul 3, 2026
b4e80c5
fix(units): drop a decimal for feet so depths/heights read whole
beetlebugorg Jul 3, 2026
4c9c46b
chore: provider-enc-root server model + tile57 git-submodule migration
beetlebugorg Jul 4, 2026
2cd9ee5
fix(dev-tools): "Rebuild all charts" re-bakes per provider
beetlebugorg Jul 4, 2026
cdbf11d
fix(web): honor the ",alpha" suffix on ColorFill area tokens (TSEZNE …
beetlebugorg Jul 4, 2026
fbb3712
fix(web): guard _renderedCellNames against getStyle() returning undef…
beetlebugorg Jul 5, 2026
9dfc649
docs(web): align chartLayerIds comment with the tile57/2 6-source-lay…
beetlebugorg Jul 5, 2026
aff454b
feat(server): default /api/style.json to the merged band-independent …
beetlebugorg Jul 5, 2026
29b8794
chore(build): drop stale specs/tile57-only-engine.md references from …
beetlebugorg Jul 5, 2026
8e4a597
feat(web): drive the server-less widget from the tile57 WASM style en…
beetlebugorg Jul 5, 2026
175c5f8
refactor(serve,web)!: drop the --tile57 live tile set + the client sm…
beetlebugorg Jul 5, 2026
7f94ad9
feat(web): stop the camera at the data depth — finest covering band +…
beetlebugorg Jul 5, 2026
67d2b31
fix(web): rebuild the style when a loaded archive needs a different t…
beetlebugorg Jul 5, 2026
156ab6b
fix(web): decoder-mismatch check must not hide behind the live-source…
beetlebugorg Jul 5, 2026
57edc1b
feat(bake,web)!: one merged archive per district — retire --bands and…
beetlebugorg Jul 5, 2026
7cc3328
feat(demo): widen the Annapolis demo cell set to the surrounding appr…
beetlebugorg Jul 5, 2026
497c467
feat(web): feet read as whole numbers, metric keeps one decimal
beetlebugorg Jul 5, 2026
ac4ff32
feat(bake): flat-archive bakes stream through the bundle driver
beetlebugorg Jul 6, 2026
ee02082
chore(web): OVERSCALE_MARGIN 2 → 1, matching the bake's default fill-…
beetlebugorg Jul 6, 2026
d1b8ff9
fix(bake): unpack a directory of .zip exchange sets instead of coveri…
beetlebugorg Jul 6, 2026
5f0ad13
feat(aux): loose static attachment files, one /aux path online or off
beetlebugorg Jul 6, 2026
8599341
feat(web): pick-report UX overhaul — table layout, header nav, keyboard
beetlebugorg Jul 6, 2026
609d4aa
fix(demo): rebuild the WASM style engine in `make demo` (was shipping…
beetlebugorg Jul 6, 2026
3b4eb17
chore(tile57): float submodule pin to main (c0003f3 → 068474e)
beetlebugorg Jul 6, 2026
54a0ce6
Merge remote-tracking branch 'origin/main' into feature/tile57
beetlebugorg Jul 6, 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
58 changes: 58 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Docker build context trimming. The image build only needs the Go source, the
# embedded web assets (web/embed.go go:embed list), go.mod/go.sum, and
# scripts/xbuild-tile57.sh — everything else just bloats the context. The tile57
# engine is git-cloned inside the builder, not copied from here.

# VCS + agent/editor state
.git/
.github/
.claude/
.idea/
.vscode/
.DS_Store

# The tile57 engine submodule: cloned fresh in the builder (shallow + floating),
# never copied from the context — so the local checkout doesn't leak in or pin it.
tile57/

# Build output / release staging
bin/
dist/
release-assets/
*.test
*.out
coverage.*

# Local Go workspace override (must never reach the builder — it would repoint the
# engine replace at a path that doesn't exist in the image).
go.work
go.work.sum

# Baked tile archives + generated (non-embedded) client assets
*.pmtiles
web/*.pmtiles
web/colortables.json
web/linestyles.json
web/patterns.json
web/patterns.png
web/sprite.json
web/sprite.png
web/chartplotter.wasm
web/charts-index.json
web/charts-user.*

# Large test/data material + local artifacts (not needed to build the binary)
testdata/
examples/
*.cpx
/chartplotter

# The docs site (Docusaurus) is not part of the binary build
docs/node_modules/
docs/build/
docs/.docusaurus/

# Docker + compose files themselves
Dockerfile
.dockerignore
compose.yaml
54 changes: 47 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,71 @@ on:
push:
pull_request:

# libtile57 is the sole engine: the build is CGO and statically links the native
# lib from the public beetlebugorg/tile57 repo, built with Zig 0.16. That repo is
# the ./tile57 git submodule (go.mod's replace points at ./tile57/bindings/go, and
# the binding's cgo LDFLAGS at its zig-out/lib); its own submodules fetch the IHO
# S-101 catalogues. `submodules: recursive` checks it out at the committed pin, then
# we float it to the engine's latest main (the pin is just last-known-good).
# NOTE: correct-by-construction but unvalidated until pushed to GitHub.
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Checkout chartplotter (+ tile57 engine submodule)
uses: actions/checkout@v7
with:
path: chartplotter
submodules: recursive
# Keep building against the engine's latest main (floating); the committed
# submodule pin is just last-known-good. Move tile57 to origin/main, then
# re-sync its nested IHO catalogues to that commit's pins.
- name: Float tile57 submodule to latest main
run: |
git -C chartplotter submodule update --remote tile57
git -C chartplotter submodule update --init --recursive tile57
- uses: actions/setup-go@v6
with:
go-version: '1.26'
cache: true
cache-dependency-path: chartplotter/go.sum
- name: Install Zig
uses: mlugg/setup-zig@v2
with:
version: 0.16.0
- name: Build libtile57
run: make -C chartplotter tile57-lib
- name: Format check
run: test -z "$(gofmt -l .)" || (gofmt -l . && exit 1)
run: make -C chartplotter fmt-check
- name: Vet
run: go vet ./...
run: make -C chartplotter vet
- name: Test
run: go test ./...
run: make -C chartplotter test
- name: Build
run: go build ./...
run: make -C chartplotter build

govulncheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Checkout chartplotter (+ tile57 engine submodule)
uses: actions/checkout@v7
with:
path: chartplotter
submodules: recursive
- name: Float tile57 submodule to latest main
run: |
git -C chartplotter submodule update --remote tile57
git -C chartplotter submodule update --init --recursive tile57
- uses: actions/setup-go@v6
with:
go-version: '1.26'
cache: true
cache-dependency-path: chartplotter/go.sum
- name: Install Zig
uses: mlugg/setup-zig@v2
with:
version: 0.16.0
- name: Build libtile57
run: make -C chartplotter tile57-lib
- name: Vulnerability scan
run: go run golang.org/x/vuln/cmd/govulncheck@latest ./...
run: cd chartplotter && go run golang.org/x/vuln/cmd/govulncheck@latest ./...
76 changes: 76 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Docker

# Build + publish the multi-arch container image to GHCR. On a v* tag we push the
# version + `latest`; on main we push `edge` (a rolling pre-release image). The
# image is a FROM scratch wrapper around the fully-static musl binary (the
# "go-dims" pattern) — see Dockerfile.
#
# Multi-arch is done by zig-cc CROSS-COMPILE inside the builder stage, NOT QEMU:
# the builder is pinned to the native BUILDPLATFORM and links each TARGETARCH with
# `zig cc`, so buildx emits linux/amd64 + linux/arm64 from one fast amd64 runner.
# The engine (public github.com/beetlebugorg/tile57, whose submodules hold the IHO
# S-101 catalogues) is git-cloned inside the Dockerfile, so no sibling checkout is
# needed here. Same IHO-embed caveat as the binary releases (accepted — the image
# embeds the catalogue via libtile57).
#
# NOTE: correct-by-construction but UNVALIDATED until a real push runs on GitHub
# (buildx needs GHCR auth + the runner, neither available locally).

on:
push:
branches: [main]
tags: ["v*"]

permissions:
contents: read
packages: write

env:
IMAGE: ghcr.io/beetlebugorg/chartplotter

jobs:
image:
runs-on: ubuntu-latest
steps:
- name: Checkout chartplotter
uses: actions/checkout@v7

- name: Set up QEMU
# Only needed so buildx can DECLARE the arm64 platform; the actual build is
# a native cross-compile (the builder stage pins --platform=$BUILDPLATFORM),
# so no guest code is emulated.
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Derive image tags
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/v') }}
type=raw,value=edge,enable=${{ github.ref == 'refs/heads/main' }}

- name: Build + push (linux/amd64, linux/arm64)
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
VERSION=${{ github.ref_type == 'tag' && github.ref_name || format('edge-{0}', github.sha) }}
cache-from: type=gha
cache-to: type=gha,mode=max
58 changes: 38 additions & 20 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ on:
- "web/**"
- "cmd/**"
- "internal/**"
- "pkg/**"
- "scripts/fetch-demo-cells.sh"
- "Makefile"
- "go.mod"
Expand All @@ -27,16 +28,38 @@ concurrency:
group: pages
cancel-in-progress: true

# The demo + Chart 1 tiles are baked by the chartplotter binary, which links the
# native libtile57 engine — so this build needs the ./tile57 engine submodule (its
# own submodules fetch the IHO S-101 catalogues from the IHO's own repos) and the
# Zig toolchain, same as ci.yml. `submodules: recursive` checks it out at the
# committed pin, then it's floated to the engine's latest main (matching go.mod's
# ./tile57/bindings/go replace).
# NOTE: correct-by-construction but unvalidated until pushed to GitHub.
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Checkout chartplotter (+ tile57 engine submodule)
uses: actions/checkout@v7
with:
path: chartplotter
submodules: recursive
- name: Float tile57 submodule to latest main
run: |
git -C chartplotter submodule update --remote tile57
git -C chartplotter submodule update --init --recursive tile57

- uses: actions/setup-go@v6
with:
go-version: "1.26"
cache: true
cache-dependency-path: chartplotter/go.sum
- name: Install Zig
uses: mlugg/setup-zig@v2
with:
version: 0.16.0
- name: Build libtile57
run: make -C chartplotter tile57-lib

# Cache the curated NOAA demo-cell downloads (one per band over Annapolis),
# keyed on the cell list / fetch script so a change re-downloads. Lets the
Expand All @@ -45,57 +68,52 @@ jobs:
uses: actions/cache@v6
with:
path: ${{ runner.temp }}/demo-cells
key: demo-cells-${{ hashFiles('scripts/fetch-demo-cells.sh', 'Makefile') }}
key: demo-cells-${{ hashFiles('chartplotter/scripts/fetch-demo-cells.sh', 'chartplotter/Makefile') }}

# Cache the S-52 PresLib "ECDIS Chart 1" source cells (the IHO draft zip is
# fetched once and extracted), keyed on the fetch script so a change re-pulls.
- name: Cache PresLib Chart 1 cells
uses: actions/cache@v6
with:
path: ${{ runner.temp }}/preslib-cells
key: preslib-cells-${{ hashFiles('scripts/fetch-preslib-cells.sh') }}
key: preslib-cells-${{ hashFiles('chartplotter/scripts/fetch-preslib-cells.sh') }}

# Build the read-only widget demo bundle into docs/static/demo so Docusaurus
# copies it into the published site at /chartplotter/demo/. Needs the S-101
# catalogue (IHO material kept out of the repo): clone it and let `make build`
# (a dep of `make demo`) embed it. The bundle is pure static files — no backend.
# copies it into the published site at /chartplotter/demo/. The S-101
# catalogue is embedded in libtile57 (fetched via the tile57 submodules
# above), so no catalogue clone or --s101 override is needed. The bundle is
# pure static files — no backend.
- name: Build live demo bundle (docs/static/demo)
run: |
git clone --depth 1 https://github.com/iho-ohi/S-101_Portrayal-Catalogue.git "$RUNNER_TEMP/s101-pc"
git clone --depth 1 https://github.com/iho-ohi/S-101-Documentation-and-FC.git "$RUNNER_TEMP/s101-fc"
make demo \
S101_PC="$RUNNER_TEMP/s101-pc/PortrayalCatalog" \
S101_FC="$RUNNER_TEMP/s101-fc/S-101FC/FeatureCatalogue.xml" \
make -C chartplotter demo \
DEMO_CACHE="$RUNNER_TEMP/demo-cells" \
DEMO_OUT="docs/static/demo"

# Bake the S-52 "ECDIS Chart 1" reference sheet to tiles into docs/static/chart1
# (published at /chartplotter/chart1/). The symbol-compliance docs page embeds
# it live, reusing the demo bundle's frontend assets. Reuses the S-101 catalogue
# cloned above; the source cells come from the IHO PresLib draft (fetched once).
# it live, reusing the demo bundle's frontend assets; the source cells come
# from the IHO PresLib draft (fetched once).
- name: Build live Chart 1 tiles (docs/static/chart1)
run: |
make demo-chart1 \
S101_PC="$RUNNER_TEMP/s101-pc/PortrayalCatalog" \
S101_FC="$RUNNER_TEMP/s101-fc/S-101FC/FeatureCatalogue.xml" \
make -C chartplotter demo-chart1 \
PRESLIB_CACHE="$RUNNER_TEMP/preslib-cells" \
DEMO_CHART1_OUT="docs/static/chart1"

- uses: actions/setup-node@v6
with:
node-version: "20"
cache: npm
cache-dependency-path: docs/package-lock.json
cache-dependency-path: chartplotter/docs/package-lock.json
- name: Install
working-directory: docs
working-directory: chartplotter/docs
run: npm ci
- name: Build
working-directory: docs
working-directory: chartplotter/docs
run: npm run build

- uses: actions/upload-pages-artifact@v5
with:
path: docs/build
path: chartplotter/docs/build

deploy:
needs: build
Expand Down
Loading
Loading