=== DeckDesh ===
Contributors: deckdesh
Tags: investor deck, pdf viewer, document sharing, tracking, secure sharing
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.4.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Share investor decks from your own WordPress site: branded viewing, private links, expiry, revocation and open tracking.

== Description ==

DeckDesh lets you share confidential documents — investor decks first of all —
from your own domain instead of a third-party service. Each recipient gets a
unique unguessable link. The document opens in a viewer wrapped in your site's
own header, navigation and footer, on classic and block themes alike. You see
when it was viewed, downloaded and shared; email-security scanners and link
unfurlers are filtered out so the numbers mean something.

* Every link is a random 10-digit ID plus a 128-bit random token (documents
  from 1.4.0; links issued earlier keep working). The link is exchanged once,
  server-side, for a short-lived cookie and the browser is sent to a clean URL,
  so the secret never appears in the address bar, the page, or any analytics
  tag running on it. Failed guesses are throttled per IP
* Files kept in a private uploads directory behind random, unguessable
  paths, never served except through the plugin (an outside-the-web-root
  location is available as an opt-in for hosts that allow it)
* One generic "link unavailable" page for every failure, so nothing can be
  learned by probing
* Links can be revoked or given an expiry date at any time
* Works with Plain permalinks, page caches, SEO plugins and multisite without
  configuration
* No “powered by” link on your public pages unless you switch it on

== Installation ==

1. Plugins → Add New → Upload Plugin → choose the DeckDesh zip → Install Now.
2. Activate. A one-time Setup screen shows what was configured automatically.
3. DeckDesh → Documents → upload a PDF, name the recipient, copy the link.

== Frequently Asked Questions ==

= Does it change my theme or create pages? =

No. The viewer is rendered at request time inside your active theme; no pages,
posts or theme edits are made.

= Can recipients forward the link? =

Yes — and that is visible in the share count. If a link leaks, revoke it and
send a fresh one.

== Screenshots ==

1. The viewer — a deck opens inside your own site's header and footer, with download, share and page controls on the right and the recipient and version on the left.
2. The manage page — every deck, who it went to, view/download/share counts and colour tags, behind a password on your own domain.
3. The password gate — the manage page is protected by a password you set, with an emailed reset if you forget it.

== External services ==

DeckDesh does not send your data anywhere. It makes no calls to any external
service. The only network request it performs is a one-off self-check that
fetches a test file over HTTP from your own site, to confirm the storage
directory is not publicly downloadable; that file is deleted immediately.

== Third-party libraries ==

The document viewer uses Mozilla's PDF.js (version 4.10.38), bundled in
`public/assets/pdfjs/` and licensed under the Apache License 2.0. Source and
build instructions: https://github.com/mozilla/pdf.js — release
https://github.com/mozilla/pdf.js/releases/tag/v4.10.38 . The Apache-2.0
licence text ships alongside the library at `public/assets/pdfjs/LICENSE`.

== Changelog ==

= 1.4.0 =
128-bit link tokens exchanged server-side for a signed viewing-session cookie, so the secret never reaches the theme, the DOM or any analytics tag on the page (older 8-hex links keep working); scripts moved to wp_enqueue_script/wp_add_inline_script; PDF.js scripting/eval disabled; timestamps standardized on UTC; privacy-policy text plus personal-data export/erase and an event-retention setting; expired links now record no events; nginx path and asset version corrected.

= 1.3.0 =
WordPress.org readiness: Powered-by credit is opt-in (off by default); storage defaults to wp-content/uploads with an outside-root opt-in filter; PDF.js 4.10.38 and the storage self-check documented; directory icon, banner and screenshots added.

= 1.2.8 =
Choosing a file through the system picker now fills the title and shows the chosen file's name and size, exactly like drag-and-drop.

= 1.2.7 =
Copy icon rotated a further 180 degrees.

= 1.2.6 =
The manage sheet's Open button now opens the full tagged link, UTMs included.

= 1.2.5 =
Tag swatches and row colours are now the same colour; renaming a tag no longer changes the panel height; documents pending deletion sort to the bottom of the sheet.

= 1.2.4 =
Documents pending deletion now sit grayed out in the main table with a single Restore button; the copy icon leans top-right to match the open icon.

= 1.2.3 =
Checkbox column no longer shows ellipsis dots and is not resizable; per-row Copy link and Open are now icon buttons with tooltips; copying always confirms or reports failure.

= 1.2.2 =
Sheet columns hold their widths under filtering and are resizable by dragging the header separators; the date column fits its content; every row is the same height.

= 1.2.1 =
Tags panel sits beside the table and stays put; clicking tags no longer scrolls the page; the panel reads Assign tag when rows are selected; double-click rename works.

= 1.2.0 =
Manage page: tags with Mail-style row colours, a 7-day restorable trash, upload progress, and prefilled title and 60-day expiry. Sorting and filtering verified column by column.

= 1.1.1 =
Rewrite rules now self-heal, so updating by FTP (which fires no activation hook) cannot leave the manage page or document links 404ing.

= 1.1.0 =
New: password-protected manage page at /deckdesh/ — sortable, filterable document sheet with bulk delete, drag-and-drop upload, and a notes field.

= 1.0.1 =
Fixed the documents table layout: columns no longer overlap and action buttons stay inside the table.

= 1.0.0 =
First distributable release.
