2.9.6 distribution and Chrome Web Store update
  Sustained playback warnings with manual adjustment and all 12 locales.
  Package installation, corresponding source, website and checksums together.
  Keep earlier archives unchanged. The approved 2.9.3 store item stays online
  while the same extension ID receives the separately reviewed 2.9.6 update.
  Preserve the tested installer with -PreserveInstallPackage when preparing
  the publication bundle; only unpublished source/website archives are rebuilt.

Local update 2.9.5
  Independent native-frame cadence and synchronized output. New 2.9.5
  packages must match source, website and checksums. Do not replace earlier
  archives or the existing 2.9.3 public release/store submission.

Local update 2.9.4
  Last Apply is now persisted for subsequent videos and sessions.
  Prepare and verify new 2.9.4 packages; do not replace any published 2.9.3
  assets or the Chrome Web Store submission. Public release remains 2.9.3.

Video Stabilizer — free public distribution and optional one-time support

Current release 2.9.3
  On 2026-11-05 the owner confirmed normal stabilization with no further
  Chrome Errors and explicitly authorized public release. Publish 2.9.3
  to the existing repository, Releases and main:/ Pages portal. Retain the
  old versioned downloads. The user-tested install ZIP must stay byte-identical.
  Source and publication ZIPs include the final release documentation.

Earlier local rename release 2.9.2
  The product and new archives use Video Stabilizer / Video-Stabilizer.
  All features remain free, with optional one-time support and no subscription.
  Existing Trumah/YouTube-Steady URLs and old attachments are retained.
  The rename alone did not authorize publishing; the later 2.9.3 authorization
  above now covers public distribution. The repository URL is retained.

Existing source checkout
  The public repository already exists at Trumah/YouTube-Steady. Its current
  Pages source is main:/ (the flat portal at the repository root).
  This checkout contains the corresponding editable source alongside that
  portal. Local build archives now go to dist/; preview bundles go to work/.
  Use publish-github.ps1 -PrepareOnly for a local publication bundle.
  The network mode below is a legacy new-repository bootstrap, not an updater
  for this checkout; it stops when this checkout has Git history.
  Before publishing an update, bump the release version and review the root
  portal, matching ZIPs/checksums and new release assets together. Do not
  replace already-published version assets with a local rebuild.

No paid hosting, domain, subscription or store listing is required for the
GitHub public-repository + Releases + Pages workflow. GitHub's normal service
limits and terms apply. This project does not purchase a paid plan.

Funding configuration
  src/distribution.json is the single public-destination configuration.
  The current owner-approved profile is https://paypal.me/TrumanSun.
  Its public page shows Sun Truman (@TrumanSun); no payment was made to test it.
  An empty value hides the tip link in the player, popup and public site.
  Never put a password, access token, bank account or API secret in this file.

  To configure a real receiver:
    node src/build-distribution.cjs --support-url https://paypal.me/YourProfile
  Replace YourProfile with the actual owner-approved public profile.
  This sample is documentation, never a live default recipient.
  Only HTTPS PayPal.Me profile links without amounts or query strings are
  accepted. The supporter chooses their own amount and confirms each payment
  on PayPal. There is no subscription SDK, billing agreement or automatic
  renewal in the extension or site. PayPal eligibility and fees still apply.

  Account creation, identity checks, bank linking and acceptance of payment
  terms must be completed by the owner. Taiwan PayPal accounts currently
  support cross-border payments, not transfers between Taiwan accounts.
  Confirm the receiver shown on the real payment page before announcing it.
  A real charge is not part of the automated or browser preview tests.

Prepare an uploadable bundle without signing in or uploading anything
  In PowerShell from the project directory:
    .\src\publish-github.ps1 -PrepareOnly
  This runs the tests, packages the extension and corresponding source,
  creates the static site, and prepares a clean repository under work/.
  The resulting -publication.zip contains the source and a docs/ directory
  ready for GitHub Pages. The install and source ZIPs are in docs/downloads.
  It excludes local signed-in browser records, private screenshots and SDKs.

Publish using an existing GitHub account
  Install GitHub CLI only from https://cli.github.com/ if it is not present.
  Sign in to the intended account using its normal authentication flow.
  Then run:
    .\src\publish-github.ps1 -SupportUrl https://paypal.me/YourProfile
  This targets the signed-in personal account's YouTube-Steady repository.
  It creates a new public repository; it does not take over an existing one.
  It uses a local commit identity with GitHub's noreply address, not a private
  email address. No global Git identity or credential setting is changed.
  The release stays a draft until both installation and source assets upload.
  Pages serves main:/docs; a free github.io address is used.
  -AllowWithoutSupport explicitly permits publishing with tip links hidden.
  Never run the publish command when only a local preview is intended.

Failure/retry
  Authentication or permission failures leave the prepared local files.
  If a repository was created, its state is saved in work/; rerun the same
  command after resolving the failure. Existing download assets are not
  overwritten. Use a new version for changed public releases.
  A requested Pages deployment is not evidence of a live site. Verify the
  returned repository/release URLs, Pages status and public downloads before
  announcing completion. GitHub may require a verified account/email.
  The network portion cannot be validated without an authenticated account.

Manual alternative
  Create a new public repository, upload the prepared source files, and set
  Settings > Pages > Deploy from a branch > main > /docs. Create a preview
  Release containing both versioned ZIPs. Keep licenses and notices intact.
  Static hosting providers can instead serve the built work/public-site/
  directory, subject to their own account requirements, limits and terms.
  For a browser uploader that cannot preserve folders, run
    node src/build-web-publication.cjs
  after packaging and building the site. It prepares a flat github-web kit.
  Upload its declared files at the repository root and use main:/ for Pages.
  This distribution layout supplies complete source as the versioned source
  ZIP. It is different from the CLI's browsable-source + /docs layout.

Official references checked 2026-11-02
  https://docs.github.com/en/pages/getting-started-with-github-pages/what-is-github-pages
  https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site
  https://cli.github.com/manual/gh_repo_create
  https://cli.github.com/manual/gh_release_create
  https://www.paypal.com/tw/cshelp/article/paypalme-frequently-asked-questions-help432
  https://www.paypal.com/tw/cshelp/article/how-do-i-send-payments-help293
