Field Notes

What's new on the road. The latest features, fixes, and small improvements — newest at the top, with links to the full documentation when there's more to read.

About this page — Field Notes is the running journal of changes to the Where Is Tereza? platform. Each entry has a date, a short blurb, and a Read more link to the relevant doc. For the technical commit log, see the build number in the sidebar footer.


May 2026

3 May · Edited photos can borrow GPS from the original

Editing a photo (crop, filter, re-export) almost always strips the EXIF block, so the edited version arrives with no GPS or capture time and lands unplaced. The trip admin now has a 📎 Use original for EXIF button on every photo without a location: drop the unedited original, the server reads its EXIF in memory and applies it to the edited photo, the original is never written to disk and doesn't count against your storage. Works for photos uploaded weeks ago too — open the photo, drop the original, done.

Read more →

1 May · WhatsApp / Signal photos land on the map automatically

Photos forwarded via WhatsApp or Signal lose their EXIF metadata, so the uploader used to fall back to "current time" — which placed the photo at wherever Tereza is now, not where she was when the photo was taken. The system now parses the original filename (WhatsApp Image 2026-05-01 at 14.35.26.jpeg, signal-2026-…, IMG-20260501-WA0001.jpg, etc.) and extracts the capture time. That timestamp feeds into the same GPS-matching pipeline that EXIF uses, so the photo lands at the right spot on the route.

Read more →

1 May · Photo placement map shows the full route

The "Place photo on map" modal now shows the complete trip route including today's unmatched GPS tail. Previously it only loaded the snap-to-roads version, which lagged behind the live tracker for any walk or drive that hadn't been route-matched yet.

Read more →

1 May · Luminous wire — trip line that glows on Satellite

The gold route line was hard to see on Terrain and Satellite tiles because the brand gold blends into warm beige and busy rooftop colours. Instead of changing the line colour per map style (which would feel jarring), every segment now renders as three stacked layers: a dark halo underneath, the brand gold in the middle, and a thin bright-gold core on top. Result: the line looks identical on the dark default map and "glows" on light maps — all without touching the brand colour.

Read more →

1 May · Segment replay

Open a trip segment card and click Replay this segment to replay just that segment's GPS points — same controls, same Drone mode, same photo slideshow, just scoped to the time range you care about. The main Replay button next to the trip title still replays the whole trip.

Read more →

1 May · Collapsible trip widget

The left trip widget now fits any viewport. Trip Stats and Daily Distance are collapsible (click the chevron). When segments exist, Trip Stats starts closed and only the latest segment auto-expands — older segments show a one-line summary until clicked. The widget also caps its height to the screen and scrolls internally, so it never bleeds past the bottom edge.

Read more →

1 May · Smart photo overlay during replay

Photos popping up during replay now position themselves near the marker — above it by default — and dodge the trip widget, layers panel, and daily-log strip. Previously the photo could land on top of the stats you were reading.

Read more →

1 May · Smooth replay trail

The replay trail polyline and the marker now both follow the same smooth Catmull-Rom curve the gold route uses. Previously the marker took straight-line shortcuts between raw GPS points — cutting across bays, piers, and sharp bends — while the trail drew the correct curved path. They now track identically.

Read more →

1 May · Thousands separators

Large numbers are grouped with a non-breaking space: 1 745.2 km, 12 419 m gain. Matches the Czech / SI convention. The count-up animation in the hero card keeps the grouping during the tween so the digits don't jump.

1 May · Support page in org admin

The sidebar Support item now opens a full page instead of a modal. It lists every ticket you've filed, with status badges and submission dates. Click a row to see the ticket's timeline in a closeable modal (Submitted → Investigating → Accepted → Resolved). The + Create new request button opens the familiar contact form; after submission the modal closes and a toast confirms it was sent.

Read more →

1 May · Debug bundle sharing

The Debug bundle section (now inside the Support page) lets you pick a date range, generate a diagnostic JSON, and share it directly with support in one click — no manual download + paste needed. The bundle includes raw GPS data, classifier output, trip metadata, source freshness, and a sanitised config snapshot.

Read more →

1 May · Weather icons as SVG

Weather condition chips on segment cards and daily-log cards are now monochrome stroke SVGs instead of Unicode emoji. The previous emoji renderer had a known issue where the "fog" glyph rendered as a blank square on some macOS versions. SVGs render identically across every browser and pick up the theme's accent colour via currentColor.

Read more →

1 May · Day card improvements

Clicking a daily-distance card now fits the entire day on the map — including all segments, not just the first one. Past-day weather chips fall back to a cloud icon when the condition is unavailable but temperature data exists, so the chip is never blank.


April 2026

30 Apr · Achievements — 52 badges across 11 categories

Where Is Tereza? now hands out badges for what you've done — not to compete with anyone else, just for the small "you hit 1,000 km" nod that feels good after a long road. Categories: Distance, Transport, Elevation, Speed, Streaks, Explorer, Photography, Social, Tech / Setup, Weather, Special. Some unlock once (World Walker for 10,000 km lifetime), others stack on every qualifying trip and show a ×N count (Century Club, Hill Climber, Beast Mode).

