Release Notes

Current version: v0.15.8

0.15.8 - 2026-07-10

Feature

Fix

0.15.7 - 2026-07-08

Fix

Chore


0.15.6 - 2026-07-07

Feature

Fix

Docs


0.15.5 - 2026-07-07

Fix


0.15.4 - 2026-07-07

Fix


0.15.3 - 2026-07-07

Lake detail maps


0.15.2 - 2026-07-07

Trails visible when zoomed out


0.15.1 - 2026-07-06

Named peaks


0.15.0 - 2026-07-06

Backcountry campsites

Trailheads

Lake detail maps — pin restyle

Privies

Home page & cleanup


0.14.15 - 2026-07-02

Offline maps — trails now download for real


0.14.14 - 2026-06-27

Data fix

Tooling


0.14.13 - 2026-06-27

Profile page

Content overrides promoted to the static source


0.14.12 - 2026-06-27

Trailhead data

Content overrides promoted to the static source

Tooling & docs


0.14.11 - 2026-06-27

New top-tier visit badges

The new tiers use custom inline SVG icons (rendered into #badge-icon) so they look more premium than the emoji medals of the lower tiers. Gold's next threshold changed from null to 40 so its progress bar now advances toward Platinum instead of disappearing once Gold is reached.


0.14.10 - 2026-06-26

Fix missing trail lines offline

rmnp.pmtiles is only ~8 MB and is the essential vector basemap, so it is no longer deferred — it is fetched during the service-worker install alongside the app shell (core install grows from ~19 MB to ~27 MB). The genuinely heavy files (terrain.pmtiles 23 MB, imagery*.pmtiles 100 MB+) remain excluded from the precache and are cached on demand as before.


0.14.9 - 2026-06-24

Fix iOS PWA home-screen icon

The home-screen / PWA icons are now flattened onto the brand green (#1a4731, matching the outer ring) for a seamless, full-bleed icon. favicon.ico keeps its transparency since browser tabs look best that way. Regenerate with python3 scripts/generate_favicons.py.


0.14.8 - 2026-06-17

Trailhead data cleanup


0.14.7 - 2026-06-17

SEO improvements


0.14.6 - 2026-06-17

Fix fullscreen button overlapping zoom controls

The fullscreen collapse button was repositioning to top: 8px in fullscreen mode, landing on top of the MapLibre zoom controls. Removed the override so the button holds its natural position in the button stack at all times.


0.14.5 - 2026-06-17

Fullscreen map on lake detail pages

A fullscreen button (expand icon) now appears below the offline download button on the lake detail page map. Clicking it expands the map to fill the entire viewport. The icon swaps to a collapse icon; clicking it again or pressing Escape returns the map to its normal inline size.


0.14.4 - 2026-06-17

Orange trail lines on terrain map

Hiking trails now use the same bright orange (#ff8c00, full opacity) on the standard terrain map as they do on the aerial imagery view. Previously the terrain map used a muted brown (#b07840 at 80% opacity) that was hard to distinguish from contour lines. Change applies to both the main map and the lake detail page maps.


0.14.3 - 2026-06-17

When viewing community-uploaded photos in the lightbox on a lake detail page, you can now navigate between photos without closing the overlay:


0.12.6 - 2026-06-11

Offline / PWA fixes

The offline experience was broken in two ways: cache-busted asset URLs (main.css?v=…) never matched the service worker precache (pages rendered unstyled offline), and the install-time precache tried to download all ~414 files (~51 MB) in one shot — iOS kills long service worker installs, silently leaving holes, so unvisited pages errored offline.


0.12.5 - 2026-06-05

Lake photos


0.12.4 - 2026-06-05

Lake photos and homepage cleanup

Trailhead data


0.10.9 - 2026-05-30

0.10.8 - 2026-05-30

Favicons are now exposed at stable domain-root URLs so browsers, Googlebot, and Googlebot-Image can discover the same icon assets consistently:

base.html now links to those root URLs directly, with the 192px PNG listed first. build.py mirrors both large PNG favicon assets into the generated site root alongside the existing SVG, ICO, and Apple touch icon.

Favicon generation cleanup

scripts/generate_favicons.py now writes a true multi-resolution favicon.ico. The regenerated ICO contains 16, 24, 32, 48, and 64 pixel variants instead of only the 16px image, while the 192px and 512px PNG assets were regenerated from the same source artwork.


0.10.7 - 2026-05-30

Search result titles and public lake names

Lake detail pages now use search-focused titles in the form Sky Pond in Rocky Mountain National Park: Trail, Map & Photos. The generated title is shared by the HTML <title>, Open Graph title, and Twitter title so search engines and social previews receive the same clear page label.

Human-friendly display names for USGS comma-style lake names

build.py now generates a public_name for each lake and uses it across public-facing templates. USGS-style names such as Clouds, Lake of the and Clouds, of the Lake render as Lake of the Clouds on lake detail pages, browse cards, home cards, map popups, nearby-lake cards, profile lookups, breadcrumbs, meta descriptions, and structured data.

The raw source name is still retained as raw_name where useful for internal lookup/search context, and Browse Lakes search includes both the public and raw forms so existing searches continue to work.

Search preview metadata cleanup


0.12.3 - 2026-05-31

Internal links across every template were using …/index.html URLs (e.g. /lakes/bear-lake/index.html) while canonical tags pointed to the clean directory URL (/lakes/bear-lake/). This caused Google to crawl both forms, creating duplicate content noise and potentially diluting link equity.

All index.html suffixes removed from internal hrefs in: - base.html — nav links (Browse, Map, Park Access, About) and footer links - home.html — lake cards, Browse/Map CTA buttons - browse.html — lake card links - lake.html — nearby lake cards, area badge, map popup links, browse filter link - map.html — map popup "View Lake" link - 404.html — "Open the map" link

All internal links now match the canonical URL format exactly. The canonical tag itself (/lakes/{slug}/) was already correct — only the link hrefs needed fixing.


0.12.2 - 2026-05-31

Silent Google auth re-authentication


0.12.1 - 2026-05-31

PWA Phase 3 — GPS location (mobile only, RMNP bounds)

Offline UX — offline banner moved to bottom on mobile

About page — Data Sources updated


0.12.0 - 2026-05-31

PWA Phase 2 — Offline Capable

The site is now a fully offline-capable Progressive Web App. After the first launch on a good connection, all core content is available with no network.

Service Worker

Pre-cache manifest (413 entries, ~39 MB)

Asset Notes
rmnp.pmtiles (7.3 MB) Full vector basemap
Terrain PNGs — 221 tiles (23 MB) z5–z12 RMNP bbox + 1-tile buffer; used by maplibre-contour for offline contour lines
All 150 lake detail HTML pages Full path /lakes/{slug}/index.html so in-app links match
8 app shell pages Home, Browse, Map, About, Access, Sign-in, Profile, 404
CSS, JS, fonts, sprites, manifest All static assets
terrain.pmtiles excluded 23 MB; runtime-cached on first map view to stay under iOS 50 MB limit
Lake photos excluded 25 MB; combined with terrain data would exceed iOS limit

Cache routing

MapLibre vendored

MapLibre GL JS and CSS are now vendored at src/static/js/maplibre-gl.js and src/static/css/maplibre-gl.css (was unpkg CDN). Eliminates the last external JS dependency and allows the map to render fully offline.

SW update lifecycle

Offline UX

Build pipeline changes


0.11.4 - 2026-05-31

PWA Phase 1 — Installable


0.11.3 - 2026-05-31

Terrain tile fixes for fully self-hosted contour lines


0.11.2 - 2026-05-31

Self-hosted terrain tiles for contour lines

Contour lines previously fetched terrain data from the AWS public terrarium tile service (s3.amazonaws.com/elevation-tiles-prod/…) at runtime — an external dependency that would break offline and couldn't be cached. Fixed by:

The site now has zero runtime dependency on any external tile service. All map data (basemap, terrain, contours) is served entirely from S3/CloudFront.

TH label on main map trailhead pins

The green trailhead pins on the main map (/map/) were missing the "TH" text label inside the white circle. Added to match the lake detail page pins.


0.11.1 - 2026-05-31

Docs — Maps section rewrite + CloudFront known issue

Updated README section 8 (Maps) to reflect the v0.11.0 self-hosted PMTiles stack. Previous content described the old USGS raster tile approach.


0.11.0 - 2026-05-31

Self-hosted vector map with 3D terrain, contour lines, and hillshade

Replaced the runtime USGS raster tile dependency with a fully self-hosted vector map stack served from S3/CloudFront. All map assets are bundled with the site — no external tile service is called at page load.

Tile stack

Map features

Lake name labels

Style

CloudFront note (prod deploy)

The static/tiles/*.pmtiles path requires a CloudFront cache behavior that forwards the Range header for HTTP range requests to work correctly.


0.10.6 - 2026-05-26

Lake detail maps — "TH" label in the primary trailhead pin

The green trailhead pin on each lake's detail map now displays "TH" in the white circle, matching the style of the grey context-trailhead pins added in 0.10.5. Both pin types now read at-a-glance as trailheads without requiring the user to open the popup.

Stale lake-count reference cleaned up


0.10.5 - 2026-05-26

Lake catalog — expanded from 138 to 150 named lakes

After cross-checking our database against the official NPS lake count (147), Kathryn Neugent's enumerated list (144), and the USGS GNIS / OpenStreetMap named-water-feature data inside the official park boundary polygon, we identified and individually verified 16 new entries while removing 4 grouped "cluster" placeholders.

Trailhead — Cow Creek / McGraw Ranch TH

Added new trailhead entry to trailheads.json: - Cow Creek / McGraw Ranch TH at 40.43098, -105.50064 — historic 1880s homestead the park purchased in 1988; gateway to the Cow Creek, Dark Mountain, and North Boundary Trails

Legacy URL redirects

build.py now emits tiny meta-refresh redirect pages at each old cluster slug so externally-indexed URLs continue to resolve:

Each redirect page uses 0-second meta-refresh + <link rel="canonical"> + JS location.replace so Google treats it as a 301; pages are noindex so they don't compete with the new canonical URLs in search.

Other


0.10.4 - 2026-05-26


0.10.3 - 2026-05-26


0.10.2 - 2026-05-26


0.10.1 - 2026-05-26

0.10.0 - 2026-05-20

0.9.0 - 2026-05-19

0.8.0 - 2026-05-19

0.7.8 - 2026-05-19

0.7.9 - 2026-05-19

0.7.7 — 2026-05-17

Analytics — IP blocklist and admin page filtering


0.7.6 — 2026-05-16

Performance — Core Web Vitals + Build Minification

MapLibre GL JS — deferred load on lake pages

Google Image Search — ImageObject JSON-LD

CSS and JS minification in build pipeline

CloudFront gzip/brotli compression — auto-enabled on deploy


0.7.5 — 2026-05-16

Documentation — Third-Party Dependency Inventory


0.7.4 — 2026-05-16

Admin Image Overrides — Build-time Baking + Flash Fix


0.7.3 — 2026-05-16

Bug Fix — Dunraven / North Fork trailhead coordinates


0.7.2 — 2026-05-16

README updates only


0.7.1 — 2026-05-16

Lake Detail — Nearby Lakes section


0.7.0 — 2026-05-16

SEO — JSON-LD structured data

SEO — Open Graph images

SEO — image alt text, loading priority, and layout hints

Feature Roadmap — Phase 6 SEO added to README


0.6.9 — 2026-05-16

SEO — page metadata

SEO — robots.txt + sitemap.xml


0.6.8 — 2026-05-16

Backend — code documentation pass

Known back-end drift noted during the review (not fixed in this release)


0.6.7 — 2026-05-16

Mobile fixes

About page

Easter eggs


0.6.6 — 2026-05-16

Browse Lakes — Lake Facts sidebar

About — "The Project" section redesign


0.6.5 — 2026-05-16

Park Access page — major enhancements


0.6.4 — 2026-05-16

Admin — Analytics improvements


0.6.3 — 2026-05-15

My Profile — Hikes Completed pagination


0.6.2 — 2026-05-15

Admin — Releases and Design tabs (new)


0.6.1 — 2026-05-15

Park Access page (new)

Wheelchair accessibility — lake pages

Lake detail — Photos section gated to admins

Admin — mobile navigation


0.6.0 — 2026-05-15

Admin — Content tab (new)

Admin — Moderation tab (new)

Admin — Analytics: IP detail drawer

Admin — Feedback tab (new)

Admin — Users: delete user

Browse All Lakes: pagination

About page: feedback form

Lake detail: hero image override

Visits: created_at timestamp


0.5.0 — 2026-04-?

0.4.0

0.3.0

0.1.2