Doc-section

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.