1.0.11 (current, unreleased)
- Split the LH_Polls_Post_Types god class: metabox render/save logic extracted into dedicated LH_Polls_Settings_Metabox, LH_Polls_Options_Metabox, LH_Polls_Votes_Metabox, and LH_Polls_Admin_Notices classes. Post_Types is now trimmed to CPT/meta-box registration, the shared should_save_poll_meta() save guard, delete cleanup, and publish validation. Pure relocation, no behavioural change.
- Fixed PCP-flagged PreparedSQL.NotPrepared / DirectDB.UnescapedDBParameter warnings in class-lh-polls-db.php and class-lh-polls-embed.php by using $wpdb->prepare()’s %i identifier placeholder for table names (WP 6.2+) instead of string-concatenating self::options_table()/votes_table() into the query. Genuine fix, not a suppression.
- Documentation migrated from readme.md into this portfolio entry per the lh-portfolio convention: Database schema and Admin interfaces sections expanded; new Architecture notes, MCP abilities, and PCP notes (accepted false positives) doc-sections added. readme.md trimmed to the minimal spec (description, install, links). readme.txt added (plugin is now public).
- Portfolio root entry created and set to public (publish) — ecosystem-useful polling plugin, no LocalHero-specific data structures.
1.0.10 — 2026-07-13
- lh-polls-resize (the postMessage iframe-resize listener) is now registered with an explicit strategy => ‘defer’ (WP 6.3+ script strategy API) instead of a bare in_footer bool, matching the non-blocking loading pattern used by the rest of the LH plugin suite. The script is only enqueued on pages with a published poll block, so this is a small consistency/perf fix, not a scoping change.
1.0.9 — 2026-06-15
- Removed three redundant core metaboxes from the lh_poll edit screen via remove_meta_box() in add_meta_boxes(): slugdiv (permalink/slug — not user-facing for polls), commentstatusdiv and commentsdiv (comments UI — polls use wp_comments internally for vote storage as lh_vote type, but the standard comments interface is inappropriate and confusing here).
1.0.8 — 2026-06-15
- Registered all four lh_poll post meta keys via register_post_meta() for type-hardening and REST schema visibility: _lh_polls_allow_multiple (boolean), _lh_polls_voting_closed (boolean), _lh_polls_reminder_template_id (integer), _lh_polls_required_voters (array of integers, with explicit show_in_rest schema). All four have auth_callback checking edit_post on the post ID.
- lh-polls/get-poll MCP ability now returns required_voters and reminder_template_id alongside the existing fields.
1.0.7 — 2026-06-15
- Reverted to fully classic poll management after repeated Gutenberg-panel issues (editor not loading, broken useEntityProp meta access, panel placement problems). lh_poll is back to classic metaboxes for everything.
- Replaced the lh_poll_closed custom post status (and its bundled WP Statuses dependency) with _lh_polls_voting_closed post meta and a Closed checkbox. Voting-open/closed is now independent of post_status.
- Removed includes/wp-statuses/ entirely — no longer needed without a custom post status.
1.0.6 — 2026-06-08
- Removed blocks/lh-polls/admin.js and its manual ‘#wp-statuses-dropdown’ injection workaround, now redundant with WP Statuses’ native dropdown support.
1.0.5 — 2026-06-08
- Bundled WP Statuses (imath, v2.1.9), guarded with class_exists(‘WP_Statuses’). Added show_in_metabox_dropdown / show_in_inline_dropdown to the lh_poll_closed status registration.
1.0.4 — 2026-06-08
- Removed auto-publish-on-parent-publish logic (too messy). Draft polls embedded via the block now show ‘(Draft)’ with a warning in the editor, and ‘This poll is not yet published.’ with an Edit poll link on the front end.
1.0.3 — 2026-06-08
- Fixed poll-picker ‘or’ label visibility. Added (then later removed in 1.0.4) auto-publish for embedded draft polls on parent-post publish.
1.0.2 — 2026-06-08
- Moved the ‘Edit poll’ link placement in the block inspector panel; clarified ‘Create new poll’ button labelling.
1.0.1 — 2026-06-08
- Added ‘Create new poll’ and ‘Edit poll’ actions to the Poll block’s inspector panel.
1.0.0 — 2026-06-08
- Initial release. lh_poll public CPT with permalinks under /poll/{slug}/. Options in {prefix}lh_poll_options, votes in {prefix}lh_poll_votes with UNIQUE KEY (option_id, user_id).
- Every vote backed by a wp_comments row of type lh_vote. Single/multiple-choice voting, change-vote support for single-choice polls.
- Embedding via oEmbed iframe, zero theme dependency for the embed view; standalone singular view via the_content filter.
- Full transient caching of read queries, flushed on write via LH_Polls_DB::flush_poll_cache().
- Required voters list with email resolution, reminder emails via bp-email templates with token replacement.
- MCP abilities: lh-polls/list-polls, lh-polls/get-poll, lh-polls/get-votes.
- Multisite support: per-site tables, network activation loop, wpmu_new_blog hook.