=== FileDeck – earlier releases ===

Releases older than the ones in readme.txt. Entries move here as they age out, so the readme's Changelog stays inside wordpress.org's 5,000-word limit.

= 2.93.0 =
* Migrations now register a plugin-managed file that lives on your own site as a Media Library attachment where it already sits (not copied or moved), instead of linking it by URL. A URL-linked document had no zip checkbox, no preview button and no thumbnail; an attached one has all three. Applies to every importer (Pro).
* Already migrated? Settings → Health now counts documents that link a local file by URL and attaches them in one click, 100 at a time — or all at once with `wp filedeck attach-local-files`.
* The weekly health scan reports those documents as their own check rather than probing them as external links.

= 2.92.1 =
* Hover preview cards are now off by default. Switch them on under Settings → Features → "Hover preview cards" if you want them.
* Fixed: on sites where the card did show, it could render with no background — see-through, over the rows beneath it. It now carries its own surface, border and shadow.

= 2.92.0 =
* New (Pro): a Share button on every document — in the library beside Download and on the document's own page. It copies the link, opens the device's share sheet where the browser has one, or sends the document by email, X, Facebook, LinkedIn or WhatsApp. Off by default: switch it on and pick the networks under Settings → Features, or per library with enable_share="1".
* It shares the document page, never the file, so signed, gated and restricted downloads stay that way for whoever receives the link, and it loads nothing from any network until a visitor picks one.

= 2.89.0 =
* Google reCAPTCHA v2 joins Cloudflare Turnstile as a bot-protection option (Pro). Pick the service under Settings → Submissions; the one choice covers both the download bot gate and the front-end submission form.
* Switching service keeps the other service's keys rather than deleting them, and a value that is neither reads as Turnstile rather than as no gate at all.

= 2.88.0 =
* Theme template overrides: copy a template into your theme's filedeck/ directory to replace library markup without forking the plugin. The table row and the empty state are overridable to start with; child theme wins, then parent, then the plugin's own copy.
* The files in the plugin's templates/ directory are the ones FileDeck renders, so what you copy is exactly what you are replacing.

= 2.87.0 =
* Native Document Library and Document Embed elements for WPBakery (Visual Composer), Avada (Fusion Builder) and Beaver Builder, joining the ones already there for Elementor, Bricks and Divi. Oxygen has no native element: use its Shortcode element with [filedeck].
* The control-to-attribute map behind all of these now lives in one place, so a control cannot quietly stop working in one builder while it keeps working in the others.

= 2.86.0 =
* Membership-plan gating (Pro): restrict a category or a document to holders of a MemberPress, Paid Memberships Pro, WooCommerce Memberships, Restrict Content Pro or s2Member plan. Access follows the membership, so when it lapses the document goes with it. Other membership plugins can register themselves with a filter.

= 2.85.0 =
* Favourites (Pro): signed-in readers can star documents and read the list back on any page with [filedeck_my_favourites]. Access is re-checked when the list is read, so a document restricted since it was starred drops out of it.
* A "New" marker now shows in the grid and gallery layouts too, not only in the table.

= 2.84.0 =
* "Match my theme" now tries your theme's second brand colour before falling back to your text colour. On themes whose first palette colour is a pale tint, the library used to turn black and white; it now picks up the colour your site actually uses.

= 2.83.0 =
* New: AI agents can search your library. FileDeck registers three read-only abilities with WordPress 6.9's Abilities API, so agents reach them through the MCP Adapter. Results are access-filtered — a restricted document does not appear, not even its title — and agents are given a page link rather than a download URL.

= 2.82.0 =
* New: a "date added" filter — Any time / Past week / month / 3 months / year — so a long library narrows to what arrived recently. Off until you switch it on, and available per library. You can also pre-filter without showing the control with `period="30"`.

= 2.81.0 =
* New: a `views` column shows how many times each document has been looked at, sortable like any other column. Needs activity logging; with it off the column shows a dash rather than a zero.
* New: Duplicate a document from the Documents list. The copy keeps categories, custom fields, access rules and delivery settings, starts as a draft, and does not inherit the original's download or view counts.

= 2.80.0 =
* The folders layout now follows your category hierarchy: a sub-category renders inside its parent, as deep as your categories go. Each folder's count includes its sub-folders, and Download all on a parent takes them too.
* New: a select-all checkbox in the table header ticks every document at once — or, in the folders layout, just that folder.

