# Changelog — JPKCom Post Filter

> Versionsverlauf des WordPress-Plugins JPKCom Post Filter.

Source: https://www.jpkc.com/db/changelog/jpkcom-post-filter/

Versionsverlauf von [`jpkcom-post-filter`](https://github.com/JPKCom/jpkcom-post-filter). Die Einträge stammen unverändert aus der README des Projekts. Eine ausführliche Anleitung mit Tipps findest du im [Projekt-Guide](https://www.jpkc.com/db/guides/jpkcom-post-filter/).

## 1.1.5
* Raised "Tested up to" to WordPress 7.0
* Normalized license fallback defaults (updater and release workflow) to `GPL-2.0-or-later` with the HTTPS license URI

## 1.1.4
* Security: updater prefers an exact match against the manifest `download_url` over the slug heuristic, so a tampered manifest can no longer bypass the checksum gate
* Security: timing-safe checksum comparison (`hash_equals()`) with an `is_string()` guard against `hash_file()` failures
* Security: manifest fetch via `wp_safe_remote_get()` (SSRF defense-in-depth)
* Fixed PHP warning and missing contributor names in the plugin detail popup (`display_name` now provided)
* Fixed PHP warning/deprecation on `wp plugin list` by completing the `no_update` transient entry (`new_version`, `package`, `tested`, `requires_php`)

## 1.1.3
- **Plus/Minus Icon styling** — New CSS variables (`--jpkpf-pm-color`, `--jpkpf-pm-font-size`, `--jpkpf-pm-font-weight`) for independent styling of the +/– icons in filter buttons
- **Layout & Design → Filter tab** — New "Plus/Minus Icon" section with Color, Font Size, and Font Weight fields
- **Force no underline** — New checkbox in Layout & Design → Advanced that applies `text-decoration: none !important` to all filter buttons and icons, fixing themes that force underlines on links
- **Translations** — Updated de\_DE and de\_DE\_formal translations for all new strings

## 1.1.2
- **Plugin Updater** — Fixed manual ZIP upload failing with "invalid URL" error by adding `wp_http_validate_url()` check in `verify_download_checksum()`
- **Release Workflow** — Fixed ZIP packaging without top-level directory; WordPress now correctly recognises the update by using a staging directory with the plugin slug

## 1.1.1
- **.github/workflows/release.yml** — "Build Gutenberg blocks" npm ci bugfix

## 1.1.0
- **Gutenberg Blocks** — Three native blocks (Post Filter, Post List, Post Pagination) with live server-side preview, InspectorControls, and Full Site Editor support
- **Elementor Widgets** — Three widgets (Post Filter, Post List, Post Pagination) in a dedicated category, loaded only when Elementor is active
- **Oxygen Builder Elements** — Three elements (Post Filter, Post List, Post Pagination) using the OxyEl API, loaded only when Oxygen Builder Classic is active
- **Block pre-scan** — Pagination blocks can be placed above or below the list block; the plugin pre-scans the block tree (FSE templates and post content) before rendering to ensure correct query availability
- **AJAX pagination swap** — Standalone pagination elements (blocks/shortcodes/Elementor) are updated during AJAX filter requests via `data-jpkpf-pagination` attribute, keeping pagination links filter-aware
- **Pagination placeholder** — When filter selection reduces results to a single page, pagination is hidden but preserved as a DOM placeholder; it automatically reappears when filters change back to multiple pages
- **Auto-inject guard** — Prevents duplicate pagination insertion in auto-inject mode during AJAX swaps

## 1.0.0
- Initial release
- Faceted filtering for any post type and taxonomy
- Four filter layouts: bar, columns, sidebar, dropdown
- Three list layouts: cards, rows, minimal
- SEO-friendly URL schema with WordPress rewrite rules
- AJAX filtering with `history.pushState`
- Auto-inject mode for archive/blog pages with configurable pagination position
- Shortcodes: `[jpkcom_postfilter_filter]`, `[jpkcom_postfilter_list]`, `[jpkcom_postfilter_pagination]`
- Interactive shortcode builder in admin
- Custom taxonomy registration from Filter Groups admin page
- Plus/Minus interaction mode for filter buttons
- Show More button with configurable threshold
- Four predefined color schemes (Default, Dark, Contrast, Monochrome)
- Three stylesheet modes (Full, Variables only, Disabled)
- Reset button visibility modes (Always, On selection, Never)
- Bare Endpoint Behaviour (404, redirect to home, custom URL)
- Max. Filters per Group limit (URL + JS enforcement)
- Four-layer caching (object cache, transients, APCu, file cache)
- Settings import/export (JSON)
- Translations: de\_DE, de\_DE\_formal

