GravityBoard Changelog

Release notes and version history for GravityBoard . Display Gravity Forms entries on collaborative kanban boards: manage projects, coordinate with your team, and streamline your workflows.

1.7.0 on October 29, 2026

This release lets card descriptions show Repeater fields, fixes boards that did not load with Repeater fields, and resolves several conditional logic and translation issues.

✨ Improved

  • The Card Description setting now accepts Repeater fields, and lists each row the way the Gravity Forms entry screen does, with field labels above their values.
  • Conditional logic dropdowns that search users, entries, or posts now load their choices only when they are opened.

🐛 Fixed

  • Boards did not load when a card's title, description, label, or due date was set to a Repeater field.
  • Issues with conditional logic:
    • Conditions using the {get} merge tag matched no entries, or the wrong ones, when the value in the URL contained &, +, or % (such as "Research & Development"), and changed other {get} merge tags on the same page;
    • Conditions on fields that store multiple users, posts, or entries (such as GP Nested Forms, Dynamic Lookup, and Populate Anything fields) were slow on forms with a few hundred entries;
    • "Has any of", "has all of", and "has none of" conditions on a Dynamic Lookup field with "Allow multiple selections" and the enhanced user interface only worked for entries with a single selection;
    • Condition dropdowns opened behind the WordPress admin bar, pressing Enter on a selected choice cleared it, and pressing Enter on the clear button did nothing;
    • On sites set to another language, date conditions showed English month names, weekdays, and labels;
    • Condition labels with an apostrophe showed ' in its place (such as "n'est pas" in French);
    • Weekday names in the date condition calendar were off by one day after a date was picked in time zones west of UTC (such as the Americas), and screen readers announced the calendar as "Event".
  • Text that stayed in English on sites set to another language:
    • The board, the board block in the editor, and the GravityView vote widget;
    • The condition builder in a board's Conditional Logic setting.

💻 Developer Updates

  • When GravityKit MCP blocked a board, lane, or card delete tool, the message to AI assistants did not give a valid value for the GRAVITYKIT_MCP_ALLOW_DESTRUCTIVE setting, which accepts the tool's name, gb, or all.

🔧 Updated

Version 1.7.0 permalink

1.6.0 on October 15, 2026

This release lets AI assistants build and manage boards, adds card descriptions built from your own text and merge tags, fixes several issues, and strengthens security; we recommend updating.

🚀 Added

  • AI assistants connected through GravityKit MCP can now create and configure boards, manage lanes, and add, edit, move, and delete cards, limited to what the account they sign in with is allowed to do on each board.
  • Card descriptions can now use "Custom text (with merge tags)", letting you write a description once in a rich text editor with merge tags such as {all_fields} that each card fills in from its own entry.

✨ Improved

  • GravityBoard merge tags and their options (assignees, votes, voters) now appear in the GravityKit Visual Merge Tag picker, and @ mention emails offer their own tags, such as {notifier_name}, for the subject and body.
  • Changing a card's Label to a different value now moves the card to the matching lane when the Label and lanes use the same field.
  • Conditional logic on fields that store a user, post, or entry ID (such as Dynamic Lookup, Populate Anything, or Nested Forms fields) now matches the name the field displays, not just the ID, though "is" and "is not" rules with a numeric value still compare against the ID.

🔒 Security

  • Improved permission checks on boards that limit which cards each user can see.
  • Improved the security of file attachments, mention emails, merge tags, voting, board style settings, and rich text in cards and notes.
  • Board pages and notes now share less user information with people who do not manage the board.

🐛 Fixed

  • Issues with conditional logic:
    • Conditions on Entry Date, Date Updated, or Payment Date with a non-date value (such as a merge tag for a text field) caused a fatal error on PHP 8;
    • "Is", "is not", "in", and "not in" conditions on Product, Option, or Shipping field choices matched no entries;
    • Screen readers on translated sites announced the day, month, and year of date conditions in English.
  • On boards where a card's Label used the same field as the lanes, dragging the card to another lane left the Label showing the old lane until the page was reloaded.
  • Cards moved or added by two people at the same time could end up in the wrong order.
  • Permanently deleting a card on a board with "Trigger Form Notifications" turned off did not remove the card's votes.