Engine is fully passive: every time data changes — GPS arrives, trip saves, photo uploads, road snap runs — the badge engine re-evaluates the catalog and unlocks anything new. No claim button, no leaderboard, no analytics phoned home anywhere. Trophy case shows up as a 🏆 counter on your About Me card on the public trip page; admin gets a dedicated Achievements section with earned (gold) / in-progress (with completion bar) / locked (greyed) tiers.

Read more →

30 Apr · Auto-detected flight arcs — fully offline

Flight detection now runs entirely from your own GPS data — no external service, no API key, no configuration. The system covers every commercial airport in the world (~28,000 in the airport database) and works the moment your trip is opened.

Two passes work together:

  • Mode-based pass. The transport classifier already tags GPS points as flying (altitude ≥ 1,500 m + speed ≥ 200 km/h). We find runs of flying points, then scan ±30 GPS samples around each end of the run for the point closest to an airport within 60 km. That handles cases where the phone got clean cruise GPS but messy approach data.
  • Gap-based pass. For full airplane-mode flights with no GPS during cruise, we scan for ≥ 30 min and ≥ 50 km gaps and snap each end to the nearest airport within 20 km.

If both endpoints resolve, a 64-point great-circle arc gets drawn between the airports with a sin-curve altitude profile (peak ≈ 11,000 m). The 3D drone replay zooms out to a continental bird's-eye view for the duration of the flight, then smoothly descends to terrain-following when you land.

Read more →

30 Apr · Smarter join between flight arc and ground GPS

When the phone reacquires signal during descent it dumps a batch of buffered points — those would otherwise scribble parallel zigzag lines next to the runway, especially after a road snap that mis-classified some of them as driving. The arrival window of the flight overlay was widened from 5 to 15 minutes past the last in-air point so all that descent noise gets cleanly replaced by the synthetic arc.

The polyline join itself was sharper than it needed to be — at mode boundaries the smoothing only had one point of context. Increased the Catmull-Rom overlap to three points so the spline has enough curvature info to round the flying ↔ ground transition. Result: visibly cleaner approaches, no fake straight lines bridging airport reference point to first surviving GPS.

30 Apr · Phone-on-airplane guide refreshed

The Tracking on flights doc was rewritten around what actually matters: when to flip Airplane Mode (just before taxi, not at the gate), why iOS / Android both keep the GPS chip on with the radio off, how to re-enable Wi-Fi for in-flight upload while staying in Airplane Mode, and what to expect on the map afterwards. Plus a frank "crew authority always wins" note — if cabin crew asks you to power the phone all the way off, the auto-detected arc fills the gap when you turn it back on.

Read more →

29 Apr · 3D Drone Flythrough

The flat replay just got a third dimension. Click the 3D toggle in the replay bar and the map transforms into a satellite-imagery terrain flythrough — the camera follows the marker across real 3D terrain, mountains rise, valleys carve, rivers glitter below.

Two camera modes: Drone chase (low, close, cinematic — like a pursuit drone hugging the path) and Bird's eye (higher altitude, landscape context). The bearing tracking is speed-aware: at slow replay the camera follows turns gracefully; at 250× it holds its heading and lets the trail flow under it. A full path tile preload runs behind the scenes so every satellite tile is already in cache before the flythrough starts — no grey-outs, no colour shifts, no loading pop-in.

Works on any WebGL device. Lower-end hardware gets reduced tile resolution automatically. Fullscreen button sits right on the 3D map so you can go immersive in one click.

Read more →

29 Apr · Live stats during replay

The hero card now counts up in real time as the replay marker moves. Distance ramps from 0 toward the trip total, average speed converges, max speed climbs with each peak, and moving time ticks. When replay ends, the card smoothly restores the static totals. Small thing, big wow.

29 Apr · Replay hides distractions

When a replay starts, the right-side widgets (Layers, Date Filter, About Me, Weather) slide away so the focus is entirely on the map and the live hero stats. Everything reappears when replay closes — your toggle states are preserved.

28 Apr · Trip Replay — cinematic playback with photos

Open a finished trip and hit ▶ Replay. A pulsing marker animates along the recorded route, the trail draws itself behind it, and any photos with GPS or timestamps fade in next to the marker as the journey passes their locations. Speed selector goes from 50× to 1000×, full timeline scrub, fullscreen-friendly so it works for presenting to an audience or recording screen-grabs. Photos can be uploaded retroactively — anything with EXIF GPS lands at its exact spot, anything with just a capture time snaps to the nearest GPS point, the rest can be drag-and-dropped onto the map manually.

Read more →

28 Apr · Map Style — Default / Terrain / Satellite

A new toggle in the Layers panel switches the base map between three styles. Default keeps the existing dark/light vector tiles per theme; Terrain shows topographic relief (great for mountain trips); Satellite shows aerial imagery (great for cities and coastlines). The selection persists per browser via localStorage and is independent of the active theme — pick WIT chrome on Satellite, Light chrome on Terrain, any combination works. Org admins can also set the default tile style for their org so visitors land on the right look out of the box.

