Logged-In Number Display Fix
Jun 11, 2026
Logged-in pages now avoid a number display crash during startup.
🔢 Logged-in dashboards and profile stats now load reliably instead of crashing while number displays update.
Early preview-TravelFlow is under active development. Features may change, and some things might not work perfectly yet.
Jun 11, 2026
Logged-in pages now avoid a number display crash during startup.
🔢 Logged-in dashboards and profile stats now load reliably instead of crashing while number displays update.
May 26, 2026
Applied critical LCP deferral, dynamic font loading optimizations, and below-the-fold rendering constraints.
⚡ Deferred early access, language suggestion, translation notice, and cookie consent banners to mount only on explicit user interactions (scroll, keydown, touch, mousedown) to eliminate LCP delay.
🔤 Dynamic language-specific font preloading to load Cyrillic and Vazirmatn full fonts for Cyrillic/Arabic languages, and Latin subsets otherwise.
🏎️ Integrated below-the-fold content-visibility and layout constraints to optimize page rendering times.
May 26, 2026
Fixed a validation error in the robots.txt file to ensure search engine crawlers can index the site correctly.
🔍 Corrected the relative sitemap path in the crawling rules to ensure search engines can locate and parse the sitemap.
May 21, 2026
Improved Gemini 3.5 Flash reliability in benchmark trip generation.
🧩 Gemini 3.5 Flash benchmark runs now get more room to finish complete itinerary JSON.
May 21, 2026
Improved recovery when OpenRouter models return incomplete itinerary JSON.
🧩 OpenRouter trip generation now retries incomplete itinerary responses with a shorter JSON recovery pass.
May 21, 2026
Grouped AI choices by model family and made OpenRouter itinerary output more reliable.
🧭 AI model selectors now group choices by model family instead of routing gateway.
🧩 OpenRouter trip generation now requests stricter JSON output for more reliable Gemini results.
May 20, 2026
Made the newest AI model choices easier to find in trip creation and benchmark setup.
🔎 New AI model choices now appear more prominently in trip creation and existing benchmark setups.
May 20, 2026
Expanded trip planning and benchmark model coverage with more OpenRouter options and updated execution allowlists.
🤖 Added three new AI model choices for trip planning: Gemini 3.1 Flash Lite Preview, GPT-5.4, and GPT-5.4 Pro.
🧠 Added three more OpenRouter model choices across trip creation and benchmark testing: Nemotron 3 Super Free, Grok 4.20 Beta, and Qwen3.5-9B.
🧪 Added newer OpenRouter model choices to benchmark defaults and model selection, including Gemini 3.5 Flash, Gemini 3.1 Flash Lite, Grok 4.3, GPT-5.5, and Qwen3.5 Plus.
🧾 Admin trip details now show richer generation failure context, including raw attempt metadata, queue timing, and latest worker payload details for faster timeout diagnosis.
Apr 2, 2026
Fixes the mobile navigation drawer, sharpens button affordances with clearer pointer and focus feedback, and makes profile trip previews easier to open.
🧭 Profile trip previews now open directly from the map snapshot and trip title, with clearer hover feedback on clickable headlines.
🎯 Buttons and dropdown actions now consistently show a pointer cursor and a larger accent-colored focus treatment across the app shell.
📱 The mobile menu now closes reliably again, keeps admin/logout/footer actions anchored to the bottom, temporarily removes stamps and public-profile shortcuts from the drawer, and restores the translated Create Trip quick action on profile.
Mar 24, 2026
Makes the airport bento the lead Features card with a cleaner dual split-flap route that starts on DXB, warms the nearest nearby passenger airport just before view, and then flips on screen.
🛫 The Features page now leads with a nearby-departure bento card that starts on DXB, warms the closest passenger airport nearby just before you reach it, and then flips on screen.
✨ The airport teaser now uses a cleaner two-board route animation with stronger consumer-facing copy, so the nearby departure feels more personal without feeling invasive.
🎞️ The destination board now changes at a calmer pace and the extra location-status line is gone, so the teaser feels cleaner and less busy at a glance.
↔️ The airport teaser now spans the full row with a more horizontal route layout, so the departure and destination boards feel like one clean travel moment instead of a stacked card.
🌍 The hero globe now uses a tighter footprint with less dead space, while the split-flap airport card scales down more gracefully on small screens.
Mar 20, 2026
Adds a shared map runtime foundation so Google and Mapbox can be tested side by side without changing the current production planner behavior.
🗺️ Trip maps, previews, and route rendering are more reliable after a broader behind-the-scenes map runtime refactor.
✈️ City labels, route overlays, and flight-path rendering now behave more consistently across the trip planning experience.
Mar 20, 2026
Rebuilds the features page around a custom interactive globe hero, sharper planning-first copy, and a more polished visual product story.
🌍 The features page now opens with a custom interactive globe hero, anchored trip callouts, and a more polished planning-first story around TravelFlow.
🧭 The globe hero now starts over Europe, keeps its travel callouts orbiting with the sphere, and cleans up the hero layout so the floating panels feel more intentional.
📍 The globe now uses the session runtime location to highlight your starting point, draw routes out from it, and keep the travel chips smaller, shorter, and easier to read across all supported languages.
🧩 A new animated bento grid now shows how AI itineraries, route editing, crew sharing, and inspiration work together instead of listing features in isolation.
Mar 18, 2026
Restores calmer trip-page behavior so panel resizing stays balanced, transport changes stick, and My Trips opens without the account menu lingering above it.
🧭 Trip view now rebalances the planner more reliably again, so the calendar, map, and details panel share space more predictably and horizontal calendars auto-fit when layout or detail-panel changes squeeze them.
🚌 Changing a transport type no longer snaps back when a stale route calculation finishes a moment later.
🗂️ Opening My Trips from the account menu now closes the dropdown first, so the side panel can take focus without overlapping profile actions.
Mar 18, 2026
Country search now recognizes localized names, familiar shortcuts, and common official or historical country variants, then normalizes them before trip generation.
🌍 Country search now recognizes localized names, familiar shortcuts, and common official or historical alternatives like UK, England, USA, UAE, Czechia, People’s Republic of China, DR Kongo, Swaziland, and Ceylon in the planner and profile country picker, so it is easier to find the right result without guessing the official label first.
Mar 17, 2026
The classic Create Trip form restores the special notes field directly below the calendar so trip details flow in the expected order again.
🗓️ The classic Create Trip form now keeps the special notes field directly below the travel dates again, instead of pushing it down below later planner sections.
Mar 17, 2026
Refines the legal notice for a German sole proprietor with explicit VAT-ID wording and clearer contact details.
🧾 The imprint now presents the legal notice in a clearer German sole-proprietor format with explicit VAT-ID wording.
📬 The legal contact block now combines email and the direct contact page in a more credible, easier-to-scan layout.
Mar 17, 2026
Adds reusable animated number primitives so planner day ranges, counters, and numeric entry points can feel smoother instead of snapping between values.
🔢 Planner day badges can now animate their numbers smoothly instead of jumping when stay lengths change.
💱 Destination currency conversion now updates with animated numeric input and animated totals for a calmer live-calculation feel.
Mar 17, 2026
Shared trips now reopen in the latest calendar or timeline view, orientation, and zoom level you last shared.
🧭 Shared trips now reopen in the latest planner view you chose, including calendar versus timeline mode, horizontal versus vertical layout, and your exact manual zoom level.
🔗 Existing share links now refresh their saved planner view when you reshare, so you do not need a brand-new link just to preserve how the trip opens.
Mar 17, 2026
Cuts homepage transfer weight and keeps public marketing pages warmer at the edge so the first visit stays lighter and repeat visits come back faster.
🛫 The homepage hero now loads its decorative airplane artwork in production-friendly responsive formats, cutting the first desktop payload without changing the layout.
🗺️ Example trip previews on the homepage now use optimized production image delivery instead of full-size source images, so the examples section is much lighter when it appears.
⚡ Public marketing pages now stay warmer at the edge cache, so repeat visits can load faster without making the planner experience stale.
🪪 Profile quick actions now show the localized Create Trip label instead of a raw translation key.
Mar 12, 2026
Restores a familiar mobile trip drawer, makes timeline activity cues lighter, and gives the mobile map more breathing room.
📱 Mobile trip details keep the second-tap opening logic, but the drawer now uses the familiar backdrop, swipe behavior, and sheet animation again.
🏷️ Timeline activity hints now stack lightly and expand together into readable colored pills with text, so they stay useful without pulling too much attention.
🗺️ The default mobile map now takes a bit less vertical space, leaving more room for the timeline below.
Mar 12, 2026
Improves mobile trip-page detail interactions so selection stays calm, the full drawer opens only when you mean it, and timeline list stops show more useful context.
📱 Mobile trip details no longer steal focus. Tapping a city or activity now selects it first, tapping again opens the full-height drawer, and closing the drawer clears that selection cleanly.
🗺️ On phones, the map now sits above the calendar and timeline so selecting extra trip details feels more deliberate.
🛏️ Timeline list stops now surface accommodation and subtle activity-type hints so each stop is easier to scan at a glance.
Mar 12, 2026
Improves mobile destination search behavior in trip creation, adds season-aware recommendations, and tightens classic-page planner controls.
📍 Destination suggestions on trip creation now stay aligned on mobile and no longer jump when Safari focuses the destination field.
🌸 Empty destination suggestions now recommend seasonally relevant countries and standout islands based on your dates or the next few months.
📝 Special notes now sit directly below dates and explain the kinds of cities, activities, food, pace, mobility, and comfort preferences you can mention.
Mar 12, 2026
Trip pages now feel calmer and more predictable across desktop and mobile, with more readable mobile profile layouts, a less intrusive details drawer, a centered share dialog on phones, and safer recovery from stale share chunks.
📱 Mobile trip sharing feels steadier. The share dialog now opens centered instead of dropping into a bottom sheet on small screens.
🪟 Mobile trip details stay out of the way until you ask for them. Selecting a city no longer auto-opens the drawer, the bottom peek is easier to grab, and scrolling the timeline stays more natural while details remain collapsed.
🙋 Profile pages feel lighter on phones. Mobile now focuses on the greeting and trip list first, keeps a simple Edit profile action close at hand, and lets trip cards span the full column before stepping up to two and three columns on larger screens.
📍 City detail basics are easier to scan. The approval toggle now sits below the location instead of competing with the title area.
🧭 Small-screen trip headers make better use of the space they already have. The hidden hover-only info pill no longer reserves room on mobile, so the trip title can breathe more naturally beside the TravelFlow mark.
📍 Floating maps feel safer to move. The preview now stays above planner controls in floating mode, so the move handle cannot get trapped underneath other UI.
🪟 Mobile details drawers give a clearer cue without taking over. The bottom peek is taller, background scrolling stays available in list view, and opening the drawer is now more intentional.
📝 Horizontal activity cards are much easier to read. Activities now claim the full day they touch in the horizontal planner, rotated labels use the full available height instead of clipping inside hidden spacing, and icons stay pinned to the top for cleaner scanning at any zoom level.
🧭 Trip navigation feels lighter and more focused. The title sits closer to the TravelFlow mark, opens trip details on click, and profile actions now center around Create Trip and My Trips instead of a crowded shortcut list.
📱 Mobile trip pages stay calmer while you explore. My Trips now layers above the account menu and navigation when it slides in, the profile avatar keeps its circular shape, toast popups stay out of the way, and the details drawer now peeks from the bottom instead of taking over immediately.
✅ Notes and checklists are easier to work with. Checklist rows stay aligned, task toggles now hit the correct line in timeline and details views, and Heads Up guidance shows up as simple banner-style callouts.
⌨️ Moving through a trip takes fewer clicks. Active city cards support keyboard travel with arrow keys or Tab, and Enter or Space can open or close the matching details panel.
🤝 Sharing now fails more gracefully after stale app updates. The trip share flow recognizes MIME-type chunk mismatches as recoverable, so a stale cached page is much less likely to strand the share dialog behind a broken lazy import.
💬 Greetings and profile names read more naturally on smaller screens. Greeting text now wraps by whole words instead of single letters, the pronunciation line uses accent styling with prettier wrapping, and the owner profile now prefers the saved first and last name over stale display-name leftovers.
🛟 Trip pages load reliably again after the latest polish pass. A mobile viewport state regression that could stop the planner from rendering has been resolved.
🗂️ Trip details tabs now sit cleanly on the divider again. The underline anchors directly to the grey rule without the extra offset or boxed active state.
🗓️ Low-zoom calendars use space much better. Vertical views now center month labels across the visible span, compact day rails stay readable, and small activity cards in the planner are easier to scan at a glance.
🎛️ Planner controls feel tidier and less distracting. Zoom controls stay compact, desktop keeps the zoom readout where it helps, and map layout toggles are grouped like proper orientation switches again.
✍️ Trip details editing feels like the rest of TravelFlow again. Tabs sit cleanly on the divider, the trip title uses the shared input style, the action copy now reads clearly as Edit Title and Save Title, favorites stay right beside the name field, and Escape cleanly cancels draft title edits.
Mar 10, 2026
Clarified async worker health signals in admin and reset the planner map when opening a different trip so stale routes and pins do not leak across trips.
🗺️ Opening a newly created trip after finishing another one now starts from a clean planner map, so old pins and route lines no longer linger from the previous trip.
Mar 10, 2026
Async trip generation now hands the first worker kickoff to a server-owned enqueue path so trips can keep moving even when the browser tab closes right after start.
🚀 Async trip generation now hands off the first background kickoff to the server as soon as a trip is queued, so trips can keep progressing even if you leave the page right after starting them.
👀 Returning to a trip later now has a better chance of loading the finished itinerary immediately because the first worker start no longer depends on the open tab staying alive.
Mar 10, 2026
Async trip generation now records worker heartbeats, auto-rekicks stale queued jobs, and runs a safe end-to-end canary so queue regressions are easier to catch before trips sit in limbo.
🛟 Queued trip generation now watches for stalled background work and auto-rekicks the worker when jobs have been sitting too long, so trips are less likely to stay stuck in limbo.
Mar 10, 2026
Trip stall recovery now refreshes the remote trip before writing a synthetic queue-missing failure, preventing finished plans from being mislabeled after late worker completions.
🧾 Trip retries no longer mislabel a finished plan as failed when background generation completes just before the planner refreshes.
Mar 9, 2026
Added a dedicated paid-plan checkout, clearer upgrade prompts from locked trips, and the billing groundwork for Paddle subscriptions.
💳 Added a dedicated checkout flow for paid-plan upgrades with inline sign-in, traveler details, and a cleaner step-by-step payment handoff.
🚀 Upgrading from trip limits or expired trips now sends you into a clearer paid-plan path with stronger Explorer plan framing and better benefit prompts.
✅ Payment completion now gives clearer next steps and can continue claim-based trip creation after a successful upgrade.
Mar 7, 2026
Trip generation now keeps running in the background, recovers more safely when jobs stall, and makes failed plans easier to inspect and retry.
🔁 Travelers can retry failed generation directly on the same trip using the default model.
⚙️ Trip generation now keeps running in the background, so create-trip and retry are no longer tied to keeping the tab open.
🛟 Stalled generation jobs now use safer recovery and retry guards, helping stuck plans recover without losing the trip.
🤖 Planning and retry now default to OpenAI GPT-5.4, with expanded model choices available for trip creation and benchmark runs.
⚡ Trip pages now open with a branded loading shell and faster planner startup while heavier route data loads in the background.
🚨 Failed trip generations now stay visible in plan lists and trip screens with clear generation-status badges.
🧾 Trip details now show richer AI generation diagnostics, including model/provider context and latest failure details.
🗂️ Admin trip table now shows read-only lifecycle/generation pills, while lifecycle and expiration edits moved into the trip drawer.
🧭 Queue-claim generation failures now preserve the trip record so people can open it and retry instead of losing context.
🤖 Retry model selectors now group models by provider with logos and a clear “current” pill in trip diagnostics.
🔁 Retrying generation now re-triggers tab feedback (title + favicon animation) so background progress is visible again.
🧾 Trip diagnostics now show the full captured input snapshot JSON (flow, dates, and payload) for easier replay and debugging.
🧩 Admin users/trips tables now use subtler, consistent row/column highlight states with corrected sticky-column alignment.
📑 Audit diff now uses a single “Show full diff” toggle that expands the same side-by-side panes instead of adding extra snapshot boxes.
🧭 Signed-out planners can save a trip draft and open the trip page first; generation starts after sign-in via a claim link from the trip status banner.
🧭 Create Trip now focuses on classic + wizard flows, with obsolete lab routes retired and a guided wizard CTA at the bottom of the planner.
🧪 Trip diagnostics now show the execution mode (async_worker plus legacy sync markers), making tab-independent rollout status directly visible.
🎨 Async worker-generated city chips now use the same stronger palette depth as planner-generated trips, avoiding washed-out timeline colors.
🎨 Trip city lanes now keep the intended default palette depth after loading, avoiding both washed-out and over-dark itinerary colors.
🧾 Trip info now surfaces AI generation state directly in the meta block so status is visible without hunting through details.
🇩🇪 Trip list destination flags now refresh reliably after local-to-cloud sync, so country badges stay accurate without a re-login.
🔐 Successful sign-in no longer shows a misleading “already signed in” message in the login page or auth modal.
📍 Zoom-level marker style switches now avoid duplicate stacked pins on the map.
🔁 Retry attempt history now collapses duplicate in-flight entries and resolves stale running attempts to failed when timeout windows are exceeded.
🛑 Failed-generation trips no longer get stuck in an endless “Planning your trip” overlay; loading overlays now follow real generation state.
🚨 Legacy failed trip drafts now correctly show a failed AI-generation status instead of appearing as succeeded.
🔍 Audit diff JSON views restored readable token colors and re-enabled full snapshot expansion with scrollable modal content.
🧱 Sticky first columns in admin users/trips tables now use reliable offsets, separators, and scroll shadows without layout gaps.
🧭 Checkbox + primary entity columns now behave as one sticky region in selectable admin tables, including correct width locking and horizontal scroll tracking.
🧭 Create-trip generation now ensures an anonymous DB session before enqueueing worker jobs, preventing immediate enqueue failures for signed-out users.
🔐 Create-trip now redirects to login with the current draft path preserved when no DB session is available, avoiding dead enqueue attempts in strict-auth environments.
🔄 Reopening a newly created trip after background loading resumes no longer crashes the trip page before the itinerary appears.
Mar 3, 2026
Shipped stronger legal acceptance controls, one-click trip calendar downloads, and major itinerary-map marker upgrades with cleaner controls and stable viewport behavior.
📅 Added one-click calendar downloads for single activities and full-trip exports, including activities, city stays, and everything in one file from details, trip info, and print view.
🧾 Calendar downloads now include clearer trip context with app attribution and direct links back to the trip page for easier reopen/share later.
🗺️ Activity markers now match activity-type chip colors/icons, support direct map click selection, show hover tooltips, and stay hidden by default until explicitly enabled.
📜 Replaced the placeholder Terms page with a complete Terms of Service document, including visible version and last-updated metadata.
✅ New registrations now require explicit acknowledgement of Terms of Service and Privacy Policy before account creation can continue.
🔐 Signed-in users are now blocked from protected account areas until they accept the current Terms version when a re-accept is required.
📣 Signed-in users now receive a global in-app legal notice when Terms change, including non-blocking “inform-only” updates.
🧭 Terms notices now use the shared global-note visual style with a clearer legal icon treatment.
💳 Billing language now clarifies the Merchant-of-Record checkout model while keeping platform-use contract ownership transparent.
🧩 Admin workspace now includes a Legal Terms panel to publish DE/EN Terms versions, switch current versions, and test force vs inform rollout modes.
⚖️ Legal notice and dispute-resolution wording was updated for current German DDG/VSBG framing, including EU ODR discontinuation context.
📊 Admin user table now supports a Terms acceptance filter, optional Terms/Last-log columns, and saved per-admin column preferences.
🧱 Admin user and audit tables now keep their leading selection column visible while horizontally scrolling.
📚 User detail drawers now paginate connected trips and user change logs in smaller chunks for faster scanning.
🎚️ Audit action filters now start with all action checkboxes selected, with quick select-all/deselect-all controls.
🧠 Terms publishing now auto-suggests and auto-bumps to the next available version to prevent accidental duplicates.
📌 Admin users/trips tables now use more robust sticky-column sizing with truncated UUID copy chips and horizontal-scroll shadow cues.
🕒 Admin users table now shows both relative and exact timestamps for last sign-in and last-log columns.
🧷 Trips table now keeps the checkbox + trip columns sticky together as one frozen left block while horizontally scrolling.
🧪 User details now include a testing action to reset Terms acceptance state without manual database edits.
📍 The Husum blog’s interactive map now uses in-app markers with softer accent styling, a cleaner left-side category accordion, and a full-height right-side map panel.
🧭 Map markers now auto-adapt by map size/zoom/route density, keep default city pins more prominent at higher zoom levels, and shift to compact or ultra-micro layouts only when space is truly constrained.
🎯 Planner map camera behavior now avoids unwanted jumps, preserves user zoom state during marker/filter changes, and keeps selection focus + resize-fit behavior stable across docked and floating layouts.
🛠️ Admin accounts can now keep using the admin workspace even when Terms re-acceptance is pending.
🎛️ Terms notice banners no longer briefly flash before redirecting users to the Terms acceptance page.
🧾 Terms acceptance events now include before/after profile snapshots so admin user-change diffs show what changed.
🧮 Terms publish/switch SQL now qualifies current-version column references to avoid ambiguous is_current errors.
🧭 Admin logs now show descriptive labels for Terms reset and username-cooldown reset actions, with user-change diff entries for cooldown resets.
🔢 Terms draft versioning now increments from the highest existing suffix and keeps the date prefix read-only to prevent regressions like -2 to -1.
Mar 3, 2026
Trip maps now feel sharper and easier to read, with smarter city label placement, clearer route layering, and polished dark-mode legibility across planning surfaces.
🗺️ Trip itinerary maps now load with more stable rendering behavior during planner interactions.
📍 City and transport markers now have clearer visual hierarchy so active stops and route icons are easier to read.
🧭 Trip preview maps on profile, trip manager, and admin surfaces now render more consistently with shared map styling.
🧱 Dark map route legs now use stronger light-edge contrast so paths stay visible against dark basemaps.
🎯 Clicking a map city pin now selects that stop, opens its details, and auto-scrolls to it in the active planner view.
♻️ Transport route changes now refresh without stale previous-mode overlays lingering on the map.
🔁 Round-trip start/end city pins now offset overlapping markers so both stop numbers stay readable.
🧭 Initial planner map mount now appears in-place without the first-load morph transition.
🎯 Fit-to-trip recenter now waits for map viewport sizing so reset zoom is more reliable after layout changes.
🌑 Added a new Clean (Dark) map style that keeps the low-noise map treatment while matching dark theme contrast.
🧱 Dark map route legs now render with a layered gap + route-colored outer edge at softer opacity so paths pop without overpowering the basemap.
🛣️ Dashed fallback legs on dark maps no longer render an outer edge so they stay visually distinct from realistic road routes.
🌙 Clean (dark) pin-adjacent city and START/END labels now use white text with dark drop-shadow contrast for readability.
🧷 Map text overlays now render above route lines, and START/END labels keep the accent highlight color in Clean (dark).
🎨 Clean (dark) START/END labels now use a lighter accent tone for better readability on dark basemaps.
🧩 Clean (light) pin-adjacent label shadows/colors remain on the legacy styling while Clean (dark) keeps the new contrast treatment.
🗺️ Route cutout border tones now align better with map background colors so layered legs look cleaner across map styles.
🌍 Clean (dark) now restores subtle country labels with low-contrast text for orientation without adding map noise.
🏙️ Map pin-adjacent labels now render city-only names instead of city-plus-country strings.
🧭 Map pin-adjacent labels now choose smarter anchor sides (right/left/below/above) to reduce route-line overlap in common cases.
🧩 Single-city trip previews now render reliably instead of failing route-only preview assumptions.
Mar 2, 2026
Added a German-only Husum weekend guide featuring Krokusblütenfest tips, embedded visuals, an interactive map card, and a linked festival itinerary example.
🌸 Added a complete German Husum weekend guide focused on harbor highlights, Krabbenbrötchen, Schloßpark crocus blooms, and practical local tips.
📅 Added a reusable markdown tf-calendar component with a downloadable .ics schedule bundle for cross-calendar import.
🧭 Added a linked Husum Krokusblütenfest 2026 weekend example itinerary so readers can open and reuse the trip structure directly.
📸 Replaced placeholder illustrations with realistic AI-generated Husum travel photography using local landmark references and a bright, neutral color profile.
🗺️ Upgraded the interactive Google Maps card to a wider layout with category-wide spot visibility, simple controls, and direct Google Maps deeplinks for each recommendation.
🧠 Enhanced the German blog rendering with optimized progressive inline images (lazy loading, responsive sources, captions), a clearer table of contents intro entry, and a highlighted in-app example-trip link card.
🎨 Refined the global blog calendar card with localized copy, a toast-style icon badge, and a desktop pop-out layout treatment.
🧭 Stabilized the blog sidebar as a true right-rail sticky navigation (viewport-capped on desktop) so chapter highlighting reliably follows reading progress.
✨ Added a warmer norddeutsch sign-off section at the end of the Husum guide.
📱 Reduced the Husum social preview image weight so WhatsApp link previews load more reliably.
Mar 2, 2026
Trip planner now avoids duplicate action toasts and prevents recursive undo feedback loops.
🔔 Trip planner now shows one clear confirmation toast for favorite toggles and add/remove timeline actions.
↩️ Undo/redo feedback toasts no longer include another Undo button, preventing confusing recursive undo behavior.
Mar 2, 2026
Contact and FAQ now provide better context capture, clearer reporting paths, and a cleaner support experience.
❓ Contact now includes a focused FAQ preview with quick links to the full FAQ page and deep-topic answers.
🧭 Contact requests now automatically carry the page you visited right before opening contact, so your message reaches support with clearer context.
🧩 Contact now offers clearer reason topics with optional subtopics, so reports are faster to submit and easier for support triage.
🌍 Translation-banner contact links now preselect the website/app problem reason and translation-specific topic automatically.
✅ Contact now clearly marks required fields and opens the topic picker right after selecting a main reason to speed up submissions.
🎨 Contact and FAQ pages now use a cleaner, more readable layout with better spacing and streamlined question sections.
Mar 2, 2026
Planner map camera behavior is now kept consistent when switching between docked and floating sizes.
🧭 Switching between docked and floating map modes now keeps the camera stable after size transitions.
🔎 Floating map size and orientation changes now trigger a controlled rezoom on major shrink/flip transitions while preserving manual focus behavior.
🎯 Automatic resize centering now runs only when no city is actively focused and the map has not been manually moved.
Mar 2, 2026
Trip planner floating map transitions were hardened to stay stable under rapid layout and resize interactions.
🛡️ Floating map resize handling is now throttled and debounced to reduce burst animation load during rapid layout and panel resizing.
⚙️ Floating map geometry updates now avoid continuous spring churn during active resize bursts and settle smoothly afterward.
🎯 Floating map rendering hints now activate only during active interaction to keep motion smoother under stress.
Mar 1, 2026
Trip planner now includes an experimental map minimize mode with a draggable floating preview while the calendar expands to full workspace.
🗺️ Trip planning now includes a map minimize control that can switch the map into a floating preview and restore it back to the main planner layout.
🪟 The minimized map now appears as a draggable floating card with cleaner rounded corners, a fused top grab handle, springy corner and bottom-center snap motion, a strong white frame, and soft depth shadow.
🎬 Minimize and maximize now animate the same map surface between states so the transition feels continuous instead of reloading.
📅 When the map is minimized, the calendar workspace now expands to use the full planner area and triggers an automatic timeline fit for easier editing.
💾 Floating map preview now restores your last dock mode, snapped position, and chosen preview size after refresh.
↘️ Floating map now has a top-left size toggle with a much smaller compact mode and a larger expanded mode for clearer size contrast.
🔁 Floating map preview now includes a rotating portrait/landscape swap control that keeps the current preview size by swapping width and height.
↩️ Docked/floating map preview mode changes are now included in undo history with localized visual-change labels.
🧲 Floating preview drag now keeps the grab cursor active from mouse-down and responds more smoothly while moving.
🧭 Floating preview snap points now stay at viewport corners plus bottom-center while respecting the top navigation offset.
🧯 Switching map layout direction no longer auto-zooms the calendar, which reduces noisy history entries and delayed save toasts.
📌 Floating map now keeps its snapped corner/edge anchor when the browser window is resized, including right-side, bottom-right, and bottom-center placements.
🧾 Automatic timeline auto-fit zoom now avoids creating separate “Zoomed in/out” save toasts and history noise, while still preserving combined visual updates.
Mar 1, 2026
Trip planning now supports a modern timeline list mode with today-focused navigation and saved view preferences.
🗓️ The trip page now has a clear mode switch between calendar and timeline list views.
🧭 Timeline list mode now groups plans by city with sticky city headers, connected dots, and activities ordered by schedule.
✨ Timeline list mode now uses a cleaner editorial layout with a continuous vertical spine and simplified typography-first activity rows.
🚆 City-to-city transfer pills are now shown on the timeline spine and can be clicked to open transfer details directly.
📝 City and activity notes in timeline list mode now render markdown formatting correctly.
🧷 Timeline list sticky behavior now keeps only the city heading pinned while long section content scrolls naturally.
🌍 Multi-country trips now show a country rooftitle above each city heading for faster orientation while reading.
🖱️ Activity titles in timeline list mode now use clearer hover affordances with subtle directional motion to signal clickability.
🔲 Timeline transfer pills now show a clear selected outline state to match calendar-style selection feedback.
🟢 "Today" is highlighted with a badge and the timeline list auto-scrolls to today when opened.
🎛️ Calendar/list mode switching now uses icon-only controls with accessible labels, with the mode toggle pinned to the far right.
🗺️ Scrolling through timeline list sections now keeps map focus in sync by highlighting the city currently in view.
↔️ Calendar and list mode icon tabs now use consistent spacing so the controls no longer feel crowded.
🎯 Switching from calendar to timeline list now keeps the active selection and scrolls to the selected city or activity automatically.
🧭 Timeline list now opens in a neutral state with no auto-selected details unless you already selected something.
🔴 Timeline list "Today" badges now match the calendar-style red emphasis with uppercase visual treatment.
🧩 Scrolling through timeline chapters now updates details only when a selection is already open, avoiding unwanted panel opens from passive scrolling.
🗺️ Map controls now stay visible even when the map is unavailable, while map-only actions stay safely disabled until map load succeeds.
🔁 Calendar mode now stays selected reliably instead of occasionally snapping back to timeline mode after background refreshes.
📍 Timeline list now reliably smooth-scrolls to the current-day marker after load when that marker starts outside the visible viewport.
🧵 Versioned trip links now keep the selected calendar/list mode stable even when delayed sync refreshes arrive.
Mar 1, 2026
Signed-in travelers can now reactivate expired trips instantly while we prepare the full subscription upgrade flow.
🧭 Expired-trip activation messaging is now clearer about when you need to sign in versus when reactivation happens instantly.
🔓 Signed-in users can now reactivate expired trips immediately without getting stuck behind a login overlay loop, and the reactivation now persists across profile sync.
Mar 1, 2026
Planner routes now stay usable during Supabase outages, with queued local edits that replay automatically after reconnect.
🧪 Added outage simulation controls via debugger actions and ?offline= URL override support.
🛟 Planner routes now keep working in outage scenarios with clear connectivity status feedback instead of hard-failing.
💾 Owned trip edits now queue locally while offline/degraded and replay automatically when connection recovers.
🔄 Trip view now surfaces sync progress with a spinner, pending counts, and retry actions for failed replays.
🧾 Change History now clearly marks when the latest edits are still local and not synced yet.
🆘 Connectivity banners now use clearer offline-vs-service-outage messaging, slimmer mobile spacing, and context-aware support actions.
🧭 Create Trip now shows outage status directly below navigation to keep planner messaging visible without clutter.
🚫 Create Trip generation is now disabled while the browser is offline and automatically re-enabled after reconnect.
📶 A compact global connectivity badge now shows Offline, Syncing..., and Online status across trip flows, with auto-hide after reconnection.
💡 Global connectivity badge now supports hover/tap details and pulse-ring status indicators for clearer state awareness.
🧯 Fixed a Supabase save compatibility edge case that could block trip updates on some database function-overload setups.
🧪 On-page debugger is now grouped into clear Testing, Tracking, and SEO tabs for focused QA flows.
🧪 Debugger tracking-box overlay now starts disabled by default, and testing controls include a clearer Set Supabase Normal reset action.
🧭 Trip loading now prefers local snapshots during outages and refreshes from server once connectivity returns.
Mar 1, 2026
Admin overview and trip operations now stay on live records, with expanded trip actions in both the table and side panel.
✉️ Login now better supports saved email autofill with stronger form accessibility labeling.
📱 On mobile, the signed-in profile button is now hidden in the header to keep layout spacing stable, with account actions available in the menu.
Mar 1, 2026
Expanded username hardening with 3-40 handle limits, separator-aware blocked-term enforcement, and a cleaner username edit flow in profile settings.
🛡️ Username setup now enforces stricter handle safety rules (3-40 characters, only letters/numbers/_/-, stronger blocked-name protection, and tamtam* brand-reserved variants).
🚫 Blocked-term protection now catches banned tokens across username segments (-/_ boundaries), while reducing false positives such as in-word matches.
⌨️ Profile settings now use a tighter username edit flow with blur-time availability checks, cleaner inline feedback, and Enter-to-submit with first-error focus guidance.
🔁 Public profile links now auto-canonicalize to lowercase URLs while your chosen username casing is still shown in profile UI.
Feb 28, 2026
Trip detail interactions now highlight selections more clearly, history is fully scrollable, timeline zoom auto-fits better, and auth now handles slow/offline networks more clearly.
🔵 Selected activities and transfer cards now keep a clear blue outline so selection stays obvious.
📜 Change history now scrolls properly, so long edit sessions remain fully visible.
📐 Timeline zoom now auto-fits the available space on first load and when switching timeline orientation.
🧠 After you manually change timeline zoom, your zoom is kept for the rest of the session and no longer auto-adjusted.
🛣️ Removed the dark route border treatment so lines and route arrows look cleaner on the map.
⏱️ Login now times out gracefully when authentication takes too long, with clearer retry guidance for slow connections.
📶 The app now shows a global offline status and keeps checking automatically so cloud syncing can resume as soon as you are back online.
Feb 28, 2026
Profile now supports hover-based multi-select actions, public-only preview filtering, clearer hidden/private states, and Sonner-based archive/history progress feedback.
✅ Added hover-based trip selection with batch actions for archive, favorite toggles, and public/private visibility updates.
🧹 Added trip archive actions directly on your profile cards so you can remove plans without opening the planner first.
👀 Made hidden trips easier to spot with a dedicated badge and dimmed card treatment across profile cards.
🗺️ Updated trip map previews to a standard map style with clearer route pins/legs and improved aspect ratio framing.
🔎 Added a profile-only “Show only public” toggle near trip tabs so you can preview your public profile visibility from private mode.
⌨️ Added keyboard support for batch archive (Delete/Backspace) and quick selection reset (Esc), with input-focus safety guards.
♻️ Unified trip archive behavior across profile and My Trips so both surfaces use the same soft-delete flow.
🔔 Standardized profile and trip history feedback on bottom-right Sonner toasts with in-progress, success, and error states.
↩️ Added archive undo actions directly in archive-complete toasts, including trip-specific context in follow-up feedback.
🎛️ Refined trip-change toasts with clearer action titles, longer visibility, and a unified neutral icon style.
🧭 Updated toast icon spacing/sizing, removed trailing title dots, and switched undo/redo feedback to directional arrow icons.
♻️ Restored trip history change toasts for timeline edits and hardened delete undo so it recovers reliably even with fast follow-up clicks.
🔔 Fixed missing trip-change toasts on planner edits so updates like duration and transport mode now surface consistently again.
↩️ Added default Undo actions to planner toasts so trip-page feedback can jump back through history without extra clicks.
Feb 27, 2026
Profile now ships as a full hub with animated greeting hero, public handles, social-style stats, passport stamps, and public trip visibility controls.
🧾 Added social-style owner and visitor profile summaries with travel stats, bio/location metadata, and a travel footprint block.
🔗 Added public profile handles at /u/:username with canonical redirect handling for renamed usernames.
🛂 Added a passport-inspired stamp system with achievement milestones and a dedicated stamp collection page.
🎨 Rebuilt the profile page into the same base content grid as navigation and removed the old boxed-shell layout.
👋 Refined the greeting hero to a cleaner centered style with accent-only greeting text, IPA pronunciation, and a simpler inspiration link with country flag.
🔗 Updated the hero subline so only “Inspirations for {country}” is linked while the lead-in text stays plain.
🖼️ Updated profile identity blocks with centered avatar-overlap styling, cleaner spacing, and reduced repetitive copy.
🪐 Replaced static role labels with dynamic traveler status rings around profile avatars.
🎯 Corrected avatar-orbit alignment so rotating status text wraps the avatar ring cleanly.
🧼 Removed redundant public-profile top heading and unified owner/public summary spacing for a cleaner, less clustered layout.
🔧 Kept orbit text as a reusable component for later, but removed it from active profile avatar rendering.
🧼 Reduced noisy background profile-access failures on public profile pages by removing unnecessary fallback lookups and guest-only admin probes.
🧱 Increased profile/public top content spacing so avatar-overlap sections no longer collide with the sticky navigation bar.
🧭 Reworked public-profile not-found into a cleaner full-bleed empty state (no boxed card) with “Plan your trip” and “Get inspired” calls to action.
🧭 Aligned public-profile unavailable states with the 404 visual language and restored standard rectangular CTA/button styling.
🚀 Added a guest-first public-profile fallback CTA so signed-out visitors can register for free directly from unavailable/private profile states.
🛡️ Allowed admins to open user public profiles even when profile visibility is disabled, so moderation/review workflows are never blocked.
🔎 Added a direct “Open public profile” action in the admin users drawer next to “Open in Trips” for faster cross-surface navigation.
⚙️ Expanded profile settings with username availability/cooldown guidance, public URL preview, bio, and profile visibility defaults.
🔐 Updated username editing to be opt-in by default: users now unlock the field via “Change username” and validation runs on save instead of every keystroke.
🧠 Added save-time username suggestions when a handle is unavailable, proposing nearby available alternatives based on profile/name patterns.
🌍 Replaced free-text country with a searchable Country/Region picker and now store canonical ISO country codes for cleaner cross-feature matching.
🧭 Refined Country/Region picker behavior to close immediately after single selection and keep the control scoped to one selected country.
🛡️ Updated the admin user editor to use the same Country/Region ISO picker so admin profile edits stay consistent with app profile rules.
🌎 Updated empty profile-location fallback copy to “Probably Planet Earth” for a friendlier profile touch.
🗣️ Expanded the international greeting catalog with more regional/local greetings (including Northern Germany’s “Moin”) and richer usage/fun-fact context lines.
🇹🇭 Refined the Thai greeting note to include both wai etiquette and speaker-based polite endings (khrap/kha).
🧩 Added settings breadcrumb navigation, grouped gender + name fields into one row, and introduced a lock-and-edit username flow with cooldown-aware guidance.
🧠 Cached current-profile data in app session state so profile surfaces avoid fallback-name flicker after login.
🧭 Added “View public profile” shortcuts to account and mobile menus plus kept recent-trip quick access.
✨ Added interactive stamp cards with cleaner density: core achievement label stays visible while rarity/progress metadata appears on hover/focus.
📅 Added clearer “unlocked on” timing visibility for stamps in the collection view.
🛂 Upgraded profile and public-profile stamp entry to a reusable passport-cover module with country-based color themes, holographic/grain detailing, and hover-lift feedback.
📓 Reworked stamp browsing into dedicated passport pages with opening-book + page-turn transitions, left/right hit-zones, and reduced-motion fallbacks.
🏛️ Replaced the ambiguous “TF” passport seal text with a neutral emblem treatment.
📖 Added stateful stamp-book URLs for public handles so visitor stamp collections can be opened directly and shared.
🌐 Applied country-based passport cover color themes from profile country/region data for a more personalized booklet look.
👀 Removed owner-facing passport helper copy from public profiles to keep visitor views focused on the profile owner’s achievements.
🧷 Simplified stamp card density by moving achievement meta details into hover/focus reveal states instead of always showing them inline.
🧷 Added quick access to stamp collection from profile actions and account navigation.
🛂 Refined the passport cover visual style with tighter corners, centered emblem layout, subtle texture grain, and a cleaner hover “book cover” lift/open motion.
📖 Changed passport opening to an in-page modal flow with URL state (?passport=open) so the profile context stays intact while still supporting shareable state.
📚 Added stacked inner “paper” layers to the passport cover with subtle staggered 3D hover motion and restored shimmer/noise detailing.
🧾 Reworked passport modal entry to a center-origin book-opening animation where the cover and first page flip open into the spread.
🗂️ Resized stamp layouts to compact 2×3 grids per themed page for clearer category grouping and lower visual density.
🛂 Refined passport-cover layering so rounded cover edges stay intact while hover-lift and page stagger remain visible.
🪶 Improved stamp-card hover detail readability in compact passport modal pages.
🗺️ Added per-trip public visibility controls and enforced read-only public trip access mode where needed.
🏳️ Added country flags to visited-country chips and improved profile metadata readability.
📤 Added a one-click action to share your public profile URL directly from your profile summary.
✅ Added immediate share feedback with tactile press-state styling and copy/open confirmation toasts.
✅ Added Sonner success toast feedback for profile settings saves so users get clear confirmation without a hard reload.
🧩 Simplified trip-card controls to reduce visual clutter while keeping open/favorite/pin/visibility actions.
📱 Updated profile/public trip-card grids to a 2-column mobile layout for better small-screen scanability.
🔢 Added right-aligned, tabular-number stat counters with animated count-up transitions for profile summary metrics.
⏳ Added clearer expired-trip treatment in profile/public cards with an explicit status badge and cleaner fallback title for expired generation drafts.
⚡ Added lazy chunk rendering + skeleton placeholders for profile trip grids and paged loading for public-profile trips to reduce first-load work.
🧾 Restored reliable city-lane hover tooltips on profile trip cards with a native-title fallback.
🦶 Replaced the public-profile not-found footprint asset with the intended softer travel-footprint artwork.
🧭 Added footer consistency across profile, settings, stamps, and public-profile surfaces (including unavailable/error states).
📱 Added legal quick links (Imprint, Privacy, Terms, Cookies) to the mobile burger menu so legal routes stay reachable on views where footer placement is constrained.
📱 Unified mobile navigation into one cleaner menu flow with signed-in account shortcuts and a single admin-dashboard shortcut on mobile.
🎯 Aligned profile trip color-lane hover affordance with inspiration example cards for consistent interaction feedback.
🧷 Added cache-busting for the public-profile not-found footprint artwork to avoid stale CDN/browser image mismatches.
🛂 Reworked public-profile not-found messaging to a passport-focused state with “This passport is invalid” headline and updated visual.
🔒 Added a privacy-aware public-profile view that shows masked identity details when a traveler disables public visibility, while still allowing admin moderation access with clear public/private status badges.
🪪 Updated public-profile self-visits so profile owners now get an “Edit profile” action instead of follow/message controls.
🧱 Moved bio, location, and total distance into the left profile identity card and pinned card actions to the bottom for cleaner hierarchy.
📐 Enforced a strict vertical stack for location and total distance in profile identity cards so both values stay on separate lines.
🔗 Converted “Edit profile” and “View public profile” actions to true links so they can be opened in new tabs.
📐 Refined private-profile layout to use a shorter profile card with side-by-side private-state messaging on larger screens and centered stacking on mobile.
🧭 Simplified private-profile state to a centered identity card for cleaner focus and lower visual clutter.
🧼 Removed the “add a short bio” helper fallback from public profiles when the traveler has no bio set.
🌍 Updated the Country/Region picker in profile settings to show country names in the active app language.
🔒 Removed clear/remove from the mandatory Country/Region profile field to keep selection always required.
✍️ Limited profile bios to 160 characters in settings with live length feedback.
🌐 Localized greeting fun-fact copy keys across all active profile locales so hero context lines render consistently.
🌐 Completed profile/public/settings UI localization for all active profile locales, including private/not-found state copy and action labels.
🧼 Removed the always-on soft marketing background gradient layer to prevent first-paint mismatch flashes.
♿ Ensured profile/stamps motion effects respect reduced-motion preferences and removed loading-text flicker in profile settings.
🧭 Hardened public-profile handle resolution so valid profiles no longer fall into false “profile not found” states in mixed-schema environments.
🔎 Fixed public handle resolution for canonical usernames (including underscore handles) by correcting fallback profile lookup chaining so /u/{username} no longer drops into false “Profile not found”.
🏷️ Corrected public-profile trip source labels so visitor views no longer show “Created by you” and instead use creator-appropriate copy.
🧭 Scoped local dev admin bypass auth to admin routes only, preventing unintended login-state flips and page blinking when guests interact with public profile trip cards.
📱 Restored the normal “Create trip” mobile navigation entry on public-profile unavailable states by removing accidental header CTA suppression.
↩️ Restored expected browser Back behavior from trip pages opened via profile/public-profile cards by removing an over-aggressive popstate trap in trip history handling.
🧭 Decoupled public-profile identity loading from public-trip loading so profile pages still render even if trip queries fail temporarily.
🛡️ Restored 90-day username cooldown enforcement in profile settings for environments using legacy profile-column fallbacks.
🔗 Added canonical @handle normalization so public profile links and username saves resolve correctly even when users paste handles with @.
🧯 Stopped profile-page request thrashing and flashing by hardening profile-column fallbacks and preventing repeated auto-refresh loops after failed profile fetches.
🧭 Fixed passport page-turn vertical jump by stabilizing spread height during flip transitions.
🧭 Eliminated interaction-triggered request bursts on public profiles by hardening guest auth/session handling and avoiding anonymous profile refresh probes.
🚦 Capped “My Plans” reverse-geocoding enrichment work per open cycle to prevent large request floods on guest devices.
🧊 Removed signed-in public-profile click blinking by treating /u/:username as an auth-bootstrap critical path and stabilizing public-profile resolver reload dependencies.
🔐 Removed deferred first-interaction auth bootstrap so auth state now initializes on page load across routes.
✅ Country/Region selection now closes the dropdown immediately after choosing an item.
🛠️ Fixed the profile settings crash caused by an invalid empty-value gender select option.
Feb 26, 2026
Create Trip now lets you choose the AI model before generation, with prioritized recommendations.
🤖 Added an AI model selector next to the trip creation action so you can choose the engine before generating.
⚡ Highlighted top picks first, including fast options and the current default model.
Feb 25, 2026
Added Persian and Urdu language options for marketing pages with automatic RTL direction handling and destination-name locale coverage updates.
🌍 Added Persian and Urdu as selectable website languages on marketing pages.
🗣️ Homepage and core marketing navigation copy now appear in Persian and Urdu instead of English fallback text.
↔️ Page reading direction now switches automatically between left-to-right and right-to-left based on the selected language.
🧭 Destination and country-name data now includes Persian and Urdu locale entries.
📝 Persian and Urdu interfaces now use Vazirmatn for clearer Arabic-script typography.
🪞 Social preview cards now mirror the layout direction for Persian and Urdu so text and visual hierarchy read naturally.
🔤 Persian and Urdu social preview metadata now uses localized titles/descriptions on localized routes instead of English fallback copy.
🗺️ Persian and Urdu inspiration subpages now include localized OG descriptions (not only localized titles), so social previews stay native-language end to end.
Feb 25, 2026
Pre-generated site Open Graph images now use the exact same renderer as live OG responses for consistent fonts and layout.
🖼️ Static social preview cards now match live previews in typography, spacing, and footer layout so previews look consistent everywhere.
Feb 25, 2026
Static pre-generated Open Graph images now match live-rendered OG visuals more closely, including icon sizing and safer footer URL fitting.
🖼️ Pre-generated social preview images now align with live OG card visuals so icons, spacing, and footer URL rendering stay consistent across static and on-the-fly cards.
Feb 25, 2026
Stabilizes edge availability and restores reliable custom social previews across static pages, blog, and example trips.
⚡ Switched static-page preview images to pre-generated assets for faster, more stable social-card delivery.
🛟 Restored reliable page and asset loading during intermittent edge timeout spikes.
🖼️ Restored custom social previews for static pages, localized blog entries, and example trip pages.
🧯 Hardened social-image rendering so temporary third-party font-network slowdowns no longer break OG image endpoints.
🧭 Updated example template social previews to use the same trip-card style as shared trip previews.
🎨 Restored the classic static social-preview visual style (wave panel, proper footer branding, and full page URL in preview cards).
Feb 24, 2026
Adds background progress and completion signals so long-running trip generation stays clear even when users switch tabs.
🔔 You can now enable optional browser alerts so you get a heads-up when your generated trip is ready.
🧭 While your tab is in the background, generation now shows clearer progress and completion cues in the tab UI.
🏷️ Page titles now stay in sync with the page you are viewing during in-app navigation.
✅ Background completion states now reset cleanly when you return to the tab.
Feb 24, 2026
Contact now has a production-ready form flow with robust fallback and updated Wizz contact addresses.
✉️ Added a working contact form with topic selection, message validation, and reliable submission handling.
🛟 Added resilient fallback messaging so users can always reach us directly by email when form submissions fail.
📬 Updated the primary contact address to contact@wizz.art across customer-facing contact surfaces.
⚖️ Legal contact details now show the primary contact mailbox alongside the info mailbox.
Feb 24, 2026
Trip map routes now render with dual-contrast outlines and thicker lines so leg paths stay readable across all map backgrounds.
🗺️ Trip map routes now use a dual-contrast border (outer light + inner dark) so legs stay visible on clean, dark, and satellite map styles.
📏 Route strokes are now slightly thicker with a wider outside border to improve leg clarity at a glance.
🚆 Dashed fallback route legs now keep their dashed visual language while still getting contrast support.
Feb 24, 2026
Clarified legal disclosures for Google Maps, social login providers, and current analytics storage behavior.
🗺️ Added explicit privacy disclosures for Google Maps processing and related legal basis.
🔐 Added named OAuth provider disclosures for Google, Facebook, and Kakao login flows.
🍪 Clarified cookie policy language for first-party storage and third-party map cookies.
Feb 24, 2026
Legal disclosures now ship with finalized provider details and stronger browser-storage transparency.
⚖️ Published finalized legal notice details for the responsible provider and content owner.
🔒 Legal profile data is managed from one typed source to keep future updates consistent.
🍪 Expanded browser-storage disclosure so essential app/auth/session entries are documented in one registry.
🧭 Kept legal page URLs canonical in English while locale-prefixed paths still work.
Feb 23, 2026
Trip city panels now use softer modern color blending and can visually represent tentative city options.
🪄 Tentative city options now render as semi-transparent striped cards so non-final stops are easy to spot.
🧪 Added a new flexible Mediterranean example trip so teams can test uncertain city variants in a real itinerary.
🎨 City stay cards now use softer palette-aware color blending with crisp outlines and adaptive text contrast for clearer readability.
🧩 Overlapping city stays now stack into aligned lanes with tiny spacing, and city rows expand for extra overlaps while each card stays capped at the default height.
🎯 Selected city cards and resize handles now have stronger focus/hover states for clearer editing feedback.
✅ City and activity details now include an approval switch so tentative plan elements can be tracked without blocking edits.
🧭 Approved alternative cities now reliably drive transfer connector routing, including lower-lane options in overlap groups.
🚉 Transfer chips no longer collapse into unreadable slivers; dense legs are packed into extra transfer lanes to avoid overlap.
Feb 21, 2026
Localized navigation, dropdown styling consistency, and example-trip info modal alignment are now stable across key user flows.
🎚️ Trip planning forms now use a consistent styled dropdown across create-trip, settings, profile, and blog filters.
🧑🤝🧑 Traveler setup dropdowns now include clearer icons for gender and couple occasion selections.
🌐 Localized pages now consistently keep the full top navigation visible after switching languages.
🇩🇪 The language picker and account entry controls now stay intact across supported locales, including mobile navigation.
🎛️ The language picker now uses the styled flag dropdown again instead of the plain system select list.
🏳️ Language and destination dropdowns now render real flag icons again instead of emoji fallbacks.
🪟 Trip information now opens in a centered modal layout so example-trip details no longer appear offset.
Feb 18, 2026
Sitemap generation now reads live route and locale sources so each deployment publishes an up-to-date sitemap automatically.
🗺️ Search engines now get a refreshed sitemap on each deployment with the latest public pages.
Feb 18, 2026
Fixed social preview typography fallbacks and restored rich trip previews when shared trip pages are opened from direct trip links.
🎚️ Social previews now keep branded typography across a wider range of headline font weights.
↪️ Direct trip links now route non-owner viewers to the shared version when an active share already exists.
🔐 Non-shared private trip links now route users to clear next steps (login for unauthenticated visitors, unavailable state for non-owners) instead of dropping to trip creation.
🔤 Shared and page social preview titles now render with the intended brand typography more consistently.
🔗 Shared trips now keep rich social previews even when a direct trip page link is shared.
Feb 17, 2026
Introduced a full admin operations workspace with safer trip overrides, deep-linked owner drawers, and bulk admin actions across users and trips.
🧭 Added a full-width admin workspace with a structured sidebar, operational overview cards, and dedicated sections for users, trips, tiers, and audit history.
🧑💼 Added advanced user provisioning controls with searchable/filterable user management, detail side panel editing, and invite/direct account creation flows.
🧳 Added admin trip lifecycle controls so status and expiration can be reviewed and updated from dedicated trip management views.
👤 Replaced the simple auth action with a role-aware avatar account menu that gives users direct access to profile/settings and gives admins fast access to admin sections.
📝 Added mandatory post-login profile onboarding plus a reusable profile settings page for editing personal details and language preference.
🧱 Refined the admin sidebar with icon-based navigation, cleaner active highlighting, and a desktop collapse mode.
📱 Added a dedicated mobile admin navigation drawer so the workspace remains usable on smaller screens.
🔗 Made admin table/search/filter states bookmarkable by persisting page settings in the URL.
🧭 Unified AI benchmarking inside the main admin workspace and added an easy route back to the main planning experience.
🪪 Polished the profile avatar dropdown with clearer grouping for profile, settings, planner, and admin destinations.
🗂️ Reworked user management into a full-width table with richer account context, activity timestamps, and cleaner row action menus.
🧪 Added default filtering to hide anonymous accounts while keeping quick access when you explicitly need to inspect them.
🪟 Moved user creation into a focused modal and refined user-detail editing into a clearer right-side drawer with prefilled fields.
🎚️ Refreshed admin filters and status controls with modern select components and clearer selected labels across admin pages.
🧍 Added account/profile access to the mobile admin sidebar footer so navigation controls stay reachable on small screens.
🧭 Simplified admin navigation layout so top controls align cleanly in one row on larger screens while profile access is anchored in the sidebar.
📐 Fixed collapsed-sidebar behavior by moving the collapse toggle outside the rail and reducing icon overflow edge cases.
🧰 Refined toolbar behavior so primary actions stay on one line, with cleaner iconography and more stable control ordering.
🗃️ Switched user details to a full-height right-side drawer with smoother slide-in behavior and clearer section ordering.
🔄 Unified reload controls across admin data tables with a shared icon style and inline loading motion feedback.
🧪 Upgraded user/trip table filters to chip-style multi-select menus with persistent URL state for bookmarkable filtered views.
📊 Added richer user activation insights (including pending activation tracking and ratio cards) directly in the Users workspace.
🧠 Reduced admin metric flicker by caching recent users/trips/tier snapshots locally before live refresh completes.
🔢 Standardized animated number transitions across compact dashboard metric cards for smoother data updates.
🔗 Added direct trip-open links in admin trip listings and connected-trip sections so visual verification is one click away.
🧭 Enabled admins to open any trip directly from admin tables, while keeping owner-only behavior unchanged for regular users.
🧭 Updated Trips table interaction so clicking a trip name opens the side drawer, while a dedicated “Open trip” link remains available inside the drawer.
👤 Made trip owner cells open a user-information drawer for faster account context checks without leaving trip operations.
🛡️ Added a default read-only safety mode for admin-opened trips, with an explicit edit override switch for authorized admins.
🔎 Added direct owner-profile deep links from admin trip views so support can jump into the correct user drawer instantly.
✅ Added multi-select checkboxes in Users and Trips tables with bulk soft-delete and permanent-delete actions.
🧳 Reworked connected-trip controls in the user drawer so trip links keep full width while status/date controls stay compact.
🔗 Added owner deep-link opening inside the Trips workspace so support can inspect owner drawers without switching screens.
🔐 Added login-type filtering in User Provisioning with social/username-password/unknown modes plus provider-level social selection.
🪪 Upgraded login badges in the user table with provider-specific icons/colors and better multi-provider visibility.
📈 Added per-user trip counters in User Provisioning and surfaced active/total trip totals directly in the user details header.
🧹 Added trip-count cleanup filters in User Provisioning so admins can quickly isolate users with no trips and empty profile data before deletion.
🔁 Added safer admin deletion flow with explicit hard-delete impact warnings and a transfer-before-delete option for preserving owned trips.
🧭 Added clearer hard-delete prompts that explicitly steer admins to transfer trips first when preservation is needed.
✅ Refined admin row selection UX with clearer selected-row highlighting, larger checkbox click targets, and in-table processing overlays during destructive actions.
🧩 Disabled accidental text selection on admin pills/chips so clicks and drag gestures no longer highlight pill labels.
🧾 Upgraded audit history readability with clearer action aliases, colored action/target pills, and direct deep links into related user or trip details.
📋 Made user and trip UUIDs in admin tables/drawers click-to-select and copy-friendly, with lightweight inline copy feedback.
🎯 Added field-level before/after change snapshots in audit entries so profile status, role, tier, and trip ownership edits are easier to review.
🧩 Added native user/trip detail sidepanels directly inside Audit so target inspection no longer requires switching admin pages.
♻️ Added soft-deleted user recovery directly from the Audit user drawer, including snapshot fallback when live profile rows are missing.
🧾 Expanded hard-delete traceability with clearer delete-impact prompts and hard-delete audit metadata that records owned-trip impact.
🧭 Removed forced profile-onboarding redirects so authenticated users can continue without mandatory completion detours.
🧭 Added a one-click “Open in Trips” shortcut from user details to jump into filtered trip lifecycle view for that owner.
🧭 Improved shared-link reliability by aligning lifecycle handling with live trip status and expiry metadata.
🧹 Improved identity filtering so placeholder/anonymous records are easier to separate from real activated accounts by default.
🪄 Fixed admin filter popovers to open and select reliably across table toolbars, including sticky/scrolling layouts.
🧩 Fixed dropdown layering in side drawers/dialogs so account status, role, and tier selectors are fully usable again.
🪟 Restored outside-click drawer close behavior for deep-linked user details so drawers no longer reopen unexpectedly.
⏱️ Suppressed release popups for admin trip sessions and during active loading overlays to avoid stacked modal/loading states.
🧭 Removed misleading loading overlays on expired admin-opened trips and added clearer unfinished-itinerary messaging.
📏 Fixed desktop admin sidebar sizing so the rail reliably fills the full viewport height.
🧾 Improved bulk hard-delete reliability by showing per-user failure reasons and automatically clearing safe historical links that can block deletion.
🧮 Prevented soft-deleted accounts from being hard-deleted via bulk selection so admin user totals no longer drop from no-op delete attempts.
🧬 Normalized legacy/invalid profile gender values during admin user updates to prevent profiles_gender_check save failures.
✅ Restored admin checkbox pointer cursors and enlarged click targets after a checkbox component refactor regression.
🔗 Cleaned up audit target controls so pills stay separate from action buttons, and added direct in-app drawer opening for both linked users and trips.
🛠️ Improved admin hard-delete diagnostics so identity API failures now return actionable status details instead of generic error messages.
🧾 Prevented no-op “Updated overrides” audit entries when profile/status edits are saved without entitlement override changes.
🚧 Added an explicit admin access-denied screen for signed-in non-admin accounts and hardened invalid /admin/* URL handling so admins recover back to dashboard routes.
🔐 Stabilized delayed session restore UX by auto-closing the login modal after recovery without hard-refresh, while temporarily disabling login actions until auth state is ready.
🔐 Improved stale-session recovery so login and preference saves can self-heal after deleted-account session mismatches.
🧾 Prevented a login recovery edge case that could silently switch active accounts into an anonymous "unknown user" state.
🔐 Fixed anonymous-session detection so the login modal no longer auto-closes by mistaking guest sessions for signed-in accounts.
🔎 Improved admin filtering so search and date-range controls update Users, Trips, Tiers, and Audit views consistently.
🧮 Fixed admin workspace data panels failing to load by aligning backend response types for users/trips/audit queries.
⏳ Fixed a trip-management issue where changing status could unintentionally clear the existing expiration date.
🧑🔧 Fixed a profile-settings stability issue that could prevent authenticated users from loading the settings form.
👥 Fixed an onboarding redirect issue so guest trip links and trip creation stay accessible without forcing profile completion.
🔗 Restored shared-token trip loading so valid shared links no longer get rejected as unavailable.
Feb 17, 2026
Shipped Korean localization, Kakao sign-in, and production account flows so more travelers can start and continue trip planning with real login.
🇰🇷 Added Korean language support across auth, pricing, planner, and core marketing pages.
🧧 Added Kakao social login so Korean travelers can sign in with a familiar local provider.
🔐 Launched production authentication with email/password plus social sign-in and account recovery flows.
⏳ Added guest queue handoff so anonymous create-trip requests resume after login instead of being lost.
Feb 17, 2026
Established production authentication, tiered access, and guest-to-account queue handoff so trip planning survives sign-in and account recovery.
🔐 Launched production account authentication with email/password and major social sign-in providers.
🎒 Introduced Backpacker, Explorer, and Globetrotter plans with account-based trip limits.
⏳ Guest create-trip requests now resume after sign-in instead of being lost.
💳 Updated pricing so plan limits are shown clearly and consistently.
🛂 Added convenient sign-in and sign-out controls directly in planner and example trip views.
🔑 Added password recovery and password-setup flows so users can regain account access more reliably.
🧯 Improved sign-in flow resilience so users return to the right place after authentication interruptions.
Feb 16, 2026
Replaced emoji flags with consistent real flag icons across planner, inspiration, blog, and language UI.
🏳️ Replaced emoji-flag rendering with real SVG flags in planner destination chips, pickers, labs, and country context cards.
🌐 Updated language selectors, language suggestions, and English-article notices to use the new shared flag system.
🧭 Inspirations cards, country pills, and trip-list rows now show the same consistent real flag visuals.
Feb 16, 2026
Trip timeline now uses denser transfer lanes, clearer transfer copy, and cleaner connector links between cities.
🧭 The horizontal timeline now uses a denser city/transfer layout to free vertical space and keep routes easier to scan.
🔁 Planner timeline labels and helper copy now use "Transfer" where travel-between-cities actions are shown.
🔗 Transfer pills now use dedicated city-to-pill connector lines, with dashed styling when transfer routing is missing or failed.
🏙️ City stay cards now use a cleaner compact layout and show full city/country + stay details via the delayed desktop tooltip.
🔎 Transfer pills now adapt by zoom level (compact icon-only/N-A at very small zoom, readable icon+label at regular zoom, and duration metadata when space allows).
🛡️ Example and preview trips now fail gracefully with clearer fallback behavior instead of throwing app-blocking errors.
Feb 15, 2026
Create Trip now recovers from first-load failures more reliably, with Classic Card as default and a smoother generation flow across mobile and localized experiences.
🧭 Classic Card became the default planner flow with clearer required steps for destinations and dates.
📱 Mobile trip snapshot controls are easier to read and use, with better spacing and clearer actions.
🌍 Create Trip language quality improved across supported locales, including better translation consistency.
🚀 Trip generation now transitions more smoothly into the trip view with clearer progress feedback while loading.
🧪 The create-trip labs area now offers easier access to multiple planner concept variants for quick comparison.
🧩 Create Trip now auto-recovers from stale first-load assets, so users are less likely to hit a broken screen.
🔁 Inspiration links now prefill the planner reliably again, so users can start faster without re-entering details.
🗓️ Calendar and weekday labeling fixes improved date clarity across timezones and locales.
Feb 13, 2026
Stabilized the homepage example carousel on mobile and upgraded example cards with timeline lane visuals plus smoother card-to-trip transitions.
🔗 Added a clearer “Discover more inspirations” link below the homepage carousel.
🗓️ Added minimal bottom calendar lanes on every example card that mirror city stay colors and relative stay/route sizing.
🏷️ Added city-lane hover tooltips on example cards with subtle offset outlines derived from each lane color.
🧬 Improved visual continuity when opening example cards into full trip views.
🪶 Headline line breaks are now cleaner and more readable across pages.
🌏 Added a new multi-country “Backpacking South East Asia” example card with an openable 37-day roundtrip route template, richer city/activity coverage, localized card titles/city labels across all supported languages, and template defaults tuned for vertical timeline + minimal map.
📱 Removed homepage horizontal body overflow on mobile around the animated example carousel.
🖼️ Restored the original desktop carousel breakout/fade behavior while keeping the mobile overflow fix.
🖐️ Disabled text selection on homepage example cards (including iOS touch callout) for smoother swipe and tap behavior.
⚡ Example trips now open faster with less perceived delay.
🎯 Increased city-lane hover hit area, switched tooltips to city names only, and stabilized lane hover styling to avoid visible card jitter.
🧭 Refined city-lane hover visuals with a tighter, thicker border effect and kept pointer cursor behavior.
🪟 Added extra carousel vertical buffer so example card hover shadows are no longer clipped at the wrapper edge.
🎞️ Adjusted transition behavior to prioritize speed and reliability when opening examples.
⚙️ Reduced back-navigation lag from trip pages by removing heavy transition wrapping.
🔤 Restored system sans-serif body text and stabilized local Space Grotesk subset loading to avoid visual jumps on resize.
Feb 13, 2026
Removed duplicate mobile info controls and restored quick access to change history from the trip header.
📌 On mobile, the My Plans action is now pinned to the far right of the header action row for consistent placement.
🧭 Mobile trip headers now show one clear info action, and the second duplicate icon is replaced with direct history access.
Feb 13, 2026
Non-English blog browsing now keeps locale URL context when opening English-only posts, with clearer article-language messaging.
🧭 "Back to blog" and related article links now route to the active locale's blog paths.
🇬🇧 Blog post pages now show clearer localized notices when article content is only available in English.
🌍 Opening an English-only blog post from a non-English blog view now keeps the active locale path and UI language context.
Feb 13, 2026
Restored reliable social preview image rendering and prevented sharing before a trip has finished saving.
🔗 Share links now wait for trip save completion so users avoid broken or incomplete shares.
🖼️ Restored reliable social preview image rendering with consistent typography across shared links.
Feb 13, 2026
Added full Polish localization across site and planner flows, polished language switching, and improved support for Polish character rendering.
🇵🇱 Added Polish as a fully supported language across the app and marketing pages.
🧭 Updated language selectors so Polish appears as the final option in dropdown order across header/mobile/settings UI.
🔤 Ensured Polish diacritics render correctly by loading Latin Extended font subsets for app and OG image generation paths.
🌍 Localized home example carousel CTAs and card content, including titles, tags, and destination labels.
Feb 13, 2026
Improved multilingual UX with faster switching and persistent locale-banner dismissal across language changes.
🌍 Marketing pages now support localized URLs for Spanish, German, French, Italian, Portuguese, and Russian while English stays on root URLs.
🇪🇸 Added full Spanish translations across all active namespaces (home, features, pages, pricing, blog, legal, settings, and shared UI).
🇵🇹 Added full Portuguese translations across all active namespaces (home, features, pages, pricing, blog, legal, settings, and shared UI).
🎛️ Language selectors now use a consistent style, include Spanish correctly, and follow the requested order: English, Spanish, German, French, Italian, Portuguese, Russian.
🧭 Language switching preserves the current route when possible and avoids forced browser-language redirects.
🏷️ Locale and translation-info banners now use shorter mobile CTA labels to avoid awkward wrapping on small screens.
🔕 Dismissing the locale suggestion banner now hides it for the rest of the current session.
⚠️ Translation quality notice banner can now be dismissed for the current session.
📰 Non-English blog pages can show native + English articles with a locale-aware language filter and clear English-content notice.
✍️ Blog pages now feature a creator-focused community CTA for bloggers and storytellers to submit ideas via contact.
🔤 Blog cards and article pages now show clearer language context when mixing local and English content.
🍪 Cookie consent banner and shared footer/header CTA copy are now localized for all supported locales.
📱 Mobile language switching now updates reliably from the menu and applies locale changes consistently across page sections.
🙈 Global hover tooltips are now disabled on touch/mobile devices to prevent sticky floating labels.
✅ Locale suggestion dismissal now remains persistent while switching between languages in the same session.
🚫 After switching via the language suggestion CTA, the suggestion banner is now acknowledged and no longer shown again.
🔗 English blog entries opened from non-English views now route to the correct article language variant.
🧩 Dynamic values in translated strings now render correctly across locales.
Feb 12, 2026
Added a playful multilingual global 404 page with an animated plane-window centerpiece, direct planning CTA, contact fallback, and dedicated tracking.
🛬 Added a global 404 page with an oversized centered "404" layout, using the animated homepage plane-window clouds as the middle zero.
😄 Added playful transcreated 404 messaging across all supported locales (EN, ES, DE, FR, PT, RU, IT).
🧭 Added a direct "Plan yours" CTA from the 404 page to jump straight into trip creation.
📬 Added a "Contact us" fallback link for missing pages users think should exist.
🎨 Polished the 404 visual rhythm with clearer vertical spacing, larger center window framing, and muted non-selectable side numerals for a cleaner modern look.
Feb 11, 2026
Improved page speed and perceived navigation with lighter initial bundles, smarter route warmups, and better progressive image delivery.
⚡ Homepage, blog, and marketing routes now load faster with less initial JS on first visit.
🖼️ Progressive image loading now makes content appear sooner while reducing data usage.
🗺️ Example trip map previews now use smaller responsive sources to reduce over-download on cards.
🚀 Navigation now feels faster because likely next pages are warmed in advance.
🎯 Example-card interactions now keep fast direct navigation while still warming trip-view assets ahead of click.
🔤 Typography now loads more reliably via self-hosted font subsets with reduced external dependency cost.
🧠 Repeat visits are faster with stronger asset caching behavior.
⏱️ First-load now prioritizes rendering and interaction before background route warmup starts.
⚡ Homepage startup now ships less JavaScript before the page becomes interactive.
♿ Trip planner title editing and panel resizing now have better keyboard/focus accessibility behavior.
⚡ The My Plans side panel now opens immediately with visible loading placeholders instead of waiting on trip-data fetch completion.
⚡ Trip information now opens instantly with a lightweight loading shell instead of waiting for the modal bundle to finish loading.
♿ Trip info, history, share, and add-activity dialogs now use stronger semantic modal and form patterns for better keyboard and assistive-technology behavior.
⌨️ Keyboard tab navigation is now contained inside open dialogs and side panels so focus no longer jumps to background page content.
♿ Trip share, history, and info overlays now use one consistent modal foundation with aligned close/focus/escape behavior.
⌨️ Add destination/activity, delete city, and settings dialogs now keep keyboard focus and close behavior consistent with the rest of the planner overlays.
⌨️ Login and queued-auth overlays now keep keyboard tab focus inside the modal so background controls are no longer reachable while authentication is open.
🤖 Trip/share URLs are now correctly disallowed for crawlers while public pages remain crawlable.
🗺️ Trip and example map panels now fail gracefully when a deploy preview has an invalid map API key instead of surfacing hard runtime script errors.
🧭 Example and shared trip entry flows no longer interrupt guests with an unexpected required-onboarding redirect.
Feb 11, 2026
Faster blog and inspiration image delivery plus internal OG playground reliability and usability improvements.
⚡ Blog cards and post headers now load faster with lighter responsive image delivery.
🖼️ Inspiration cards now use the same optimized image delivery for faster loading on mobile and desktop.
Feb 11, 2026
Internal QA toolbar now persists debugger toggles across reloads for faster testing.
💬 Refined pricing and login messaging to be clearer, shorter, and more encouraging around upcoming paywall features.
Feb 10, 2026
Example trips now feel more like an interactive playground, with clearer guided actions and a polished reactivation experience.
🧭 Added dedicated /example/:templateId routes so example trip links stay reliable across tabs and incognito sessions.
🪧 Refined the sticky example-trip banner with clearer guidance and stronger copy/create actions.
🧪 Example trips now run in true playground mode where exploration changes are never saved.
📚 Example trips now open with destination info collapsed for a cleaner first view.
✨ Expired-trip screens now provide a richer reactivation flow with clearer activation and FAQ paths.
🧩 Expired previews now use consistent placeholder destination names across planner, print, and My Plans tooltip previews.
📱 Mobile trip info/share surfaces now open as bottom-aligned sheets for easier one-hand use.
🔗 Inactive shared links now open a clear “link unavailable” page instead of silently redirecting.
↩️ Browser Back now returns correctly when opening and leaving /example/* trips from homepage cards.
Feb 10, 2026
Desktop and mobile now share one trip information modal, with destination details and trip-source context centralized in a clearer view.
ℹ️ Added the trip info icon and popup to desktop so desktop and mobile now use the same information modal entry point.
🗂️ Moved destination info out of the trip content column and into the trip information modal for a cleaner main layout.
🧾 Redesigned copied-trip source context inside the information modal so fork/source details are easier to read, including a direct source link when available.
⌨️ Ensured the trip information modal closes reliably via ESC and outside-click behavior across breakpoints.
Feb 10, 2026
City colors now support palettes, custom HEX/RGB values, trip-aware map coloring, and roundtrip-aware example previews.
🎨 Upgraded the city color picker with palette stripes, active swatches, and manual HEX/RGB input (no transparency).
🧭 Added a map color mode switch (Trip colors or Brand accent) in the map style menu.
🗺️ Custom city colors now render across map routes, transport icons, timeline blocks, print view, and selected-city indicators.
🌸 Example trips now open with matching palette and map-style defaults, and homepage cards render palette-aware preview maps.
🔁 Example trips now support roundtrip metadata and homepage roundtrip badges, with looped routes keeping matching start/end city colors.
🛣️ Homepage static trip map previews now respect each template’s route mode, including realistic road routing.
🔐 Map color mode controls are now internal-only by default (visible in local/dev or with internal flag).
❄️ Iceland Ring Road now closes the loop back to Reykjavik and uses a high-contrast aurora palette on dark maps.
🌌 Dark map styling now has stronger land/ocean contrast, and the Iceland example uses a brighter aurora-style palette.
🧭 Updated example map defaults so Atlantic Coast uses minimal, South Island Wilderness uses dark, and Andes & Amazon Explorer uses standard.
🔀 Reordered homepage examples to place Atlantic Coast Road Trip before Cherry Blossom Trail.
🌈 Homepage trip previews now render per-leg route colors from the trip palette instead of a single route color.
🔎 City blocks now auto-pick high-contrast text colors for custom light/dark backgrounds to keep labels readable.
📍 Map stop pins now auto-pick contrasting number text colors so stop indices remain readable across all pin colors.
🎚️ Fixed map color mode state so Brand accent applies correctly when enabled.
⚫ Contrast-based labels now use pure black/white text for maximum readability on all custom and palette colors.
🪪 City timeline cards now compute contrast text from the resolved city color for both preset and custom values.
🔗 Example trip links now reliably apply map style defaults from trip data when loading.
🖼️ Regenerated homepage static map preview PNGs and bumped fallback cache version so updated styles (including NZ dark map) render immediately.
Feb 10, 2026
Inspiration and blog cards now use realistic generated travel photography, with a default 60% brand tint gradient on blog OG previews and controllable tint settings.
📸 Destination cards now show generated travel photos instead of placeholder map blocks.
🌸 Cherry Blossom Trail now features a realistic Japan spring scene with cherry blossoms, Chureito Pagoda, and Mount Fuji.
🎉 Festival cards now use realistic event photography for each celebration.
⚡ Inspiration card hover interactions are now snappier, with smoother motion and fixed image corner clipping.
🧾 Destination cards now move country info into the footer, while festival cards show flag + location in the subtitle without image pills.
🖼️ Inspiration card images now load as responsive WebP assets with lazy loading, taller image framing, and a subtler progressive blur/gradient transition into content.
🔍 Card images now use a subtle scale-down-on-hover motion for a calmer, more immersive feel.
📰 Blog overview cards now show generated travel photography instead of placeholder color blocks.
🏞️ Blog article pages now use wide photographic hero headers with responsive WebP sources.
🔗 Blog post social previews now render article-specific photography with a soft accent tint in Open Graph cards.
🗜️ Blog Open Graph previews now render below common 600 KB crawler warning thresholds through heavier OG-source compression and tuned side-panel composition.
🎨 Blog Open Graph previews now default to a 60% accent tint treatment for blog pages, with optional color and intensity overrides.
🎛️ OG Playground now includes native blog tint controls (enable toggle, color picker, and intensity slider) for faster visual testing.
🎯 Blog Open Graph default tint now uses the global brand indigo color across all blog posts (instead of per-post accent colors).
🔄 Blog OG tint previews now redraw reliably on each render and correctly reflect color/intensity changes.
☀️ Blog OG images now render without a dark overlay when tint is disabled, preserving the original photo brightness.
🧷 Blog OG image endpoints now tolerate HTML-escaped query keys (e.g. amp;blog_image) so preview-tool links render the correct image and BLOG pill.
Feb 10, 2026
Introduced three standalone create-trip design concepts and linked them from the current page for rapid UX comparison.
🖥️ Added a full-width 50/50 split workspace concept with live planning feedback as users edit inputs.
🗺️ Added a guided "Journey Architect" concept to capture trip intent before handing off to classic generation.
⚙️ Added traveler profile detail customization via responsive desktop dialog and mobile drawer interactions.
🧲 Added route-lock drag-and-drop for destination pills so users can define stop order directly in the form.
🚐 Added camper transport mode with optional vehicle weight input and a dedicated “Vanlife activated 🤙” state.
↕️ Reworked route snapshot into a vertical flag timeline with directional line styling, roundtrip loop visuals, and start/end pin highlighting.
🧪 Added three /create-trip/labs/* routes to evaluate distinct planning UX directions side-by-side.
🧭 Added a "Classic Card Overhaul" concept focused on a richer, modernized version of the classic flow.
🔗 Added direct "Design Labs" entry links on /create-trip for quick access and visual comparison.
🔒 Updated the Classic Card concept with destination-level route controls, including roundtrip placement and an optional Route Lock toggle.
🚆 Added transport preference controls with pace+budget auto-suggestions plus manual override guidance messaging.
💡 Reworked the right-side panel with actionable trip guidance, compact metrics, and rotating planning insights.
🏳️🌈 Refined the couple easter egg to use an 8px top-to-bottom pride border with hard color stops directly on the responsive settings modal surface.
🧹 Reduced nested card layers in the Classic Card concept and moved to a wider, cleaner form layout with a sticky snapshot card.
🗓️ Added exact-vs-flexible date mode selector with lightweight footer-style date summary for calmer visual hierarchy.
🎯 Simplified snapshot actions to a single CTA (“Create my trip”) and removed low-value plan-strength/guidance clutter.
🧭 Upgraded destination search to portal autocomplete behavior and restored seasonal “ideal travel time” tooltips on selected items.
📅 Reused the original date-range picker UI for exact-date mode to match the main create-trip calendar experience.
📍 Aligned route timeline connectors/roundtrip loop with measured node positions and added destination pin controls to choose the route start point directly.
🔐 Limited route connector visuals to Route Lock mode and added clearer direction triangles (including the roundtrip return path).
🧷 Simplified start-point controls by keeping only pin markers with context-aware native tooltips and switched locked route headlines to unicode arrows.
📱 Increased mobile density by using two-column grids for traveler setup, trip style, and transport preference sections.
Feb 9, 2026
The homepage hero now features an animated airplane window with drifting clouds, setting the travel mood from the first glance.
✈️ Animated airplane window on the homepage hero with clouds drifting past, bringing the feeling of flight to life.
Feb 9, 2026
Fixed a deployment issue that caused 500 errors on all pages, and added build-time safeguards to prevent it from happening again.
🖼️ Open Graph images now scale headlines dynamically — long blog and page titles fit cleanly instead of overflowing.
🛡️ Resolved a deployment issue that caused every page to return 500 Internal Server Error.
Feb 9, 2026
Every marketing page now shows the right title, description, and branded badge when shared on social media.
🔗 Sharing links to Inspirations, Pricing, and Blog pages now show accurate titles and descriptions instead of generic fallbacks.
🏷️ Social preview images display a page-specific badge (e.g. "TRIP INSPIRATIONS", "PRICING", "BLOG") instead of always showing "TravelFlow".
🌍 Country-specific inspiration pages (e.g. /inspirations/country/Japan) generate dynamic OG meta with the country name.
📝 Blog post social previews now pull real titles and summaries for richer link cards.
Feb 9, 2026
Homepage trip cards now show real route maps with actual city coordinates instead of placeholder graphics.
🗺️ Homepage trip cards now display real static route maps showing the actual cities and travel path for each destination.
🌍 Added detailed trip templates for Japan, Italy, Portugal, Peru, New Zealand, Morocco, and Iceland — each with cities, activities, hotels, and travel segments.
🖼️ New CLI tool (npm run maps:generate) to regenerate all route map images from trip coordinates.
🔗 New edge endpoint (/api/trip-map-preview) for on-demand map preview generation via URL.
👆 Clicking any homepage trip card now opens the full example itinerary in the planner — explore every city, hotel, and activity.
🏨 Every trip template includes curated hotels, local food recommendations, and insider tips via AI insights.
🔢 Corrected city counts on Thailand, Peru, and New Zealand cards to match the actual itineraries.
Feb 9, 2026
Fixed cramped navigation on medium screens and eliminated unnecessary database calls on marketing pages.
⚡ Marketing pages (homepage, features, blog, etc.) now load faster — database sync is deferred until you open a trip.
🧭 Navigation items no longer overlap the logo on medium-width screens (~790px).
Feb 9, 2026
Clicking any destination, festival, or getaway on the Inspirations page now pre-fills the create trip form with country, dates, and notes.
🗺️ Inspiration links pre-fill the create trip form with destination, dates, and travel notes.
🏷️ A dismissible attribution badge shows which inspiration pre-filled the form.
🌍 Multi-country trips like Patagonia now correctly select both Chile and Argentina in the form.
🏝️ Island destinations like Bali & Lombok are selected individually instead of the parent country.
🏙️ Inspiration cards now pre-fill specific cities (e.g. Tokyo, Kyoto, Osaka for the Cherry Blossom Trail).
🎪 Festival cards suggest start and end dates based on the next occurrence.
🏖️ Weekend getaway links default to the coming Saturday with the right duration.
📅 Monthly destination pills set the start date to the selected month.
💡 Quick-start ideas now carry country and duration into the form.
🏴 Edinburgh Highlands getaway now shows the correct Scotland flag.
Feb 9, 2026
Consistent navigation across all pages, full mobile menu, a new Pricing page, and quick access to saved trips.
📱 Mobile navigation menu — slide-in burger menu on all marketing and create-trip pages with all nav links and CTAs.
💰 New Pricing page with three-tier plan overview (Free, Casual, Globetrotter).
📂 "My Trips" now appears in the navigation bar when you have saved trips, opening your trip library instantly.
🧭 Pricing link added to desktop navigation on all pages.
🎨 Unified navigation bar across all pages — marketing pages and trip creation now share the same header with a subtle glass effect on the create-trip page.
🔒 Body scroll is locked while the mobile menu is open for a smoother experience.
Feb 9, 2026
Smooth page transitions, country-specific inspiration pages, interactive month calendar, smarter festivals, a markdown-powered blog, and a redesigned homepage.
📅 Interactive month calendar — pick any month to discover the best destinations and seasonal travel tips.
🎉 Upcoming festivals — events now show in chronological order with their next date, so you never miss one.
📝 Blog — travel planning guides, destination deep-dives, and tips, powered by markdown.
🔗 Related articles appear throughout inspirations for deeper reading.
🏠 Completely redesigned homepage with a bold hero, feature showcase, and bottom call-to-action.
🧭 New Features page with three hero capabilities, "How it works" steps, a 9-feature grid, and a comparison table against other planning tools.
🌍 New Inspirations page with 18+ curated destinations across 6 travel themes — adventure, food & culture, beaches, cities, slow travel, and photography trips.
🔍 Search across all destinations, festivals, and weekend getaways from the Inspirations page.
🗺️ Browse by country with best-month recommendations and tags for 12 popular destinations.
⚡ Spontaneous weekend getaway picks — 6 short-trip ideas you can book on a whim.
🎠 Browse a scrolling gallery of example trips on the homepage — hover to pause, click to explore.
🇯🇵 Country detail pages — click any country card to see travel info, best months, and tags at a glance.
🗓️ 20+ festivals with real dates for accurate upcoming-event sorting.
🎞️ Sections animate smoothly into view as you scroll — blur reveals, directional slides, and staggered entrances.
🎨 Trip creation form feels more premium with refined card shadows, a glowing accent bar, and softer background effects.
🚀 Pages transition smoothly with the View Transition API — a fast, subtle slide animation between routes.
📍 Navigating between pages now always starts at the top of the page.
📑 Release notes now always display in the correct chronological order.
Feb 8, 2026
Added GDPR-aligned Umami tracking with consent mapping, marketing events, and Netlify/Supabase setup scaffolding.
🚀 Added Umami analytics integration that only activates after optional consent and tracks SPA pageviews.
✨ Added baseline marketing events for navigation, hero CTA clicks, consent acceptance, and trip creation.
✨ Added Umami + Supabase environment variable scaffolding and updated Netlify secret-scan config.
✨ Updated the Cookie Policy page with explicit consent-banner mapping and implementation notes.
🐛 Removed forced DNT tracking suppression in Umami script config so opted-in analytics events can be sent.
Feb 8, 2026
Sharing is caring: shared trip links now open with a polished social preview so you can show off your next adventure.
🚀 Sharing is caring: shared trip links now generate a beautiful social preview with your trip title, timing, distance, and route map.
🚀 Every non-trip page now gets a polished share card too, with a clean headline, TravelFlow branding, and a subtle topographic-style glow for a map-inspired vibe.
✨ Shared preview maps now follow your saved trip view settings (map style, route style, and stop labels) so links match what people see in the trip.
Feb 8, 2026
🥳 Big island-planning upgrade: you can now search hundreds of popular islands worldwide, keep routes on selected islands by default, and still opt out in Advanced Options when needed.
🏝️ Added a global island destination dataset (400+ entries) mapped to parent countries and correct flags, including broad Indonesia coverage like Bali, Lombok, Komodo, Raja Ampat, Java, and Sumatra.
🧭 Added default island-only planning mode when an island is selected, with an Advanced Options toggle to allow mainland or non-selected islands when desired.
🔎 Create Trip destination search now supports countries + islands from structured JSON, including alias matching (for example Kreta -> Crete).
🤖 Gemini now receives explicit island context and island-only on/off constraints, so generated routes stay on selected islands by default.
🗓️ Added the Ideal travel time tooltip to Classic destination chips for parity with other flows.
🎉 Huge thanks to Nico for this feature request and push for proper island-first planning! 🥳
✨ Release note markdown now renders rich formatting (like bold, links, and inline code) correctly on News & Updates and the in-app release modal.
Feb 8, 2026
Mobile details got a comfy tall drawer and a quick accessibility polish.
✨ Mobile details now open in a taller drawer, so you can see way more at a glance.
🐛 Added hidden dialog labels to keep screen readers happy and silence accessibility warnings.
Feb 8, 2026
✨ My Plans now helps you find trips faster with smart sorting, better context, and cleaner tooltips so you can jump straight into anticipation mode.
🧭 Added a My Plans sort toggle so you can switch between Last updated and Travel timeline in one click.
🚀 Trips are now easier to find: recent edits float to the top, upcoming trips are prioritized, and past trips are grouped separately.
✈️ Added lightweight “when” context (like tomorrow / in 5 weeks) to keep planning clear and boost happy anticipation.
💬 Icon-only controls now have consistent delayed hover tooltips, including the My Plans sort toggle and color picker.
🛠️ Tooltip behavior is now stable across refreshes, with smarter positioning and stronger layering to avoid clipping.
Feb 8, 2026
Trip view on mobile now prioritizes timeline readability with a simplified header, a details modal, and a map-first expand workflow.
✨ Simplified the mobile trip header by hiding secondary meta/source text and moving extra details into a dedicated information modal.
✨ Added a mobile trip information modal with full title context, trip meta metrics, optional source link, destination info, and collapsible history access.
✨ Forced mobile trip view into a timeline-first layout with the map always below and a pinch-to-zoom timeline interaction.
✨ Replaced map layout toggles on mobile with an expand/shrink map control that opens a 70%-height bottom overlay.
✨ Updated the My Plans trigger to use a route icon and changed the plans drawer to slide in from the right.
Feb 8, 2026
Shared trips now remember whether the Destination Info panel was open or closed when the link was generated.
🐛 Added Destination Info panel open/closed state to shared view settings so recipients see the same panel state.
Feb 8, 2026
Adjusted reverse-city controls so icon direction matches the active timeline orientation.
🐛 Updated "Reverse selected cities" controls to use horizontal arrows in horizontal timeline mode and vertical arrows in vertical timeline mode.
Feb 8, 2026
The global accent default now uses the previous indigo/blue palette again while keeping the token-based theming system in place.
✨ Reset the global accent token scale to an indigo/blue default palette.
✨ Kept all UI surfaces token-driven, so future brand color switches still apply globally from one place.
🐛 Updated My Trips tooltip map fallback colors to indigo so map previews match the active accent theme.
Feb 8, 2026
My Trips tooltip map previews now inherit the active accent color token instead of using hardcoded purple map styling.
✨ Added runtime CSS-token color resolution for tooltip map styling so future accent changes propagate automatically.
🐛 Updated the My Trips tooltip Google Static Map route and markers to use global accent token colors.
Feb 8, 2026
Roundtrip toggles now use shadcn-style checkboxes with a softer orange checked state.
✨ Replaced Create Trip roundtrip native checkboxes with a shadcn-style checkbox component for consistent UI behavior.
✨ Softened checkbox checked visuals to a less aggressive accent tone while preserving accessibility and focus states.
Feb 8, 2026
Accent color now comes from one global token system, with a bright orange default that updates UI states, glows, and highlights across the app.
✨ Added a global accent/primary design-token scale (50-950) in the shared CSS theme layer and switched the active default to a bright orange palette for branding tests.
✨ Migrated planner and marketing surfaces to use token-based accent-* utilities for buttons, links, focus rings, selections, and hover/active states.
✨ Added reusable accent glow utilities so soft emphasis and top-news highlights inherit from the same primary token values.
🐛 Removed hardcoded primary accent values from markdown styles and map overlay labels so brand changes apply consistently.
🐛 Roundtrip checkboxes in Create Trip now use accent-driven checkbox fill so they inherit the global primary color.
Feb 7, 2026
✨ Copying shared trips is now safer and clearer: your copied trip keeps a stable source moment, while the original shared trip keeps evolving.
🚀 Copied trips now keep a stable source reference to the exact version you copied from. 📌
✨ Copying for inspiration now feels more predictable over time.
Feb 7, 2026
🚀 Shared trips are now much clearer and more reliable: live links stay current, older snapshots are easier to understand, and getting back to newest is one click.
🚀 Older shared snapshots are now supported without losing context.
✨ Shared trip links now open the latest version by default, including visual updates like map style and layout.
✨ Added a clear “Open latest” action when you are viewing an older snapshot.
✨ The share popup now keeps your existing links visible, so re-sharing is faster.
✨ Added early dashboard planning coverage for shared-link activity and sharing status.
Feb 7, 2026
Sharing now keeps your generated links handy and opens shared trips with the same planner layout and map settings you shared.
✨ Kept generated share links visible in the share popup per mode and added one-click copy for reuse.
✨ Added planner UI state to share URLs (layout, map style, route mode, city names, zoom, and panel sizing) so recipients see the same setup.
🐛 Applied shared-link URL view overrides on load to replay the sharer’s visual configuration reliably.
Feb 7, 2026
You now get beta Wizard and Surprise Me planning flows, plus season-aware country guidance and dedicated prompt paths per flow.
🚀 Added a tabbed Create Trip experience with Classic, Wizard (Beta), and Surprise Me (Beta) flows.
🚀 Added dedicated generation prompts per flow, including a wizard-specific and surprise-specific itinerary prompt.
✨ Added season-aware country metadata and reusable country tag UI to keep destination selection consistent across flows.
✨ Added a simplified Surprise Me setup with month-plus-weeks (default) or explicit start/end dates.
🐛 Corrected date picker anchoring so the calendar opens aligned with its input.
🐛 Moved country autocomplete dropdowns to viewport-anchored overlays so they no longer render behind or under the footer.
🐛 Removed first-open dropdown jump by measuring anchor position before rendering portal overlays.
🐛 Repaired hero background shader compilation so WebGL rendering no longer fails with invalid program errors.
🐛 Temporarily disabled the WebGL hero background and switched to a static gradient fallback to improve perceived performance.
Feb 7, 2026
You now get a cleaner, more modern TravelFlow front door with better navigation, clearer updates, and launch-ready legal basics.
🚀 Added legal pages and a cookie consent banner.
🚀 Added a full footer with links for imprint, privacy, terms, and cookies.
✨ Aligned /create-trip with the marketing navigation style.
✨ Added home navigation on the create-trip logo.
✨ Applied Space Grotesk globally for marketing and landing headlines.
✨ Replaced the top release strip with a modal presentation.
✨ Added type pills inside release modal items.
✨ Auto-sorted update items by type in release rendering.
✨ Updated active nav state to avoid label wobble and align underline with header divider.
✨ Increased top spacing below create-trip header.
✨ Ensured footer stays pinned on short pages via layout structure.
✨ Added visible release version labels in the updates feed.
🐛 Ensured release popup always uses the newest release only.
Feb 6, 2026
You can now save, share, and fine-tune trips with way less friction, so planning feels faster and more in control.
🚀 Added Supabase-backed trip persistence, version history snapshots, and share-link collaboration modes.
✨ Refreshed the create-trip card and stabilized the Tailwind-based UI layer.
✨ Removed noisy hover behavior from the horizontal activity lane.
✨ Auto-fit horizontal timeline zoom when switching from left-right layout to top-bottom layout, so timeline hover space is used more efficiently.
🐛 Improved date range picker month focus and range highlighting behavior.
🐛 Ensured itinerary dates follow app locale formatting rules.
Feb 6, 2026
You now get steadier trip loading and more reliable route stats, so planning feels less glitchy and more trustworthy.
✨ Improved route fallback handling across trip URLs and history navigation.
✨ Added caching and distance-status stability improvements for route calculations.
Feb 5, 2026
You got the first big TravelFlow jump: cleaner visuals, clearer route details, and a smoother path from idea to live trip planning.
🚀 Completed the initial planner rewrite foundation.
✨ Updated map styles and refined itinerary and travel tooltip layouts.
✨ Added deployment configuration for Netlify and Vercel with SPA routing support.