Alpha Changelog

Development log for Ultreia. We're in early alpha - expect rough edges! You're cordially invited to kick the tires of this app, as much as you'd like. Your content will not be lost as we add more features and spray the bugs with borax. If you find a bug, you may report it to mailto:hola@ultreia.me or find other ways to contact us on our contacts page.


v0.16.5 - Admin Improvements


v0.16.4 - Internal Improvements


v0.16.0 - Internal Cleanup


v0.14.2 - Candidate Editor QOL


v0.14.1 - Support Page


v0.14.0 - Help Out Enhancements


v0.13.1 - Albergue Deduplication Tool


v0.13.0 - Albergue Candidate Staging System


v0.12.0 - Route-Filtered POI Display


v0.11.1 - Full Offline Support


v0.11.0 - Fountain Importer & Pan Performance


v0.10.0 - Multi-Route & Drawer Redesign


v0.9.0 - Route Colors & Variants


v0.8.0 - Help Out & Tile Automation


v0.7.0 - Wayfinder's Companion Design


v0.6.5 - Leaf & Shell List


v0.6.4 - POI Detail Pages


v0.6.3 - Reviews & Ratings


v0.6.2 - Fountain Corrections


v0.6.1 - Field Survey


v0.6.0 - Image uploads


v0.5.2 - Admin improvements and polish


v0.5.1 - Performance optimizations


v0.5 - Points of Interest and enhanced map markers


v0.4.3 - Remember selected map layer


v0.4.2 - Add pricing fields to albergue admin form


v0.4.1 - Alpha welcome popup and changelog


v0.4.0 - Add albergues to map with public detail pages


v0.3.0 - Add local tile serving, markdown pages, and Caddy config

Local tile serving (saves CDN costs in development):
- TilesController with Range request support
- tiles.ultreia.me Caddy config for direct file serving
- tile_url helper switches between local/CDN by environment
- ./ultreia sync-tiles command for uploading to bunny.net

Markdown pages system:
- PagesController loads .md files from content/pages/
- Redcarpet gem for GitHub-flavored markdown
- /txt/:slug routes (about, help, settings)
- Clean layout with back button, styled content

Other fixes:
- Service worker routes all .pmtiles to tile handler (fixes 206 cache errors)
- data-turbo="false" on cross-layout links (fixes Turbo conflicts)


Fix N+1 queries, add MDI icons, improve layer bar styling


Clean up menu drawer with centered logo


Add layer bar, hamburger menu, and iOS PWA improvements


Add offline tile caching and fountain pin markers


Switch from Leaflet to MapLibre with self-hosted PMTiles


Add server management script and admin auth


Set up PWA foundation with manifest and service worker

App is now installable on mobile devices.


Add project documentation


Add tri-state toggle component for potability field


Add admin CRUD for fountains with map picker


Add fountains with viewport-based map loading

Features:
- Fountain model with PostGIS point, potability (true/false/null)
- Imported 730 fountains from legacy Django database
- Viewport-based loading for routes and fountains (bbox filtering)
- Color-coded fountain markers (green/red/gray for potability)
- Debounced map updates (300ms) to prevent request spam
- Flicker-free layer swapping

API:
- GET /api/fountains?bbox=west,south,east,north
- GET /api/routes/:id/trackpoints?bbox=west,south,east,north