Skip to content

Commit 763fc49

Browse files
committed
v2.23.0 — TigerScale card mirrors the scale, Creality colours back on the board
The TigerScale live card now matches the machine's own weigh screen, with the spool's rack location and TARE as a key beneath the display. Adds a Refill container for spools kept with no masterspool. Fixes a user-reported bug where every Creality CFS slot rendered grey on the printer board: the brand's colour parser lived inside the panel's own render function, so the board's feeds published the raw payload. Checking the other brands turned up a sibling in Bambu Lab's optimistic colour update. Community contributions by @Ptitlouis6012 (#16, #17).
1 parent d5c9bef commit 763fc49

22 files changed

Lines changed: 262 additions & 102 deletions

File tree

‎CHANGELOG.md‎

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

66
---
77

8+
## v2.23.0 — 2026-08-28
9+
10+
### Added
11+
12+
- **A `Refill` container** at the top of the picker (type *Without MasterSpool*, `container_weight: 0`), for a spool stored with no masterspool at all — the net weight is then the spool's own. Illustrated by a bare refill coil rather than a crossed-out spool: every other row shows the object you have, and without a masterspool the object is the filament itself. Uncoloured on purpose — a coil's colour is the filament's, not the container's, so any real colour would be wrong for most spools. Cut out to a transparent 256×256 like the rest of the catalogue. Contributed by [@Ptitlouis6012](https://github.com/Ptitlouis6012) ([#17](https://github.com/TigerTag-Project/TigerTag-Studio-Manager/pull/17)) — `data/container_spool/spools_filament.json`.
13+
14+
### Changed
15+
16+
- **The TigerScale live card mirrors the scale's own weigh screen**: weight and vertical divider on the left, container and filament values plus the spool's rack location on the right, on a dark inner panel using the firmware's palette (`LVCOL_GREEN/ACCENT/YELLOW/RED/ORANGE`) so a status badge reads the same on both screens. The rack location is real Firestore data in the detail panel's coordinate format, not a placeholder. The hand-rolled cellular-bars WiFi indicator gives way to the app's own `icon-wifi` glyph, and the redundant "last known spool" row goes, superseded by the block's own brand/material display. Contributed by [@Ptitlouis6012](https://github.com/Ptitlouis6012) ([#16](https://github.com/TigerTag-Project/TigerTag-Studio-Manager/pull/16)) — `renderer/IoT/tigerscale/index.js`, `renderer/IoT/tigerscale/tigerscale.css`.
17+
- **Tare is a key beneath the screen**, inside the card, instead of a button floating under it — where it sits on the scale itself, wearing the firmware's tones and its two-line face (the fixed `0.0` above the word, as the device prints it; it is part of the key's face, not a reading). The `.sc2-live-card` frame moved out of the live block to make room: the button stays a SIBLING of `.scale-card-local`, never a child, because that block is replaced wholesale on every WS delta (10 Hz) and a hold in progress would be cancelled. Disconnecting now hides the whole card, Tare included, rather than leaving an empty bordered box around a dead button — `renderer/IoT/tigerscale/index.js`, `renderer/IoT/tigerscale/tigerscale.css`.
18+
- `scaleTareBtn` is the operation's name in capitals, as the firmware prints it (TARE / TARA / 去皮), replacing the conjugated forms (Tarer, Tarieren, Taruj) — the key belongs to the device and should speak its language.
19+
20+
### Fixed
21+
22+
- **Every Creality CFS slot came out grey on the printer board** while the machine's own panel showed the right colours. Creality broadcasts a colour as bare hex with no `#`, sometimes with a stray leading zero (`0FF5722`) — neither is a CSS colour. `parseCreHex` was defined INSIDE `renderCreFilamentCard`, so `creGetSlots`/`creGetUnits`, written later, read `boxsInfoRaw` and published a value no stylesheet could interpret. The parser is module-scope now and both feeds use it. Creality was the only brand whose board feed read the raw payload rather than the driver's normalised state; the other five were checked. Reported by a user — `renderer/printers/creality/index.js`.
23+
- Choosing a filament colour on a Bambu Lab machine changed nothing on screen until the printer's next report: the optimistic local update wrote the WIRE shape into the INTERNAL one — the external tray kept the unparsed `RRGGBBAA` string, and the AMS branch set a `tray_color` field nothing downstream reads (the internal slot is `{ id, color, type, active }`). Both now go through `_parseColor` into `.color`. Found while checking whether the Creality defect had siblings — `renderer/printers/bambulab/index.js`.
24+
- Switching language left an open Scales panel in the previous one: its cards are built once by `renderScalesPanel()` and only patched surgically afterwards, so nothing revisited their text — it is rebuilt with the rest of the reactive chain now. Contributed by [@Ptitlouis6012](https://github.com/Ptitlouis6012) ([#16](https://github.com/TigerTag-Project/TigerTag-Studio-Manager/pull/16)) — `renderer/inventory.js`.
25+
- The TigerScale's name was invisible in light theme: it sits on the card's shell, which follows the theme, but was painted a hardcoded white meant for the firmware's dark inner screen — `renderer/IoT/tigerscale/tigerscale.css`.
26+
- The Tare button's hold fill could not be seen in light theme: it was painted `var(--ink-40)`, which flips to a dark ink there, over a key that keeps the firmware's dark tone in both themes. An invisible fill reads as a broken button, since nothing else happens until the hold completes — `renderer/IoT/tigerscale/tigerscale.css`.
27+
28+
---
29+
830
## v2.22.0 — 2026-08-28
931

1032
### Added

‎FEATURES.md‎

Lines changed: 3 additions & 2 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.22.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.23.0**. Per-version release detail lives in `CHANGELOG.md`; forward-looking / in-progress work lives in `ROADMAP.md`.
44

55
---
66

@@ -54,6 +54,7 @@ Tiger Studio Manager is the Electron desktop companion to the TigerTag ecosystem
5454
- Hard delete + anti-resurrection (`cloudSync` flag) — spools are hard-deleted from Firestore instead of tombstoned; legacy tombstones auto-purged on first snapshot (v1.7.4).
5555
- `updatedAt` field standardised (`FieldValue.serverTimestamp()`) across writes, ISO with the printer data model (v1.7.4).
5656
- Container auto-assignment — every spool without a `container_id` is matched to one by brand on the next live snapshot (v1.7.4).
57+
- **Refill** container for a spool kept with no masterspool at all — a zero-weight generic entry pinned to the top of the picker, so the weight shown is the filament's own (v2.23.0).
5758
- Legacy data migrations: decimal → hex-uppercase UID migration with consent + progress UI (v1.4.5), flat rack fields → nested `rack{}` object migration (v1.4.7).
5859
- Instant cold start — IndexedDB snapshot cache plus an on-disk product-thumbnail cache served over a local HTTP server, so inventory/racks/printers render before the network round-trip completes and the app stays usable offline (v1.8.15; app-wide launch-cache + splash screen v1.8.24).
5960
- Persistent rotating log file via `electron-log` for post-mortem diagnostics (v1.7.5).
@@ -209,7 +210,7 @@ Live integrations across six brands, each with real-time temperatures, per-slot
209210

210211
- **ACR122U NFC reader** (USB, via `nfc-pcsc`) — plug-and-scan auto-open of the matching spool, with hot-plug detection on Windows (v1.0+; hot-plug fix v1.10.28-era).
211212
- **TD1S** color/TD sensor — auto-detect on USB plug, live viewer, unified color+TD scanning modal with multi-slot (1–3 colour) support, edit-pencil swatch UI (v1.3+; unified modal v1.8.0).
212-
- **TigerScale** — WebSocket heartbeat presence (`users/{uid}/scales/{mac}`), live gradient card matching the mobile app: 56 px weight display, send-status badge (`idle → scanning → stable → send → success`), filament mini-panel pushed from firmware, twin-UID 2-reader grid, hold-to-confirm TARE (v1.5.0). Onboarding card for users without a scale, rebuilt around the **V3** machine — lit product shot with a generation badge, six icon-led capability rows, and two destinations: the firmware on GitHub and the printable body on MakerWorld (v2.19.0). Header presence rebuilt as **one glyph per scale** (capped at two), each coloured by its own state — **active** (green) / **standby** (blue) / **offline** (red) / grey when none — with a per-scale hover popover, an **iOS-style battery pill** (charge % + charging bolt) on the glyph, a distinct **standby** state with regime-aware offline detection (90 s active / 11 min screen-off, so a screen-off scale isn't shown disconnected), Wi-Fi coloured by connectivity, and a TARE confirmed only on a real 2xx response (v2.20.0).
213+
- **TigerScale** — WebSocket heartbeat presence (`users/{uid}/scales/{mac}`), live gradient card matching the mobile app: 56 px weight display, send-status badge (`idle → scanning → stable → send → success`), filament mini-panel pushed from firmware, twin-UID 2-reader grid, hold-to-confirm TARE (v1.5.0). Onboarding card for users without a scale, rebuilt around the **V3** machine — lit product shot with a generation badge, six icon-led capability rows, and two destinations: the firmware on GitHub and the printable body on MakerWorld (v2.19.0). Header presence rebuilt as **one glyph per scale** (capped at two), each coloured by its own state — **active** (green) / **standby** (blue) / **offline** (red) / grey when none — with a per-scale hover popover, an **iOS-style battery pill** (charge % + charging bolt) on the glyph, a distinct **standby** state with regime-aware offline detection (90 s active / 11 min screen-off, so a screen-off scale isn't shown disconnected), Wi-Fi coloured by connectivity, and a TARE confirmed only on a real 2xx response (v2.20.0). Live card rebuilt to mirror the scale's own weigh screen — weight and divider on the left, container and filament values plus **the spool's rack location** on the right, on the firmware's own palette — with TARE as a two-line key beneath the screen, inside the card, where it sits on the machine itself (v2.23.0).
213214
- **TigerPOD** dual-reader stand — dedicated modal with product video/imagery, MakerWorld STL download, dual-chip simultaneous encode ("Dual Link"), auto-opens when a chip action needs a reader that isn't connected (v1.8.0; redesigns v1.8.2, v2.9.0 hero video); ownership + reader-count telemetry signal (`hasPod`, `rfidReadersMax`) (v2.9.0); the modal now offers **both Pod models** to print — Standard and Mini (for OpenSpool) — each with its own MakerWorld download (v2.20.0).
214215
- **USB scale (Dymo M-series)** live weighing — plug a Dymo USB HID scale and spool weights fill themselves in: a chip on the reader (POD mode) saves the weight silently, or an open spool card offers an inline confirm; live grams appear in the spool's weight panel with an "asleep — tap to wake" hint when the scale powers down (v2.14.0).
215216

0 commit comments

Comments
 (0)