# Changelog

Všechny významné změny v projektu Let's Encrypt Wizard.

Formát vychází z [Keep a Changelog](https://keepachangelog.com/cs/1.1.0/) a verzování se řídí [Semantic Versioning 2.0.0](https://semver.org/lang/cs/).

## Pravidlo verzování (závazné)

**Každý merge do `main` MUSÍ:**
1. Zvýšit `version` v souboru [`version.json`](./version.json)
2. Aktualizovat `released` (datum publikace, formát `YYYY-MM-DD`)
3. Přidat záznam do tohoto `CHANGELOG.md` pod novou sekci s verzí a datem
4. Verze se v patičce wizardu načítá z `version.json` automaticky — neměň ji v HTML

**Pravidla pro increment verze (MAJOR.MINOR.PATCH):**

| Změna | Co povýšit |
|---|---|
| Breaking change (změna výstupních skriptů, která rozbije existující nasazení) | `MAJOR` (1.0.0 → 2.0.0) |
| Nová funkce / nový scénář / nový generátor | `MINOR` (1.2.0 → 1.3.0) |
| Bugfix, oprava textu, drobné UI tweaky, dokumentace | `PATCH` (1.2.3 → 1.2.4) |

**Kategorie změn v záznamu:** `Přidáno`, `Změněno`, `Opraveno`, `Odebráno`, `Bezpečnost`.

---

## [Unreleased]

## [1.2.1] - 2026-05-25

### Opraveno
- **Ikona přepínače tmavého režimu** se nyní dynamicky mění podle stavu: měsíček v světlém režimu (klik = přepnout do tmavého), sluníčko v tmavém režimu (klik = přepnout do světlého); přidán `aria-pressed` pro asistivní technologie

### Změněno
- **Topbar (hlavička)** zarovnán na stejnou šířku jako wizard panel (max-width 780 px, centrovaný) — logo vlevo, vlaječky a přepínač režimu vpravo na úrovni pravého okraje panelu
- Drobné úpravy paddingu na mobilech (≤600 px) pro úspornější layout

## [1.2.0] - 2026-05-25

### Přidáno
- **Vícejazyčné rozhraní (i18n):** 6 jazyků — čeština, angličtina, slovenština, němčina, rumunština, ukrajinština
- Lehký i18n engine bez závislostí (`assets/js/i18n.js`) — `data-i18n*` atributy, fallback na EN, persist v `localStorage` (`le-wizard-lang`), detekce z `navigator.language`
- Přepínač jazyků s inline SVG vlaječkami (žádné externí obrázky, žádné CDN)
- **Tooltipy se slovníkem pojmů** (`assets/js/tooltip.js`, `assets/js/glossary.js`) — 28 termínů s autoritativními odkazy (RFC, MDN, MS Learn, certbot.eff.org, Let's Encrypt docs)
- Markup `<term key="...">` v překladech, popover otevíratelný klikem/fokusem, zavíratelný ESC
- **Tlačítko „Stáhnout vše (ZIP)"** v kroku 6 — všechny skripty + `README.txt` v jednom ZIP archivu
- Vlastní MiniZip writer (`assets/js/zip.js`) — 142 řádků, STORED metoda, CRC32, UTF-8 jména souborů (bit 11), žádné CDN
- **Tlačítko „Regenerovat"** v kroku 6 — vynutí přepočet výstupních skriptů
- **Veřejné dokumenty:** `privacy.html` a `changelog.html` budované z MD souborů (privátní repo už nezpůsobuje 404)
- Build skript `scripts/build-docs.js` (Node 20) s vendored `vendor/marked.min.js` (38 KB, MIT) — bez CDN
- GitHub Actions workflow `pages.yml` rozšířen o build krok před nasazením

### Změněno
- **Kontakt v patičce:** odkaz na issue tracker nahrazen `mailto:perplexity.ai@crump.cz` (privátní repo nemá veřejný issue tracker)
- Odebrán odkaz na GitHub repo z patičky (privátní = veřejný 404)
- **Komentáře ve výstupních skriptech** přepsány do čistého ASCII (žádná diakritika) napříč všemi jazyky — lepší kompatibilita se starými shelly a CMD prostředími; UI texty v JSON zůstávají s plnou diakritikou
- Idempotentní transliterace přes `scripts/strip-diacritics.js` (cs/sk háčky → bez háčků, de ä→ae, ro ș→s, uk azbuka → BGN/PCGN, smart quotes a šipky → ASCII)
- Tmavý režim se aplikuje na `documentElement` (sdílen mezi `index.html`, `privacy.html`, `changelog.html`)
- README.txt v ZIP archivu generován z lokalizovaných klíčů `scripts.readme*` včetně shrnutí konfigurace a mailto kontaktu

### Opraveno
- `wizard.js` `init()`: ReferenceError na proměnnou `mp` před deklarací — nahrazeno `const mpEl = ...`
- i18n engine umí kombinované klíče (`step1.single.title` jako vnořené i jako plochý klíč v `step1` objektu)

### Bezpečnost
- Zero CDN politika potvrzena: marked.js vendorován, ZIP writer napsaný od nuly, SVG vlaječky inline

## [1.1.1] - 2026-05-25

### Opraveno
- W3C HTML validace: 10 chyb (`<div>` uvnitř `<label>`, `aria-label` na `<div>` bez `role`, trailing slashes na void elementech)
- Refactor `.choice` blocků: vnořený `<div>` nahrazen `<span class="choice-body">` (zachován vizuální výsledek)
- Přidán `role="group"` k progress baru pro správnou ARIA sémantiku

### Výsledek validace
- [validator.w3.org/nu](https://validator.w3.org/nu/): 0 errors, 0 warnings
- [Jigsaw CSS validator](https://jigsaw.w3.org/css-validator/): 0 errors

## [1.1.0] - 2026-05-25

### Přidáno
- Zobrazení verze a data publikace v patičce + odkaz na nahlášení chyby (🐛 → GitHub Issues)
- `version.json` jako jediný zdroj pravdy o verzi (load přes fetch)
- `CHANGELOG.md` s pravidly verzování (Keep a Changelog + SemVer)
- `PRIVACY.md` — disclosure ukládaných dat a GDPR analýza
- Storage banner při prvním otevření — informuje o použití localStorage a vyžádá souhlas s uložením Cloudflare API tokenu
- Footer link na Privacy a CHANGELOG

## [1.0.0] - 2026-05-25

### Přidáno
- F2.1: Scénář pro Windows Server + Pohoda mServer (Stormware)
- Generátor PowerShell skriptů s win-acme (`install.ps1`, `issue.ps1`, `deploy-mserver.ps1`, `renewal-hook-mserver.ps1`, `verify-schedule.ps1`)
- Auto-bind certifikátu na port přes `netsh http add sslcert` podle thumbprintu
- Warning panel s vysvětlením Windows Certificate Store, omezení Let's Encrypt pro LAN/VPN
- Podpora IIS jako webserveru
- `docs/pohoda-mserver.md` — detailní návod, omezení, troubleshooting

### Změněno
- Krok 5 (obnova): pro Windows zobrazit info o Scheduled Tasku win-acme místo systemd/cron
- Krok 3 (challenge): doporučení podle OS+webserveru, mServer → DNS-01

## [0.2.0] - 2026-05-25

### Přidáno
- Nasazení na GitHub Pages přes GitHub Actions (`pages.yml` workflow)
- Auto-deploy z `main` větve
- Živá URL: https://openai-crump.github.io/letsencrypt-wizard/

## [0.1.0] - 2026-05-24

### Přidáno
- F1: Kostra wizardu — 6 kroků (úvod, domény, challenge, server, obnova, výstup)
- Stavový stroj s validací a persistencí v localStorage
- Dark mode toggle
- Generátory bash skriptů pro Linux (Debian/RHEL/Alpine × nginx/Apache/HAProxy/none)
- Podpora HTTP-01 webroot/standalone a DNS-01 Cloudflare/manual
- Doporučení challenge metody podle situace
- `PLAN.md` s detailní architekturou a fázemi F1-F6
- `docs/cloudflare-token.md` — návod na scoped Cloudflare token

[Unreleased]: https://github.com/OpenAI-Crump/letsencrypt-wizard/compare/v1.1.1...HEAD
[1.1.1]: https://github.com/OpenAI-Crump/letsencrypt-wizard/compare/v1.1.0...v1.1.1
[1.1.0]: https://github.com/OpenAI-Crump/letsencrypt-wizard/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/OpenAI-Crump/letsencrypt-wizard/compare/v0.2.0...v1.0.0
[0.2.0]: https://github.com/OpenAI-Crump/letsencrypt-wizard/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/OpenAI-Crump/letsencrypt-wizard/releases/tag/v0.1.0
