Below is a copy‑pasteable Markdown guide you can hand to anyone running a white‑label fork of VDO.Ninja on GitHub Pages (eg. modified main.css, index.html, translation JSON files). It shows the safest, least‑surprising way to get from v22.x to the latest stable release without being a Git pro.
TL;DR
- Back up your current fork.
- Update your fork to the latest stable release tag (currently
v28.0, released Aug 26, 2025). (GitHub)- Re‑apply branding via non‑conflicting overrides (
&css,&base64css,&js) and translation files instead of editing core files. (VDO.Ninja)- If you only want “alpha/preview” features, you can sync your fork to the upstream
developbranch—but that’s intentionally less stable. (GitHub)
- The latest stable release is VDO.Ninja v28.0 (tag
v28.0). (GitHub) - The upstream repo keeps an alpha/preview on the
developbranch; releases are tagged (and sometimes branched) separately for stability. For most white‑label sites, track the release tag, notdevelop. (GitHub)
- You have a fork of
steveseguin/vdo.ninjahosted on GitHub Pages. - You can sign into GitHub and open your repo’s Settings → Pages (to pick which branch is published). (GitHub Docs)
- In your fork, create a branch named
archive-v22from your current published branch (main,master, or whatever you’re using). GitHub Web UI path: Branches → New branch (source = your current branch). (GitHub Docs) - (Optional) In Settings → Pages, switch the published branch temporarily to
archive-v22so you can roll back instantly if needed. (GitHub Docs)
This avoids pulling alpha changes and usually reduces merge pain.
No command line? Use the GitHub Web approach:
- Go to the upstream repo’s Tags page and confirm the latest stable tag (e.g.
v28.0). Download the Source code (zip) if you prefer to upload files. (GitHub) - In your fork, create a new branch named
upgrade/v28. (GitHub Docs) - Replace the contents of
upgrade/v28with the files from thev28.0zip (drag‑drop in Add file → Upload files), then Commit.
Comfortable with a terminal? Run:
git clone https://github.com/<you>/<your-fork>.git
cd <your-fork>
git remote add upstream https://github.com/steveseguin/vdo.ninja.git
git fetch upstream --tags
git switch -c upgrade/v28 v28.0 # create a branch starting at the release tagHeads up on translations: The
v28.0tag’s notes include a commit that removestranslations/default.json, so translation files changed structure since v22.x. Expect to re-check or re-map keys. (GitHub)
- Open your fork Settings → Pages → Source: Deploy from a branch, pick
upgrade/v28and root/. Save. (GitHub Docs) - Visit your Pages URL and confirm it loads. The landing page shows a Version label—verify it reads the new version (e.g., “Version: 28.0”). (VDO.Ninja)
To avoid future merge conflicts:
-
CSS: Put your styles in a separate file (e.g.,
/brand.cssin your fork) and add&css=to your links:https://<your-pages-domain>/?css=https%3A%2F%2F<your-pages-domain>%2Fbrand.cssYou can also inline CSS with
&base64css=. (VDO.Ninja) -
JS tweaks (optional): If you truly need JS for minor DOM changes, host
/brand.jsand pass it with&js=:https://<your-pages-domain>/?js=https%3A%2F%2F<your-pages-domain>%2Fbrand.js(Keep it minimal.) (VDO.Ninja)
-
Translations / wording: Use the
&language=parameter to select a language file (e.g.,&language=fr). The app loads translations by language code. Inference: in your own fork, placing a file liketranslations/mybrand.jsonand visiting?language=mybrandshould use that file; if not, replace the existingtranslations/en.jsonin your fork and use&language=en. (VDO.Ninja)
Why this approach? Using
&css/&js/&languagekeeps your changes out ofindex.html,main.css, and core scripts, so future upgrades are mostly just “switch to the next release tag” with zero or few conflicts. (VDO.Ninja)
When your upgrade/v28 branch looks good, either:
- Change Settings → Pages to publish from
upgrade/v28, or - Merge
upgrade/v28into your normal published branch (main) and publish that. (Use a Pull Request so you can review the diff.)
If you don’t mind tracking the upstream develop branch (preview/nightly), you can click Sync fork on your fork’s homepage and “Update branch.” GitHub will merge upstream’s default branch into your fork’s default branch. Conflicts must be resolved if you changed core files. (GitHub Docs, GitHub)
Note: Upstream’s default branch is currently
developand is intentionally not as stable as tagged releases. For production/clients, prefer Option A. (GitHub)
CLI equivalent (optional):
# with GitHub CLI installed
gh repo sync <you>/<your-fork> -b <your-default-branch>- If you previously changed
index.html,main.css, or core JS, expect conflicts jumping from v22 to v28. - Easiest fix: Stop editing core files and move your customizations to
/brand.css(+&css=) and/brand.js(+&js=). Then delete your old core edits. (VDO.Ninja) - For translations, compare your old JSON to the new release’s language file to re‑map any changed keys (a JSON diff tool helps). Note that translation files evolved since v22. (GitHub)
- Open your published site and check the Version string on the landing page or other UI places. For the upstream site, it shows “Version: 28.0” today; your fork should reflect the version shipped by the files you deployed. (VDO.Ninja)
- Exercise your usual links (
?push,?room,?view, scenes, etc.) with your&css/&languageoverrides.
- Switch Settings → Pages back to your
archive-v22branch, or revert the merge that updated your published branch. (GitHub Docs)
Q: Isn’t this just “pull from upstream and merge”?
A: Yes in spirit—but if you’ve modified core files, that’s how people get stuck in merge hell. Using release tags plus &css/&js/&language keeps your brand changes decoupled from upstream, so future upgrades are a quick branch switch or tag bump. (GitHub, VDO.Ninja)
Q: Where do I find stable vs alpha?
A: Stable is on release tags (eg. v28.0). Alpha/preview is the develop branch. The upstream README describes this split. (GitHub)
Q: How do I change which branch GitHub Pages publishes? A: Settings → Pages → “Deploy from a branch” and pick the branch/folder. (GitHub Docs)
Q: How do I change the interface language via URL?
A: Add &language=<code> to your links (eg. &language=fr). (VDO.Ninja)
# Add upstream once
git remote add upstream https://github.com/steveseguin/vdo.ninja.git
# See what’s available
git fetch upstream --tags
# Create a new branch from the latest stable release tag
git switch -c upgrade/v28 v28.0
# (Optional) bring over just your old brand assets from your old branch
git checkout archive-v22 -- brand.css brand.js translations/en.json
# Commit and push
git add .
git commit -m "Upgrade to v28.0 + reapply brand overrides"
git push -u origin upgrade/v28
# Make a PR to main, or set Pages to publish from upgrade/v28- Latest release tag (v28.0) and prior tags. (GitHub)
- “Develop vs Release” explanation in upstream README. (GitHub)
- Syncing a fork (web UI,
gh repo sync, Git). (GitHub Docs) - GitHub Pages: publish from a branch. (GitHub Docs)
- Design/branding via URL:
&css,&base64css,&js. (VDO.Ninja) - Set UI language via URL:
&language=. (VDO.Ninja)
If you like, I can tailor this to your exact repo layout (which branch you publish from, which files you changed) and produce the precise diff/apply steps—but as written, this should be “dummy‑resistant” and safe for most forks.