What’s new in FileDeck — the features, improvements and fixes we ship, newest first.
Releases go out as soon as they’re ready — sometimes several in a day, sometimes a quiet week. Every entry below shipped to production.
Filter by more than one thing at a time
Every filter in a library is now multi-select, every option tells you how many documents are behind it, and what you have applied is spelled out above the results. Sorting picks up a second and third column, and the link you copy now carries the whole view — sort order and page included.
Tick as many as you need
Open the Categories filter and you get tick boxes rather than a single choice. Pick *Policies* and *Finance* and you see both — the list gets wider, not empty. Different filters still narrow each other, so a category plus a tag means documents that have both. The rule is any of the values inside one filter, all of the filters together.
Every option carries a count, so it is clear what is worth clicking before clicking it, and the counts re-narrow as the search box and the other filters change. A count always matches the rows you will actually see: a restricted document showing as a locked row is counted, and one hidden entirely is not.
Above the library, a row of chips names each applied value with a Clear all beside them. Chips are one per value, not one per filter, so you can drop *Finance* and keep *Policies* without starting over.
If you would rather the filters sat with the data, Settings → Display → Filter position moves them into a row under the table's column headings, each one under the column it filters.
Sort by type, then by date
Click a column heading to sort as before. Shift-click a second heading — or press Shift+Enter on it — and it becomes the tiebreaker instead of replacing your first choice: file type first, newest first within each type. Up to three columns can take part, and each shows a small number saying where it sits in the order, since an arrow on its own cannot tell you which column wins.
The link you copy is the view you are looking at
Copy link already carried the search term and filters. It now carries the sort order and the page number as well, so sending someone a link to page three of a re-sorted, filtered library lands them exactly there. It also offers itself on a view you have only sorted, which it previously ignored.
Fixes & improvements
- Pagination has a third mode: infinite scroll, which loads the next documents as you reach the end of the list. The Load more button stays on the page so keyboard and screen-reader visitors are never stranded, and it pauses for a click after five automatic loads rather than pulling a whole large library into one page.
- Libraries can be given a fixed height (Settings → Display → Library height, or
height="600px"on the shortcode). The documents scroll inside it while the search box and filters stay put above. - (Pro) Full-text search now reads OpenDocument files —
.odt,.odsand.odpfrom LibreOffice and OpenOffice — alongside PDF, Word, Excel and PowerPoint. OpenDocument files already in your library are re-indexed in the background after updating, so their contents become searchable without you doing anything. - The category, tag and custom-field filters are now a disclosure panel of tick boxes rather than a single-choice dropdown. The
fdk-class names are unchanged, but if you have custom CSS written against the old element — a rule onselect.fdk-filter-cat, say, or on.fdk-facet option— it needs revisiting.
The Documents menu is grouped by what you're doing
The Documents menu in wp-admin has been regrouped. Screens that had collected at the bottom now sit in named sections, and Settings is back at the end, where WordPress puts it.
Compliance is one section
Acknowledgments, review cycles, retention schedules, access certification, transmittals and the accessibility report were spread across two sections and the foot of the menu. They are now tabs under Compliance: the obligations you have to discharge, with their queues and their evidence, in one place. A section appears once you have at least two of the screens in it — a screen you have on its own keeps its own entry in the menu instead.
Insights and Audience hold what their names say
Insights is reporting only — analytics and the activity log. Review cycles left it for Compliance, because a list of documents falling due is a to-do list rather than a report. Where there is no Compliance section to move into, it takes an entry of its own.
People is now Audience: leads and subscribers, the contacts your library earned. Acknowledgment tracking left it for Compliance for the same reason.
Fixes & improvements
- Collections now sits beside Document Categories and Document Tags, where a grouping that maintains itself belongs.
- Every FileDeck screen now has a deliberate place in the menu. Several had been sorting below Settings.
- Bookmarks, saved links and anything pointing at one of these screens still work — each screen kept its own address, and the ones inside a section are reachable from its tabs.
Copy link turns up when there's something to copy
The Copy link button above a library used to be there from the moment the page loaded, even on an untouched library — where the link it copies is the address your browser is already showing. It now waits for a view worth sending someone.
Fixes & improvements
- Copy link appears once a search, category, tag or custom-field filter is active, and steps aside again when you clear it. What it copies is unchanged: whoever opens the link lands on exactly the view you were looking at.
- A new “Copy link” button checkbox under Settings → Features switches it off altogether.
The feedback form now takes actual feedback
When someone deactivates FileDeck and picks "I couldn't understand how to make it work", that choice used to end the conversation — no way to say what was unclear, and no pointer to help. Now it does both.
Fixes & improvements
- The deactivation feedback form's "I couldn't understand how to make it work" choice gains an optional text box ("What were you trying to set up?") and links to the quick-start guide and support right in the dialog — help first, goodbye second.
Libraries on one page stop sharing state — and the empty state gets a link
Multi-library pages now behave the way their builders assumed, and a "no results" message can finally point somewhere.
Each library keeps its own shareable view
Pages with several libraries — one table per product line, per department, per document type — used to share a single search-and-filter state in the URL: the Copy link button captured whichever library was touched last, and opening a shared link applied its search to every library on the page. Each library now tracks its own view. The copied link records the whole page as it looked, every library restores independently, and links people shared before this release keep working (they now target the page's first library).
Give the empty state somewhere to go
When a search finds nothing, that's information — often the visitor is telling you which document is missing. You could already customise the "no results" message; now you can attach a link to it: Empty-state link under Documents → Settings, or per library with empty_link_text and empty_link_url. "Can't find it? Tell us what you were looking for" → your contact page.
Fixes & improvements
- The empty-state message swap (default ↔ "no search results") no longer rewrites the whole element, so the new link survives every state change.
- The shortcode reference now documents
empty_message,empty_filtered_messageand the new link attributes.
Pick categories, not slugs — and a heads-up before visitors meet the sample library
Two lessons from watching real FileDeck sites get built, shipped as product: the Elementor widget now speaks human, and the sample library can no longer sneak into production unnoticed.
Category and column pickers in the Elementor widget
The FileDeck Library widget's Categories and Columns controls are now proper pickers. Categories lists your actual document categories — tick the ones a widget should show, no slugs to remember — and Columns lists every available column, so you choose what to show instead of remembering key names (columns render in FileDeck's standard order; a custom order is still a one-line [filedeck] shortcode). Building a sectioned downloads page with one scoped table per heading just became a two-click job per section. Widgets saved with the old text controls keep rendering exactly as before.
Admins now see when a library is showing sample documents
If a page is rendering FileDeck's sample library, administrators now get an amber note right on the page — with one-click links to add real documents or remove the samples. Visitors never see it: the note is admin-only and never part of anonymous output. The wp-admin reminder was easy to miss if you build pages in Elementor and rarely visit the documents list; this one meets you where you'll actually notice it.
Fixes & improvements
- Searching a library no longer matches documents on leftover HTML codes from names containing "&" — a category like "CAD & 2D models" used to make the search term "amp" match every document in it.
- The hover card now shows "&" correctly in category names instead of the raw "&".
- CSV import: the help text and sample file now show how to put a document in several categories at once (separate them with | — for example Reports|Finance), and the result screen lists any categories or tags the import newly created, so a mis-typed separator shows up immediately instead of surviving as one strange category.
- The library search box keeps its icon spacing, and the "Copy link" button keeps its quiet look, on themes with aggressive input and button styling.
More ways to place documents — new Elementor, Bricks and Divi elements
Rounding out this weekend's embed releases: wherever you build pages, FileDeck's documents are now a native element away.
Two new Elementor widgets
- FileDeck Search — a standalone search box for any layout. Set the placeholder and (optionally) which library page results land on; visitors get the library with their query already applied.
- FileDeck PDF Viewer — the Document Embed widget under the name people actually type into Elementor's search panel. Same controls, same viewer; pick a PDF and it's embedded.
Style controls for embeds (Pro)
The Document Embed widget gains an Elementor Style tab: frame border and radius, frame background, and an accent colour that flows into the controls inside the embed — the FileDeck viewer's toolbar, the download link, the full-screen button.
Document Embed for Bricks and Divi
Bricks and Divi get a native Document Embed element alongside the existing Document Library one: pick a document ID, set height/width, and optionally show the download link and title — the same viewer as everywhere else, access rules included.
The FileDeck viewer — self-hosted PDF viewing, and popup embeds
Yesterday's release made embedding free; this one gives Pro embeds a viewer of their own. Both serve the same idea: documents that display properly without ever leaving your server.
A self-hosted PDF viewer (Pro)
Set an embed's engine to FileDeck viewer (engine="pdfjs", or site-wide under Settings → Features → Document viewer) and the PDF renders from your own site with a real toolbar: page position as you scroll, zoom from 50% to 400%, find-in-document with highlighted matches, print that prints just the document, and a selectable, screen-reader-friendly text layer.
Because no external viewer service is involved, it displays the documents the Microsoft and Google viewers structurally can't: protected files, signed links, view-only streams and watermarked documents all render. It's the natural companion to yesterday's rule that protected files never touch an external viewer.
Popup embeds (Pro)
Add mode="popup" to any embed — or flip the toggle in the block or Elementor widget — and instead of a viewer sitting in the page you get a View button that opens the document in an overlay. The document loads only when opened, so a page listing several embedded documents stays fast. Close with the ×, the backdrop, or Esc.
Fixes & improvements
- The Publish embed's PDF preview now serves its viewer files with a plain
.jsname, so hosts that don't recognise the.mjsextension (and served it with the wrong type) no longer block the preview.
Inline document embeds for everyone — plus Google Docs embeds and viewer controls
Embedding one document inside a page — a datasheet, a menu, a report that should just be *there*, not behind a click — is now part of the free plugin, and the viewer itself learned some overdue tricks.
The inline embed is now free
[filedeck_embed], the Document Embed block and the Elementor widget now ship in the free version: embed any PDF or image as an always-visible viewer on any page. Pro continues to extend the embeddable types to Office documents, audio and video, exactly as it does for the preview lightbox.
Google Docs, Sheets, Slides and Drive links embed as live documents
Paste a Google share link into an external document and it now renders as a live embedded document — in the inline embed and the preview lightbox. FileDeck swaps the pasted /edit link for Google's embeddable form automatically (those raw share links refuse to display inside another page, which is why they couldn't be embedded before).
Control how the viewer looks and behaves
Every embed can now set a width (px or %), show an optional download link under the viewer, and document viewers carry a full-screen button so a small embed can still be read comfortably. A new viewer engine choice decides how PDFs and Office files render: each embed can pick the browser's built-in viewer, the Microsoft Office viewer or the Google Docs viewer, and a site-wide default under Settings → Features → Document viewer offers automatic, browser built-in only (no external viewer services contacted), or the Google Docs viewer.
Fixes & improvements
- Protected files no longer render through the Microsoft or Google viewer services — those viewers fetch the file from their own servers, which quietly handed a protected document to a third party (and broke once the signed link expired). Protected PDFs and images now preview through their signed URLs; protected Office files show a download button instead. A developer filter restores the old behaviour where that disclosure is acceptable.
- Previewing a document whose file sits in the protected vault no longer points at its dead public URL — previews use the same signed link a download does.
- YouTube and Vimeo links (part of Pro's extended previews) now preview through each provider's embed player instead of a blocked page, using YouTube's privacy-enhanced domain.
Put your folders in the order you want
The Folder layout no longer insists on alphabetical order — you can now decide which folders come first.
Choose your folder order
Each document category has a new Folder order field on its edit screen (Documents → Document Categories). Give a category a number and its folder moves to that position in the Folder layout: numbered folders come first, lowest number first, and folders without a number follow in the familiar alphabetical order. The "Other" folder — documents with no category — always stays last.
That means you can pin what matters — put "Start here" or this year's documents at the top — while the long tail of categories stays alphabetical on its own. Clear the number and the folder returns to its alphabetical place.
Pagination, retention and vault offload hold up on large libraries
Three limits that only showed up once a library got big: an unusable page list, a nightly retention pass that read the whole library into memory, and a mirror size cap that ignored how much memory the server actually had.
Pagination stays usable at any size
The page list now shows a window around the page you are on — first and last, your immediate neighbours, and an ellipsis for the rest — with Previous and Next controls. Previously it printed one button for every page, so a library of a few thousand documents produced a wall of hundreds of numbers.
Keyboard focus now stays on the page control you just used instead of jumping back to the top of the document.
Fixes & improvements
- Automatic retention now walks its candidate documents in batches. On a site 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.
- Vault offload now sizes its mirror limit against the server's PHP memory instead of a flat 100 MB. A single large file could previously exhaust memory and abort the whole nightly mirroring run. Files above the limit keep streaming locally exactly as before, each is noted once in the activity log, and they no longer use up that day's mirroring budget. If you use the
filedeck_offload_max_bytesfilter to adjust the value it is given, note that it now receives the memory-derived limit rather than a fixed 100 MB.
Category restrictions now apply to sub-categories
Nested categories now behave the way the structure implies, drop-folder imports stop duplicating documents, and Settings holds on to your Pro configuration when a licence lapses.
Restrictions follow the category tree
If you restrict a category — to a role, a password, or a specific client — that restriction now applies to its sub-categories too. A document filed only in a sub-category answers to its parent's rules, and the sub-category itself no longer appears in category lists or dropdowns for people who cannot see the parent.
This is what most nested structures already assume. A client area with a sub-category per matter, or a staff-only category with sub-categories per department, now protects the whole branch rather than only the category the rule was set on.
Two things to expect if you use nested restricted categories. Files in those sub-categories move into protected storage, so any raw file URLs saved or shared outside FileDeck stop resolving — download links in your library, client portals and emails are unaffected and need no action. And if you were relying on a sub-category to hold documents that were more widely available than its parent, move those to a top-level category instead.
Server-folder imports track files, not their position
Importing from a server folder, and the daily re-scan that keeps it up to date, now identify each file by its path. Previously a file was tracked by its position in the alphabetical listing, so dropping in a file that sorted before an existing one shifted everything after it: the new file was skipped as already-imported, and another document was imported a second time. Re-scans now pick up exactly what you added, and leave everything else alone.
Existing imported documents are recognised and carried over on the first re-scan — nothing is re-imported.
Fixes & improvements
- Searching and filtering a grid or gallery library now actually narrows it. The result count, the pager and the "no matches" message all responded, but the cards themselves stayed on screen, so a search over a grid appeared to do nothing. Table layouts were unaffected.
- The hover preview card can be dismissed again — it could get stuck on screen until the page was reloaded.
- When more than one download gate is switched on, they now appear one at a time instead of together, and completing them in sequence delivers the file.
- Download events sent to Google Analytics now record the document's address without its query string.
- Retention rules set to "move to trash" now archive the document instead on sites where WordPress's trash is switched off. On those sites the document was being deleted permanently, even though the retention screen offers a recovery window and the activity log recorded it as trashed. Archived documents move to draft and can be restored.
- 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.
- The review screen and the daily lifecycle job use less memory on large libraries, so retention enforcement can no longer be starved by them.
- Saving Settings while your licence is expired no longer switches off Pro features. Terms gating, the bot gate, form gating, retention, download logging and your webhook, quota and API-key settings are all kept, so they work again as soon as the licence is renewed.
- Documents whose text isn't valid UTF-8 — older Office exports, spreadsheets saved in a Windows encoding — now have their contents indexed. Previously such a document was listed as indexed but searched as though it were empty, so content search never found anything inside it. Rebuild your search index (Documents → Settings → Search Index) to pick up any affected documents.
- Rebuilding the search index now records progress after each document rather than in batches, so one slow document can no longer stall a rebuild that then restarts from the same place indefinitely.
- Content searches over very large result sets are lighter on the database.
- Downloading a zip that listed 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.
- AI summary suggestions on the document editor are now rate-limited and count against the same daily AI budget as Ask, so they cannot run up unexpected provider costs.
- 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, so these were offering links that could not work.
- 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.
- Removing the sample library no longer deletes a category that still holds your own drafts. It only counted published documents, so a category you had started filing into looked empty.
- A number custom field now sorts negative values correctly. They previously sorted backwards among themselves and below every positive value.
- A "user" custom field no longer lists your site's user accounts on the public submission form.
- Transmittal numbers can no longer be issued twice under simultaneous use.
- Daily download quotas are now counted accurately when several downloads start at the same moment.
- Uninstalling FileDeck now also removes stored cloud-storage credentials.
- 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.
PDF thumbnail problems now tell you what went wrong
If automatic PDF thumbnails are switched on but your cards still show a file-type badge, FileDeck now tells you why instead of leaving you guessing.
The last error, right where the setting is
When a thumbnail can't be generated, the reason now appears next to the thumbnails toggle in Documents → Settings → Features — the exact error, with the date it happened. Previously a failed render vanished without a trace, so the feature could sit enabled while nothing appeared and the settings screen looked perfectly healthy.
FileDeck also checks your server's PDF support more honestly. Some hosts report PDF rendering as available when it's actually blocked — Ghostscript missing, or ImageMagick's security policy denying PDFs. FileDeck now proves support with a real test render, so the Generate missing thumbnails button only appears when generation will genuinely work, and the "not available on this server" notice shows when it won't.
Fixes & improvements
- A failed thumbnail generation now records its error for the settings screen instead of failing silently in the background.
- Server PDF support is verified with a real test render, not just reported capability, so the settings screen no longer claims support on hosts that block PDF rendering in practice.
- "Delete all data on uninstall" now also removes the thumbnail backfill marker and diagnostic records.
FileDeck now requires WordPress 6.4
FileDeck's minimum supported WordPress version is now 6.4.
Fixes & improvements
- WordPress 6.4 is now the minimum. Custom fields — field definitions, multi-select filters, and the fields shown on submission and edit forms — did not work correctly on WordPress 6.1, 6.2 or 6.3. Rather than leave that quietly broken, those versions are no longer supported. Sites running them will not be offered this update, so nothing changes for them until WordPress itself is updated. Every supported version from 6.4 upward is now tested automatically on each release.
PDF previews now work in embedded libraries
If you publish a library on another site with the embed snippet, clicking a PDF opened a blocked, empty panel instead of the document. It now previews properly, and the text inside it stays selectable and searchable.
Previews open where the library lives
Browsers hand PDFs to their own built-in viewer, and they refuse to run that viewer inside an embedded frame — so the preview was being blocked before it could draw anything. Embedded libraries now render the document themselves, page by page, rather than handing it over.
That has a couple of side benefits. The text layer is real text, so visitors can select and copy from a preview and screen readers can read it. And it works on phones and tablets, where most browsers previously declined to preview an embedded PDF at all.
Libraries on your own pages are unchanged: they were never affected, and they keep using the browser's viewer with its familiar print, download and search controls. Images, audio and video previews are unchanged everywhere.
Fixes & improvements
- Clicking a PDF in an embedded library no longer opened an empty panel reading "This page has been blocked."
- Jumping to a search hit's page inside an embedded library now scrolls to that page of the document.