DKR-R beta 8 Mod Store polish / one-click downloads

This package is prepared, not remotely deployed. Keep existing accounts,
bindings, secrets, catalogue data and mod files. Never upload the Worker,
SQL or maintainer tools into the public FTP directory.

1. Deploy worker-single-file.mjs to the EXISTING dkr-mod-library-api Worker.
   This was composed from the exact working source supplied by the owner;
   its existing FTPS corrections and browser sign-in remain in place.
   Its first API request creates only additive launcher pairing, release
   integrity and uploaded-file integrity tables. Existing data is not replaced.
   This update includes checksums for eight currently downloadable packages.
   They are inserted only if each release ID, address and version still match;
   an existing checksum is never overwritten. The equivalent
   launcher-schema.sql is included for administrators who prefer to apply
   these CREATE IF NOT EXISTS statements before deploying.
2. After deploying the Worker, merge the three files under FTP-PATCH/assets into the existing website's
   assets directory. This exposes the same catalogue-edit permissions to
   moderators in both interfaces. The updated uploads-client.js also prepares
   full-file SHA-256 metadata automatically, with bounded memory and checks
   against the upload service's confirmed chunks. Keep config.js, accounts,
   images and mods. No new Discord application or sign-in configuration is needed.
3. Inspect the hosting account's existing web.config BEFORE uploading. Merge
   the staticContent entries from the supplied web.config into the downloads
   directory configuration. Do not overwrite an unrelated existing config.
   Only do this if Fasthosts permits these MIME mappings. Missing source
   files must be restored, not hidden with an HTTP rewrite.
4. Read DOWNLOAD-HOSTING-REPORT.txt. Eight published addresses returned HTML
   error pages during preparation and cannot safely be registered. Restore
   the actual files or correct hosting/MIME settings. After correcting these,
   a staff member can use Download once in the launcher: preparation and
   caching happen automatically. Regular players never register checksums.
   Alternatively run backfill_library.py with NEW --output SQL, --records JSON
   and --cache directory paths. It reads public files only; review the report
   and apply its pinned additive SQL in the existing D1 database. It does not
   execute mods or modify the website. Never invent hashes from filenames or
   use upload sample fingerprints as full-file hashes.
   New packages uploaded through the updated website or launcher register
   checksums automatically. Releases inherit them atomically when published,
   so a player does not need a separate preparation or verification click.
5. Existing release IDs are immutable: publish a new release instead of
   replacing file bytes.

The launcher browses the existing public catalogue even before installation.
Discord login and verified installation require the corresponding setup above. Until then it
reports what is missing; it never downloads HTML errors as executable mods.

Credentials belong in Cloudflare Secrets or your FTP client, not this file,
launcher settings, chat messages, public frontend code or release packages.
User acceptance of actual sign-in, installation and staff actions is required.
