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_ida 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_codesa RPCredeem_code,join_organization); IDE napovídání plně funkční - ▸Vyčištěný kód — odstraněno 19 ESLint chyb (převážně
anytypy 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 -MultiViewsz.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ématucapacitor://nepadal na CORS preflight pro<link rel="modulepreload" crossorigin> - ▸Verze v native projektech — iOS
MARKETING_VERSIONa AndroidversionNamezarovná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ístonavigator.onLine; na nativních platformách využívá@capacitor/networka AndroidConnectivityManager.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í
::afterpseudo-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:
Setobjekty 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_changesna tabulcenotifications) - ▸Veřejný profil uživatele – stránka
/user/:idzobrazuje 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 reconnectu –
SyncOnReconnectkomponenta 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-1okolo 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))(beztranslateXkvů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
ExifReaderPluginobchází redakci GPS dat v Android 10+ čtením přesContentResolverzcontent://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 Androidu –
OnBackPressedCallbackvMainActivity.javanaviguje zpět v historii WebView; bez historie minimalizuje aplikaci (moveTaskToBack) místo ukončení - ▸Edge-to-edge Android –
WindowCompat.setDecorFitsSystemWindows(false)vMainActivity.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)vindex.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-photosbucket) - ▸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
profilespo registraci (DB trigger) - ▸Responzivní layout s postranním sidebarem na desktopu (≥ 996 px)