0.8.8 — 2026-04-26
Změněno
- TTS: upgrade z `tts-1` na `gpt-4o-mini-tts` (lepší přízvuk, novější model)
- Odstraněn hack s prefixem `[español] hola` v textu (mohl se číst jako součást věty)
- Přidán parametr `instructions` s nativní pronunciation guidance per jazyk (Castilian Spanish, British English, Hochdeutsch, atd.)
- Cache klíč verzován (`v2:`) — staré mp3 se staly orphans a byly smazány cleanupem (326 souborů, 5.85 MB)
- Sjednocená funkce `tts_cache_key()` v `app.py`, používá ji i `cleanup.py` a `prefetch.py`
0.8.7 — 2026-04-25
Přidáno
- Sledování přihlášení: nový sloupec `User.last_login`, aktualizuje se při každém úspěšném loginu
- Admin stránka `/admin/stats` (jen pro vlastníka, user id=1) s odkazem v navigaci:
- Globální přehled: počet uživatelů, sad, slovíček, procvičení, úspěšnost, AI cache (popisky + MP3 v MB)
- Sloupcový graf aktivity za posledních 30 dní
- Tabulka uživatelů: registrace, poslední login, poslední aktivita, počet sad/slovíček, procvičení, úspěšnost, streak (dnů po sobě)
- Top 10 nejtěžších slovíček (≥5 pokusů, řazeno dle nejnižší úspěšnosti)
- Top 10 nejprocvičovanějších slovíček
- Responzivní (mobil i PC)
0.8.6 — 2026-04-24
Změněno
- TTS cache: normalizace na lowercase — "Hola" a "hola" nyní sdílejí jedno mp3 (úspora místa)
- Popisy slov (WordExplanation): normalizace na lowercase — stejné slovo s různou velikostí písmen sdílí jeden záznam v DB
Přidáno
- Admin endpoint `/admin/cleanup` (jen pro vlastníka, user id=1):
- Dry-run náhled kolik mp3 a popisů slov je nepoužívaných
- Volitelné smazání přes `?delete=1` s potvrzením
- Nepoužívané = není navázáno na žádné slovo v žádném slovníku
- `cleanup.py` – standalone skript pro cron (smaže orphan mp3 + WordExplanation)
- `prefetch.py` – standalone skript pro předgenerování TTS mp3 a popisů slov pro všechny slovníky (idempotentní)
- Cron `/etc/cron.d/biflo`:
- Neděle 03:00 – cleanup (log `/var/log/biflo-cleanup.log`)
- Každou hodinu v :15 – prefetch (log `/var/log/biflo-prefetch.log`)
- Oba chráněné `flock -n` proti paralelnímu běhu
- Logrotate `/etc/logrotate.d/biflo` – týdně, 4 rotace, komprese
Opraveno
- `/ai/explain`: ošetřena race condition – při souběžném vytvoření stejného popisu (prefetch + uživatel) se místo 500 chyby vrátí existující záznam
- Migrace: existující WordExplanation převedeny na lowercase (aby case-insensitivní lookup našel)
0.8.5 — 2026-04-20
Opraveno
- Kartičky: opraveno probliknutí odpovědi při přechodu na další slovíčko
- Kartičky: kliknutí na otočenou kartičku ji otočí zpět (toggle)
- Kartičky: opraveno auto-speak při otočení (nefunkovalo kvůli chybějící funkci)
Přidáno
- Kartičky: tlačítko vysvětlení slovíčka (💡) na přední i zadní straně
- Offline: kompletně přepracované procvičování
- Volba směru procvičování (A→B, B→A, Mix)
- Kartičky s flip animací (stejné jako online)
- Progress bar s počítadlem
- Procvičování po úsecích po 10 slovíčkách
- Tlačítko "10 náhodných"
- Tlačítko "Ukončit" s uložením výsledků
- Obrazovka s výsledky (počet kol, slovíček)
Změněno
- TTS: odebrán reproduktor u českých slov (ve slovníku i při procvičování)
0.8.4 — 2026-04-11
Opraveno
- Import slovíček: opraven příklad pořadí jazyků (čeština;španělština, ne naopak)
- Import slovíček: přidán popis formátu nad textové pole
0.8.3 — 2026-04-10
Opraveno
- TTS přepnuto z browser SpeechSynthesis na server-side OpenAI TTS
- Vždy mluví správným cizím jazykem (ne česky)
- Audio se cachuje jako MP3 na serveru (první přehrání zavolá API, další z cache)
- Funguje na všech zařízeních bez instalace hlasů
0.8.2 — 2026-04-10
Přidáno
- Automatická výslovnost cizího slova při procvičování
- Zapnuto by default, přehraje španělské/cizí slovo automaticky
- Při zobrazení kartičky (pokud přední strana je cizí jazyk)
- Při otočení kartičky (pokud zadní strana je cizí jazyk)
- Toggle tlačítko 🔈/🔇 vedle progress baru pro zapnutí/vypnutí
0.8.1 — 2026-04-10
Změněno
- TTS výslovnost jen u cizího jazyka (word_b), české tlačítko odebráno
- Opakování: přidány rozsahy po 10 (stejně jako u slovníků)
0.8.0 — 2026-04-10
Přidáno
- AI Chat — konverzační rozhraní s AI (/chat)
- Povídání v cílovém jazyce přizpůsobené úrovni
- Vysvětlování gramatiky a slovíček
- Vytváření slovníků a přidávání slov přes chat příkazy
- Opravování chyb s vysvětlením
- Odkaz "Chat" v navigaci
- Výslovnost slovíček (TTS)
- Tlačítko reproduktoru u každého slova ve slovníku
- Tlačítko reproduktoru na kartičkách při procvičování (přední i zadní strana)
- Browser SpeechSynthesis API — zdarma, funguje offline, podporuje 18+ jazyků
- Pomalejší tempo (0.85x) pro lepší srozumitelnost
0.7.2 — 2026-04-10
Přidáno
- Tlačítko "Ukončit" během procvičování — uloží neprobraná slovíčka jako špatná do statistik
- Tlačítko "10 náhodných" na stránce slovníku — vybere 10 náhodných slovíček k procvičení
0.7.1 — 2026-04-10
Vylepšeno
- AI vysvětlení slovíček: u sloves se nyní zobrazuje kompletní časování
- Přítomný čas (presente)
- Minulé časy (pretérito, imperfecto)
- Nepravidelné tvary označeny *
- Stará cache vysvětlení smazána pro regeneraci s novým formátem
0.7.0 — 2026-04-10
Přidáno
- Procvičování po úsecích — na stránce slovníku tlačítka 1–10, 11–20, atd.
- Velké tlačítko "Procvičovat vše" zůstává nahoře
- Pod ním řada menších tlačítek pro jednotlivé rozsahy po 10 slovíčkách
- V procvičování se zobrazí rozsah v titulku
0.6.3 — 2026-04-10
Opraveno
- Kontejner rozšířen na 1200px — plné využití obrazovky na PC
0.6.2 — 2026-04-10
Změněno
- Sync stav přesunut do dropdown menu pod username (barevná tečka u jména)
- AI vysvětlení slovíček se cachuje v databázi — při opakovaném dotazu se nenačítá z AI
0.6.1 — 2026-04-10
Opraveno
- PWA offline: nová offline stránka s procvičováním z IndexedDB
- Když není internet, zobrazí se seznam stažených slovníků
- Kartičkové procvičování funguje kompletně offline
- Výsledky se uloží a odešlou po připojení
- Navbar zkrácen na "SP" (víc prostoru na mobilu)
0.6.0 — 2026-04-10
Přidáno
- PWA (Progressive Web App) podpora
- Manifest pro instalaci na domovskou obrazovku (Android i iOS)
- Service worker s offline cache (HTML, CSS, JS)
- Stránky se cachují při návštěvě, fungují i bez internetu
- Offline fallback stránka pro necachované URL
- Offline procvičování
- Slovíčka se automaticky stahují do IndexedDB při načtení
- Procvičování kartičkami funguje kompletně offline
- Výsledky se ukládají lokálně a odesílají po připojení
- Auto-sync při obnovení připojení
- Endpoint /api/my-data pro stažení všech dat uživatele
- Ikony (SVG + PNG 192/512)
0.5.1 — 2026-04-10
Změněno
- Navigace: API, Changelog a Odhlásit přesunuty do rozbalovacího menu pod uživatelským jménem
- "Sady" přejmenováno na "Slovníky"
- "Obtížná" přejmenováno na "Opakování"
0.5.0 — 2026-04-10
Přidáno
- Statistiky procvičování
- Logování každé odpovědi (správně/špatně) při procvičování (kartičky i psaní)
- Chybovost zobrazena u každého slovíčka v sadě (barevné %)
- Stránka "Obtížná slovíčka" — přehled slov s nejvyšší chybovostí
- Procvičování obtížných slovíček ze všech sad najednou
- Odkaz "Obtížná" v navigaci
0.4.0 — 2026-04-10
Přidáno
- AI kontrola duplicit při generování slovíček
- Prohledá všechny uživatelovy sady, přeskočí existující páry
- Zobrazí kolik slovíček bylo přeskočeno
- AI vysvětlení slovíčka (tlačítko žárovky u každého výrazu)
- Všechny významy slova v cílovém jazyce
- Příklady vět s překladem
- Poznámky o nepravidelnostech a použití
0.3.0 — 2026-04-10
Přidáno
- AI režim procvičování "Psaní (AI)"
- Místo otáčení kartiček píšete překlad
- AI vyhodnotí odpověď (přijímá synonyma, překlepy, alternativy)
- Barevná zpětná vazba: zelená (správně), oranžová (skoro), červená (špatně)
- Tlačítko Nápověda — AI dá nápovědu bez prozrazení slova
- Enter pro odeslání a pokračování
- Špatné odpovědi se opakují v dalším kole
- Fallback na přímé porovnání řetězců pokud AI není dostupné
0.2.0 — 2026-04-10
Přidáno
- AI generování slovíček z tématu (OpenAI GPT)
- Zadáte téma a počet, AI vygeneruje páry slovíček
- Tlačítko "AI" na stránce sady
- Auto-překlad při přidávání slovíček (tlačítko blesku)
- Vyplníte jedno pole, kliknete na blesk, AI doplní překlad
- Konfigurace OpenAI v config.ini (api_key, model)
- config.ini přidán do .gitignore (bezpečnost klíčů), config.ini.example jako šablona
0.1.0 — 2026-04-10
Přidáno
- Verzování aplikace (v config.ini, zobrazeno v navbaru a na login stránce)
- Stránka s changelogem (/changelog) přístupná z navbaru i login stránky
- README.md s popisem projektu, instalací a konfigurací
- Vlastní chybové stránky (404, 403, 500) s navigací zpět
2026-04-10 (2)
Přidáno
- Jednotná navigační lišta (navbar) na všech stránkách
- Název aplikace vlevo (odkaz na dashboard)
- Odkazy: Sady, API, uživatel, Odhlásit
- Šipka zpět na stránkách s kontextem (detail sady, import, tokeny, API docs, procvičování)
- Na login/register stránkách se navbar nezobrazuje
- Nadpis stránky (page-header) pod navbarem pro lepší orientaci
2026-04-10
Přidáno
- Základní aplikace Flask s SQLite databází
- Registrace a přihlášení uživatelů (hashovaná hesla)
- CRUD správa sad slovíček (vytváření, editace, mazání)
- CRUD správa slovíček v sadách (přidávání, editace přes modal, mazání)
- Procvičovací režim s kartičkami (flip animace)
- Volba směru procvičování (A→B, B→A, Mix)
- Opakování špatně zodpovězených slovíček v dalších kolech
- Progress bar a statistiky na konci
- Import slovíček z textového formátu (středník/tabulátor) a ze souboru
- REST API s tokenovou autentizací (Bearer token)
- CRUD endpointy pro sady a slovíčka
- Hromadný import přes API (JSON pole i textový formát)
- Tokeny s oprávněním Read nebo Read & Write
- Stránka s API dokumentací (/api/docs)
- Správa API tokenů v UI (generování, mazání)
- Podpora více jazyků - uživatel si volí zdrojový a cílový jazyk pro každou sadu
- 19 předdefinovaných jazyků (konfigurovatelné v config.ini)
- Veřejné sdílení sad přes unikátní link
- Sdílená stránka se seznamem slovíček
- Procvičování ze sdíleného linku (bez přihlášení)
- Import sdílené sady do vlastního účtu (vyžaduje přihlášení)
- Konfigurace přes config.ini (název aplikace, port, databáze, jazyky, defaulty)
- Mobilní responzivní UI optimalizované pro telefony
Přejmenováno
- Aplikace přejmenována z "Español" na "SlovíčkoPamatovák"