Skip to content

Commit c51f944

Browse files
committed
v2.29.0 — add a whole fleet from one scan, and Bambu Lab China accounts sign in
1 parent a2f36f3 commit c51f944

8 files changed

Lines changed: 117 additions & 23 deletions

File tree

‎CHANGELOG.md‎

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

66
---
77

8+
## v2.29.0 — 2026-09-23
9+
10+
### Added
11+
12+
- **LAN scan: tick one or several printers, every brand.** A scan result is no longer a link to the form: it is a checkbox (the chevron becomes the tick box the Bambu cloud picker already used), and an "Add this printer / Add these N printers" key appears in the card's footer. **One** ticked keeps the old path exactly — the prefilled settings form, where the name is reviewed and any code typed. **Several** are written in ONE Firestore batch (all or nothing) through the new `ctx.addScannedPrinters(brand, prefills)`, which builds the very doc the form's Save writes (every schema field + `printerName` + `printerModelId` + `_fireSafe(discovery)`, `isActive:false`, appended `sortIndex`), then `finishPrinterAdd` opens the last one. A REQUIRED schema field the scan could not supply (`ctx.printerRequiredFields(brand)`: Bambu `password` access code, Elegoo `mqttPassword`, FlashForge `password` check code and `serialNumber` for an unidentified machine, Anycubic `deviceId`/`username`/`password` without a slicer-config match) is asked for on each ticked card, only when more than one is ticked; an empty one is ringed red and nothing is written. Shared module `renderer/printers/scan-pick.js` (`createScanPicker` → `attach` / `reset`); each brand's prefill extracted into a `_prefillFor` builder, Anycubic's slicer-credential lookup into `_credsForCandidate`; a Snapmaker card that is ticked is not swapped for a richer re-probe of the same IP — `renderer/printers/{scan-pick.js,context.js,*/add-flow.js}`, `renderer/inventory.js`, `renderer/css/40-printers.css`.
13+
- **Bambu Lab cloud: China-mainland accounts (#33).** A separate Bambu platform — a Global token means nothing there — so the region is chosen at sign-in ("Account region": Global / China mainland) and carried by every later call. `main.js` builds the URL set per region (`_bblUrls(region)`: `api.bambulab.cn`, `bambulab.cn/api/sign-in/tfa`), every cloud IPC (`send-code`, `login`, `tfa`, `uid`, `bind`, `tasks`, `device-version`) takes `region`, and the broker is `cn.mqtt.bambulab.com` with no us/eu fallback. A phone number (digits only, `+86`/`0086` stripped) goes to `POST https://bambulab.cn/api/v1/user-service/user/sendsmscode` `{ phone, type: "codeLogin" }`, then `login` with it as `account`; typing one flips the switch to China. Hosts and payloads from the maintained Home Assistant integration (pybambu); not yet validated on a real China account. `PROTOCOL.md` §17.3b — `main.js`, `renderer/printers/bambulab/{add-flow.js,index.js,PROTOCOL.md}`, `renderer/css/40-printers.css`.
14+
- **Debug mode: the per-card view badge on the add-printer flow** — brand picker, add/edit form, and every per-brand card (`.modal-overlay > .modal-card.pba-card`, found generically and observed on `<body>` since each brand mounts its cards lazily). A per-brand card is named from its id (`bblCloudOverlay` → "Add printer — Bambu Lab · Cloud") and its copied ref points at its own `add-flow.js`; on a card with a footer the chip sits above "Back" — `renderer/inventory.js`, `renderer/css/70-detail-misc.css`.
15+
16+
### Changed
17+
18+
- **Bambu cloud sign-in** — the field is plain "Email" (or "Phone number or email" in China mode); an empty or malformed entry is refused with a message saying why and the field ringed red, where the key used to do nothing. The code step says "by text" when it went by SMS — `renderer/printers/bambulab/add-flow.js`.
19+
- **`users/{uid}/printers/bambulab/secrets/cloud_session`**: `email` renamed `account` (it can be a phone number now; the old field is deleted on the next sign-in), `region` is `"us"|"eu"|"cn"`. No other app reads this document — `renderer/inventory.js`, `docs/bambu_connect_cloud.md`.
20+
21+
### Fixed
22+
23+
- **Add-printer flow: switching cards slid the new one in BEHIND the old.** Every pba overlay shares `z-index: 9999`, so DOM order decided, and a card declared later in its brand's markup (Bambu's choice card, after the cloud card) stayed on top during the swap — then, released at the end of the 320 ms pin, slid out OVER the card that had covered it. The outgoing overlay now carries `.pba-behind` (`z-index: 9998`) through the pin AND its own slide-out (650 ms), dropped at once if it is reopened — `renderer/inventory.js`, `renderer/css/40-printers.css`.
24+
25+
---
26+
827
## v2.28.0 — 2026-09-23
928

