# Changelog
All notable changes to ID Plugin Portfolio will be documented in this file.
## [1.3.0] - 2026-02-15
### Added
- Self-hosted plugin downloads via ZIP file upload (`_idpp_plugin_zip` meta field)
- `IDPP_Zip_Parser` class for extracting metadata from uploaded plugin ZIPs
- `IDPP_Download` class with rewrite endpoint (`idpp-download/{id}`) and REST route (`idpp/v1/download/{id}`)
- Automatic metadata sync from ZIP: version, tagline, changelog, requirements (WP, PHP, tested up to)
- "Plugin File" meta box with media uploader (filtered to ZIP), file info display, and AJAX parse
- "Pro Version" meta box with has_pro toggle, pro price, and pro-only features fields
- Free vs Pro comparison table on single plugin page when pro is enabled
- Download button with version label, file size, and download count on single plugin page
- "Synced from ZIP" badge indicators on auto-populated admin fields
- "Pro Available" badge on plugin cards (archive and shortcode)
- Download icon link on plugin cards (archive and shortcode)
- Download count tracking (`_idpp_download_count` meta field)
- `wp_localize_script` for AJAX nonce and URL in admin
## [1.2.1] - 2026-02-15
### Added
- IDVE (Insight Dezign Visual Editor) block integration
- WPBakery Page Builder element integration
## [1.2.0] - 2026-02-14
### Fixed
- Added sanitization callbacks to all `register_setting()` calls
- Added `wp_unslash()` to all `$_POST` data processing in `save_meta()`
- Escaped `$description` output with `wp_kses_post()` in archive template
- Escaped `$hero_image` output with `wp_kses_post()` in single template
- Added `phpcs:disable` annotations for template and uninstall variable prefixing
- Added `phpcs:ignore` for `tax_query` and direct DB query in uninstall
### Removed
- External Font Awesome CDN dependency (icon `` tags removed from single template)
- Deprecated `load_plugin_textdomain()` call (handled automatically since WP 4.6)
### Changed
- Freemius checkout script version changed from `null` to `'1.0.0'`
- Updated `Tested up to` from 6.4 to 6.9
## [1.1.0] - 2026-02-14
### Added
- Category filter pills on archive page for client-side filtering by plugin category
- `data-categories` attribute on plugin cards for filter matching
- No-results message when filter yields zero matches
- JavaScript and CSS enqueued on archive and taxonomy pages
### Changed
- Archive query loads all plugins (no pagination) to support client-side filtering
## [1.0.0] - 2026-02-12
### Added
- Custom post type `id_plugin` for managing plugins
- `plugin_category` taxonomy for organization
- Six meta boxes: Plugin Details, Plugin Links, Requirements, Key Features, Changelog, Screenshot Gallery
- `[id_plugins]` shortcode with grid layout and customizable attributes
- Single plugin detail template with hero, description, features, requirements, screenshots, and changelog sections
- Screenshot gallery with vanilla JS lightbox (keyboard navigation, arrow keys, escape to close)
- Badge support: New, Popular, Sale
- Responsive CSS grid layout (3 columns → 2 at 991px → 1 at 575px)
- Settings page for global defaults (columns, gap, visibility toggles, button text)
- WordPress media uploader integration for screenshot gallery management
- Drag-and-drop reordering for gallery screenshots
- Full internationalization support
- GPL v2 license
