You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 2d5ccb8
Browse filesBrowse the repository at this point in the historyBrowse files
feat: Tiger Studio Web hotfixes — npm run web:hotfix tags web-vX.Y.Z.N (web-only, no desktop build, X.Y.Z stays the release's), web-sync on those tags, web build number in version.json / About / reload check; web build drops the Agora script (not in git, desktop-only)
live=$(echo "$json" | sed -n 's/.*"version": *"\([^"]*\)".*/\1/p')
73
+
lb=$(echo "$json" | sed -n 's/.*"webBuild": *\([0-9]*\).*/\1/p'); lb=${lb:-0}
74
+
echo "live=${live:-none} · web ${lb} want=$WANT_VERSION${WANT_BUILD:+ · web $WANT_BUILD}"
75
+
if [ "$live" = "$WANT_VERSION" ] && { [ -z "$WANT_BUILD" ] || [ "$lb" = "$WANT_BUILD" ]; }; then
76
+
echo "Web is on $live${WANT_BUILD:+ · web $WANT_BUILD}, desktop on $WANT_VERSION"; exit 0
77
+
fi
47
78
sleep 20
48
79
done
49
-
echo "::error::tigersystem.io/studio serves ${live:-nothing} but the release is $want — web and desktop are out of sync"
80
+
echo "::error::studio.tigersystem.io serves ${live:-nothing} · web ${lb}, expected $WANT_VERSION${WANT_BUILD:+ · web $WANT_BUILD} — web and desktop are out of sync"
- Tiger Studio Web preparation plan (audit of the brief against the code, decisions, step plan) — `docs/STUDIO-WEB-PLAN.md`
5
-
- Tiger Studio Web — browser bridge: a web `electronAPI` (links, app info, product lookup / refresh, full catalogue, image download) loaded only when the Electron preload is absent; `HAS_NATIVE` replaces the "electronAPI exists" desktop checks around RFID — `renderer/web-bridge.js`, `renderer/inventory.html`, `renderer/inventory.js`, `renderer/rfid_protocol/tigertag/index.js`
6
-
- Tiger Studio Web — desktop-only UI hidden in a browser through one `data-desktop-only` attribute + `html.is-web` rule (NFC readers bar and tester, TD1S, updater card / icon / banner, printers views, camera detach); printer view modes fall back to the inventory grid — `renderer/inventory.html`, `renderer/css/00-base.css`, `renderer/inventory.js`
7
-
- Tiger Studio Web — friend link `?friend=XXX-YYY` pre-fills Add-friend (web equivalent of `tigertag://friend/…`) — `renderer/inventory.js`
8
-
- Tiger Studio Web — one sign-in with the Hub: on a first web visit Studio adopts the tigersystem.io Firebase session (verified addresses), signing in to Studio no longer signs the shared DEFAULT session out on the web, and signing out ends it only for the same account — `renderer/inventory.js` (`_adoptSharedWebSession`, sign-in flows, `fbSignOut`)
9
-
- Tiger Studio Web — deployment guide (architecture, what works on the web, Hub/Vercel/DNS/Firebase setup) — `docs/WEB_DEPLOYMENT.md`
10
-
- Tiger Studio Web — static build `npm run web:build` (`--out`, `--base /studio/`) → `dist-web/` with the app page at the root via `<base>`; `npm run web:serve` to try it locally — `scripts/build-web.mjs`, `package.json`, `.gitignore`
11
-
- Tiger Studio Web — installable as an app (PWA): the web build ships a manifest (scope = the served folder, standalone, the app icons) and the home-screen tags iOS reads; an "Install the app" sidebar button appears only when the browser can install it (replays Chrome/Edge/Android's install prompt, unfolds the Share → Add to Home Screen hint on iPhone/iPad), hidden once installed; no service worker on purpose (no stale offline copy after a release) — `scripts/build-web.mjs`, `renderer/web-bridge.js`, `renderer/inventory.js`, `renderer/inventory.html`, `renderer/css/00-base.css` (`data-web-only`), `renderer/css/10-settings.css`
12
-
- Tiger Studio Web — never drifts from the desktop app: `web-sync.yml` (release published → Hub deploy hook → waits for `tigersystem.io/studio/version.json` to match, red run otherwise); an open page or installed app reloads onto a new version when it comes back into view — `.github/workflows/web-sync.yml`, `renderer/web-bridge.js`, `docs/WEB_DEPLOYMENT.md`
4
+
- Tiger Studio Web hotfixes — ship web-only fixes without a desktop build: `npm run web:hotfix` tags the commit `web-vX.Y.Z.N` (X.Y.Z = the latest release, checked against package.json); `web-sync.yml` also runs on those tags (refuses a non-latest base, deploys the Hub, waits for `{version, webBuild}`); the build stamps the web build number (`--web-build`, shown as "X.Y.Z · web N", part of the reload check); the Hub builds the highest hotfix of the latest release — `scripts/web-hotfix.mjs`, `scripts/build-web.mjs`, `renderer/web-bridge.js`, `.github/workflows/web-sync.yml`, `package.json`, `docs/WEB_HOTFIX.md`
13
5
14
6
## Changed
7
+
- Studio Web served at the root of `studio.tigersystem.io` (no redirect); `tigersystem.io/studio` redirects there; separate sign-in from the Hub — `docs/WEB_DEPLOYMENT.md`, `docs/STUDIO-WEB-PLAN.md`, `README.md`, `FEATURES.md`, `llms.txt`, `scripts/build-web.mjs` (comments)
15
8
16
9
## Fixed
17
-
- FlashForge / Snapmaker / Creality background ping threw every 30 s while signed out (no printer list yet) — `renderer/printers/{flashforge,snapmaker,creality}/index.js`
18
-
- Low-stock notifications stored the desktop's local image-cache path (`/img-cache/…`) in Firestore, so the photo was missing on the account's other devices and on the web; they now store the public image URL, and the web skips the old local paths — `renderer/inventory.js`
10
+
- Tiger Studio Web: the page no longer requests the Agora SDK (Anycubic cloud camera, desktop-only, not in git), which answered 404 on the web (shipped to the web as web-v2.40.0.1) — `scripts/build-web.mjs`
How to ship a fix to **Tiger Studio Web** (`studio.tigersystem.io`) **without a
4
+
desktop build** — and without the web and desktop version numbers drifting apart.
5
+
6
+
## The rule
7
+
8
+
The version number `X.Y.Z` belongs to the **desktop release**. The web always runs
9
+
the latest published release's `X.Y.Z`. A web hotfix adds a **web build number**
10
+
on top: the web shows `X.Y.Z · web N`, the desktop stays on `X.Y.Z`. `X.Y.Z` itself
11
+
only ever moves with a full desktop release.
12
+
13
+
| Change | How it ships |
14
+
|---|---|
15
+
| Web-only fix (browser bridge, web build, a bug only the web hits) |**Web hotfix** — `npm run web:hotfix`, live in ~2 min, no installers |
16
+
| Anything a desktop user would also get (shared UI, data, behaviour) |**Normal release** (`vX.Y.Z` tag, CI builds the installers), web follows automatically |
17
+
18
+
**The limit to keep in mind:** a hotfix tag builds whatever is on `main` at that
19
+
commit, so the web gets every commit since the release — shared code included. Use
20
+
a hotfix when `main` holds only web-side changes since the release (or changes that
21
+
are harmless on the web); when it holds desktop work too, cut a normal release.
22
+
23
+
## Shipping one
24
+
25
+
1. Commit and push the fix to `main` (as usual, on the founder's order).
26
+
2.`npm run web:hotfix` (`-- --dry-run` to see what it would do). It checks that the
27
+
commit is on `origin/main` and that `package.json` at that commit is the latest
28
+
release's version, then tags it `web-vX.Y.Z.N` (next free `N`) and pushes the tag.
29
+
3. The tag triggers **Web sync** (`.github/workflows/web-sync.yml`): it refuses a tag
30
+
whose `X.Y.Z` is not the latest release, deploys the Hub, and waits until
0 commit comments