Skip to content

Commit d5b0c33

Browse files
committed
v1.10.18 — Grid spool grouping + group panel (speedometer dashboard, live totals), hold-to-close-all tabs
1 parent bd7038b commit d5b0c33

8 files changed

Lines changed: 561 additions & 50 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+
## v1.10.18 — 2026-06-22
9+
10+
### Added
11+
12+
- **Spool grouping in the Grid + a group panel.** Identical spools now also collapse in **Grid** view into one "deck" card with a count badge. Clicking a group (in Grid or Table) opens a side panel: a **dashboard overview** — a speedometer gauge of the group's remaining filament, brand, material, combined weight and spool count — above the list of the individual spools. Opening a spool from there slides its detail card in beside the panel.
13+
- **Live group totals.** A group's weight (gauge, totals, deck card and table row) now updates in **real time** as you change a spool's weight from the slider or a connected scale.
14+
- **Close all side panels at once.** Press and hold any panel's `»` close tab for half a second to dismiss every open side card (a vertical fill shows the progress).
15+
16+
### Fixed
17+
18+
- **Group toggle tooltip is now translated** in every language (it previously showed a raw key on first launch).
19+
20+
---
21+
822
## v1.10.17 — 2026-06-22
923

1024
### Fixed

‎WORKLOG.md‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
# Worklog — v1.10.17 (in progress)
1+
# Worklog — v1.10.18 (in progress)
22

33
## Added
4+
- **Spool grouping in Grid view (Phase 2).** Identical spools now also collapse in the **Grid**: one "deck"-style card (stacked-paper shadow) with a ×N badge per group. Clicking it opens a **slide-in group panel** (non-modal, with a `»` close tab like the other side cards) listing the member spools as **horizontal list-cards** (image left, name/material·brand/weight right, stacked vertically); clicking a member opens the normal detail panel, which **pushes the group panel left** (stacked side-by-side, same `_syncPanels` mechanism as the printer ↔ material ↔ settings panels) instead of closing it. Reuses the same `groupRows` / `_spoolGroupKey` as the Table; the group toggle now drives both views; search/filter shows a group deck if any member matches. Panel is resizable (`tigertag.panelWidth.group`). **Table groups now also open this side panel on click** (the old inline expand is gone — `_toggleGroupExpanded` removed). `renderer/inventory.js` (`renderGrid`, `_createGroupGridCard`, `_openGroupPanel`), `renderer/inventory.html` (`#groupPanel`), `css/70-detail-misc.css`
45

56
## Changed
7+
- **Side-panel push: smooth on open, instant on resize.** The `.25s` `right` transition is kept on side cards + their `»` close tabs so a newly-opened panel **pushes the already-open one progressively** (and the tab follows). During a live resize, a global `body.panel-resizing` class disables that transition so panels/tabs track the dragged edge **instantly** (no lag). Simple global toggle — no per-tab machinery. `css/70-detail-misc.css`, `renderer/inventory.js`
8+
- **Group panel: micro-dashboard header + bigger thumbnails.** The panel opens with a **dashboard** (not a card): a **speedometer gauge** (3/5 arc, gap at bottom, 0% lower-left → 100% lower-right, colour-coded, % in the centre) for the group's remaining filament, plus **brand** (title) / **material + aspect** / combined **remaining/total weight + spool count**. It replaces the panel title (left blank). Updates **live** while a member's weight is dragged (`_patchGroupSummaryWeight`) and on any Firestore/scale change. Member thumbnails enlarged ~30% (50→65px).
9+
- **Group panel member cards restyled + live weight.** Each member list-card now shows the tier badge **under the image** (left column) and the **weight in grams with the quantity bar on the line below it**. The open group panel now reflects weight changes **in real time** — both while dragging the detail slider (`_patchGroupMemberWeight`) and on any Firestore update / scale change (`_refreshGroupPanelIfOpen` on every render). `renderer/inventory.js`, `css/70-detail-misc.css`
610

711
## Fixed
8-
- Creality: the live control card showed all three fans (part/case/side) on every model, but only the enclosed K-series has the case + side fans. Open-frame printers (Hi, Ender-3 V4, SparkX i7) and unknown models now show only the part-cooling fan. Gated by a per-model capability map keyed on `printerModelId` (firmware reports all `*FanPct` fields regardless of hardware, so model is the only reliable signal) — `renderer/printers/creality/index.js`.
12+
- **Group toggle tooltip was untranslated.** `invGroupOn`/`invGroupOff` showed the raw key — the toggle's `data-tooltip` was set once before the locales finished loading and never refreshed. Now re-localised in `applyTranslations` (covers first load + every language switch). `renderer/inventory.js`
913

