* fix: před stahováním ověřit přihlášení přes islogged
Server při vypršelé session nevrací chybu, ale tiše odpoví jako
anonymnímu uživateli (jen přístupnost A). Plugin proto před stahováním
volá /api/user/islogged; při 'nologged' se jednou znovu přihlásí
z uložených údajů, a když to nejde, varuje v liště, že stahuje anonymně.
- amcr_tools: _check_islogged, _ensure_logged_in, volání v load_amcr_data
- smoke test: 7 offline scénářů stavu přihlášení
- README; changelog v2.2.0 v metadata.txt
- openspec/changes/fix-session-expiry-islogged: návrh, spec, design, úkoly
Closes#72. Připraveno s pomocí AI (Claude), ručně zkontrolováno.
* feat: odebrání přihlašovacích údajů uživatele i odhlásí
Dosud zůstala přihlášená session v paměti až do restartu QGIS, takže
se po „Odebrat uložené přihlašovací údaje“ dál stahovalo jako přihlášený.
Nově se session odhlásí na serveru (GET /api/user/logout) a zahodí;
když server neodpoví, zahodí se aspoň lokálně.
- amcr_tools: logout_from_api; amcr_dialog: volání v _forget_credentials
- smoke test: odhlášení, chyba sítě, bez session
- README, changelog v2.2.0, OpenSpec (požadavek + úkoly 2b; 3.3 ověřeno)
Připraveno s pomocí AI (Claude), ručně zkontrolováno.
* chore: archivovat OpenSpec změnu fix-session-expiry-islogged
Všechny úkoly hotové (2b.2 – odhlášení – ověřeno ručně v QGIS),
archivováno s --skip-specs (stupeň change-tracked, bez openspec/specs/).
Připraveno s pomocí AI (Claude), ručně zkontrolováno.
* chore: odstranit resources.py a konfiguraci flake8 z balíčku
Scanner na plugins.qgis.org označil plugin jako „Validated
(configured)“ kvůli amcr_viewer/.flake8. Ten potlačoval jen stylové
nálezy (E302, E305, E501) ve vygenerovaném resources.py, který se
nikde neimportuje – ikony se načítají přímo z PNG. resources.py
repozitář pluginů nevyžaduje (validator.py v QGIS-Django, PyQGIS
cookbook: „optional“).
- Smazán amcr_viewer/resources.py a amcr_viewer/.flake8.
- CI: flake8 běží s --isolated (výchozí pravidla jako scanner);
kontrola ZIPu místo .flake8 hlídá povinný LICENSE.
- check_sources.py: žádné skryté soubory v balíčku, ani config
soubory scanneru.
- pyproject.toml, README.md, AGENTS.md: odstraněny odkazy na oba
soubory, popsán postup bez konfigurace.
Ověřeno: check_sources, flake8 7.3.0, ruff 0.16.5, bandit 1.9.4,
detect-secrets bez nálezů; pyqgis4-checker čistý; smoke test v QGIS
3.44.15 (Qt 5) i 4.2.3 (Qt 6); ZIP bez skrytých souborů.
Připraveno s pomocí AI (Claude).
* Verze 2.1.4
Povýšena verze v metadata.txt (+ changelog) a CITATION.cff po odstranění resources.py a konfigurace flake8.
Připraveno s pomocí AI (Claude).
Digiarchiv v4.1.0 (Solr 10, json.nl=arrarr) vrací položky facet jako
dvojice ["hodnota", počet] místo objektů {"name": ...}. fetch_set četl
r["name"], spadl na TypeError a hesláře vedoucích a nálezců se uložily
prázdné.
- _facet_name() přijímá oba formáty facet (starý i nový).
- Selhání setu vrací prázdný seznam i při přerušeném stránkování, ať
se neuloží jen část hesláře.
- download_heslare() ponechá u selhaného nebo prázdného setu předchozí
hodnoty z heslar.csv a vrátí seznam selhaných setů.
- Dialog při částečném selhání zobrazí varování místo „Hotovo“.
- Verze 2.1.3 + changelog.
Ověřeno proti produkčnímu API: vedoucí 2497, nálezci 426, ostatní
hesláře beze změny; simulované selhání ponechá předchozí hodnoty.
Refs #67, #66
Připraveno s pomocí AI (Claude).
* fix: sjednocení popisků filtrů ve filtračním dialogu
Dvě nekonzistence, které vyplavalo psaní dokumentace:
- "Lokalita - stav dochování" mělo jako jediné ze čtyř polí lokality
obyčejný spojovník místo pomlčky.
- Filtr "Specifikace nálezu" plní sloupec, jehož alias je "Materiál",
takže uživatel filtroval podle jednoho názvu a výsledek dostal pod
jiným. Sjednoceno na "Materiál". Klíč v cache (specifikace)
i parametr API (f_specifikace) zůstávají beze změny, mění se jen
popisek v UI.
Matice filtrů v README je srovnaná ve stejném commitu, aby se
dokumentace a kód nikdy nerozešly.
Ověřeno výpisem group boxů z dialogu v headless QGIS 4.2.2.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GptqiE8kzeUUsx6h9apwiP
* chore: verze 2.2.0 a changelog
Odkaz "Plný seznam změn" mířil na tag v2.1.1, přestože changelog
pokračuje dál; přesměrován na přehled releasů. Vratná změna.
CITATION.cff zůstává na v2.1.2 — popisuje poslední vydanou verzi
a povyšuje se až při vydání, kdy z něj Zenodo generuje záznam.
Datum 2026-09-02 je datum přípravy; při vydání ho může být potřeba
posunout.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GptqiE8kzeUUsx6h9apwiP
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Shrnuje změny sloučené do této větve oproti main: projektové akce (#53), úklid kódu (#54), stahování samostatných nálezů (#57), diagnostiku prázdných výsledků z API (#58) a filtrování podle data se scrollovatelným dialogem (#59).
- metadata.txt: icon ukazoval na neexistující download.png – plugin se
ve správci zásuvných modulů zobrazoval bez ikony; nastaveno na akce.png.
- Workflow: actions/checkout v2→v4 (v2 je deprecated, Node 12)
a softprops/action-gh-release v1→v2.
- README: poznámka, že knihovna requests nemusí být na Linuxu součástí
systémové instalace QGIS.