1029
### Added

‎FEATURES.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Tiger Studio Manager — Feature Catalogue
22

3-
Tiger Studio Manager is the Electron desktop companion to the TigerTag ecosystem: a filament-inventory manager built around RFID/NFC-tagged spools ("TigerTag" chips), a fully-digital "TigerData" tier (and its catalogue-identified "TigerData+" rung), live 3D-printer integration across six brands, physical storage/rack management, a Firebase-backed social layer (friends, shareable wishlists, public profiles), and companion hardware (TD1S color sensor, TigerScale, TigerPOD dual-reader stand). This document catalogues every **shipped** feature, grouped by domain, current as of **v2.28.0**. Per-version release detail lives in `CHANGELOG.md`; forward-looking / in-progress work lives in `ROADMAP.md`.
3+
Tiger Studio Manager is the Electron desktop companion to the TigerTag ecosystem: a filament-inventory manager built around RFID/NFC-tagged spools ("TigerTag" chips), a fully-digital "TigerData" tier (and its catalogue-identified "TigerData+" rung), live 3D-printer integration across six brands, physical storage/rack management, a Firebase-backed social layer (friends, shareable wishlists, public profiles), and companion hardware (TD1S color sensor, TigerScale, TigerPOD dual-reader stand). This document catalogues every **shipped** feature, grouped by domain, current as of **v2.29.0**. Per-version release detail lives in `CHANGELOG.md`; forward-looking / in-progress work lives in `ROADMAP.md`.
44

55
---
66

@@ -175,15 +175,15 @@ Tiger Studio Manager is the Electron desktop companion to the TigerTag ecosystem
175175

176176
Live integrations across six brands, each with real-time temperatures, per-slot filament, active print job data, and (where hardware supports it) a camera feed and machine controls:
177177

