Skip to content

Commit 23dd16b

Browse files
committed
v2.19.1 — printer remaining-time fixes, Printers headers i18n, dependency refresh
Fixed - Both printer side cards that showed "0m" remaining next to the clock while the printers table showed the right figure — Bambu Lab read minutes as seconds, Snapmaker printed elapsed instead of remaining. One shared cause: each card derived the time itself instead of reading the table's. The normalised reading is now exposed to every brand card as ctx.getPrinterJob. - Six Printers table column headers stayed in English in every language. - Dependency refresh: 18 advisories (1 critical, 17 high) down to 0, entirely within the existing semver ranges — package.json untouched, only the lockfile was stale. Covers CVE-2026-54673 in builder-util-runtime, the app-builder-lib AppImage advisory and three Electron ones. Changed - The on-demand test build covers all three platforms instead of Windows only.
1 parent f722a5d commit 23dd16b

5 files changed

Lines changed: 83 additions & 2 deletions

File tree

‎CHANGELOG.md‎

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

66
---
77

8+
## v2.19.1 — 2026-08-19
9+
10+
### Fixed
11+
12+
- **Both printer side cards that showed "0m" remaining next to the clock, for two different reasons and one shared cause.** Each brand card derived the remaining time itself instead of reading the one the printers table uses (`_getPrinterJob`), so the two surfaces disagreed. *Bambu Lab*: `mc_remaining_time` is reported in **minutes** and was fed straight into a seconds formatter, so a 32-minute job floored to `0m`; `PROTOCOL.md` documented the field as seconds — the source of the mistake — and is corrected with the value observed on hardware. *Snapmaker*: the card printed `printDuration`, which is the time **elapsed**, so a job that had just started read `0m` beside a table saying `21m`; Moonraker sends no remaining time, so the card now reads the shared normalised job (slicer estimate − elapsed, else extrapolated from progress) and shows `—` rather than a wrong `0m` while it has nothing to derive from. The normalised reading is exposed to every brand card as `ctx.getPrinterJob` so this class of drift has one place to live; the other four brands were audited and their units are correct, so they were left alone — `renderer/printers/bambulab/cards.js`, `renderer/printers/bambulab/PROTOCOL.md`, `renderer/printers/snapmaker/cards.js`, `renderer/printers/context.js`, `renderer/inventory.js`.
13+
- **Six column headers in the Printers table stayed in English in every language** — Brand, Name, Model, Status, Job, Last seen were hardcoded literals sitting between two neighbours (Preview, Ends at) that did go through `t()`. They now reuse the existing table-header key family; `applyLang()` already re-renders this view, so they follow a language switch immediately — `renderer/inventory.js`.
14+
- **Dependency refresh — 18 advisories (1 critical, 17 high) down to 0**, entirely within the existing semver ranges: `package.json` is untouched, only the lockfile was stale. `builder-util-runtime` 9.5.1 → 9.7.0 closes GHSA-p2f4-r6v6-j797 / CVE-2026-54673 (electron-updater leaked `Authorization` and `PRIVATE-TOKEN` headers across a cross-origin redirect — `electron-updater` is a runtime dependency here, though this app's update feed is a public GitHub release that carries no credentials, so there was nothing to leak in practice); electron-builder / app-builder-lib 26.8.1 → 26.15.3 closes the AppImage uncontrolled-search-path advisory (GHSA-7g7r-gx96-252g); electron 41.3.0 → 41.10.6 closes three; plus tar (critical), undici, ws, js-yaml, tmp, form-data and ip-address. Supersedes external PR #10, which pinned the single package through an `overrides` entry — the ranges already allowed the fixed releases, so the pin was unnecessary — `package-lock.json`.
15+
16+
### Changed
17+
18+
- The on-demand test build covers **all three platforms** instead of Windows only (`test-build-win.yml` → `test-build.yml`): a matrix with `fail-fast: false` so one platform breaking still reports the other two, the Linux system dependencies `nfc-pcsc` needs, `CSC_IDENTITY_AUTO_DISCOVERY: false` so macOS does not hunt the keychain for an identity it will not find, a `concurrency` group that supersedes an earlier run on the same branch, and 7-day artifacts. Adds the `build:mac:nopublish` and `build:linux:nopublish` scripts it needs — `build:linux` was `--publish always`, so a test build would have tried to publish — `.github/workflows/test-build.yml`, `package.json`.
19+
20+
---
21+
822
## v2.19.0 — 2026-08-13
923

1024
### Added

‎FEATURES.md‎

Lines changed: 1 addition & 1 deletion
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.19.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.19.1**. Per-version release detail lives in `CHANGELOG.md`; forward-looking / in-progress work lives in `ROADMAP.md`.
44

55
---
66

‎data/release-notes/v2.19.1.md‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
## Fixed
2+
3+
- Fixed the remaining time showing **0m** next to the clock in a printer's side card while the printers list showed the correct figure. It affected Bambu Lab and Snapmaker, for two unrelated reasons; both now read the same value the list does.
4+
- Fixed six column headers in the Printers list view (Brand, Name, Model, Status, Job, Last seen) staying in English whatever language the app was set to.
5+
6+
## Security
7+
8+
- Refreshed the dependency tree: 18 advisories (1 critical, 17 high) down to 0. Includes CVE-2026-54673 in `builder-util-runtime`, an AppImage search-path issue in `app-builder-lib`, and three Electron advisories. No configuration changed — the fixed releases were already within the versions this project allows.
9+
10+
---
11+
12+
📖 **[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`).

‎data/whatsnew.json‎

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7782,5 +7782,60 @@
77827782
}
77837783
}
77847784
]
7785+
},
7786+
"2.19.1": {
7787+
"date": "2026-08-19",
7788+
"items": [
7789+
{
7790+
"icon": "clock",
7791+
"title": {
7792+
"en": "Your printer finally admits how long is left",
7793+
"fr": "Ton imprimante avoue enfin le temps qu'il reste",
7794+
"de": "Dein Drucker rückt endlich mit der Restzeit raus",
7795+
"es": "Tu impresora por fin confiesa cuánto le queda",
7796+
"it": "La tua stampante ammette finalmente quanto manca",
7797+
"zh": "打印机终于肯说还剩多久了",
7798+
"pt": "Sua impressora finalmente admite quanto falta",
7799+
"pt-pt": "A tua impressora admite finalmente quanto falta",
7800+
"pl": "Drukarka wreszcie przyznaje, ile jeszcze zostało"
7801+
},
7802+
"body": {
7803+
"en": "Open a Bambu Lab or Snapmaker that is printing and the little clock said 0m, while the list right next to it knew perfectly well. Same number on both sides now.",
7804+
"fr": "En ouvrant une Bambu Lab ou une Snapmaker en cours d'impression, la petite horloge affichait 0m alors que la liste juste à côté, elle, savait très bien. Même chiffre des deux côtés maintenant.",
7805+
"de": "Beim Öffnen eines laufenden Bambu Lab oder Snapmaker zeigte die kleine Uhr 0m an, während die Liste daneben es genau wusste. Jetzt steht auf beiden Seiten dieselbe Zahl.",
7806+
"es": "Al abrir una Bambu Lab o una Snapmaker imprimiendo, el relojito marcaba 0m mientras la lista de al lado lo sabía perfectamente. Ahora es la misma cifra en los dos sitios.",
7807+
"zh": "打开正在打印的 Bambu Lab 或 Snapmaker,那个小时钟一直写着 0m,而旁边的列表其实心里门儿清。现在两边的数字对上了。",
7808+
"it": "Aprendo una Bambu Lab o una Snapmaker che sta stampando, l'orologetto segnava 0m mentre l'elenco lì accanto lo sapeva benissimo. Ora è lo stesso numero da entrambe le parti.",
7809+
"pt": "Ao abrir uma Bambu Lab ou Snapmaker imprimindo, o reloginho marcava 0m enquanto a lista ao lado sabia direitinho. Agora é o mesmo número dos dois lados.",
7810+
"pt-pt": "Ao abrir uma Bambu Lab ou Snapmaker a imprimir, o relogiozinho marcava 0m enquanto a lista mesmo ao lado sabia muito bem. Agora é o mesmo número dos dois lados.",
7811+
"pl": "Po otwarciu drukującej Bambu Lab albo Snapmakera zegarek pokazywał 0m, a lista obok doskonale wiedziała swoje. Teraz po obu stronach jest ta sama liczba."
7812+
}
7813+
},
7814+
{
7815+
"icon": "list",
7816+
"title": {
7817+
"en": "The printers list speaks your language now",
7818+
"fr": "La liste des imprimantes parle enfin ta langue",
7819+
"de": "Die Druckerliste spricht jetzt deine Sprache",
7820+
"es": "La lista de impresoras ya habla tu idioma",
7821+
"it": "L'elenco delle stampanti ora parla la tua lingua",
7822+
"zh": "打印机列表现在说你的语言了",
7823+
"pt": "A lista de impressoras agora fala sua língua",
7824+
"pt-pt": "A lista de impressoras fala agora a tua língua",
7825+
"pl": "Lista drukarek mówi już twoim językiem"
7826+
},
7827+
"body": {
7828+
"en": "Six column titles had stayed stubbornly in English, sitting right next to their translated neighbours. They finally gave in.",
7829+
"fr": "Six titres de colonnes restaient obstinément en anglais, juste à côté de leurs voisins traduits. Ils ont fini par céder.",
7830+
"de": "Sechs Spaltentitel blieben hartnäckig auf Englisch, direkt neben ihren übersetzten Nachbarn. Jetzt haben sie nachgegeben.",
7831+
"es": "Seis títulos de columna seguían tercamente en inglés, justo al lado de sus vecinos ya traducidos. Al final han cedido.",
7832+
"it": "Sei titoli di colonna restavano ostinatamente in inglese, proprio accanto ai vicini già tradotti. Alla fine hanno ceduto.",
7833+
"zh": "有六个列标题死活赖在英文里,旁边的邻居明明都翻译好了。现在它们终于松口了。",
7834+
"pt": "Seis títulos de coluna continuavam teimosamente em inglês, bem ao lado dos vizinhos já traduzidos. Acabaram cedendo.",
7835+
"pt-pt": "Seis títulos de coluna mantinham-se teimosamente em inglês, mesmo ao lado dos vizinhos já traduzidos. Acabaram por ceder.",
7836+
"pl": "Sześć nagłówków kolumn uparcie trwało po angielsku, tuż obok przetłumaczonych sąsiadów. W końcu odpuściły."
7837+
}
7838+
}
7839+
]
77857840
}
77867841
}

‎llms.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ It is neutral and agnostic by design: TigerTag takes no side between filament br
1010
distributors. The protocol is open and anyone can build a different ecosystem on it; nothing in this repo is a
1111
prerequisite for doing so.
1212

13-
Current version: **2.19.0** — macOS (Intel + Apple Silicon, signed & notarized), Windows, Linux.
13+
Current version: **2.19.1** — macOS (Intel + Apple Silicon, signed & notarized), Windows, Linux.
1414

1515
## Architecture
1616

0 commit comments

Comments
 (0)