Co děláme, co jsme přidali, co opravujeme. Transparentně, bez marketingu.
V přípravě
leden 2027V přípravě
Reálné rezervace přímo z plánu
Místo placeholderů s odhadem ceny napojíme MojeTripy na Skyscanner a Booking. AI navrhne let nebo hotel, vidíš reálnou cenu i dostupnost, klikneš na „Rezervovat" a vrátíš se s PNR + ICS v plánu. Komise z partner sítě, žádný markup na tebe.
červen 2026V přípravě
Pozvánka spolucestujících e-mailem
Sdílení odkazem funguje už dnes, ale je read-only. Brzy přidáme pozvánky e-mailem s rolemi (owner / editor / viewer). Spolucestující dostanou link s tokenem, založí účet (nebo se přihlásí) a uvidí stejný plán. Hlasování o variantách + split-pay už fungují v podkladu, čekají na pozvánku jako trigger.
červenec 2026V přípravě
Sledování cen letenek — alerty na e-mail i push
Místo ručního obnovování Skyscanneru každý den ti MojeTripy bude sledovat cenu konkrétní trasy a termínu. Klesne pod práh, který si nastavíš, → push notifikace + e-mail. Funguje pro outbound i return zvlášť, hlídá top 3 partnery (Skyscanner, Kiwi, Google Flights).
srpen 2026V přípravě
„Kniha cesty" — PDF kompilace po návratu
Po návratu z cesty ti aplikace složí PDF knihu — den po dni, s fotkami uploadovanými v plánu, mapou trasy, výdaji, citáty z deníku. Print-ready PDF na A4 nebo objednávka vytištěné knihy přes partnera (Bonusprint / Cewe). Polarsteps-style, ale česky a v korunách.
září 2026V přípravě
eSIM v jednom kliku
Před odletem do Thajska vidíš v checklistu „Data v destinaci?" Klik a Airalo eSIM se ti aktivuje. Cena, GB, počet dní viditelný předem. Po cestě si můžeš stáhnout fakturu z Money modulu.
Vydáno
Nová funkce
Praktické reálie destinace — voda z kohoutku, zásuvky, spropitné
Karta reálií u destinace shrne věci, které člověk řeší den před odletem: jestli se dá pít voda z kohoutku, jaký je typ zásuvky a napětí, jak je to se spropitným, tísňová čísla a další praktické info. Žádné eseje — krátká fakta v klidném layoutu. Data jsou kurátorovaná per destinace, ne generovaná AI.
Nová funkce
Plán B: narušení letu (EU261) a náhrada za deštivý den
V přehledu Dnes přibyly dvě „plán B" karty. Karta narušení letu vyhodnotí zpoždění nebo zrušení proti EU261 (vzdálenost, délka zpoždění, příčina) a řekne, jestli máš nárok na kompenzaci a kolik. Náhrada za deštivý den: když předpověď hlásí déšť, evaluator najde v plánu venkovní aktivitu a nabídne indoor swap, který založíš jedním klikem. Obě jádra jsou čisté testovatelné funkce, UI je jen tenká vrstva nad nimi.
Nová funkce
Chytrý balicí list — podle počasí a aktivit, s dělením vybavení
Balicí list umí navrhnout položky podle destinačního klimatu a typu aktivit (treking, pláž, město, zima) — déšť přidá pláštěnku, hory vrstvy, tropy repelent. U skupinové cesty pozná sdílené vybavení (stan, lékárnička, vařič) a přiřadí ho jednomu členovi místo duplikace u všech. Přiřazení může měnit jen editor cesty. Generátor je weather- i activity-aware a běží nad stávající záložkou Balení.
Nová funkce
Vstupní podmínky: ETIAS a počítadlo 90/180 dní
Vízová tabulka dostala rozšíření: ETIAS (od go-live data), požadovaná platnost pasu, maximální délka pobytu v okně a doporučená očkování. Na stránce destinace je renderuje karta „Vstupní podmínky" se statusem a odkazem na oficiální zdroj. V Nastavení → Profil cestovatele přibyla lišta rolling-window 90/180: sečte dny strávené v Schengenu napříč všemi tvými cestami a ukáže, kolik dní ti v aktuálním okně zbývá. Počítání je deterministické, žádný AI odhad.
Nová funkce
Spoření ve skupině — kdo kolik dal a kolik chybí
U skupinové cesty přibyla stránka Úspory (hero + tabulka členů). Každý člen má svůj cíl a vklady, panel je agreguje do společného součtu „naspořeno z cíle" včetně majitele cesty. Když je skupina pod plánem a odjezd se blíží, objeví se klidný nudge s tím, kolik měsíčně dorovnat. Zápisy jsou member-aware a RLS-chráněné na úrovni Supabase.
Vylepšení
Tři písma zpět: Fraunces, Inter Tight a JetBrains Mono
Sjednocení fontů na jediný Fraunces (serif) udělalo serif i z UI textu, tlačítek a číslic — odklon od značkového mandátu tří rodin. Vrátili jsme Inter Tight (UI sans) a JetBrains Mono (číslice a micro-labely) zpět do app/layout.tsx jako variabilní next/font instance a všechny --ds-font-* i @theme --font-* tokeny míří zase na svou roli: display a nadpisy = Fraunces, body a UI = Inter Tight, čísla a labely = JetBrains Mono. tabular-nums zůstaly pro zarovnání cen a časů. Žádné volající místo se neměnilo — opravily se jen definice tokenů, takže ~1 260 míst se přepnulo zpět samo. Body = Inter Tight, h1/h2 = Fraunces, ceny a stopky = JetBrains Mono.
Vylepšení
Účet menu má ikony, ember hover a poctivý PRO odznak
Menu pod avatarem v dashboardu (Profil / Nastavení / Můj Atlas / Kontakt / Co je nového / Admin / Odhlásit se) bylo holý seznam textu. Nově má každý řádek Lucide ikonku ve vlastní dlaždici; na hover najede vlevo tenký ember proužek, dlaždice se obarví terracottou a zprava vyjede šipka. Hlavička nese jméno ve Fraunces, avatar má ember prstenec a stejný prstenec se rozsvítí i na spouštěcím avataru, když je menu otevřené. Tarifní odznak PRO opustil lesklou modrou (mimo značku na teplém papíru) a je teď ink+ember prémiová pilulka se zafixovaným hexem, takže zůstane tmavá v light i dark režimu. Řádek Jazyk dostal vlastní ikonu, ať sedí do stejné mřížky, a Odhlásit se má decentní červený stav. Otevření má jemný stagger reveal, vše respektuje prefers-reduced-motion i prefers-reduced-transparency. Postavené na --ds-* tokenech, takže dark mode i obnovená 3-rodinová typografie se chytnou samy. Žádný odkaz, přepínač jazyka ani přístupnost se neměnily.
Nové lib/db/queries/activities.ts updateActivityWithVersion + OptimisticLockError — CAS na (id, version) v jednom UPDATE WHERE; concurrent writer ze druhého tabu dostane optimistic-lock error a UI zobrazí "Soukromí změnil jiný tab. Obnov stránku.". version column z migrace 0026 byl dead weight 18 měsíců, teď se opravdu používá. AddSheet zod superRefine odmítne stejné letiště from==to (BKK → BKK) a endsAt < startsAt. Wizard cap 50 destinací — adversarial 51+-row input ne-craší. WebVitals teď taguje viewport bucket (mobile-sm / mobile-lg / tablet / desktop) + connection.effectiveType, takže mobilní CWV se dají slicovat v Posthog bez syntetic runu. RSC 503 z Next 16 prefetche se Sentry-taguje (kind=rsc-error vs kind=render + path/referrer) pro ops visibility. axe-core WCAG 2.1 AA testy proti SignUpForm / AddSheetA / CommandPalette / CookieBanner DOM mirrors. PWA service worker contract test pinuje /offline.html fallback + CACHE_TRIP / EVICT_TRIP message protokol.
Nová funkce
Přílohy se šifrují end-to-end (AES-GCM 256)
Migrace 0051 + 0052 přidaly metadata sloupce (encryption_kind / encryption_iv / encrypted_size_bytes na documents) a per-trip salt na trips.encryption_salt. lib/storage/per-trip-key.ts deriveKey() přes PBKDF2-SHA256 100k iterací → AES-GCM 256 non-extractable CryptoKey, cache per session (žádný localStorage). Upload v ActivityEditorPanel encryptFile blob → signed PUT, register action persistuje IV a kind. Decrypt-on-render hook stáhne ciphertext, re-derivuje klíč, otevře blob: Object URL pro <img> / PDF preview. Legacy plaintext rows fungují dál (fallback path na encryption_kind IS NULL). Plus migrace 0050 — per-item is_private flag na activities, který strippuje loadTripByShareToken před vydáním sdíleného odkazu. Plus 4 testy round-trip + IV uniqueness + wrong-key rejection.
Oprava
Visa tipy konečně vědí, že CZ pas nepotřebuje vízum do Singapuru
lib/visa/rules.ts má lookup getVisaRule(passport, destination) → visa_free / voa / evisa / eta / visa_required + maxDays + source URL. Pokrývá Asii (TH/VN/SG/MY/ID/KH/LA/PH/MM), Východ (JP/KR/CN/TW/HK), Blízký Východ (AE/IL/TR), Anglosphere (US/CA/GB/AU/NZ/MX), Balkán (AL/ME/MK/RS/BA/XK/GE/AM) a Afriku (EG/MA/ZA/TN). EU/EEA shortcut auto-resolvuje intra-EU. AI Concierge tipy jdou přes tabulku místo ad-hoc stringů. Pojištění CTA v Souhrnu otevírá AddSheet pre-filled (admin / Pojištění) — gap zmizí jakmile řádek uloží. Nový TripDocumentsPanel v Souhrnu iteruje trip.cities a renderuje status (ok / warn / todo / unknown) + odkaz na oficiální zdroj + CTA "Přidat Vízum". Default passport CZ, swapne se na user profile, jakmile to pole bude.
Oprava
Mobilní menu už není dead end
Nový MobileNav drawer (slide-from-right + scrim + ESC close) drží paritu s desktop topbarem. Plus mobile landing dostal FAQ section před folded footer — FAQPage JSON-LD se konečně dostane do Google mobile-first indexu. ImportReservationModal s ⌘I (přilepit text rezervace / Booking / Airbnb / Kiwi / aerolinky → text-detect heuristics navrhne vendor → parseInboundEmail extraktor → AddSheet prefill). 8 P3 a11y / hygiene bugů zavřeno najednou — admin path vrací 404 místo 401, /.well-known/change-password redirect, inline error messages na profilu, tooltips na disabled tlačítkách, šedé empty days kolaps.
Vylepšení
AI denní shrnutí už neblokuje 22 sekund
/api/trips/[id]/narratives přepsáno na NDJSON streaming — každý dokončený Anthropic Haiku call se okamžitě posílá klientovi jako jeden JSON line. TripPlanV3 čte response body jako stream, parsuje řádky a hydrate každou day card hned po doručení. Concurrency škáluje s počtem dní (1..8), abort signal zastaví in-flight workery při navigaci pryč. Legacy ?format=json query zachovává původní whole-trip JSON tvar pro callery, co NDJSON nemluví. Plus CSS content-visibility: auto na .td3-day v Plánu — 38 765 px scroll height (62 day cards) přestal padat layout/paint mimo viewport. Nula JS, nula nových deps.
Oprava
iCal export funguje napříč časovými pásmy + server-side PDF
lib/ical/timezones.ts mapuje destinaci → IANA (Europe/Prague, Asia/Bangkok, Asia/Ho_Chi_Minh, Asia/Jakarta, Asia/Singapore, Asia/Phnom_Penh, Asia/Vientiane) a emituje VTIMEZONE blok per unique zónu. iCal generátor přestal padat 14 položek z 285 — multi-night accommodation se kolapsuje do jednoho VEVENT-anchor namísto N duplikátů. Nový lib/pdf/minimal-pdf.ts (hand-rolled PDF 1.4, žádná nová deps) pohání /api/trips/[id]/pdf — Helvetica, žádné obrázky, ale skutečný download místo browser print. Default time v AddSheet má TIME_BY_SUBTYPE — Letadlo 07:00, Hotel checkin 15:00, Aktivita 10:00, Stravování 19:00 — takže Kalendář přestal vypadat jako tower of 7× Ráno. Měsíční chevron v month view sedí s grid headerem (single source viewMonth). Off-trip dny v gridu jsou klikatelné — naviguje na nejbližší trip day. Bangkok září: nový lib/weather/climatology.ts vrací měsíční normy pro SE Asia / Středomoří / CZ / IS, místo hash-based fake 17 °C.
Oprava
AI Concierge říká pravdu o tom, kam data jdou
AskAIDialog empty state + footer copy přepsány tak, aby seděly s realitou — Anthropic API je v CSP connect-src a kontext k modelu opravdu odchází (anonymizovaně). Systemový prompt v app/api/ai/chat/route.ts dostal CONTEXT TRANSPARENCY block: model ví, že vidí jen meta (počet dní, destinace, rozpočet, ne konkrétní položky), a má uživatele redirectovat do Peníze / Plán tabu pro detaily místo halucinací. Plus CZECH ORTHOGRAPHY block s nejčastějšími slovy (stravování, hostely, ubytování, doprava, vízum) aby přestal vyrábět typo "stravovani". CommandPalette skrývá Přihlásit / Registrovat pro logged-in uživatele a Otevřít demo cestu po dismissu (mt:demo-skipped flag v localStorage).
Oprava
Cookie banner už opravdu blokuje Pixel a GYG
ConsentProvider read() odmítne payloady bez decidedAt timestampu, takže korumpovaný localStorage entry → banner se znovu otevře + trackers zůstanou zhasnuté. Banner přepnut na isomorphic useLayoutEffect, takže DOM commit proběhne před prvním paintem a TikTok paid funnel přestal vidět flashing missing banner. CookieBanner přečte usePathname a sám se schová na /sign-up, /sign-in, /forgot-password, /auth/*, /trips/new, /trial-trip, /onboarding a /invite/*, aby nepřekrýval prvotní wizard. Meta Pixel volá fbq("set","autoConfig",false,pixelId) před init a stripne pmd[title/description/keywords] + referrer URL, takže URL pixel volání už neleakuje meta keywords ani předchozí navigaci.
Oprava
Slabá hesla už nemají šanci
Nový lib/auth/password-policy.ts vynucuje minimum 12 znaků, mixed-case + číslici, blokuje 200 nejčastějších uniknutých hesel a volá HIBP k-anonymity (SHA-1 prefix → seznam suffixů). HIBP fail-open na síťové výpadky, aby chyba u Troy Hunta nezablokovala signupy. signUpAction a updatePasswordAction routujou každé nové heslo přes validatePassword(). Form mirror: input minLength=12 + popisný hint pod polem. Plus BUG-014 — povinný checkbox pro souhlas s podmínkami a privacy policy s odkazy do nového tabu, server odmítne signup bez termsAccepted=1.
Oprava
Zpáteční let už cesta pozná
Migration 0049 přidala sloupce direction (outbound / return / internal) + parent_leg_id na activities. AddSheet listener v TripDetail mapuje 11 polí, která předtím tiše padala mezi formulářem a serverem (airline / PNR / sedadlo / zavazadlo / terminál / poznámka / odkaz / direction). dayOffset se odvozuje z state.date místo z parent dayId, takže bulk POST 14 letů přestal házet všechny na Den 1. Detekce směru: trip.legs[0].from je domov; from == domov a to != domov = outbound, opačně return. Gap detektor "Zpáteční let chybí" konečně zmizí, jakmile přidáš direction=return řádek. Multi-segment hopy (PRG → DOH → BKK) mají parentLegId pro budoucí zobrazení řetězce.
Oprava
Rozpočet už nepřičítá THB jako koruny
Aggregátor v lib/budget/calculator.ts dostal volitelný FX snapshot a pro každou položku přepočítá costMinor přes convertToBase do trip.meta.baseCurrency. Předtím se sčítaly hrubá čísla bez ohledu na měnu, takže 1 400 THB + 1 500 000 VND + 8 000 CZK skončilo jako 1 509 400 "CZK" v součtu. Šestiměnová cesta po jihovýchodní Asii hlásila aktivity za 94 824 210 CZK (≈ 14× celý rozpočet). Současně přibyly SE-Asia měny — THB / VND / IDR / SGD / KHR / LAK / PHP / MYR — v base-currency picker wizardu i v item-level formulářích (lib/trip/currency.ts SUPPORTED_CURRENCIES). DB sloupec costCurrency teď konečně doteče přes lib/trip/load.ts na klienta jako Activity.currency, takže 1 400 THB se renderuje jako "1 400 THB" v Plánu, Penězích, na sdíleném odkazu i v PDF.
Vylepšení
Errory v produkci se konečně sbírají do Sentry
Dosud se chyby v produkci propadly do Railway stdout bez kontextu — release tagging, user attachment, replay schopnost nebyla. Sentry SDK je nasazené přes Next.js instrumentation hook, replay sample 1 % (na erroru 100 %), PII scrub pro e-maily a IP. Frontend errory a server-side errory tečou do jednoho dashboardu, takže whole-app reliability máme poprvé měřitelnou.
Oprava
/budget kategorie se nasadí podle cílového rozpočtu
Cílový rozpočet zadaný ve wizardu se ukládal do trip.total_budget_minor, ale stránka /trips/.../budget četla z prázdné tabulky budget_categories — výsledek: „0 CZK / 0 CZK / 0 CZK · 0/8 kategorií" navzdory tomu, že hero karta v Peníze ukazovala správnou cílovku. Nově se kategorie automaticky seedují (Doprava 35 %, Ubytování 30 %, Jídlo 20 %, Aktivity 10 %, Rezerva 5 %) při vytvoření cesty s nenulovým rozpočtem.
Oprava
Přepnutí měny rozpočtu konvertuje hodnotu
Ve druhém kroku wizardu šlo nastavit cílový rozpočet a hned vedle přepínat měnu. Přepnutí ale jen vyměnilo zkratku — z „43 000 CZK" se stalo „43 000 USD" (nesmysl). Teď ručně přepnutá měna spustí přepočet přes live FX (Frankfurter API), takže 43 000 CZK → ~2 050 USD. Stejný fix se promítne i do Peníze tabu.
Oprava
Doba letu se počítá z reálné vzdálenosti
Wizard vkládá první den let podle vybraného režimu dopravy. Dřív měl plane vždy 3:00 h bez ohledu na vzdálenost — SFO→JFK (5:30 reálně) i Praha→Vídeň (1:00 reálně) měly stejnou dobu. Nově se vypočítá z great-circle vzdálenosti / průměrné rychlosti + bloků pro taxi a let. Cascade fix dopadá i na čas příletu a iCal export.
Oprava
Berlínská letiště — BER místo zavřených TXL/SXF/THF
Dosavadní katalog letišť ještě nabízel Tegel (zavřený 2020), Schönefeld (zrušený 2020) a Tempelhof (zavřený 2008) — uživatel mířící v 2026 do Berlína měl trojí špatnou volbu a BER (jediné aktivní) chybělo. Sweep katalogu: BER přidán, tři zavřená flagged jako neaktivní. Stejný pass vyřadil i CGX Chicago Meigs (od 2003) a podobné stragglery.
Vylepšení
Co kdyby? — přednastavené scénáře k jednomu kliku
Modal Co kdyby? dřív otevíral prázdnou paletu — uživatel musel vědět, jaké scénáře vůbec testovat. Teď se zobrazí 4–6 chips podle tvaru cesty: zkrácení/prodloužení o 2 dny, polovina/dvojnásobek rozpočtu, plus 2 cestující, posun o měsíc později. Klik = okamžitý side-by-side diff proti aktuálnímu plánu.
Nová funkce
Stáhnout cestu offline pro roaming
Klik = service worker stáhne aktivity, výdaje a destinace dané cesty do prohlížeče. Když pak v cizině přijdeš o data, plán se otevře z cache, žádné prázdné obrazovky. Tlačítko „Smazat" cache vyhodí. Funguje na všech moderních prohlížečích (PWA service worker), iOS Safari 17+ včetně.
Nová funkce
One-click připojení do Claude / ChatGPT / Gemini
Místo manuálního editování JSON souborů: vyber AI klienta (Claude Desktop / ChatGPT / Gemini), klikni „Připravit konfiguraci", stáhni JSON nebo zkopíruj do schránky, vlož do klienta. MCP server na produkci servíruje 28 nástrojů, 7 zdrojů a 5 šablon — Claude/ChatGPT pak může plánovat cesty, počítat rozpočty a získávat vízové informace přímo z chatu.
Nová funkce
Rezervační odkazy přímo v souhrnu cesty
Tři karty s předvyplněnou destinací a daty — Booking pro hotely, Skyscanner pro letenky (IATA → IATA + datum), Tiqets pro vstupenky. Otevírá se v nové záložce. Pokud cesta nemá letové úseky, Skyscanner karta se nezobrazí. Tagované jako sponsored — provize z rezervací jde MojeTripy, cena pro tebe se nemění. Globální vypnutí v Nastavení připravuje.
Nová funkce
CO₂ stopa vedle ceny u dopravy
Vedle ceny u letu / vlaku / autobusu / auta / trajektu se zobrazí klidný chip s odhadem CO₂e (factor podle ICAO / DEFRA, per-passenger). Barva sleduje rozsah — krátký vlak zelený, transatlantik červený. Žádné moralizování, jen tichý informační prvek. Skrýt nelze ani neotravně — je to feedback při výběru dopravy, ne výtka.
Nová funkce
Tvůj cestovatelský rok v číslech
Strava-style retro pohled na celý rok. Default je aktuální, šipkami vlevo/vpravo proklikneš na předchozí / další rok. Karty: cesty celkem, dokončené, počet zemí, měst, aktivit a top 3 nejnavštěvovanější destinace. Pokud rok ještě nemá žádnou cestu, jemný empty stav s odkazem do plánovače. Stejná aggregace bude pohánět listopadový e-mail digest.
Nová funkce
Design audit sprint — 23 změn ve 4 týdnech
Dvoufázový sprint. Nejdřív 10fázový design audit proti živé produkci — typografie, hierarchie, IA, motion, brand emotion. Pak shipnutí top RICE-skórovaných oprav: home H1 "Cesta v korunách, ne v tabulkách." s ember CTA nad foldem, Lisabon 5denní seedovaná trial-trip s 20 reálnými aktivitami za 18 070 Kč, warm-paleta tokenů (#1B1410 ink, #A44724 ember), konzistentní topbar mezi home a marketing stránkami, dark mode s pre-hydration scriptem, /privacy + /tos H2 z 15 px na 24 px, Confetti primitiv, lint:tailwind gate, EmptyState komponenta, SignupPreview tile, Pre-trip 48h Ready režim. Plus Story Pack — DB migrace + API + 5 esejí (Lisabon, Praha, Tokio, NYC, Bangkok) v česko-cestovatelském hlase, dostupné na /destinations/[slug]. Design craft score 6.5 → ~8.0 / 10 projekce. Full audit + sprint plán v repo audit-output/.
Vylepšení
Datumy, plurály a kódy měst česky
Hlavička cesty rendovala datum v angličtině s ošklivým „42 days". Nově česky s plural ladder (1 den / 2 dny / 5 dní). Sdílený odkaz a Cmd+K paleta měly Bangkok jako „BAN" — heuristika brala první 3 písmena. Doplnili jsme curated mapping (Bangkok → BKK, Siem Reap → REP) a obnovili plural helper i pro hero („2 dny daleko" místo „2 dní"), počet cestujících („1 cestující" místo „1 CESTUJÍCÍCH"). Settings nav přešla z anglických hlaviček na české („Account" → „Účet", „Home base" → „Domovská základna").
Oprava
AI plán už nezapomene na žádnou destinaci
Audit našel cestu Praha → Bangkok → Hanoj → Siem Reap, kde AI vygenerovala dny jen pro první dvě destinace a Siem Reap tiše zmizel z přehledu. Server teď trackuje, které destinace AI obsadil, a pro chybějící doplní jednu placeholder položku „Doplnit program — Siem Reap" se statusem nápad. Souhrn tak vždy ukáže reálný počet zastávek a uživatel přesně ví, kde dotáhnout plán.
Oprava
AI už neutípne 450 000 Kč na noc v hotelu
AI generátor občas přihodil Bangkok hotel za 450 000 Kč — víc, než je celý rozpočet cesty. Přidali jsme sanity-cap: cena ubytování per noc nesmí přesáhnout 6× denní rozpočet na osobu, letenka max 12×. Když AI přesto vrátí vyšší hodnotu, server ji zaříznе a zaloguje, abychom viděli drift modelu. Cena zůstane editovatelná — uživatel ji může přepsat na cokoli, co skutečně zaplatil.
Vylepšení
Marketingové stránky vystoupily z 90. let
Plánovač cesty, Plánovač dovolené, Kalkulačky, Aplikace, Cenik — všechny pillar stránky sdílely tepléé krémové pozadí (#f7f1e8), které vedle moderního detailu cesty působilo jako jiná aplikace. Sjednotili jsme paletu na čistou off-paper (#fafaf8) shodnou s landingem v8. Terracotta accent a teplý ink ramp zůstávají — jen surface tier modernizovaný.
Nová funkce
Smazat cestu — konečně přímo z aplikace
Audit našel, že mazání cesty šlo dosud jen přes databázi. Nově je v rohu každé karty na dashboardu menu ⋯ a stejné ⋯ je v hlavičce detailu cesty. Po kliknutí se otevře potvrzovací dialog — napíšeš název cesty pro potvrzení a teprve pak se odemkne červené tlačítko „Smazat cestu". Backend kaskáduje na všechny denní položky, výdaje, ubytování, dokumenty i balicí list.
Vylepšení
Týden tiskne čistě na A4
Když si chceš vytisknout týdenní plán jako papírovou referenci, Cmd+P teď vytiskne čistý grid bez ovládacích prvků. Jeden týden se vejde na A4 na šířku, aktivity respektují barevný code, dny mimo cestu jsou šedé. Pro lidi, co chtějí na cestě vidět plán bez vytahování telefonu.
Vylepšení
Hlavička dne ukazuje časové pásmo destinace
Když cesta vede přes New York nebo Tokio, hlavička dne v týdenním pohledu nově ukáže krátkou zkratku časového pásma. Letenku odlétáš v 23:30 EDT — vidíš to v sloupci, ne jen v detailu položky. České dny (a obecně UTC zóny bez DST drift) chip neukazují, aby šum nezbytečně nerostl.
Vylepšení
Týdenní kalendář na mobilu — swipe mezi dny
Na mobilu pod 768 px se týdenní mřížka přepne na horizontální scroll-snap. Swipuješ doleva/doprava jeden den po druhém, sloupec s časovými pásmy (Ráno / Dopoledne / …) zůstává přilepený vlevo, takže pořád víš, co se kde děje. Bez nutnosti chytat malé tlačítka.
Vylepšení
Kalendář klávesnicí — bez myši, bez bariér
Týdenní kalendář zvládneš celý z klávesnice. Tabem se přepínáš mezi aktivitami, mezerníkem ji „zvedneš", šipky ji přesouvají po buňkách, Enter potvrdí, Esc zruší. Cílová buňka se podsvítí, aktivní aktivita má jasný ember outline. Praktické při plánování notebookem na vlaku a pro každého, kdo myš nepoužívá.
Nová funkce
Kalendář ▸ Týden — přesouvej aktivity tahem myši
Záložka Kalendář dostala nový týdenní pohled. 7 sloupců (Po–Ne) × 5 časových pásem (Ráno / Dopoledne / Odpoledne / Večer / Noc), aktivity rozdělené přesně do správného slotu. Chytíš aktivitu myší a přetáhneš ji na jiný den nebo do jiného pásma — plán se uloží okamžitě, bez kliků navíc. U letů a víceročních pobytů se nejdřív zeptáme („Letenku budeš muset změnit i u dopravce — pokračovat?"), aby ses náhodou nepřepsal něco důležitého. Vícedenní hotely se kreslí jako pruhy dole pod každým dnem, aby den nahoře zůstal čistý.
Vylepšení
Horní lišta v detailu cesty je klikatelná
Sticky lišta nad cestou měla tři tlačítka, která nic nedělala — AI sparkle, Plus, avatar K. Wire teď funguje: avatar otevírá menu s Dashboard / Profil / Nastavení / Tarif a fakturace / Co je nového / Odhlásit se. AI tlačítko otevírá Ask AI dialog s kontextem cesty (zeptáš se „kolik nás stojí Bangkok hotel?" a model odpoví z plánu). „Přidat" otevírá Add Sheet, search pill toggluje Cmd+K paletu.
Vylepšení
Sign-up a sign-in nesou modernější tvář
Stránky pro přihlášení a registraci ještě jely starou krémovou paletou (teplý peach ambient) a Fraunces 400 italic, který vypadal vedle moderního landingu jako jiná aplikace. Backdrop teď jede neutral off-paper (#fafaf8), titulky Fraunces 600 a logo MojeTripy ladí s navigací landingu. Brand character (terracotta accent, warm ink) zůstává — jen vrstva ne-úmyslného „vintage" pryč.
Vylepšení
Horní lišta dashboardu uklizená
Top bar na dashboardu byl přeplněný — „Nová cesta" se lámalo na dvě řádky, přepínač jazyka kradl místo s velkými „CS / EN" labely, avatar K přečníval. Nově je vše v jedné klidné lince: kompaktní CTA bez lámání, jazyk jako 24×24 pill jen s vlajkou (aria-label zachovaný pro čtečky), tier badge 26 px výška a avatar 36 px. Logo, search a centrální sloupec netknuté.
Nová funkce
Přihlášení přes Google — jeden klik místo magic-link
Místo čekání na magic-link e-mail klikni na „Pokračovat přes Google", vyber účet, potvrď souhlas a jsi přihlášený. Profil se automaticky doplní z Google (jméno + avatar). Pokud už máš účet přes e-mail, MojeTripy ho spojí se stejnou Google adresou — žádné duplicity. Funguje vedle stávajícího magic-link, vybíráš podle nálady.
Vylepšení
AI generování plánu je teď opt-in
Při vytváření cesty nově neběží AI automaticky. Třetí krok wizardu má checkbox „Nechat concierge připravit první den". Bez něj klikneš „Vytvořit cestu" a dostaneš prázdný itinerář. Volba je vědomá, ne překvapení.
Oprava
Velký úklid po auditu — 25 oprav v jednom dni
Externí audit našel 25 problémů. Přidali jsme mazání cesty (chybělo úplně), sjednotili tarify na MojeTripy / Plus / Pro napříč všemi stránkami, ořezali AI haluciny (450 000 Kč hotel je teď zaříznutý na rozumnou cenu), opravili duplikované „nápad" položky na vícedenním pobytu, lokalizovali datumy a plurály do češtiny („27. lis — 7. led · 42 dní"), opravili kód Bangkoku z „BAN" na „BKK", odstranili dev placeholdery z produkce („Modulem Peníze v navazující fázi" → upřímný empty state). Marketing stránky přešly z krémového „vintage" pozadí na čistší modernější paletu.
Oprava
Záložka Balení má teď konečně design
Komponenta záložky Balení existovala už dlouho, ale chyběl k ní stylesheet — vykreslovala se jako neformátovaný text v rohu prohlížeče. Doplnili jsme kompletní editorial layout: nadpis Fraunces, hairline progress bar, formulář pro přidání položky v kartě, sekce po kategoriích s vlastním zarovnáním, custom checkbox a hover delete tlačítko.
Vylepšení
Přidávání položek dostalo barevné ikony
Při „Více typů" v Přidat dialogu má každá z 38 položek vlastní Lucide ikonku v barvě své kategorie (doprava modrá, jídlo žlutá, ubytování teplá). Bus už není stejný symbol jako trajekt, kavárna není stejná jako bar. Skupiny jsou rozdělené podle kategorie a každá má svůj barevný puntík nahoře.
Nová funkce
Reálná fotka pro každou destinaci
Den po dni teď otvírá skutečný panoramatický snímek destinace, ne abstraktní gradient. MojeTripy si fotku tahá z Wikipedie (česká verze první, pak anglická), a když Wikipedia nemá vhodný snímek, sáhne na Unsplash s kurátorovaným editorialem. Drobný kredit dole vlevo („TBILISI · WIKIPEDIA" nebo „SIBIU · Jan Novák / UNSPLASH") odkazuje na zdroj. Když ani jeden zdroj nezná dané místo, zůstane klidný gradient — vždy něco vykreslí. Fotky se cachují v databázi 30 dní, takže opakované otevření je instantní.
Vylepšení
Členské odznaky mají charakter
Předtím se zobrazoval jen text. Teď má Plus teplý metalický odstín, Pro safírový gradient s tichým shimmerem. V topbaru, na pricing kartách i v profilu vidíš jasně, kde jsi. Respektuje prefers-reduced-motion.
Vylepšení
Hezčí načítání
Když načítáme cestu nebo dashboard, ukáže se tichý kompas s pomalu rotující střelkou a kolem něj obíhající bod. Žádné spinnery, žádné letadla. Po pár sekundách zmizí — bez stresu, bez bombasticity.
Nová funkce
Kalendář ví, kdy cestuješ
Otevři Kalendář a uvidíš celou cestu na jednom místě. Dny pod tenkou inkoustovou linkou, max tři barevné proužky na den (let modře, ubytování zlatě, aktivita zeleně). Klikni na den a rozbalí se rovnou v kalendáři.
Vylepšení
Peníze ukazují kolik jsi naspořil, ne kolik utratíš
Místo strašení útratou vidíš naspořeno z cíle. Pod tím predikce: „Při tempu 5 500 Kč/měs doženeš rozpočet o 10 dní později. Klidný předstih." A tři návrhy, co s tím — přidat víc, posunout odjezd nebo snížit rozpočet. Žádné „mimo dosah". Klid.
Vylepšení
Plánovač cesty má 3 kroky místo 4
Místo postupných formulářů jeden klidný tok. V prvním kroku zadáš destinaci a termín, v druhém tempo a charakter (max 3 nálady), ve třetím Concierge připraví první den a checklist. Vpravo Concierge live komentuje, co právě píšeš.
Vylepšení
Členství zjednodušeno na Free, Plus a Pro
Free zůstává zdarma pro jednu cestu ročně. Plus za 199 Kč/měs odemkne neomezené cesty, AI návrhy a sdílení s týmem. Pro za 499 Kč/měs přidá concierge chat 24/7 a white-glove rezervace. Existující předplatné se automaticky přesouvá na nejbližší tarif — nikdo nepřijde o funkce.
Nová funkce
Přidat položku přes větu
„Letadlo z Prahy do Bangkoku v 6:55." Klikni na „Letadlo" a změň typ. Klikni na „v 6:55" a vyber jiný čas. Nahoře můžeš taky napsat větu volně — chytrá nápověda rozpozná let, hotel, datum i cenu a doplní pole sama.
Nová funkce
Detail cesty se čte jako kniha
Plán cesty má novou kostru. Každý den je vlastní kapitola — ráno, den a večer mají tichý odstín pozadí, aktivity jsou řádky s barevnou hranou podle kategorie (let, ubytování, jídlo). Mezi položkami se ukazuje přejezd („↘ 25 min · taxi"). Mezi destinacemi se otevře gradient hero — Barcelona je teplá, Norsko studené. Detail aktivity sjede zprava místo modálního okna.
Vylepšení
Skupinová cesta dostala Apple-style přehled
Otevři /skupina u jakékoli cesty a vidíš avatary členů, prezenci („Tomáš online před 2 min"), hlasování o hotelu nebo restauraci a feed aktivit. Layout sjednocený s detailem cesty — žádné modální okna, žádné kruhové grafy.
Pozvi spolucestující emailem na vlastní pozvánkový odkaz. Přijmou pozvánku, založí účet a uvidí stejný plán. Hlasujte o hotelu, restauraci nebo aktivitě přímo v itineráři. Společné výdaje se sčítají a víš, kdo komu kolik dluží — vyrovnání jedním klikem. Live presence, push notifikace, RLS na úrovni Supabase. Plus a Pro tarif.
Nová funkce
Inspirace teď zná 130+ destinací
Když plánuješ den v Koh Samui, klikni na Inspirace a uvidíš jen Koh Samui templates — ne náhodný mix měst. Připravili jsme 3–5 typů dnů pro top destinace: Beach, Adventure, Foodie, Cultural, Wellness.
Nová funkce
Adresy se napovídají při psaní
Místo ručního zadávání adres a souřadnic stačí začít psát. Napovídání čerpá z Mapboxu, takže vidíš hotely, restaurace i atrakce s přesnou polohou na mapě.
Vylepšení
Aktivity v městech vidíš rovnou na mapě
Mapa a plánovač jsou teď jeden živý systém. U každého města vidíš badge s počtem aktivit, rezervované lety se vykreslují jako trasy. Klikni na pin → otevře se detail v plánovači.
Nová funkce
Detailnější formuláře pro lety, vlaky a auta
Lety mají číslo letu a terminály. Vlaky vagón a místenku. Auta SPZ a místo vyzvednutí. Vše uložené strukturovaně, takže to později uvidíš i v itineráři a na docích.
Vylepšení
Hotel na víc nocí přidáš jednou položkou
Předtím: 7 nocí v Anantara Lawana = 7 zápisů, 7× cena. Teď: vyber check-in a check-out, cena se počítá jen jednou. V plánovači vidíš pobyt rozprostřený přes všechny dny.