178-
- **Bambu Lab** — LAN (MQTTS 8883 TLS) **and cloud**: sign in with a Bambu account and every printer on it is offered with its picture, ticked one or several at a time, arriving with the LAN access code the cloud hands over; cloud machines report from anywhere and learn their own address from telemetry, so their camera starts unattended on the same network (cloud v2.26.0). Job/temp/AMS cards, camera (JPEG-TCP + RTSP by model), full machine controls over LAN (jog/home/light/fans/speed/heated chamber where supported), print-plate thumbnails via FTPS+3mf extraction, H2-series dual-nozzle display (v1.6.0; full controls v1.10.7; thumbnails v2.1.0). A CLOUD connection is read-only — the machine accepts no command but its light, so only that one is offered (v2.27.3).
178+
- **Bambu Lab** — LAN (MQTTS 8883 TLS) **and cloud**: sign in with a Bambu account and every printer on it is offered with its picture, ticked one or several at a time, arriving with the LAN access code the cloud hands over; cloud machines report from anywhere and learn their own address from telemetry, so their camera starts unattended on the same network (cloud v2.26.0; **China-mainland accounts, phone-number sign-in by SMS** v2.29.0). Job/temp/AMS cards, camera (JPEG-TCP + RTSP by model), full machine controls over LAN (jog/home/light/fans/speed/heated chamber where supported), print-plate thumbnails via FTPS+3mf extraction, H2-series dual-nozzle display (v1.6.0; full controls v1.10.7; thumbnails v2.1.0). A CLOUD connection is read-only — the machine accepts no command but its light, so only that one is offered (v2.27.3).
179179
- **Creality** — WebSocket 9999 with heartbeat; job/temp cards, CFS colour-box grid, WebRTC camera, full machine controls (jog/home/temps/fans), per-slot CFS load/unload (v1.4.15; controls v1.10.13).
180180
- **Elegoo** — MQTT 1883 + UDP discovery 52700; job/temp/filament (mono + 4-slot Canvas) cards, XY-jog control card, fan cards, files/history sheet, filament edit sheet (v1.6.0).
181181
- **FlashForge** — HTTP polling 8898 + MJPEG camera; 5-slot matlStation grid, tool-changer support (Creator 5 Pro), official 24-swatch colour-palette constraint, lifetime-stats info panel (v1.4.11; monitoring & controls v1.10.10).
182182
- **Snapmaker** — Moonraker WebSocket 7125; job card with thumbnail, temperature pills, 4-slot filament grid with inline editor, WebRTC camera, mDNS + port-scan discovery (v1.4.7; discovery v1.4.8).
183183
- **Anycubic** — LAN (MQTTS 9883 TLS) and cloud (cross-platform web login + cloud-MQTT + signed REST), ACE multi-slot filament box, full controls, HTTP-FLV / Agora WebRTC camera, on-printer + USB + cloud file browser with print/delete (v1.9.0; cloud v1.10.0; file management v1.10.11; cloud camera v1.10.8; integration contributed by [@ennisj](https://github.com/ennisj), John Ennis).
184184
- Per-brand model catalogues with thumbnails, brand logos across list/grid/add-picker (v1.10.11).
185185
- Unified "Add a printer" flow — brand picker, model picker, docked options panel, connection tutorials (LAN-only mode / access code / IP walkthroughs, screenshots, all 9 locales) surfaced from both the add flow and printer settings (v1.8.19; flow redesign v1.10.26; **Bambu Lab A2L and X2D** recognised on discovery and given their walkthroughs v2.27.0).
186-
- LAN discovery per brand — mDNS/SSDP/UDP scans plus a persisted, account-synced shared "extra subnets" list and a manual "Add by IP" path across all six brands (v1.4.8 → v1.10.0; unified extra-subnets store v1.8.20).
186+
- LAN discovery per brand — mDNS/SSDP/UDP scans plus a persisted, account-synced shared "extra subnets" list and a manual "Add by IP" path across all six brands (v1.4.8 → v1.10.0; unified extra-subnets store v1.8.20; **tick one or several scan results and add them in one go**, each machine's own code asked on its card, v2.29.0).
187187
- Printer side panel — drag-drop reorder, inline field editing, online/offline indicator via HTTP ping (v1.4.7; "last seen" tracking v1.10.11).
188188
- Printer table/grid — live state pills, progress bar + remaining time, a **Preview** column showing the model currently on the bed, and an **"Ends at"** wall-clock column sortable by soonest finish (v1.7.1; Preview + Ends-at v2.0.0).
189189
- Printer tags, with the same autocomplete UX as spool tags, plus a search bar and Brand/State/Tags filters in the Printers view (v2.0.0).

‎README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ The **TigerTag SDK** is the low-level library that handles all NFC chip operatio
128128
- **Find a colour by pointing at it** — a rainbow bar and a white-to-black bar with a window you drag along them; spools in range stay lit and the rest fade, so you see *where* that orange actually sits. Works in Inventory, Favorites, the Catalogue and Storage alike
129129

130130
### 🖨 3D Printer integration
131-
Live integrations for 6 brands — real-time temperatures, filament per slot, active print job, camera. **Bambu Lab printers can be added by signing in with your Bambu account**: your email, the code they send back, and every machine on the account is offered with its picture — reachable from anywhere, not only from your own network.
131+
Live integrations for 6 brands — real-time temperatures, filament per slot, active print job, camera. **Bambu Lab printers can be added by signing in with your Bambu account**: your email, the code they send back, and every machine on the account is offered with its picture — reachable from anywhere, not only from your own network. Accounts on Bambu's **China mainland** platform sign in with their phone number.
132132

133133
Every brand at a glance:
134134

@@ -141,7 +141,7 @@ Every brand at a glance:
141141
| **FlashForge** | HTTP polling 8898 + matlStation | ✅ Live |
142142
| **Snapmaker** | Moonraker WebSocket 7125 | ✅ Live |
143143

144-
Each brand supports: filament edit per slot, printer discovery (mDNS + port-scan + Add by IP), camera widget.
144+
Each brand supports: filament edit per slot, printer discovery (mDNS + port-scan + Add by IP), camera widget. When a scan finds several machines, **tick the ones you want and add them all in one go**.
145145

146146
The **printers table** shows, per printer: a live **print preview** (the model on the bed), the current job, and an **"Ends at"** column with the wall-clock finish time — plus per-printer **tags** and a search bar with **Brand / State / Tags** filters to manage a whole fleet.
147147

0 commit comments

Comments
 (0)