Skip to content

Commit 0ff8f15

Browse files
committed
v1.10.22 — Phone-first welcome, universal beta QR, header avatar editing, scan-only QR codes
- New empty-inventory welcome: product mockup + headline above image, reworded for scan/manage inventory & 3D printers - Beta install card mirrors the App Store/Google Play card with one universal taap.it/nX7QSrz link (iOS TestFlight / Android beta auto-routing) - Change avatar directly from the header avatar (hover edit badge) + account-menu entry - QR codes are no longer clickable (scan-only); Cam Detach hidden in friend view - i18n: +addAvatar/+changeAvatar, invWelcomeTitle reworded, -invQrBetaNote (9 locales)
1 parent 588a9ef commit 0ff8f15

20 files changed

Lines changed: 266 additions & 77 deletions

‎CHANGELOG.md‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ Versions follow [Semantic Versioning](https://semver.org/).
55

66
---
77

8+
## v1.10.22 — 2026-06-25
9+
10+
### Changed
11+
12+
- **Refreshed the "empty inventory" welcome screen.** It now shows a product mockup (Studio + the TigerTag RFID app) with the headline above the image, and the wording highlights that you can scan and manage both your inventory and your 3D printers from your phone.
13+
- **One beta install card for everyone.** The beta card now mirrors the App Store & Google Play card and carries a single universal link — scanning it sends iPhone users to TestFlight and Android users to the Android beta automatically.
14+
- **Change your avatar straight from the header.** Hover your own avatar (top-left) and click the little edit badge to pick, crop and upload a new photo — or use the new "Add/Change photo" entry in the account menu.
15+
- **QR codes are no longer clickable** — they're there to be scanned with your phone camera.
16+
- The camera **"Detach"** button is now hidden when viewing a friend.
17+
18+
---
19+
820
## v1.10.21 — 2026-06-25
921

1022
### Added

‎WORKLOG.md‎

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
1-
# Worklog — v1.10.21 (in progress)
1+
# Worklog — v1.10.22 (in progress)
22

33
## Added
44

55
## Changed
6-
- **Cam view toolbar simplified.** In the printer Cam view the search bar + brand/material/version filters and the "Scan" / "Add device" buttons (none of which apply to the camera wall) are hidden, and the camera-wall "Detach" button moved up into the actions slot in the same orange style as the other action buttons (`#camWallDetachTop`, shown only in Cam via `#card-inv.is-cam-view`). The old in-wall `.cam-wall-toolbar` / detach button + CSS were removed. `renderer/inventory.html`, `renderer/inventory.js`, `css/70-detail-misc.css`, `css/40-printers.css`
7-
- **View selector moved above the search bar** (in every view). The Materials/Printers view-toggle row now sits at the top of the inventory toolbar, with the search + filters below it. `renderer/inventory.html`, `css/70-detail-misc.css`
8-
- **Creality fans rendered as cards with ±10% steppers** (like Snapmaker/Elegoo) instead of sliders. Each fan (Part / Case / Side, gated by model) is a card: toggle icon + label + `[−] [%] [+]` stepper; `±10%` steps go through `creActionFan` (M106, optimistic). Reuses the shared `.elg-fan-*` control-widget styles; the old slider markup, wiring (`data-cre-fan-slider` change/input handlers) and CSS were removed. `renderer/printers/creality/index.js`, `renderer/inventory.js`, `css/55-creality.css`
9-
- **Removed the icons from the "Materials" / "Printers" view-toggle group labels** (kept the text). `renderer/inventory.html`
10-
- **Auto storage + Auto unstorage merged into one "Auto-organize" toggle.** They're a single automation concept (place new spools, free emptied slots), so the two switches became one. With it ON: new spools auto-place, emptied slots auto-free (respecting locks), the bin shows the opt-out affordance and a rack's "Clear all" is hidden. Exceptions are handled by locking a slot. Backed by a single `autoManage` pref — per-account + synced across devices (Firestore `prefs/app`, localStorage cache), with a soft migration from the legacy `autoStorage`/`autoUnstorage` flags (local + Firestore: unified = either-was-on). `renderer/inventory.js`
11-
- **"Spools not stored" header tidied up.** The Add-Rack CTA and the Auto-organize row are compact: long inline help texts replaced by a small `ⓘ` info bubble that reveals the explanation on hover/focus (styled CSS bubble via `data-tip`, not a native `title`); the toggle is single-line (label + `ⓘ` + switch), only the switch is clickable. `renderer/inventory.js`, `css/30-racks.css`
6+
- **QR codes are no longer clickable** (they're for scanning, not clicking). Removed the sidebar QR `#sbQrWrap` click-to-open handler and its `cursor:pointer` + hover affordance. The empty-state card QRs were already non-clickable. `renderer/inventory.js`, `css/10-settings.css`
7+
- **Empty-inventory hero now shows the product mockup** (`assets/img/tiger_studio_and_tiger_rfid_connect_mockup.png`, laptop + phone) instead of the small framed `icon.png`, with the title + subtitle moved **above** the image. `.inv-welcome-logo--framed` (180×180 square) replaced by `.inv-welcome-logo--mockup` (wide, ratio preserved, `min(460px, 72vw)`). `renderer/inventory.js`, `css/70-detail-misc.css`
8+
- **Mobile beta link/QR updated to the universal `taap.it/nX7QSrz`.** It auto-routes to the iOS (TestFlight) or Android beta based on the scanning phone. Replaced the sidebar "Mobile Apps" QR + click and the empty-state beta card. The beta card now **mirrors** the production "App Store & Google Play" card (same header text + two App Store / Google Play pills + same "scan to install" foot note) — the only differences are the orange header, the BETA badge, and the beta QR/link. The production card (`taap.it/DF1Aqt`) is unchanged. `renderer/inventory.html`, `renderer/inventory.js`
9+
- **Add/change avatar from the top-left avatar.** Hovering your own header avatar reveals a small edit badge (bottom-right) — clicking it launches pick → crop → upload directly (reuses `uploadCroppedAvatar`) and refreshes the header; the rest of the avatar still opens the account menu, which also got an "Add a photo" / "Change photo" first item. Both blocked in friend view (the swap-back badge shows there instead). `renderer/inventory.js`, `renderer/inventory.html`, `css/00-base.css`
10+
- **The Cam "Detach" button is hidden in a friend's view.** It detaches the owner's own camera wall, so it has no place when viewing a friend — gated on `!state.friendView` in both visibility paths. `renderer/inventory.js`
1211

1312
## Fixed
14-
- **Printer table top spacing now matches the materials table.** The printer table wrap (`.pt-wrap`) had no top margin while the inventory `.table-wrap` has `margin-top: 12px`, so the gap below the search bar differed between the two tables. Added the same 12px. `css/40-printers.css`
15-
- **RFID reader badge showed the raw key `rfidNoReader`.** The top-right TigerPod indicator renders synchronously at module load — before the async `loadLocales()` populates `state.i18n` — so `t("rfidNoReader")` fell back to the key, and with no reader ever connected the badge never re-rendered. Added `data-i18n="rfidNoReader"` to the span so `applyTranslations()` (which runs after locales load) translates it. `renderer/inventory.js`
16-
- **Cross-account rack corruption when switching accounts.** Bouncing between two accounts (especially while toggling Auto storage/unstorage) could clear every spool from its rack slot on the account you returned to, leaving the slot locks behind (locked-but-empty). Root causes fixed: (1) the inventory `onSnapshot` now drops buffered callbacks from a previous account (`uid !== state.activeAccountId`) so they can't load stale rows and write to the now-active account; (2) the auto storage/unstorage routines bail unless the signed-in Firebase user matches the active account; (3) Auto unstorage now respects slot locks (`isSlotLocked`) — a 0 g spool in a locked slot is no longer freed, so a locked slot keeps its spool. `renderer/inventory.js`
1713

1814
## Removed
15+
- `invQrBetaNote` i18n key — the beta card now reuses `invQrScanHint` (identical foot note to the store card) — 9 locales
1916

2017
## i18n
21-
- Added: `autoOrganizeTitle`, `autoOrganizeSub`, `camDetach` — 9 locales (the old `autoStorage*`/`autoUnstorage*` strings are kept but no longer used in the panel)
18+
- Added: `addAvatar`, `changeAvatar` — 9 locales
19+
- Changed: `invWelcomeTitle` — 9 locales (now mentions scanning + 3D printers)
20+
- Removed: `invQrBetaNote` — 9 locales
610 KB
Loading

‎data/whatsnew.json‎

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3437,5 +3437,110 @@
34373437
}
34383438
}
34393439
]
3440+
},
3441+
"1.10.22": {
3442+
"date": "2026-06-25",
3443+
"items": [
3444+
{
3445+
"icon": "sparkle",
3446+
"title": {
3447+
"en": "A fresh phone-first welcome",
3448+
"fr": "Un nouvel écran d'accueil",
3449+
"de": "Neuer Startbildschirm",
3450+
"es": "Nueva pantalla de bienvenida",
3451+
"it": "Nuova schermata di benvenuto",
3452+
"zh": "全新的欢迎界面",
3453+
"pt": "Nova tela de boas-vindas",
3454+
"pt-pt": "Novo ecrã de boas-vindas",
3455+
"pl": "Nowy ekran powitalny"
3456+
},
3457+
"body": {
3458+
"en": "When your inventory is empty, you now get a clean product preview and a clearer message: scan and manage your spools and 3D printers right from your phone.",
3459+
"fr": "Quand votre inventaire est vide, vous voyez désormais un bel aperçu du produit et un message plus clair : scannez et gérez vos bobines et imprimantes 3D directement depuis votre téléphone.",
3460+
"de": "Wenn Ihr Inventar leer ist, sehen Sie jetzt eine schöne Produktvorschau und eine klarere Botschaft: Scannen und verwalten Sie Ihre Spulen und 3D-Drucker direkt vom Handy.",
3461+
"es": "Cuando tu inventario está vacío, ahora ves una bonita vista del producto y un mensaje más claro: escanea y gestiona tus bobinas e impresoras 3D desde tu teléfono.",
3462+
"it": "Quando il tuo inventario è vuoto, ora vedi una bella anteprima del prodotto e un messaggio più chiaro: scansiona e gestisci le bobine e le stampanti 3D dal telefono.",
3463+
"zh": "当库存为空时,现在会显示精美的产品预览和更清晰的提示:用手机扫描并管理您的线材和 3D 打印机。",
3464+
"pt": "Quando o inventário está vazio, agora você vê uma bela prévia do produto e uma mensagem mais clara: digitalize e gerencie seus filamentos e impressoras 3D pelo telefone.",
3465+
"pt-pt": "Quando o inventário está vazio, vê agora uma bela pré-visualização do produto e uma mensagem mais clara: digitalize e faça a gestão dos seus filamentos e impressoras 3D a partir do telemóvel.",
3466+
"pl": "Gdy Twój asortyment jest pusty, zobaczysz teraz ładny podgląd produktu i jaśniejszy komunikat: skanuj i zarządzaj szpulami oraz drukarkami 3D z telefonu."
3467+
}
3468+
},
3469+
{
3470+
"icon": "bolt",
3471+
"title": {
3472+
"en": "Join the beta in one scan",
3473+
"fr": "Rejoignez la beta en un scan",
3474+
"de": "Mit einem Scan zur Beta",
3475+
"es": "Únete a la beta con un escaneo",
3476+
"it": "Entra nella beta con una scansione",
3477+
"zh": "扫一扫即可加入测试版",
3478+
"pt": "Entre na beta com um único scan",
3479+
"pt-pt": "Entre na beta com uma única leitura",
3480+
"pl": "Dołącz do bety jednym skanem"
3481+
},
3482+
"body": {
3483+
"en": "The beta card now has a single universal QR. Scan it with any phone — iPhones go to TestFlight, Android phones to the Android beta, automatically.",
3484+
"fr": "La carte beta a désormais un seul QR universel. Scannez-le avec n'importe quel téléphone — les iPhone vont sur TestFlight, les Android sur la beta Android, automatiquement.",
3485+
"de": "Die Beta-Karte hat jetzt einen einzigen universellen QR-Code. Scannen Sie ihn mit jedem Handy — iPhones landen bei TestFlight, Android-Geräte bei der Android-Beta, automatisch.",
3486+
"es": "La tarjeta beta ahora tiene un único QR universal. Escanéalo con cualquier teléfono: los iPhone van a TestFlight y los Android a la beta de Android, automáticamente.",
3487+
"it": "La scheda beta ora ha un unico QR universale. Scansionalo con qualsiasi telefono: gli iPhone vanno su TestFlight, gli Android sulla beta Android, automaticamente.",
3488+
"zh": "测试版卡片现在只有一个通用二维码。用任意手机扫描——iPhone 会进入 TestFlight,安卓手机会进入安卓测试版,全自动。",
3489+
"pt": "O cartão beta agora tem um único QR universal. Digitalize-o com qualquer telefone: iPhones vão para o TestFlight e Android para a beta Android, automaticamente.",
3490+
"pt-pt": "O cartão beta tem agora um único QR universal. Digitalize-o com qualquer telemóvel: os iPhone vão para o TestFlight e os Android para a beta Android, automaticamente.",
3491+
"pl": "Karta bety ma teraz jeden uniwersalny kod QR. Zeskanuj go dowolnym telefonem — iPhone'y trafią do TestFlight, a Androidy do bety Android, automatycznie."
3492+
}
3493+
},
3494+
{
3495+
"icon": "edit",
3496+
"title": {
3497+
"en": "Set your avatar from the header",
3498+
"fr": "Changez votre avatar depuis l'en-tête",
3499+
"de": "Avatar direkt im Kopfbereich ändern",
3500+
"es": "Cambia tu avatar desde la cabecera",
3501+
"it": "Cambia l'avatar dall'intestazione",
3502+
"zh": "在顶部直接设置头像",
3503+
"pt": "Defina seu avatar pelo cabeçalho",
3504+
"pt-pt": "Defina o seu avatar a partir do cabeçalho",
3505+
"pl": "Ustaw awatar z nagłówka"
3506+
},
3507+
"body": {
3508+
"en": "Hover your avatar at the top-left and click the little edit badge to pick, crop and upload a photo — no need to dig into the menus.",
3509+
"fr": "Survolez votre avatar en haut à gauche et cliquez sur le petit badge d'édition pour choisir, recadrer et envoyer une photo — sans fouiller dans les menus.",
3510+
"de": "Fahren Sie oben links über Ihren Avatar und klicken Sie auf das kleine Bearbeiten-Symbol, um ein Foto auszuwählen, zuzuschneiden und hochzuladen — ganz ohne Menüs.",
3511+
"es": "Pasa el ratón sobre tu avatar (arriba a la izquierda) y haz clic en el pequeño botón de edición para elegir, recortar y subir una foto, sin buscar en los menús.",
3512+
"it": "Passa il mouse sull'avatar in alto a sinistra e clicca il piccolo badge di modifica per scegliere, ritagliare e caricare una foto, senza cercare nei menu.",
3513+
"zh": "将鼠标悬停在左上角的头像上,点击小编辑按钮即可选择、裁剪并上传照片,无需进入菜单。",
3514+
"pt": "Passe o mouse sobre seu avatar no canto superior esquerdo e clique no pequeno selo de edição para escolher, recortar e enviar uma foto, sem vasculhar menus.",
3515+
"pt-pt": "Passe o rato sobre o seu avatar no canto superior esquerdo e clique no pequeno selo de edição para escolher, recortar e enviar uma foto, sem andar pelos menus.",
3516+
"pl": "Najedź na awatar w lewym górnym rogu i kliknij małą plakietkę edycji, aby wybrać, przyciąć i przesłać zdjęcie — bez szukania w menu."
3517+
}
3518+
},
3519+
{
3520+
"icon": "nfc",
3521+
"title": {
3522+
"en": "QR codes are now scan-only",
3523+
"fr": "Les QR codes sont faits pour être scannés",
3524+
"de": "QR-Codes nur noch zum Scannen",
3525+
"es": "Los códigos QR ahora solo se escanean",
3526+
"it": "I codici QR ora sono solo da scansionare",
3527+
"zh": "二维码现在仅供扫描",
3528+
"pt": "Os QR codes agora são só para digitalizar",
3529+
"pt-pt": "Os códigos QR agora são só para digitalizar",
3530+
"pl": "Kody QR są teraz tylko do skanowania"
3531+
},
3532+
"body": {
3533+
"en": "QR codes no longer react to clicks — they're meant to be scanned with your phone's camera. Plus, the camera \"Detach\" button is hidden when you're viewing a friend.",
3534+
"fr": "Les QR codes ne réagissent plus au clic — ils sont faits pour être scannés avec l'appareil photo. De plus, le bouton « Détacher » de la caméra est masqué quand vous consultez un ami.",
3535+
"de": "QR-Codes reagieren nicht mehr auf Klicks — sie sind zum Scannen mit der Handykamera gedacht. Außerdem ist die Kamera-Schaltfläche „Ablösen“ ausgeblendet, wenn Sie einen Freund ansehen.",
3536+
"es": "Los códigos QR ya no responden a los clics: están pensados para escanearse con la cámara del teléfono. Además, el botón «Separar» de la cámara se oculta cuando ves a un amigo.",
3537+
"it": "I codici QR non rispondono più ai clic: vanno scansionati con la fotocamera del telefono. Inoltre, il pulsante «Stacca» della fotocamera è nascosto quando guardi un amico.",
3538+
"zh": "二维码不再响应点击——它们用于通过手机摄像头扫描。此外,查看好友时会隐藏摄像头的“分离”按钮。",
3539+
"pt": "Os QR codes não respondem mais a cliques — eles devem ser digitalizados com a câmera do telefone. Além disso, o botão \"Destacar\" da câmera fica oculto ao ver um amigo.",
3540+
"pt-pt": "Os códigos QR já não respondem a cliques — devem ser lidos com a câmara do telemóvel. Além disso, o botão \"Destacar\" da câmara fica oculto quando vê um amigo.",
3541+
"pl": "Kody QR nie reagują już na kliknięcia — służą do skanowania aparatem telefonu. Dodatkowo przycisk „Odłącz” kamery jest ukryty podczas przeglądania profilu znajomego."
3542+
}
3543+
}
3544+
]
34403545
}
34413546
}

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tigertag-inventory",
3-
"version": "1.10.21",
3+
"version": "1.10.22",
44
"description": "Tiger Studio Manager — desktop app",
55
"main": "main.js",
66
"engines": {

0 commit comments

Comments
 (0)