= 2.79.0 =
* New: mark library rows as new since a signed-in visitor last looked, and dim the ones they have already downloaded. Read from the activity log and a per-person timestamp; logged-out visitors see no markers.
* New: send someone who opens a document they cannot access to a page of your own — a "request access" page — instead of a not-found page. Documents assigned to named people, to a group, or filed in a client area keep the not-found page, so their existence is not disclosed.

= 2.78.0 =
* New: search synonyms. Define groups of equivalent terms so "PO" finds "purchase order". Each word you type is still required; a synonym only widens what satisfies it.
* New: spelling tolerance. A search that returned no results is retried against the closest spelling from your titles, categories and tags, and the library says which word it used. Only ever a fallback — a search that found something is not second-guessed.

= 2.77.0 =
* New: groups. Name a set of people once, then give that group a client area or an individual document. Change the membership and every grant follows.
* Fixed: a document shared with a group now appears in that member's library, not only on its own page.

= 2.76.0 =
* New: admit a whole company to a client area by email domain, so someone who joins that domain later gets in without the category being edited. Named people, groups and domains are all honoured together.
* New: [filedeck_my_downloads] shows a signed-in visitor what they have already downloaded. Documents they can no longer access drop out of the list.

= 2.75.0 =
* New: single-use download links. A link that works for exactly one download and then stops, for sending a document to one person. It expires after 7 days if unused.
* New: optional hotlink protection refuses downloads requested from another site's pages. Requests with no referrer, and signed share links, are unaffected.

= 2.74.0 =
* New: IP rules. Limit downloads to chosen addresses or CIDR ranges, or block specific ones. Applies to every download, signed share links included. Site administrators keep access, so a mistyped rule cannot lock you out.
* New: assigning a document to named people now emails them, the same as publishing into a client area already did.

= 2.73.1 =
* "Match my theme" now inherits from far more themes. It already read block-theme palettes; it now also reads Astra, Kadence, GeneratePress, OceanWP, Blocksy, Neve, Lightning, Sydney and Elementor's global colours.
* Fixed: on Twenty Twenty-Three and Twenty Twenty-Four, "Match my theme" adopted a decorative pastel as the button colour, leaving buttons that could not be read. FileDeck now checks the inherited colour for contrast and falls back to your theme's own text colour when it would be illegible.
* Fixed: on Twenty Twenty-Five, "Match my theme" did not pick up the theme's accent colours and used the FileDeck blue instead.

= 2.72.7 =
* Fixed: an uninstall helper used a direct PHP file check where WordPress's own wrapper is required. No behaviour change; it clears a wordpress.org review error.

= 2.72.6 =
* Fixed: labels that share the filter-chip style — the "AI tier" tag beside a setting, for example — were drawn with a "×" as though you could dismiss them. The × now appears only on an active filter chip, which is the one you can actually remove.

= 2.72.5 =
* Fixed: the "enter your details to download" form and the document preview box are now announced properly by screen readers — both fields have real labels and autofill hints, and each box identifies itself as a dialog.
* Changed: this readme's feature list now covers check-out & editing locks, server-folder import, vault offload and multisite shared libraries, all of which already shipped, and describes access control accurately (role restrictions apply to categories; password protection applies to either).

= 2.72.4 =
* Fixed (AI tier): a document whose title contains an ampersand was listed under an "Ask this library" answer with the raw HTML code showing — "Returns &#038; Refunds Policy" instead of "Returns & Refunds Policy". The title is also now passed to the AI unescaped.

= 2.72.3 =
* Fixed (AI tier): answers from Fireworks models could contain stray citation markers such as 【1†L1-L4】 in the middle of a sentence. They are now rendered as [1], matching the numbered sources listed under the answer.
* Changed (AI tier): Fireworks requests now ask for a low reasoning budget. Reasoning counts against the answer's token allowance, so this makes answers cheaper and faster, and stops a long deliberation from using up the whole budget and returning nothing. Models that don't accept the setting are detected and retried without it.

= 2.72.2 =
* Added (AI tier): Fireworks AI joins Anthropic and OpenAI as a chat provider for "Ask this library" and the AI summary & tag suggestions. Bring your own Fireworks key; the default model is gpt-oss-120b, and you can set any Fireworks model id (a bare id is qualified for you).
* Changed: the chat provider list on the Settings screen is now built from the registered providers, so a provider added by the filedeck_chat_providers filter is both selectable and saveable.
* Fixed: this readme described the AI features as part of Pro. They are the separate AI tier and are not included in Pro.

