Moje

Myslivost

Historie verzí

Changelog

Přehled všech podstatných změn, oprav a nových funkcí v každé verzi aplikace.

1.0.5

22. 5. 2026 Aktuální
Změněno
  • Rychlejší první načtení — hlavní JS balíček zmenšen z 920 kB na 222 kB (−76 %) díky rozdělení knihoven do samostatných souborů (manualChunks); při nasazení nové verze stáhne prohlížeč jen aplikační kód, vendor zůstane v cache
  • Lehčí lesní pozadí — PNG verze (1,8 MB) nahrazena za WebP (216 kB); úspora ≈ 1,6 MB při každém načtení
  • Optimalizace databáze (RLS) — 27 přístupových pravidel přepsáno na (select auth.uid()), aby se uživatel ověřoval jednou za dotaz místo jednou za řádek; výrazný benefit při růstu objemu dat
  • Indexy cizích klíčů — přidáno 5 indexů na profiles.org_code, record_likes.user_id, organizations.admin_user_id a další; eliminuje sequential scany při joinech
  • Regenerované Supabase typy — TypeScript typy synchronizovány s aktuálním schématem (Phase 2 tabulky organizations, record_likes, organization_codes a RPC redeem_code, join_organization); IDE napovídání plně funkční
  • Vyčištěný kód — odstraněno 19 ESLint chyb (převážně any typy v autentizaci, EXIF parseru a notifikacích); přísnější typová kontrola napříč projektem
Opraveno
  • 500 Internal Server Error na webhostingu — odstraněna direktiva Options -MultiViews z .htaccess, kterou Wedos nepovoluje na sdíleném hostingu; aplikace nyní startuje bez chyby serveru
  • Bílá obrazovka v iOS aplikaci — opraven CJS/ESM interop problém po code-splittingu; React a všechny knihovny na něm závislé sjednoceny do jednoho vendor balíčku, aby destructured importy (s.forwardRef) korektně fungovaly v Capacitor WebView
  • Module preload v Capacitoru — vypnut build.modulePreload, aby WebView na schématu capacitor:// nepadal na CORS preflight pro <link rel="modulepreload" crossorigin>
  • Verze v native projektech — iOS MARKETING_VERSION a Android versionName zarovnány na 1.0.4 (předtím zaostávaly na 1.0.0), build čísla zvýšena pro uploady do App Store / Play Console

1.0.4

20. 5. 2026
Přidáno
  • B2B organizace – uživatelé se mohou připojit k mysliveckému spolku pomocí kódu spolku; správci spolku mají přístup k administraci členů na stránce /admin/org/:code
  • Varování před vypršením PREMIUM – informační banner se zobrazuje 3, 2 a 1 den před koncem předplatného; po každém uzavření se znovu ukáže příští den
  • Modální okno po přechodu do DEMO – po vypršení nebo ručním přepnutí do DEMO režimu aplikace zobrazí přehledné informační okno s možností přejít do nastavení
  • SuperAdmin stránka – správa organizací a aktivačních kódů přesunuta z postranního sheetu na dedikovanou stránku /admin/super
  • Odlišné pozadí přihlašovací stránky pro desktop – na obrazovkách ≥ 1280 px se zobrazuje nové lesní záběry na místo mobilního pozadí
  • E-mailové šablony – přidány HTML šablony pro Supabase (potvrzení registrace, obnova hesla) laděné vizuálním stylem aplikace
Změněno
  • Demo limit navýšen z 1 na 2 záznamy pro každý z povolených typů (shozy, úlovky)
  • Při přechodu z PREMIUM na DEMO se aktivní odznak automaticky resetuje na první, pokud byl vybrán odznak uzamčený v DEMO režimu
  • Název pole „Funkce ve spolku" v editaci profilu přejmenován na Další informace
  • Název spolku se v editaci profilu automaticky předvyplní po aktivaci B2B kódu a není jej možné ručně měnit
  • Vizuál informačního prvku o končícím předplatném: bílé pozadí, šedý rámeček, odstraněny amber barvy
  • Aktualizován text v burger menu: „Zakupte premium nebo zadejte kód spolku."
  • Toast notifikace přestylizovány do iOS/Apple stylu (bílé pozadí, vícenásobný stín, větší padding)
Opraveno
  • Překlep „šozy" opraven na správné „shozy" v textech aplikace
  • Spolková ikona (koruna) v burger menu nyní správně zobrazuje tloušťku tahu stroke-width: 1

1.0.3

10. 5. 2026
Přidáno
  • Shlukování značek na mapě – překrývající se záznamy se automaticky sdružují do clusterů; každý cluster zobrazuje celkový počet a barevné tečky pro jednotlivé typy prvků
  • Odznaky v profilu – 9 unikátních odznaků, výběr aktivního odznaku zobrazeného u avatara; odznaky 3–9 vyžadují PREMIUM
  • Připínání záznamů – záznamy označené jako „připnuto" se zobrazují v horní části domovské obrazovky
  • DEMO / PREMIUM systém – plná implementace přístupového řízení; demo omezení na shozy a úlovky, ostatní typy uzamčeny; aktivace přes B2C kódy s historií uplatnění
  • Vizuální zámek – uzamčené prvky na domovské obrazovce zobrazují ikonu zámku, klepnutí otevře burger menu s možností aktivace
  • Správa viditelnosti prvků – v burger menu lze přetažením měnit pořadí dlaždic a skrývat nepotřebné typy prvků
Změněno
  • Detekce offline stavu přepracována — nahrazena spolehlivým singletónem (network.ts) místo navigator.onLine; na nativních platformách využívá @capacitor/network a Android ConnectivityManager.NetworkCallback
  • Offline indikátor nyní zobrazuje kombinovaný chip „Offline · DEMO", jsou-li aktivní oba stavy současně
  • Profil karty na domovské obrazovce rozšířen o badge overlay na avataru
