VENDORS.WARV.ORG UPDATER

Extract the complete package on your Windows computer. Double-click Update-Vendors.cmd.
Requires Python 3.10 or newer (python.org); no third-party Python packages needed.

1. Edit the website files in dist/. The Page Code browser editor downloads edited
   HTML; put the download back into dist/brands/ (or dist/ for Courtesy Services).
   It does not save to your server automatically. If you use node build.mjs later,
   generated pages are rebuilt from data/ and any direct HTML edits are replaced.
2. Choose Create an upload ZIP. It creates a dated ZIP in releases/ with the static
   website files at its root. In your host's file manager, upload and extract this
   ZIP in the web root dedicated to vendors.warv.org, replacing matching files.
   Keep updater scripts, settings, data/ and releases/ outside the public web root.
3. For direct SFTP uploads, copy updater-settings.example.json to
   updater-settings.json and fill in the host, username, port and exact directory
   supplied by your hosting provider. No passwords go into this file.
4. SFTP uses Windows OpenSSH with an SSH key or agent. Batch upload does not accept
   password prompts. Set up the account and key with your hosting provider, and
   verify the server fingerprint through them before adding it to known_hosts
   using a normal interactive SSH/SFTP connection. The updater requires a known,
   verified host; it does not bypass host-key verification or install software.
5. Choose Review first to see the destination and file list. Choose Upload only
   when the directory is ready; confirm by typing vendors.warv.org.

The updater sends all static files, overwrites matching names and leaves other
server files untouched. It does not configure DNS, create the subdomain, update
WARV's main homepage, activate Google Ads or edit server permissions. Updates
transfer file by file; a connection failure can leave a partial update. Rerun to
finish, or upload a previous release ZIP. Before the first upload, download a
backup of any existing server site through your host. Dated local release ZIPs
are copies of the files being uploaded, not backups of the remote server.

Command line: python update_vendors.py --action package
Other actions: plan, upload. The launcher does not change Windows policies.

Your provider may supply cPanel-only, managed-platform or other hosting without
SSH keys/SFTP. Use the upload ZIP option for those hosts, or adapt deployment to
their supported method. A hosting connection has not been configured or tested.

OpenSSH SFTP reference: https://man.openbsd.org/sftp.1