= 2.72.1 =
* Fixed: if a second copy of FileDeck was installed alongside the first (most often the Pro download added as its own folder while the free version was still active), activating it failed with WordPress's "plugin could not be activated because it triggered a fatal error". FileDeck now stands down cleanly and tells you which copy is running and which to remove.
* Added: document revision history. Edits to a document's description are recoverable from the editor, the same as posts and pages.
* Fixed: "Custom order" under Documents > Settings > Library now works. The option was selectable but there was no way to set an order, so it had no effect; documents now have an Order field in the editor sidebar.

= 2.72.0 =
* Security and reliability improvements across document access, imports and outbound email.
* Changed (Pro): per-role daily download allowances apply to signed-in visitors, counted per person. If you have per-role allowances configured, check the numbers under Documents > Settings > Downloads after updating — some may not have been taking effect.
* Changed (Pro): documents with a download limit, and sites with download allowances configured, are no longer served to automated clients such as search engines, link previews and uptime monitors. A bot can no longer spend a limited document's allowance, and people are unaffected.
* Changed (Pro): the activity log records the signed-in person against downloads, terms acceptances and acknowledgements, and files acknowledgements, transmittals, retention and access reviews under their own event types rather than counting them as downloads. Existing reports will change shape accordingly.
* Changed (Pro): importing from another document plugin no longer publishes items the source was keeping out of public view — where the source stores documents as posts, anything draft, pending or private arrives as a FileDeck draft for you to review and publish.
* Changed (AI): a watermarked PDF carries the downloader's email address when they are signed in, as intended, rather than always reading "a visitor".
* Changed (Pro): uninstalling leaves a plain-text note in the protected-files folder explaining what is in there and how to get it back. The files stay protected — removing the plugin does not make restricted documents publicly downloadable.
* Fixed (Pro): "Delete all data on uninstall" also removes transmittal records and smart collections. Uninstalling now clears FileDeck's scheduled tasks either way.
* Fixed (Pro): a category password containing symbols such as % or < is stored exactly as typed. If you set one that never accepted the password you chose, re-save it.
* Fixed (AI): starting a PDF accessibility scan completes in the background and fills in the report.

= 2.71.2 =
* Fixed: on a short browser window, a filter with a long list of categories now shrinks and scrolls rather than running off the top or bottom of the screen.

= 2.71.1 =
* Fixed: opening a category, tag or custom-field filter pushed the whole document table down the page. The filter panel now opens over the library instead of inside it, so nothing moves, and it closes when you click away or press Escape.

= 2.71.0 =
* Added: the free version now says what the paid tiers add, at the point it is relevant — a preview of the Visibility control on the document screen, the Settings sections Pro adds, a note when another document plugin on the same site has documents FileDeck could import, and a note about searching inside files once a library grows past a few hundred documents. Each one is dismissible for good, none of them block anything, and nothing that worked before has been locked or removed.

= 2.70.1 =
* Fixed (Pro): the new bulk access actions changed a document's visibility without moving its file into the protected vault, so documents bulk-restricted in 2.70.0 were hidden from libraries while their files stayed publicly reachable. Re-apply the access change on any documents you bulk-restricted, or re-save them, and the files will be protected correctly.
* Fixed (Pro): a document assigned to specific people is now visible to administrators in libraries, as described. It was being hidden from them too.
* Fixed (Pro): the list of people on a document now always includes everyone already assigned, however many users the site has. Previously, on sites with more than 200 users, re-saving a document could drop an assignee who was not shown.
* Fixed (Pro): the people picker is only shown to users who are allowed to list site users, and email addresses are hidden from anyone who is not.
* Fixed (Pro): deleting a user, or removing them from a site, now clears their document assignments.
* Fixed (Pro): "Download all" on a folder now downloads the documents you can see, rather than the whole folder, when a search or filter is narrowing it.

= 2.70.0 =
* Added (Pro): assign a document to specific people. Only they (and administrators) can see or download it — and it does not appear in anyone else's library at all, not even as a locked row, so one client can never learn what another client has.
* Added (Pro): "Download all" on a folder, which zips everything in it in one go. It passes the same lead-capture, terms and bot checks as any other download.
* Added (Pro): bulk access changes from the Documents list — make a selection public or logged-in-only in one action, for reorganising a large import.