🔧 Updated

💻 Developer Updates

  • Added board, lane, and card abilities to the WordPress Abilities API under gk-gravityboard/*, runnable at /wp-json/wp-abilities/v1/abilities/gk-gravityboard/<name>/run.
  • Added gk/gravityboard/card/lock_timeout and gk/gravityboard/lane/lock_timeout filters to set how many seconds a card or lane change waits for another change on the same form to finish before it is refused (default: 5).
  • Added gk/gravityboard/attachments/blocked-extensions filter to modify which file extensions are refused on boards that allow all file types.
  • Added gk/gravityboard/merge-tags/assignee-properties filter to modify which user fields the {gravityboard_assignee:<property>} merge tag can output.
  • Breaking change: Board users and card assignees in the board data no longer include email, and a note's user_email is now empty unless the current user can edit forms.
  • The gk/gravityboard/card/sorted hook now skips drags within a lane on boards sorted by votes, since nothing is saved.
  • Feed::get_feed() now returns false for feeds that belong to another add-on.
  • Deprecated Ajax::can_add_attachment() and Ajax::can_delete_attachment() in favor of Attachments::can_upload_attachment() and Attachments::can_delete_attachment().
  • Deprecated Helpers::has_entries_in_lane() in favor of Helpers::get_lane_entry_ids().
Version 1.6.0 permalink

1.5.0 on September 24, 2026

This update makes boards easier to use with a keyboard and screen reader, keeps card saves from changing unmodified fields, and fixes issues with attachments, mention emails and large boards. It also improves security.

🔒 Security

  • Card notes no longer show images loaded from other sites. Such an image could report the IP address and browser of everyone who read the note to whoever added it.

✨ Improved

  • Large boards render faster: cards that are scrolled out of view in a lane are drawn when they come into view.
  • A board holding more cards than it can show now says how many of them it is showing, and sets that number by the server's available memory.
  • A board whose lane field has no choices now guides users how to fix instead of showing an empty space.
  • Non-editable fields are shown read-only in the card.
  • Conditional logic in the board settings works better with a keyboard and screen reader.

🐛 Fixed

  • Saving a card changed fields nobody edited:
    • A title or description containing characters such as & or ' was rewritten;
    • Assignees were cleared on boards with assignees turned off;
    • Tags were cleared on boards with Entry Tags turned off, or while the Entry Tags plugin was deactivated;
    • A field holding 0 was shown as blank and saved blank;
    • Editing a Label mapped to the same field as the lanes moved the card without the board's lane-change notifications.
  • Saving only a card's assignees failed on PHP 8 and left an "unsaved changes" warning. On PHP 7 it did not send "Card Edited" notifications.
  • The card editor:
    • An optional drop down could not be set back to empty;
    • A radio field showed no choice selected when its stored value was a number;
    • The due date could not be set with the keyboard, and it was shown in month/day order even on sites that use day/month;
    • Saving a note without changing its text showed an error;
    • A file dropped on an existing card was uploaded only with the separate Upload Files button.
  • Attachments:
    • The user who uploaded attachemnts was shown as "User #" and a number instead of by name;
    • Uploading a file larger than the server allows showed "No file uploaded." or another unclear message. Such a file is now refused as soon as it is picked, with the maximum upload size;
    • Deleting an attachment required "Who Can Add Attachments", and without it the attachment stayed listed after its file was deleted;
    • Deleting an attachment now also requires permission to view attachments, and a refused delete says which permission is missing.
  • Mention emails:
    • Turning off "Enable Mention Notifications" did not stop them;
    • Boards created by an import or another plugin did not send them;
    • A note mentioning several people sent each of them the email written for the first person, with that person's links. Each person now gets their own.
  • Boards created by an import or MCP ignored the feed defaults until manually updated: nobody could be assigned, @mentions listed nobody, and only administrators had access.
  • Assignee merge tags such as {gravityboard_assignees:names} showed names containing characters such as & incorrectly.
  • Keyboard and screen reader use:
    • Shortcuts such as "?" and "/" did not work until the board had been clicked;
    • Arrow keys and J/K did not move between cards;
    • The card menu ignored the arrow keys, Home and End, and closing it with Escape lost your place;
    • "/" left focus on the filter panel's Close button, and F did not move focus into the fullscreen board;
    • Enter or Space on a vote button opened the card instead of voting;
    • Tags could not be added or removed with the keyboard;
    • Space did not start renaming a lane;
    • Lane titles, menu items, link buttons and the Tags field showed no focus outline;
    • Screen readers heard "1 cards" and "1 Notes", heard nothing for a card's description icon, and could not tell which note an Edit or Delete button belonged to.
  • Lanes and cards:
    • Cards whose lane value matched no lane appeared in an unnamed lane whose actions did not work. They now appear in a lane named "Not set";
    • A new lane given the name of a renamed lane shared its cards;
    • A new card could take the same position as another card, and the two swapped places after a reload;
    • The drop indicator could flicker while dragging a card over another lane.
  • Copying the URL of a board filtered by "No assignees" or "No label" opened a different filter.
  • A card's Activity list did not load its notes on sites using Plain permalinks in WordPress.
  • The admin board screen told administrators they had no permission to view a board that was switched off.
  • Conditional logic on product prices matched the wrong entries on sites whose currency uses a comma for decimals or puts the symbol first.
  • Opening or closing a date picker in conditional logic scrolled the page.

🔧 Updated

  • The minimum required WordPress version is now 6.5 and the minimum PHP version is 7.4.
  • Foundation to version 1.33.0.

💻 Developer Updates

  • New filters:
    • gk/gravityboard/notes/allowed-html sets the HTML a card note may contain. Add img back to allow images in notes.
    • gk/gravityboard/data/max-entries sets how many entries a board renders. It receives the cap the server can afford and the feed. The default is set by the request's memory limit, between 250 and 1,000 cards.
    • gk/gravityboard/data/pagination changes the pagination data the cards endpoint returns: total, per_page, offset, count and has_more.
    • gk/gravityboard/renderer/skip-offscreen-cards turns off drawing cards only when they scroll into view. Safari's find-in-page does not match text in a card that has not been drawn.
    • gk/gravityboard/card/writable-fields lists the mapped card fields a card save may write. Removing a key keeps the mapping but stops saves writing that field.
    • gk/gravityboard/card/comparison-value sets the form of a field value used to decide whether a card save changed it. The value written is unaffected.
    • gk/gravityboard/card/self-managed-keys lists card keys an integration fills in itself through gk/gravityboard/card/data, so the card does not also fill them from the entry.
    • gk/gravityboard/feed/field-config changes the editor configuration the board sends for each mapped form field.
  • An attachment over the upload size limit is refused with the error code gk_gravityboard_file_too_large.
  • Feed::DEFAULT_DARK_TEXT_COLOR and Feed::DEFAULT_LIGHT_TEXT_COLOR are deprecated in favor of the same constants on GravityKitGravityBoardIntegrationsEntryTags.
Version 1.5.0 permalink

1.4.5 on September 10, 2026

This update strengthens how board permissions are enforced, improves data handling when creating and updating cards, and fixes notification handling.

🔒 Security

  • Improved how permissions are enforced when a card is viewed or changed, and when entry notes and attachments are turned off. All users are advised to update.

✨ Improved

  • Checkbox and multiselect fields on a card are now edited with multi-value controls. They previously rendered as a single-choice control.

🐛 Fixed

  • Multiple bugs associated with data loss when editing and creating cards.
  • Checklist editing not working for users who had the capability, based on board configuration.
  • Issues around due dates:
    • A card due today showing as "Overdue" too early;
    • "Due in the next day" matching only cards due today, leaving out tomorrow's;
    • "Due in the next week" and "Due in the next month" now better cover the periods described.
  • Assignee notification issues:
    • Notifications set to "Assignee(s) Added", "Assignee(s) Removed" and "Assignee(s) Updated" never sending when a card's assignees changed;
    • {gravityboard_assignee_email} and {gravityboard_assignee:display_name} merge tags arriving as literal text.
    • Notifications continuing to send after a board's "Trigger Form Notifications" setting was turned off.
  • Errors uploading files while creating a new card will keep the form open, making it possible to try again.
  • A required checkbox or multiselect field with nothing selected passed validation.
  • Pressing Escape while editing a field on a card closed the whole card instead of the field, and in Safari the unsaved-changes prompt could flash and disappear without being answered. Escape now leaves the field and puts the cursor back on it.
  • Embedding more than one board on a page would not show anything for the second board. Administrators are now shown a message that only one board can be rendered per page.
  • A board whose form has been deleted didn't show a notice.
Version 1.4.5 permalink

1.4.4 on September 3, 2026

This update brings the GravityBoard block up to date with the current WordPress editor, and restores the Active toggle on the All Boards screen.

✨ Improved

  • The GravityBoard block now previews inside the WordPress editor's iframed canvas, and the editor no longer logs a deprecation warning for it. Pages saved with earlier GravityBoard versions keep working unchanged.

🐛 Fixed

  • The Active/Inactive toggle on the All Boards screen displayed as a plain, unstyled button.
Version 1.4.4 permalink

1.4.3 on August 27, 2026

This update fixes boards failing to load on sites that optimize JavaScript, card edits being reported as saved when validation failed, and several display and messaging issues.

🐛 Fixed

  • Boards failing to load on sites that minify JavaScript through a caching or optimization plugin — the board's script and stylesheet now ship as .min files, which those plugins pass through instead of re-minifying and corrupting.
  • Editing a card reporting success when a field failed validation, leaving the entry unchanged — the card now marks the fields that need attention.
  • Validation messages showing %d in place of the number of fields that need attention when a single field fails.
  • Cards showing a choice's stored value instead of its label, so a drop-down, radio button, or checkbox field with separate values now displays "GravityMath" rather than "gravitymath".
  • The icon on the board's loading screen appearing to the left of the text instead of centered above it on themes that render SVGs as blocks.
  • A "translation loading was triggered too early" notice on WordPress 6.7 and newer, caused by the voting fields loading their translations during plugin bootstrap.

💻 Developer Updates

  • PATCH gravityboard/v1/boards/{feed_id}/cards/{entry_id} now responds with a 400 and a validation_failed error when a mapped field fails validation, instead of a 200 with a success message.
  • Checklist::validate() now returns a WP_Error when the checklist holds an item that is not a ChecklistItem, instead of raising an argument-count error on PHP 8.
Version 1.4.3 permalink

1.4.2 on June 4, 2026

This release fixes an issue where deleting attachments from a card could fail with an invalid file path error on sites with custom upload directories, symlinks, or multisite configurations.

🐛 Fixed

  • Card attachments cannot be deleted when the site's upload directory uses a custom path, lives under a symlink, runs on multisite, or surfaces paths with mixed / and separators.
Version 1.4.2 permalink

1.4.1 on April 27, 2026

This release fixes an issue that prevented boards from loading on the frontend, along with a missing Add Condition button (used to configure conditional logic on a board) in the feed settings.

🐛 Fixed

  • Boards remain stuck on the loading screen and never display their lanes or cards.
  • The button to add conditional logic rules is missing from the Advanced tab of the GravityBoard feed settings page.
Version 1.4.1 permalink

1.4.0 on April 23, 2026

Let your team or community decide what matters most with GravityBoard Voting! Users upvote and downvote board cards to prioritize feature requests, surface winning ideas, or run polls. Set a vote budget per user, restrict voting to specific lanes, and display voting inside GravityView layouts. This release also improves REST API error handling and conditional logic, fixes a regression affecting admin board access, and adds an admin-bypass permission filter.

🚀 Added

  • Card voting: Upvote and downvote buttons on every card let users signal what matters most. Each click adds +1 or -1 to a user's weight on that card, so supporters can stack multiple votes behind the ideas they care about. Optional per-user vote budgets (daily, weekly, monthly, yearly, or all-time) limit how many votes each user has.
  • Lane-scoped voting: Enable voting only in the lanes where it makes sense, such as "Ideas" or "Under Review" but not "Done." Cards in restricted lanes show a disabled widget so the vote count remains visible.
  • Upvote-only mode: Hide the downvote button entirely for boards where downvoting doesn't belong, such as feature requests or idea boards. Users get a dedicated remove-upvote button to walk their vote back toward zero.
  • Voting permissions: New "Who Can Vote on Cards" and "Who Can See Who Voted" settings open voting to a broad audience while keeping voter identities visible only to admins or editors.
  • Vote weight and budget indicators: Each card shows a weight badge when a user has stacked multiple votes (up or down), and the vote widget displays how many votes remain in the user's budget so they can pace their support.
  • Voters list: Optionally see who voted on a card, with a "(You)" badge next to the current user.
  • GravityView integration: Display and collect votes inside GravityView layouts:
    • "Entry Voting" field renders the interactive vote widget in any layout;
    • "Votes Count" field shows a read-only count, sortable in Table layouts;
    • "Voted By" Advanced Filter targets entries the logged-in user has voted on, for Views like "My Voted Ideas";
    • Default View sort by Votes Count, ascending or descending;
    • Vote counts and remaining budget stay in sync across multiple vote widgets on the same page.
  • Notification merge tags: Use {gravityboard_votes:count|average|total|up|down} and {gravityboard_voters:emails} to include vote data and voter email addresses in any Gravity Forms notification. Email every voter when a card moves lanes, surface popularity metrics to subscribers, or build admin digests.

✨ Improved

  • Shows an error message when the REST API fails to load board data, instead of a silent blank board.
  • Enhanced conditional logic:
    • Empty field values are no longer treated as today's date when using is on, is not on, is before, or is after filters;
    • Filters on deleted or missing forms (e.g. when viewing feed settings for a removed form) no longer trigger errors;
    • Admin-only filters (those suffixed :disabled_admin) no longer error out when applied to multi-value fields.

🐛 Fixed

  • Administrators losing access to boards on sites that rely on the gform_full_access capability.

💻 Developer Updates

  • Added gk/gravityboard/permissions/admin-has-full-access filter to control whether administrators bypass all board permission checks. Read the documentation.
Version 1.4.0 permalink

1.3.0 on February 5, 2026

This release adds Gravity Forms Entry Tags support for board cards, fixes date fields showing one day off, and resolves non-admin users not appearing as assignees.

🚀 Added

  • Support for displaying Entry Tags as color-coded labels on board cards, which can be edited from the card detail view and used to filter the board.

🐛 Fixed

  • Date fields displaying one day off when the WordPress timezone differs from UTC.
  • Non-administrator users not appearing as assignees when their roles were selected in board settings.
Version 1.3.0 permalink

1.2.1 on November 13, 2025

This release improves the GravityBoard experience with better attachment handling, translation fixes, and a new developer setting for board focus.

✨ Improved

  • GravityBoard Attachments metabox now appears consistently on all Entry Details pages when GravityBoard feeds exist for the form, providing better context and discoverability.

🐛 Fixed

  • Embedded boards scrolling automatically when the page loads.
  • Attachments not deleting from the Entry Details page.
  • Some translations not loading correctly.

💻 Developer Updates

  • Added boolean $board_settings[settings][auto_focus] setting to toggle auto-focusing of cards, modifiable via the gk/gravityboard/board-settings filter.
Version 1.2.1 permalink

1.2 on August 14, 2025

This release introduces checklist templates, more granular board permissions, developer tools for working with checklists, along with important bug fixes.

🚀 Added

  • Checklist templates: Added the ability to configure default checklist items that are automatically applied to new entries. Templates can be configured in the Advanced settings tab of each board feed. When multiple feeds are active, their templates are merged sequentially.
  • More granular board permissions: Multiple roles can now be applied to each board permission, allowing for more granular control over who can access and manage boards.

✨ Improved

  • Conditional logic controlling what cards are displayed is now more powerful, allowing you to add AND/OR groups and powerful filtering options.

🐛 Fixed

  • Some checklist items were not deletable or editable.
  • Fatal error when trying to access board block settings using an invalid or deleted form ID.

💻 Developer Updates

New Action:

  • Added gk/gravityboard/checklists/templates-applied - Fires when checklist templates have been applied to an entry, providing the merged collection, entry data, applied feed IDs, form data, and count of items added.

New Methods:

  • ChecklistCollection::flatten() - Combines all checklists in a collection into a single checklist with all items merged sequentially. Returns null if the collection is empty.
  • Checklist::add_items() - Batch add multiple items to a checklist for improved performance (~50% faster than adding items individually). Validates all items before adding and returns WP_Error if any validation fails.
  • Checklists::get_feed_template() - Retrieve the checklist template configuration from a feed's settings.
  • Checklists::parse_template() - Parse checklist template text (one item per line) into a ChecklistCollection object.
Version 1.2 permalink

1.1.1 on July 4, 2025

This patch release restores compatibility for older PHP versions and removes warnings in newer ones.

🐛 Fixed

  • Boards appeared empty after updating to version 1.1 on sites running PHP 7.4.
  • Inconsistencies in date handling for attachments and notes.
  • PHP 8.1+ compatibility warnings in the ErrorCollection class.
  • Some translation strings were not being handled correctly.
Version 1.1.1 permalink

1.1 on July 3, 2025

This release introduces checklists in cards, GravityView integration, and major accessibility improvements.

🚀 Added

✨ Improved

  • Added a screen option to set the number of boards per page in the All Boards page.
  • Displayed unsaved changes warnings when navigating away from a modified card.
  • Added "Allow All File Types" setting in the Advanced board settings section to control whether attachment uploads bypass WordPress file type restrictions.
  • Enhanced keyboard accessibility and focus management throughout the interface.
  • Improved drag-and-drop experience with better auto-scroll behavior and visual feedback—if you drag a card to the edge of the screen, it will automatically scroll your board to reveal additional lanes.
  • Enhanced the Boards Overview page with improved capability management and user experience.
  • Improved modal positioning and responsiveness across different screen sizes.
  • Provided better error handling and validation feedback for form submissions.

🐛 Fixed

  • Errors when editing a note after submitting a note.
  • Drag-and-drop reordering not saving properly in certain scenarios.
  • Keyboard navigation issues when using Tab and Enter keys on interactive elements.
  • Modal focus management to ensure proper accessibility behavior.
  • Enter key not opening the "View in Gravity Forms" link when focused.
  • Board permissions not working correctly for non-admin users when role management plugins were active.
  • Layout issues when cards contained many attachments.

💻 Developer Updates

Added new filters and actions to allow for more flexibility and customization of the checklists feature and GravityView integration. See all available filters and actions.

Filters:

  • gk/gravityboard/checklists/export-value filter to allow filtering the export value for checklists.
  • gk/gravityboard/translation-overrides filter to override translations. Read the documentation.
  • gk/gravityboard/board-settings filter to make it easier to add custom settings to the board settings page.
  • gk/gravityboard/card/data filter to allow filtering the card data before being returned from the REST API and rendered in the frontend.

Actions:

  • gk/gravityboard/checklists/updated action to run when checklists have been updated.
  • gk/gravityboard/checklists/item/added action to run when a checklist item has been added.
  • gk/gravityboard/checklists/item/updated action to run when a checklist item has been updated.
  • gk/gravityboard/checklists/item/deleted action to run when a checklist item has been deleted.
Version 1.1 permalink

1.0.2 on June 20, 2025

This update improves the user interface for board visibility and permissions while fixing role-based access to feeds.

✨ Improved

  • Showed "All Boards" link in the GravityKit menu when the user has permission to access any active boards.
    • Only boards the user has permission to access will be listed.
  • Added notices in the Board Permissions settings to explain when associated settings are disabled.

🐛 Fixed

  • Feeds not being editable for non-admin users when role management plugins were active.
  • Potential fatal error on the All Boards page when no boards were found.
Version 1.0.2 permalink

1.0.1 on June 13, 2025

🐛 Fixed

  • Error adding GravityBoard scripts to Gravity Forms no-conflict list.
Version 1.0.1 permalink