Opraveno
  • Na iOS se po stažení sheetu zboku zobrazovala mezera mezi spodní hranou listu a spodním okrajem obrazovky; opraveno pomocí ::after pseudo-elementu (bg-inherit, h-[100vh])
  • Záznamy přidané v offline režimu se nyní správně zobrazují v seznamu ještě před synchronizací díky sloučení dat serveru s lokální frontou
  • Opraveno padání aplikace při obnovení cache: Set objekty v TanStack Query datech nahrazeny plain arrays (WebKit: JSON.stringify(new Set()) vrací {})

1.0.2

4. 5. 2026
Přidáno
  • Systém přátel – vyhledávání uživatelů podle jména nebo e-mailu, oboustranné přátelství
  • Sdílení nástěnky – vlastník může sdílet celou svou nástěnku se zvoleným přítelem
  • Sdílení jednotlivého záznamu – záznam lze nasdílet konkrétnímu příteli bez zpřístupnění ostatních dat
  • Realtime notifikace – přidání přítele nebo sdílení záznamu generuje push notifikaci v aplikaci prostřednictvím Supabase Realtime (postgres_changes na tabulce notifications)
  • Veřejný profil uživatele – stránka /user/:id zobrazuje profil, statistiky a sdílené záznamy; přístupná přes klepnutí na profil kartu nebo z přehledu přátel
  • Offline fronta (zápis) – záznamy přidané bez připojení se ukládají do IndexedDB a synchronizují při obnovení spojení; fotografie se nahrávají po jedné s obnovou po přerušení
  • Synchronizace při reconnectuSyncOnReconnect komponenta spouští synchronizaci při mountu i při každém obnovení připojení (debounce 3 s)
Změněno
  • Dolní navigace rozdělena na dvě skupiny flex-1 okolo plovoucího tlačítka + pro pixel-přesné zarovnání na střed
  • Všechny bottom sheety jsou na desktopu omezeny na šířku 1 100 px a vycentrovány pomocí left/right: max(0px, calc(50% - 550px)) (bez translateX kvůli kolizi s animací translateY)
  • Safe area insets aplikovány důsledně napříč komponentami pomocí env(safe-area-inset-bottom)
Opraveno
  • Opravena synchronizace dvou instancí Supabase klienta; nyní je klient singleton importovaný výhradně z src/integrations/supabase/client.ts
  • Přihlašovací formulář na iOS nyní správně scrolluje vstupy nad klávesnici bez nutnosti custom JS (odstraněna závislost na @capacitor/keyboard)

1.0.1

26. 4. 2026
Přidáno
  • Zpracování fotografií – před nahráním se fotky automaticky zmenší na max. 1 400 px na delší straně a převedou do WebP (kvalita 0,82)
  • Automatické předvyplnění GPS a data – EXIF metadata se čtou z nahraného snímku; souřadnice a datum záznamu se předvyplní bez nutnosti ručního zadávání
  • Nativní EXIF plugin pro Android – vlastní Capacitor plugin ExifReaderPlugin obchází redakci GPS dat v Android 10+ čtením přes ContentResolver z content:// URI
  • Aktuální poloha záložní – pokud fotografie EXIF souřadnice neobsahuje, aplikace se pokusí získat GPS z @capacitor/geolocation
  • Zpětné tlačítko na AndroiduOnBackPressedCallback v MainActivity.java naviguje zpět v historii WebView; bez historie minimalizuje aplikaci (moveTaskToBack) místo ukončení
  • Edge-to-edge AndroidWindowCompat.setDecorFitsSystemWindows(false) v MainActivity.java; WebView sahá za status bar a navigační lištu
Změněno
  • Heslo při registraci nově validováno schématem Zod: min. 8 znaků, velké i malé písmeno, číslice
  • Chybové hlášky autentizace přeloženy do češtiny (např. „Invalid login credentials" → „Nesprávný e-mail nebo heslo")
  • Focusový outline na dotyková zařízení potlačen pomocí :focus:not(:focus-visible) v index.css (zachován pro klávesnicovou navigaci)
Opraveno
  • Opraveno chybné zobrazení profilového avataru při neexistující URL v Supabase Storage
  • Opravena animace slide-in pro bottom sheety na starších verzích Safari

1.0.0

20. 4. 2026 První vydání
Přidáno
  • Registrace a přihlášení e-mailem a heslem (Supabase Auth)
  • Obnova zapomenutého hesla e-mailem
  • Pět typů záznamů: Shoz, Úlovek, Posed, Krmelec, Bod zájmu
  • Čtyřkrokový průvodce přidáváním záznamu (typ → fotografie → podrobnosti → poloha)
  • Nahrávání až 5 fotografií na záznam do Supabase Storage (record-photos bucket)
  • Seznam všech záznamů s filtrováním podle typu
  • Detail záznamu s editací a smazáním
  • Mapa s Leaflet zobrazující záznamy s GPS souřadnicemi
  • Profil uživatele s avatarem, jménem a popisem
  • Statistiky na domovské obrazovce (počet záznamů, úlovků, fotografií)
  • Podpora PWA (manifest, service worker, ikony)
  • Nativní sestavení pro iOS a Android přes Capacitor 8
  • Cache TanStack Query persistována do localStorage (klíč moje-myslivost-cache-v2)
  • RLS politiky na všech tabulkách; uživatel čte a píše pouze vlastní data
  • Automatické vytvoření řádku v profiles po registraci (DB trigger)
  • Responzivní layout s postranním sidebarem na desktopu (≥ 996 px)