= 2.69.0 =
* Fixed: a library added to the page after it loads — by a page builder's tabs or popup, a theme's own scripting, or anything else that inserts content later — now starts properly instead of rendering correctly and then doing nothing. Previously its search box, filters and sortable columns were all inert, with nothing to indicate why.
* Added (developers): `window.filedeckInit( element )` starts any library that isn't already running, and each one fires a bubbling `fdk:ready` event as it starts. Safe to call more than once — a library that is already running is left alone.

= 2.68.0 =
* Added: filters are multi-select — pick several categories, tags or custom-field values at once and the library shows documents matching any of them. Different filters still narrow each other.
* Added: every filter option shows how many documents are behind it, and the counts re-narrow as other filters and the search box change.
* Added: an active-filter bar above the library naming each applied value, with a Clear all. Removing one leaves the rest in place.
* Added: sort by more than one column — shift-click (or Shift+Enter) a second heading to add it as a tiebreaker, up to three columns, with a number showing the order.
* Added: the sort order and page number now travel in the shareable link alongside the search term and filters, so a copied link reproduces the whole view.
* Added: infinite scroll as a third pagination mode. The Load more button stays on the page for keyboard and screen-reader visitors, and it pauses for a click after five automatic loads.
* Added: an optional fixed library height (Settings → Display, or height="600px") that scrolls the documents in place while the search box and filters stay put.
* Added: filters can sit under the table's column headings instead of in the bar above (Settings → Display, or filter_position="headings").
* Added (Pro): full-text search now reads OpenDocument files (.odt, .ods, .odp) alongside PDF, Word, Excel and PowerPoint. Existing OpenDocument documents are re-indexed in the background after updating.

= 2.67.1 =
* Changed: tested against WordPress 7.1 (added to the automated test matrix alongside 6.4 and 7.0).

= 2.67.0 =
* Improved (Pro): the Documents menu in wp-admin is grouped by the job you're doing — a new Compliance section for acknowledgments, review cycles, retention, certification, transmittals and accessibility; Insights limited to analytics and the activity log; People renamed Audience; and Collections beside the document categories and tags. A section appears once you have at least two of its screens, so a screen you have on its own simply keeps its own entry.
* Fixed (Pro): several FileDeck screens were listed after Settings in the Documents menu rather than before it. Every screen keeps its existing address, so bookmarks and saved links are unaffected.

= 2.66.0 =
* Improved: the Copy link button above a library now appears once a search, category, tag or custom-field filter is active, instead of on every untouched library where it would copy the address your browser is already showing. The link itself is unchanged.
* Added: a "Copy link" button checkbox under Settings → Features, for sites that would rather not offer it at all.

= 2.65.0 =
* Improved: choosing "I couldn't understand how to make it work" when deactivating now offers an optional text box for what was unclear, plus direct links to the quick-start guide and support — get help on the spot instead of giving up.

= 2.64.0 =
* Added: several libraries on one page now keep independent search/filter/share state — Copy link records each library's own view, a shared link restores each one independently, and pre-2.64.0 links keep working (they target the page's first library).
* Added: an optional empty-state link (Documents → Settings, or empty_link_text + empty_link_url on the shortcode) so a "can't find it? let us know" message can point at your contact page.
* Fixed: the empty-state message swap no longer rewrites the whole element, so the link survives search/filter changes.

= 2.63.0 =
* Added: the FileDeck Library Elementor widget's Categories and Columns are now proper pickers — categories are chosen from a list of your real categories (no slugs), and columns from a list of every available column (they render in FileDeck's standard order; use the shortcode for a custom order). Old text-based values keep rendering unchanged.
* Added: administrators now see an on-page note when a library is showing FileDeck's sample documents, with one-click links to add real documents or remove the samples. The note is admin-only and never appears in anonymous output.
* Added: the CSV import result screen lists any categories or tags the import newly created, and the help text + sample CSV now show the | separator for putting a document in several categories.
* Fixed: search no longer matches documents on leftover HTML codes from names containing "&" (a "CAD & 2D models" category made the query "amp" match every document in it), and the hover card shows "&" correctly in category names.
* Fixed: the search box keeps its icon spacing and the "Copy link" button keeps its quiet secondary look under themes with aggressive input/button CSS.

