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 3df60e3
Browse filesBrowse the repository at this point in the historyBrowse files
v2.33.0 — twin chips know which is which (tag index/count, asks for the missing chip), Snapmaker U1 camera on the stock firmware, favorites delete again, calmer catalogue
-**Tag index / tag count (TigerTag protocol v2.2).** Chip byte +39 (page 0x0D, byte 3 — formerly padding) carries *chip i of n*: high nibble = index from 1, low nibble = count (`0x11` single, `0x12` / `0x22` twin, `0x00` unknown = every pre-v2.2 chip). Not covered by the TigerTag+ ECDSA signature (UID + pages 4-5), so it never invalidates a signed chip.
13
+
- SDK `tigertag` 1.1.0 → ^1.2.0, forced offline in the main process (`process.env.TIGERTAG_OFFLINE = '1'` before the require): Studio only encodes/decodes bytes and has its own reference-data service, so no daily `api.tigertag.io` check and no OS-cache writes from the SDK's `TigerTagDB`.
14
+
-**Burn**: the guided encode (`_cemStartBurn`) passes `tagCount` = chips in the sequence and `tagIndex` = rank (1..n) to `rfid:burn-one`, which patches them with the shared timestamp; `_cemMigrate` records `tag_index` / `tag_count` on the new docs.
15
+
-**Re-writes keep the chip's byte**: `_keepChipTimestamp` → `_keepChipIdentity` overlays the chip's own bytes 32-35 (timestamp) **and 39** before the surgical page diff in `rfid:write-now` and `rfid:encode-cloud` — fromCloudDoc does not carry `tag_info`, so a factory twin used to lose its `0x12`/`0x22` on the first weight or colour sync. Without a readable chip, a full write falls back to the doc's `tag_index` / `tag_count` (`_tagInfoPatch`, nibble-clamped).
16
+
-**Read / storage**: `_writeChipDoc` unpacks the SDK's `tag_info` into `tag_index` / `tag_count` on `users/{uid}/inventory/{UID}` on every scan (0 / 0 = unknown); `normalizeRow` exposes `tagIndex` / `tagCount` (null on chipless docs). No rules change (inventory is owner-write, no field whitelist).
17
+
-**Pairing**: `_tagInfoAllowsTwin` rules out a twin the byte contradicts — a chip marked single, mismatched counts, the same rank twice — in both the 2-reader scan and `autoLinkTwinsByTimestamp` (two factory singles of one product burned within 2 s were otherwise paired); unknown values never block.
18
+
-**UI**: spool card Details row *Chip i of n*; a *twin still missing* banner (`#twinMissingBanner`) when `tag_count` ≥ 2 and the partner was never scanned (it pairs on the shared timestamp once scanned); RFID tester shows *Tag i of n* (`parser.js` decodes offset 39).
19
+
-**`.ttag`**: exported with the verbatim doc; `_ttagSanitizeRecord` keeps them when 0-15 and drops them on a chipless record or an out-of-range value; listed as on-chip optional fields in `docs/TTAG-FIELDS.md` and `playground/ttag-fields-editor`; added to `TTAG_ON_CHIP_FIELDS`. `CHIP_ONLY_FIELDS` now includes them, so a duplicated (chipless) spool never inherits *chip 1 of 2*.
20
+
- Docs: `docs/firestore-schema.md`, MCP data guide, backend `README.md`. Verified on real chips (TigerPOD, 2 readers): burn single `0x11`, twin `0x12`/`0x22` with one timestamp, only pages 0x0C/0x0D changed, identity + signature pages intact; weight sync 1000→950→1000 g wrote only page 0x17 and kept byte +39 + timestamp.
21
+
- **Snapmaker U1 camera on the stock firmware.** On connect Studio asks `server.webcams.list` (`camMode` on the conn): a declared webcam (Paxx) or an error keeps the WebRTC player (`/webcam/webrtc`); none (stock — nginx `/webcam/` answers 502) switches to refreshed stills: `camera.start_monitor` `{domain:"lan", interval:0}` every 10 s over the existing Moonraker socket (`snapWakeStockCamera`), and `/server/files/camera/monitor.jpg` (1920×1080, ~100 KB) fetched `no-store` into Blob URLs at ~1 fps, swapped only once downloaded, previous URL revoked. One loop per printer feeds every surface (side card, camera wall, printer card); it stops 12 s after the last feed leaves the screen, so the wake-ups stop and the camera idles. A `camera.start_monitor` error hides the camera block. Works outside the printer's LAN-only mode. Documented in `PROTOCOL.md` §11.4 — `printers/snapmaker/widget_camera.js`, `printers/snapmaker/index.js`, `inventory.js` (`#ppPersistentCam` rebuilt on IP **or** mode change, `snapCamSig`).
22
+
23
+
### Changed
24
+
25
+
- TigerScale photo is the V3 hardware render (README, scale card, empty state) — contributed in PR #34; the shipped copy is trimmed, resized to 512² and palettised (1.38 MB → 78 KB), full-res master archived in `assets-src/`.
26
+
27
+
### Fixed
28
+
29
+
-**Deleting favorites (bulk Delete) always failed with "permission denied"** since v2.12.0: the `products` rule read `request.resource.data` (attachment cap) in a single `allow write`, which errors on a delete. Split into `allow create, update` (cap kept) + `allow delete: if isOwner()` — backend `firestore.rules`, deployed server-side (effective for every version).
30
+
-**Catalogue grid flickered twice on a ★/❤ toggle.** The optimistic render + the product snapshot(s) each rebuilt every card (60 photos re-inserted, chunks scrolled into view dropped). `_catViewSearch` now skips the rebuild when the result list, view mode, language and index are unchanged (`_catViewRenderedSig` / `_catViewRenderedIndex`) and patches only the cards whose product badge moved (`data-pb`, `_catViewPatchBadges`); the product card keeps its photo node across re-renders.
31
+
-**Printer side card**: the body had become a second scroller (generic `.panel-body` overflow), so the Snapmaker camera — kept outside it to survive re-renders — stayed pinned while the rest scrolled. `.pp-scroll` is now the only scroller (camera + body, scrollbar hidden) — `40-printers.css`.
Copy file name to clipboardExpand all lines: FEATURES.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Tiger Studio Manager — Feature Catalogue
2
2
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.32.1**. 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.33.0**. Per-version release detail lives in `CHANGELOG.md`; forward-looking / in-progress work lives in `ROADMAP.md`.
4
4
5
5
---
6
6
@@ -214,6 +214,7 @@ Live integrations across six brands, each with real-time temperatures, per-slot
214
214
- True fullscreen for a single camera via the Fullscreen API — fills the screen rather than the app window, and never recreates the card, so the live stream survives (v1.7.2 as a window-filling card, real fullscreen v2.25.0).
- Creality single shared `RTCPeerConnection` across every surface that shows its camera (v1.8.2).
217
+
-**Snapmaker U1 camera on the stock firmware** — no Paxx needed: the printer's own monitor is woken over Moonraker and shown as 1080p stills at ~1 fps on every surface (side card, camera wall, cards); Paxx keeps its WebRTC live video (v2.33.0).
217
218
218
219
## Sensors & devices
219
220
@@ -232,6 +233,7 @@ Live integrations across six brands, each with real-time temperatures, per-slot
232
233
- Physical-chip backup — TigerTag+ signature saved on first read, enabling later restore; "Backed up" badge (v1.10.28, badge v1.10.29).
233
234
- Product ID surfaced from the chip with a link to the product catalogue page (v1.10.29).
234
235
- Terminology unification: all user-facing "RFID" strings renamed to "NFC" (v2.5.0).
236
+
-**Tag index / tag count** (TigerTag protocol v2.2) — every chip says which one of its object it is ("chip 1 of 2"): written by the guided encode (single `0x11`, twin `0x12`/`0x22`), kept intact through weight and colour syncs, stored on each spool on scan, shown on the spool card, carried in `.ttag`; a twin whose partner was never scanned gets a "scan the other chip" banner, and two chips that say they are singles are never paired as a twin (v2.33.0).
Copy file name to clipboardExpand all lines: README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -120,7 +120,7 @@ The **TigerTag SDK** is the low-level library that handles all NFC chip operatio
120
120
-**Spools that keep themselves current***(new in 2.16.0)* — when a brand corrects a temperature, a diameter or a colour name, the spools you own follow along on their own. Only a TigerTag+ can ever ask you for anything, and only when the change concerns something written on the chip itself
121
121
-**Photos framed in the spool's colour***(new in 2.30.0)* — every spool photo sits in a frame of its own colour, in the grid, the lists, the catalogue and the details, so you spot the red one at a glance
122
122
- Custom product image for DIY & Cloud spools
123
-
- Manufacturing date, twin-tag detection and manual repair
123
+
- Manufacturing date, twin-tag detection and manual repair — chips written as a twin say so ("chip 1 of 2"), and the app asks for the second chip when only one has been scanned
124
124
- Spool toolbox — scan color (TD1S), scan TD, link twin, remove from rack, delete
125
125
-**One action row on every card** — the product card, the spool detail and the stack of identical spools all offer the same buttons, including a shopping button that opens the shop when the filament has a buy link (and takes you to where you'd add one when it hasn't)
126
126
-**Multi-select** — tick several spools (or printers) and delete them together, with a hold-to-confirm
@@ -145,6 +145,8 @@ Every brand at a glance:
145
145
146
146
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**. A **FlashForge Creator 5 / 5 Pro** tells you whether it runs the official Cloud + LAN firmware and hands you the latest version for your model *(new in 2.30.0)*.
147
147
148
+
The **Snapmaker U1** shows its camera even on the original Snapmaker firmware (about one picture a second, enough to watch a print); with the Paxx extended firmware it is smooth live video *(new in 2.33.0)*.
149
+
148
150
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.
149
151
150
152
Some brands also expose a **live control panel** (Snapmaker, Elegoo, Anycubic): home / jog the axes, set nozzle & bed targets, toggle the light, control the part-cooling fan, pick the print-speed mode, and load / unload filament per slot.
Copy file name to clipboardExpand all lines: WORKLOG.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Worklog — v2.32.2 (in progress)
1
+
# Worklog — v2.33.0 (released 2026-10-03)
2
2
3
3
## Added
4
4
- Tag index / tag count (TigerTag protocol v2.2, chip byte +39: high nibble = chip i, low nibble = n chips) — `main.js`, `preload.js`, `renderer/inventory.js`, `renderer/rfid_protocol/tigertag/parser.js`, `renderer/rfid_protocol/tigertag/index.js`, `package.json`, `package-lock.json`
Twin-chip spools now know they are twins, and the Snapmaker U1 camera works without custom firmware.
2
+
3
+
## Added
4
+
5
+
- Spools carrying two TigerTag chips now record which chip is which ("chip 1 of 2"). When only one of the two has been scanned, the spool card asks you to scan the other one.
6
+
- New spools encoded from the app write this chip number automatically (single chip, or chip 1 and 2 of a twin), and updating a spool's weight or colour keeps it intact.
7
+
- The chip number is included in `.ttag` exports and imports.
8
+
- Snapmaker U1: the camera now works on the original Snapmaker firmware, without the Paxx extended firmware (about one image per second). With Paxx, the smooth live video is unchanged.
9
+
10
+
## Changed
11
+
12
+
- The TigerScale photo now shows the current V3 hardware.
13
+
14
+
## Fixed
15
+
16
+
- Fixed an issue where deleting favorites always failed with a permission error.
17
+
- Fixed an issue where the catalogue grid flickered when adding or removing a favorite.
18
+
- Fixed an issue where, on a Snapmaker printer card, the camera stayed fixed at the top instead of scrolling with the rest of the card.
19
+
- Two chips of the same product written seconds apart are no longer paired as a twin when they say they are single chips.
20
+
- Updated a component used by automatic updates to a version with a security fix.
21
+
22
+
---
23
+
24
+
📖 **[Full changelog](https://github.com/TigerTag-Project/TigerTag-Studio-Manager/blob/main/CHANGELOG.md)** · ⬇️ Grab the installer for your OS from the **Assets** below (macOS `.dmg`, Windows `Setup .exe` or `portable .exe`, Linux `.AppImage`).
0 commit comments