1014
## Removed
1115

‎data/whatsnew.json‎

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,84 @@
11
{
2+
"1.10.18": {
3+
"date": "2026-06-22",
4+
"items": [
5+
{
6+
"icon": "folder",
7+
"title": {
8+
"en": "Spool groups in Grid + a group panel",
9+
"fr": "Groupes de bobines en Grille + panneau de groupe",
10+
"de": "Spulengruppen im Raster + Gruppenpanel",
11+
"es": "Grupos de bobinas en Cuadrícula + panel de grupo",
12+
"it": "Gruppi di bobine in Griglia + pannello gruppo",
13+
"zh": "网格视图的线轴分组 + 分组面板",
14+
"pt": "Grupos de bobinas na Grelha + painel de grupo",
15+
"pt-pt": "Grupos de bobinas na Grelha + painel de grupo",
16+
"pl": "Grupy szpul w widoku siatki + panel grupy"
17+
},
18+
"body": {
19+
"en": "Identical spools also collapse in Grid view into one deck card. Clicking a group (Grid or Table) opens a side panel listing every spool, with a dashboard overview at the top.",
20+
"fr": "Les bobines identiques se regroupent aussi en vue Grille en une seule card empilée. Cliquer un groupe (Grille ou Table) ouvre un panneau listant chaque bobine, avec un tableau de bord en tête.",
21+
"de": "Identische Spulen werden auch im Raster zu einer Stapel-Karte zusammengefasst. Ein Klick auf eine Gruppe (Raster oder Tabelle) öffnet ein Seitenpanel mit allen Spulen und einer Übersicht oben.",
22+
"es": "Las bobinas idénticas también se agrupan en Cuadrícula en una sola tarjeta apilada. Al hacer clic en un grupo (Cuadrícula o Tabla) se abre un panel con todas las bobinas y un resumen arriba.",
23+
"it": "Le bobine identiche si raggruppano anche in Griglia in un'unica card impilata. Cliccando un gruppo (Griglia o Tabella) si apre un pannello con tutte le bobine e una panoramica in alto.",
24+
"zh": "相同线轴在网格视图中也会合并为一张堆叠卡片。点击分组(网格或表格)会打开侧面板,列出每个线轴,顶部带有概览仪表盘。",
25+
"pt": "As bobinas idênticas também se agrupam na Grelha numa única ficha empilhada. Clicar num grupo (Grelha ou Tabela) abre um painel com todas as bobinas e um resumo no topo.",
26+
"pt-pt": "As bobinas idênticas também se agrupam na Grelha numa única ficha empilhada. Clicar num grupo (Grelha ou Tabela) abre um painel com todas as bobinas e um resumo no topo.",
27+
"pl": "Identyczne szpule zwijają się też w widoku siatki w jedną kartę-stos. Kliknięcie grupy (siatka lub tabela) otwiera panel z listą szpul i podsumowaniem u góry."
28+
}
29+
},
30+
{
31+
"icon": "sparkle",
32+
"title": {
33+
"en": "Live group overview",
34+
"fr": "Aperçu de groupe en temps réel",
35+
"de": "Gruppenübersicht in Echtzeit",
36+
"es": "Resumen de grupo en vivo",
37+
"it": "Panoramica del gruppo in tempo reale",
38+
"zh": "实时分组概览",
39+
"pt": "Resumo do grupo em tempo real",
40+
"pt-pt": "Resumo do grupo em tempo real",
41+
"pl": "Podgląd grupy na żywo"
42+
},
43+
"body": {
44+
"en": "The group panel shows a speedometer gauge of the remaining filament, brand, material, combined weight and spool count — and the totals update in real time as you change a spool's weight from the slider or a scale.",
45+
"fr": "Le panneau de groupe affiche une jauge type compteur du filament restant, la marque, la matière, le poids cumulé et le nombre de bobines — et les totaux se mettent à jour en temps réel quand vous changez un poids via le curseur ou une balance.",
46+
"de": "Das Gruppenpanel zeigt eine Tacho-Anzeige des Restfilaments, Marke, Material, Gesamtgewicht und Spulenzahl — die Summen aktualisieren sich live, wenn Sie ein Gewicht per Regler oder Waage ändern.",
47+
"es": "El panel de grupo muestra un indicador tipo velocímetro del filamento restante, la marca, el material, el peso combinado y el número de bobinas; los totales se actualizan en vivo al cambiar un peso con el control o una báscula.",
48+
"it": "Il pannello del gruppo mostra un indicatore tipo tachimetro del filamento residuo, marca, materiale, peso combinato e numero di bobine — i totali si aggiornano in tempo reale quando cambi un peso dal cursore o da una bilancia.",
49+
"zh": "分组面板以仪表盘显示剩余耗材,并展示品牌、材料、合计重量和线轴数量——当你通过滑块或电子秤更改重量时,合计会实时更新。",
50+
"pt": "O painel do grupo mostra um indicador tipo velocímetro do filamento restante, marca, material, peso combinado e número de bobinas — e os totais atualizam em tempo real ao mudar um peso pelo cursor ou por uma balança.",
51+
"pt-pt": "O painel do grupo mostra um indicador tipo velocímetro do filamento restante, marca, material, peso combinado e número de bobinas — e os totais atualizam em tempo real ao mudar um peso pelo cursor ou por uma balança.",
52+
"pl": "Panel grupy pokazuje wskaźnik (jak prędkościomierz) pozostałego filamentu oraz markę, materiał, łączną wagę i liczbę szpul — sumy aktualizują się na żywo, gdy zmieniasz wagę suwakiem lub wagą."
53+
}
54+
},
55+
{
56+
"icon": "close",
57+
"title": {
58+
"en": "Hold to close every panel",
59+
"fr": "Maintenir pour tout fermer",
60+
"de": "Halten, um alle Panels zu schließen",
61+
"es": "Mantén pulsado para cerrar todo",
62+
"it": "Tieni premuto per chiudere tutto",
63+
"zh": "长按关闭所有面板",
64+
"pt": "Manter para fechar tudo",
65+
"pt-pt": "Manter para fechar tudo",
66+
"pl": "Przytrzymaj, aby zamknąć wszystko"
67+
},
68+
"body": {
69+
"en": "Press and hold any side panel's close tab for half a second to dismiss every open side card at once (a vertical fill shows the progress).",
70+
"fr": "Maintenez l'onglet de fermeture d'un panneau une demi-seconde pour fermer toutes les side cards ouvertes d'un coup (un remplissage vertical indique la progression).",
71+
"de": "Halten Sie den Schließen-Tab eines Seitenpanels eine halbe Sekunde gedrückt, um alle offenen Seitenkarten auf einmal zu schließen (eine vertikale Füllung zeigt den Fortschritt).",
72+
"es": "Mantén pulsada la pestaña de cierre de cualquier panel medio segundo para cerrar todas las tarjetas laterales abiertas a la vez (un relleno vertical muestra el progreso).",
73+
"it": "Tieni premuta la linguetta di chiusura di un pannello per mezzo secondo per chiudere tutte le schede laterali aperte in una volta (un riempimento verticale mostra l'avanzamento).",
74+
"zh": "长按任意侧面板的关闭标签半秒,即可一次关闭所有打开的侧卡(垂直填充显示进度)。",
75+
"pt": "Mantenha premido o separador de fecho de qualquer painel meio segundo para fechar todos os cartões laterais abertos de uma vez (um preenchimento vertical mostra o progresso).",
76+
"pt-pt": "Mantenha premido o separador de fecho de qualquer painel meio segundo para fechar todos os cartões laterais abertos de uma vez (um preenchimento vertical mostra o progresso).",
77+
"pl": "Przytrzymaj zakładkę zamykania dowolnego panelu przez pół sekundy, aby zamknąć wszystkie otwarte karty boczne naraz (pionowe wypełnienie pokazuje postęp)."
78+
}
79+
}
80+
]
81+
},
282
"1.10.16": {
383
"date": "2026-06-22",
484
"items": [

‎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.17",
3+
"version": "1.10.18",
44
"description": "Tiger Studio Manager — desktop app",
55
"main": "main.js",
66
"engines": {

‎renderer/CODEMAP.md‎

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
198198

199199
---
200200

201-
## Inventory render (L5272-6378)
201+
## Inventory render (L5272-6567)
202202

203203
| L | What | Anchors |
204204
|---|---|---|
@@ -210,7 +210,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
210210

211211
---
212212

213-
## RFID encode / burn modal — cem (L6379-6741)
213+
## RFID encode / burn modal — cem (L6568-6930)
214214

215215
| L | What | Anchors |
216216
|---|---|---|
@@ -220,7 +220,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
220220

221221
---
222222

223-
## TigerTag+ catalogue (L6742-7091)
223+
## TigerTag+ catalogue (L6931-7280)
224224

225225
| L | What | Anchors |
226226
|---|---|---|
@@ -230,7 +230,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
230230

231231
---
232232

233-
## Spool detail panel (L7092-8842)
233+
## Spool detail panel (L7281-9047)
234234

235235
| L | What | Anchors |
236236
|---|---|---|
@@ -245,7 +245,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
245245

246246
---
247247

248-
## Panels / debug / auto-update (L8843-9319)
248+
## Panels / debug / auto-update (L9048-9526)
249249

250250
| L | What | Anchors |
251251
|---|---|---|
@@ -258,7 +258,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
258258

259259
---
260260

261-
## Friends rendering (L9320-9714)
261+
## Friends rendering (L9527-9921)
262262

263263
| L | What | Anchors |
264264
|---|---|---|
@@ -268,7 +268,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
268268

269269
---
270270

271-
## Racks + printers subscriptions (L9715-9950)
271+
## Racks + printers subscriptions (L9922-10157)
272272

273273
| L | What | Anchors |
274274
|---|---|---|
@@ -279,7 +279,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
279279

280280
---
281281

282-
## Printers views (L9951-11009)
282+
## Printers views (L10158-11216)
283283

284284
| L | What | Anchors |
285285
|---|---|---|
@@ -291,7 +291,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
291291

292292
---
293293

294-
## Printer detail side panel (L11010-13365)
294+
## Printer detail side panel (L11217-13572)
295295

296296
| L | What | Anchors |
297297
|---|---|---|
@@ -302,7 +302,7 @@ Manual spool creation: full chip-schema editor with bottom-sheets. All helpers p
302302

303303
---
304304

305-
## Add-printer flow (L13366-13953)
305+
## Add-printer flow (L13573-14160)
306306

307307
Per-brand scan/manual flows live in `printers/<brand>/add-flow.js`; `inventory.js` owns the shell.
308308

@@ -315,7 +315,7 @@ Per-brand scan/manual flows live in `printers/<brand>/add-flow.js`; `inventory.j
315315

316316
---
317317

318-
## Racks CRUD + slots (L13954-14842)
318+
## Racks CRUD + slots (L14161-15049)
319319

320320
| L | What | Anchors |
321321
|---|---|---|
@@ -328,7 +328,7 @@ Per-brand scan/manual flows live in `printers/<brand>/add-flow.js`; `inventory.j
328328

329329
---
330330

331-
## Storage view render + DnD (L14843-15953)
331+
## Storage view render + DnD (L15050-16160)
332332

333333
| L | What | Anchors |
334334
|---|---|---|
@@ -339,7 +339,7 @@ Per-brand scan/manual flows live in `printers/<brand>/add-flow.js`; `inventory.j
339339

340340
---
341341

342-
## Friend view (L15954-16497)
342+
## Friend view (L16161-16704)
343343

344344
| L | What | Anchors |
345345
|---|---|---|
@@ -350,7 +350,7 @@ Per-brand scan/manual flows live in `printers/<brand>/add-flow.js`; `inventory.j
350350

351351
---
352352

353-
## Display name + friend requests (L16498-16917)
353+
## Display name + friend requests (L16705-17124)
354354

355355
| L | What | Anchors |
356356
|---|---|---|
@@ -360,7 +360,7 @@ Per-brand scan/manual flows live in `printers/<brand>/add-flow.js`; `inventory.j
360360

361361
---
362362

363-
## Keys + profile sync (L16918-17145)
363+
## Keys + profile sync (L17125-17352)
364364

365365
| L | What | Anchors |
366366
|---|---|---|
@@ -369,7 +369,7 @@ Per-brand scan/manual flows live in `printers/<brand>/add-flow.js`; `inventory.j
369369

370370
---
371371

372-
## Custom avatar (L17146-17532)
372+
## Custom avatar (L17353-17739)
373373

374374
| L | What | Anchors |
375375
|---|---|---|
@@ -378,7 +378,7 @@ Per-brand scan/manual flows live in `printers/<brand>/add-flow.js`; `inventory.j
378378

379379
---
380380

381-
## User doc sync + telemetry + bootstrap (L17533-17855)
381+
## User doc sync + telemetry + bootstrap (L17740-18062)
382382

383383
| L | What | Anchors |
384384
|---|---|---|
@@ -388,7 +388,7 @@ Per-brand scan/manual flows live in `printers/<brand>/add-flow.js`; `inventory.j
388388

389389
---
390390

391-
## Electron RFID integration (L17856-18191)
391+
## Electron RFID integration (L18063-18398)
392392

393393
| L | What | Anchors |
394394
|---|---|---|

0 commit comments

Comments
 (0)