= 2.62.0 =
* Added: two new Elementor widgets — **FileDeck Search** (a standalone search box that lands on your library page with the query applied) and **FileDeck PDF Viewer** (the Document Embed widget under the name the widget panel is actually searched for; same controls).
* Added: native **Document Embed** elements for Bricks and Divi alongside the existing Document Library elements — document ID, height/width, optional download link and title caption.
* Added (Pro): the Elementor Document Embed widget gains a Style tab — frame border, radius, background, and an accent colour for the controls inside the embed.
* Fixed: with JavaScript unavailable, a FileDeck-viewer embed now falls back to the browser's own PDF display instead of an empty frame.

= 2.61.0 =
* Added (Pro): the FileDeck viewer — a self-hosted PDF viewer for inline embeds (`engine="pdfjs"`, or site-wide under Settings → Features → Document viewer). Zoom, page navigation, in-document find with highlighted matches, print, and a real selectable text layer, all served from your own site. Because no external viewer service is involved, protected files, signed links, view-only streams and watermarked documents all render.
* Added (Pro): popup mode for the inline embed (`mode="popup"`, or the block/Elementor toggle) — a View button opens the document in an overlay, and the document loads only when opened.
* Fixed: the bundled pdf.js module files are named .js so servers that don't map the .mjs extension serve them with a JavaScript MIME type; affected the Publish embed's PDF preview on such servers.