28 Apr · Theme refresh — WIT, Light, Matrix, Night

Reworked the theme system around a single brand identity. The classic WIT (gold on charcoal) stays unchanged. Light is a clean off- white sibling using a deeper, readable gold accent — replaces the old Daylight palette with proper Apple-style tonality and high text contrast. Matrix is now full CRT phosphor green (brighter accent, green-tinted surface, stronger glow). Night is true red on near-black for night-vision-friendly viewing. The old Ocean theme was dropped — saved configs fall back to WIT silently. Each theme now defines its full set of CSS tokens (no more half-inherited values from WIT defaults), and chart bars / sparklines / segment cards re-paint instantly on theme switch with no refresh needed.

28 Apr · Glass widget surfaces over the map

Every floating widget on the public map (hero card, layers panel, date filter, weather, etc.) now uses a frosted-glass surface — semi- transparent background with a stronger backdrop-filter blur so the map shows through behind the text. Apple-style "vibrancy" feel. Adaptive opacity: dark-tile maps and satellite imagery use the lighter glass for the see-through look; busy Terrain raster automatically switches to a denser surface so text stays legible against the pale backdrop.

28 Apr · Custom dropdown component — consistent on every platform

Native <select> popups are rendered by the OS and never matched the rest of the UI, especially on Windows. Replaced every dropdown in the public app — trip selector, theme picker, replay speed — with a shared custom component using our theme tokens and the same glass treatment. Click outside or press Escape to close. Mobile keeps a native pill picker for the theme selector since the system picker is the right tap target on small screens.

28 Apr · Smaller polish: Escape closes Credits modal

Press Esc anywhere on the page to dismiss the About / Credits modal, in addition to the X button and click-on-backdrop. Useful when reading docs or comparing trips without reaching for the mouse.

27 Apr · Per-trip excluded transport modes

Slow city driving sometimes overlaps with cycling speed and the auto-classifier mis-tags a few road points as bike. New trip-level control lets you tick the modes that are simply impossible on a given trip — Cycling, Running, Boat, Flying, etc. — and the classifier remaps any of those points to the nearest allowed mode by speed. Walking that genuinely happened still detects as walking.

Read more →

27 Apr · Snap to Roads — bulletproof pipeline

Three-stage matching for road snapping: dense GPS uses Map Matching with timestamps, sparse-GPS chunks fall back to a no-timestamp retry, and chunks that still can't converge get routed via Directions API between their endpoints. Plus GPS-gap splitting so a 1 km pocket gap doesn't poison the whole chunk. Result: routes hug the actual roads even when the GPS was noisy or partly missing.

Read more →

27 Apr · Sponsor / Fundraising widget

Trips can now declare a sponsor or fundraiser via the org admin — a collapsible widget renders below the hero on the public trip page (and inside the countdown overlay for upcoming trips). Title, description, button label and URL are all admin-editable per trip; no logos, just clean text.

Read more →

27 Apr · Daily card location: Start → End city

Daily cards on the live tracker now show "Prague → Psáry" instead of just the end city when the day starts and ends in different places. Falls back to a single city when start and end coincide.

27 Apr · Click a daily card to filter the map

Daily cards in the bottom strip are now interactive — click one to focus the map on that day's route and dim the rest. Click again to clear. Was always available via the chart; now it works from the strip too.

27 Apr · Privacy zones — four new methods

Two old modes (Snap, Remove) plus four new ones: Jitter (random 100–500 m offset, route looks continuous but imprecise), Coarsen (~1 km grid), Delay (hide for N hours then release — live-tracking privacy), Cloak (straight line drawn through the zone). Pick the one that matches the threat model.

Read more →

27 Apr · Battery saving in no-signal areas

New FAQ + dedicated guide on how to save battery in dead zones without breaking GPS tracking. TL;DR: disable Cellular Data, leave GPS on. Don't use Airplane Mode — iOS suspends background apps.

Read more →

27 Apr · Metro transit detection — six European cities

Prague was the only city with metro coordinates. Now London, Paris, Berlin, Barcelona, Madrid and Vienna are in the database too — 467 stations total. GPS dropouts inside metro tunnels render as dashed transit lines instead of straight gold lines across the city.

Read more →

27 Apr · Smoother docs navigation

Docs site now uses SPA-style navigation — clicking a sidebar link fetches just the article content; the sidebar, search box, and scroll position stay put. Browser back / forward, cmd-click, and middle-click all behave normally.

27 Apr · Backup download in org admin

Sidebar → Backup streams a ZIP of your entire org data directory (GPS monthly files, trip meta, photos, config, profile, subscribers). One click, no setup, GDPR-portable.


How to follow along

  • Bookmark this page; it updates with every shipped feature.
  • The build number in the org admin sidebar footer (e.g. v0.2.644) tells you which version you're running.
  • Need help? Open a Support ticket from the org admin sidebar — it captures your URL, browser version and OS automatically.

Need help? Contact support · Where Is Tereza?