You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fixed: A blank first line in a CSV or XLSX no longer becomes the header row, which silently truncated the import to a single column
Fixed: XLSX files whose first worksheet is not sheet1.xml now import correctly — the sheet is resolved through the workbook relationships instead of being assumed (affected files exported by LibreOffice, Google Sheets, and workbooks with reordered or deleted sheets)
Fixed: XLSX cells that omit the optional r cell-reference attribute no longer collapse an entire row onto its first column
Fixed: Exported CSV files now start with a UTF-8 BOM so accented values open correctly in Excel instead of being mangled
Fixed: The "No value" fallback now resolves the preceding column correctly on fields with nine or more columns, where Gravity Forms skips input indices that are multiples of ten
Fixed: The wrong-file-type message in the form editor now mentions CSV and XLSX; the previous implementation hooked a filter the Chained Selects add-on never applies, so the override never took effect
Fixed: The form editor script no longer throws when fieldSettings.chainedselect has not been registered yet, which aborted the rest of the inline setup
Fixed: The frontend choice cache is now actually delivered to the page. Gravity Forms renders forms through gform_pre_render before wp_enqueue_scripts runs and caches the result, so the inline data had nothing to attach to and the cache never shipped — every chained select fell back to a server round trip on each column. The data is now held and flushed once the script is registered
Improved: Choice export streams row by row instead of building the entire expanded combination set in memory first, so large fields no longer exhaust memory
Improved: Frontend script exits immediately on pages with no chained select instead of polling for six seconds, and the jQuery $.post interception is only installed when a chained select is actually present
Improved: Failed GitHub update checks are cached for 30 minutes, so a rate-limited or unreachable API no longer retries a 15-second request on every admin page load
Security: Capability and nonce checks now run before the uploaded file is opened and parsed
Security: The XLSX parser restores libxml global state after parsing instead of leaving entity loading and error handling altered for the rest of the request
Fixed: The per-column unique value limit is now measured on the sanitized values that actually reach the choice tree, so whitespace variants no longer inflate the count