= 2.60.0 =
* Added: the inline document embed is now a free feature — embed a PDF, image or pasted Google Docs/Sheets/Slides/Drive link as an always-visible viewer with the `[filedeck_embed]` shortcode, the Document Embed block or the Elementor widget. Pro continues to add Office, audio and video embeds.
* Added: embed display options — width (px or %), an optional download link under the viewer, a full-screen button (on by default), and a per-embed viewer engine.
* Added: a site-wide "Document viewer" setting (Settings → Features) chooses how PDFs and Office files render: automatic, browser built-in only (no external viewer services), or the Google Docs viewer.
* Added: pasted Google Docs, Sheets, Slides and Drive share links now embed and preview as live documents (the raw link refuses to display inside a page). YouTube and Vimeo link previews (part of Pro's extended previews) now use each provider's privacy-friendly player instead of a blocked page.
* Changed: protected files never render through external viewer services (Microsoft/Google) — they fetch the document from their own servers, which would disclose a protected file to a third party. Protected PDFs and images now preview through their signed URLs; protected Office files fall back to a download button. The `filedeck_external_viewer_for_protected` filter restores the old behaviour if you accept the disclosure.

= 2.59.0 =
* Added: arrange the Folder layout's folders manually — give a category a "Folder order" number on the category edit screen (Documents → Document Categories). Numbered folders come first, lowest number first; folders without a number stay alphabetical, and the "Other" folder stays last.

= 2.58.0 =
* Changed: pagination now shows a window around the current page (first/last, neighbours, an ellipsis for the rest) with Previous and Next controls, instead of one button per page — a few thousand documents previously produced hundreds of numbered buttons. Keyboard focus stays on the control you used.
* Fixed: automatic retention walks its candidate documents in batches. With a retention rule on a broad category — the usual setup — the nightly pass previously loaded details for every document in that category at once, which on a large library could exhaust memory and stop the pass. Which documents are due is unchanged.
* Fixed: vault offload sizes its mirror limit against the server's PHP memory instead of a flat 100 MB, so one large file can no longer exhaust memory and abort the whole nightly mirroring run. Files above the limit keep streaming locally as before, each is noted once in the activity log, and they no longer use up that day's mirroring budget. If you filter `filedeck_offload_max_bytes` relative to the value it is given, it now receives the memory-derived limit rather than a fixed 100 MB.

= 2.57.0 =
* Changed: category restrictions now apply to sub-categories. A restriction set on a category — a role, a password, or a client area — covers documents filed in any category beneath it, and those sub-categories no longer appear in category lists or dropdowns for people who cannot see the parent. Note: files in those sub-categories move into protected storage, so raw file URLs shared outside FileDeck stop resolving; download links in your library, client portals and emails are unaffected.
* Fixed: server-folder imports (and the daily re-scan) now identify each file by its path rather than its position in the folder listing. Adding a file that sorted before an existing one used to shift everything after it, so the new file was skipped and another document was imported twice. Documents imported before this release are recognised and carried over on the first re-scan.
* Fixed: saving Settings while a licence is expired no longer switches off premium features. Terms gating, the bot gate, form gating, retention, download logging and the webhook, quota and API-key settings are kept, so they work again as soon as the licence is renewed.
* Fixed: a zip download listing the same document more than once counted it as several downloads, sent a notification for each, and used up that document's download limit faster than it should. Each document now counts once per zip.
* Fixed: retention rules set to "move to trash" now archive the document instead on sites where WordPress's trash is switched off (EMPTY_TRASH_DAYS set to 0). On those sites the document was deleted permanently even though the retention screen offers a recovery window and the activity log recorded it as trashed.
* Fixed: editing or quick-editing a document category no longer clears its default review cycle, which used to drop every document inheriting that cycle off the review screen and out of the digest.
* Improved: the review screen and the daily lifecycle job use less memory on large libraries, so retention enforcement cannot be starved by them.
* Fixed: searching and filtering a grid or gallery library now narrows it. The result count, pager and "no matches" message all responded, but the cards stayed on screen, so a search over a grid appeared to do nothing. Table layouts were unaffected.
* Fixed: the hover preview card can be dismissed again — it could stay on screen until the page was reloaded.
* Fixed: when more than one download gate is enabled they now appear one at a time rather than together, and completing them in sequence delivers the file.
* Changed: download events sent to Google Analytics record the document's address without its query string.
* Fixed: documents whose extracted text is not valid UTF-8 (older Office exports, spreadsheets saved in a Windows encoding) are now indexed properly. They previously counted as indexed but were searched as if empty, so content search never matched anything inside them. Rebuild your search index under Documents → Settings → Search Index to pick up affected documents.
* Fixed: rebuilding the search index records progress after each document rather than per batch, so one slow document can no longer stall a rebuild that then restarts from the same place indefinitely.
* Fixed: AI summary suggestions on the document editor are rate-limited and count against the same daily AI budget as Ask.
* Improved: content searches over very large result sets do less database work.
* Fixed: the Recent and Popular sidebar widgets, the Popular block and the public changelog no longer list expired documents or documents with no file attached — the library has always hidden both.
* Fixed: a single document page no longer shows a Download button for a document that has expired or used up its download limit; it explains why instead.
* Fixed: removing the sample library no longer deletes a category that still holds your own drafts (it counted only published documents).
* Fixed: a number custom field now sorts negative values correctly — they previously sorted backwards among themselves and below every positive value.
* Fixed: a "user" custom field no longer lists your site's user accounts on the public submission form.
* Fixed: transmittal numbers can no longer be issued twice under simultaneous use, and daily download quotas are counted accurately when several downloads start at the same moment.
* Fixed: uninstalling FileDeck now also removes stored cloud-storage credentials.
* Fixed: sites upgrading from FileDeck 1.x — the one-time data migration now also detects installs whose only legacy data was categories, which it could previously skip permanently.
* Security and reliability improvements across access control, front-end submission, the one-click importers and CSV import.

= 2.56.1 =
* Fixed: PDF thumbnail failures are no longer silent. If your server reports PDF support but cannot actually render (missing Ghostscript, or ImageMagick's security policy blocks PDFs), Settings now shows the last error instead of looking healthy while nothing appears. Support detection now performs a real test render, so the "Generate missing thumbnails" button only shows when generation will actually work.

= 2.56.0 =
* Changed: FileDeck now requires WordPress 6.4 or newer. Custom fields did not work correctly on 6.1–6.3; sites on those versions will not be offered this update and should upgrade WordPress first.

= 2.55.3 =
* Fixed: PDF previews now open inside embedded libraries. Browsers refuse to run their built-in PDF viewer inside an embedded frame, so embeds render the document themselves — text stays selectable and searchable. Libraries on your own pages are unchanged.

= 2.55.2 =
* Security and reliability improvements for front-end submissions: existing documents are now repaired automatically after updating, completing the 2.55.1 fix. No action needed.

= 2.55.1 =
* Security and reliability improvements for front-end submissions. If your site accepts client uploads, updating is recommended.

= 2.55.0 =
* Fixed (Pro): with the terms, form or bot-protection gate switched on, the Download button on a single document page had no way to present the acceptance step, so the download could not be completed from that page. All three now behave there as they do in a library.

= 2.54.1 =
* Fixed: searching from a [filedeck_search] box on a site using plain permalinks now lands on the library with the results, instead of on the homepage.

= 2.54.0 =
* New: a Popular Documents block — the most-downloaded (or newest) documents as a compact list on any page, access-aware like the sidebar widgets it extends.

= 2.53.0 =
* New (Pro): "Was this helpful?" votes on single document pages — anonymous yes/no, off by default, with a least-helpful report on the Analytics screen.
* Improved (Pro): search analytics now cover every search surface — the library search box and the command palette feed the popular-searches and content-gaps reports alongside full-text and AI search, with crawler traffic filtered out. A "Searches with no results" table joins the Analytics screen.

= 2.52.0 =
* Improved: the setup wizard's last step now leads with drag-and-drop bulk upload, offers one-click migration when it detects another document plugin's data (Pro), points Pro & AI sites at their next setup steps, and its Finish button lands on your live library page.
* Improved: the opt-in weekly usage ping now also reports how the setup wizard ended and whether the sample library was used (see External services; still anonymous, still off unless you opted in).

= 2.51.3 =
* Housekeeping: clearer, calmer release notes.

= 2.51.2 =
* Housekeeping: release notes are now summaries rather than implementation detail, and the published history covers recent releases with the full changelog on our site.

= 2.51.0 =
* Improved: the top tier is now named **AI & Governance** and led by its records-governance capabilities — retention schedules, access certification, transmittals, acknowledgment tracking and PDF accessibility screening — alongside search by meaning. No functional change.

= 2.50.0 =
* Improved: a routine hardening pass across the Pro feature set.
* Note for multisite: download links signed before this release need re-issuing, including any sent by transmittal. Single-site installs are unaffected and existing links keep working.
* Improved: a document refused because its download limit is spent is now recorded in the activity log, so you see it rather than hearing about it.
* Improved: bot protection is described accurately as raising the cost of scraping rather than preventing it — it is not a substitute for access restrictions.

= 2.49.0 =
* Added (Pro): SharePoint and Box as cloud storage providers — browse SharePoint Online document libraries (via Microsoft Graph, the same plumbing as OneDrive) and Box folders, attach files, and serve downloads through short-lived per-click links. The full cloud set is now S3 + S3-compatible, Dropbox, Google Drive, OneDrive, SharePoint and Box.
* Added (free): native Document Library elements for Bricks and Divi — the library in each builder's own palette, rendering through the same pipeline as the block and shortcode. Registration is defensive: without the builder present, nothing loads.
* Added (free): translation readiness, declared — a bundled wpml-config.xml tells WPML, Polylang and compatible plugins that documents and categories are translatable and exactly how document data behaves on translation (file references copied, counters per-language).

= 2.48.0 =
* Added (Pro): vault offload — mirror protected files into your connected S3-compatible bucket (S3, R2, Wasabi, Spaces, MinIO) and serve downloads by short-lived presigned link. Every access gate still runs on your server first; local files remain for previews, search and checksums; watermarked serving deliberately stays local so stamping is never bypassed. Requires write (s3:PutObject) credentials.
* Added (Pro): multisite shared libraries — render any network site's library on any other with [filedeck_library site="2"]. One central library, no copies: the central site's access rules, gates and activity log do the enforcing.

= 2.47.0 =
* Added (Pro): server-folder import — point FileDeck at a folder inside wp-content/uploads and every file becomes a document, sub-folders becoming nested categories. Optional daily re-scan makes it a drop folder: SFTP a file in, it appears in the library. Additive and one-way; confined to uploads by the same safety rules as the Advanced File Manager importer.
* Added (Pro): a formal developer surface — `wp filedeck status` and `wp filedeck list` join the existing import/reindex/event commands, and a new developer reference documents the REST routes, signed webhooks and the filters worth scripting against.

= 2.46.0 =
* Added (AI): smart collections — save a plain-language query ("everything a new contractor needs") as a self-updating collection and publish it anywhere with one shortcode. Matching is semantic, the document list refreshes daily and on demand, resolution runs as an anonymous visitor so restricted documents are never baked into a public page, and page views never call the AI provider.
* Improved (AI): auto-metadata extraction — the suggestions box now also proposes values for your custom fields (dates, reference numbers, document types) read from the document text. Each proposal is pre-validated against the field's type and individually approved; nothing is written without your say-so.


Older releases: the full, illustrated changelog lives at
https://www.getfiledeck.com/changelog/
