Skip to content

Commit f722a5d

Browse files
committed
Merge test/deps-2.19.1 — dependency refresh, printer remaining-time fixes, 3-OS test build
2 parents ac1cc1b + 3170ec8 commit f722a5d

19 files changed

Lines changed: 952 additions & 849 deletions

File tree

‎.github/workflows/test-build-win.yml‎

Lines changed: 0 additions & 50 deletions
This file was deleted.

‎.github/workflows/test-build.yml‎

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
name: Test build (all platforms)
2+
3+
# On-demand build of all three platforms for handing a binary to a tester,
4+
# WITHOUT cutting a release: artifacts only — no git tag, no GitHub Release, no
5+
# auto-update feed, nothing published. Every binary is UNSIGNED:
6+
# • Windows → SmartScreen warns ("More info" → "Run anyway")
7+
# • macOS → Gatekeeper blocks it (right-click → Open, or `xattr -dr
8+
# com.apple.quarantine <app>`); it is NOT notarized
9+
# • Linux → AppImage, chmod +x and run
10+
#
11+
# Two ways to run it:
12+
# • push any branch named test/** (this file must be on that branch)
13+
# • Actions tab → "Test build (all platforms)" → Run workflow
14+
#
15+
# Native module note: nfc-pcsc is a C++ addon, so each platform MUST build on
16+
# its own runner — none of this can be cross-compiled.
17+
#
18+
# Artifacts are throwaway: 7-day retention, and delete them by hand once the
19+
# test is done rather than leaving installers lying around.
20+
21+
on:
22+
push:
23+
branches:
24+
- 'test/**'
25+
workflow_dispatch: {}
26+
27+
permissions:
28+
contents: read
29+
30+
# A second push to the same test branch supersedes the first — three full
31+
# Electron builds is not something to queue up twice by accident.
32+
concurrency:
33+
group: test-build-${{ github.ref }}
34+
cancel-in-progress: true
35+
36+
jobs:
37+
build:
38+
strategy:
39+
# One platform failing must not cancel the other two — the whole point is
40+
# to see which ones break.
41+
fail-fast: false
42+
matrix:
43+
include:
44+
- os: windows-latest
45+
platform: win
46+
artifact: TigerStudio-Windows-test
47+
path: dist/*.exe
48+
- os: macos-latest
49+
platform: mac
50+
artifact: TigerStudio-macOS-test
51+
path: dist/*.dmg
52+
- os: ubuntu-latest
53+
platform: linux
54+
artifact: TigerStudio-Linux-test
55+
path: dist/*.AppImage
56+
57+
runs-on: ${{ matrix.os }}
58+
59+
steps:
60+
- uses: actions/checkout@v5
61+
62+
- uses: actions/setup-node@v5
63+
with:
64+
node-version: 24
65+
66+
# Same list as the release workflow — nfc-pcsc needs the PC/SC headers,
67+
# and electron-builder needs the packaging tools.
68+
- name: Install Linux system dependencies
69+
if: matrix.os == 'ubuntu-latest'
70+
run: |
71+
sudo apt-get update -y
72+
sudo apt-get install -y \
73+
libpcsclite-dev \
74+
libusb-1.0-0-dev \
75+
libudev-dev \
76+
build-essential \
77+
python3 \
78+
rpm \
79+
fakeroot
80+
81+
- run: npm ci
82+
83+
- name: Build ${{ matrix.platform }} (unsigned, no publish)
84+
run: npm run build:${{ matrix.platform }}:nopublish
85+
env:
86+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
87+
# Baked in so Google sign-in works in the test build.
88+
TIGERTAG_GOOGLE_DESKTOP_CLIENT_ID: ${{ secrets.TIGERTAG_GOOGLE_DESKTOP_CLIENT_ID }}
89+
TIGERTAG_GOOGLE_DESKTOP_CLIENT_SECRET: ${{ secrets.TIGERTAG_GOOGLE_DESKTOP_CLIENT_SECRET }}
90+
# Belt and braces on macOS: without this electron-builder still hunts
91+
# the keychain for an identity and can fail the build on a runner that
92+
# has none, even with identity=null in the script.
93+
CSC_IDENTITY_AUTO_DISCOVERY: false
94+
95+
- name: Upload ${{ matrix.platform }} artifact
96+
uses: actions/upload-artifact@v5
97+
with:
98+
name: ${{ matrix.artifact }}
99+
path: ${{ matrix.path }}
100+
if-no-files-found: error
101+
retention-days: 7

‎WORKLOG.md‎

Lines changed: 28 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,38 @@
1-
# Worklog — v2.18.1 (in progress)
1+
# Worklog — v2.19.1 (in progress)
22

33
## Added
4-
- Add-material source picker — "+ Material" now opens a side card asking where the material comes
5-
from: **From Catalogue** (opens the catalogue in grid view — picking an unfamiliar product is a
6-
visual task — and yields a TigerData+) or **Manually** (you fill it in, yields a TigerData). Each
7-
row shows the tier pair its path leads to — `TigerData+` `TigerTag+` / `TigerData` `TigerTag`,
8-
drawn with the header stats' own capsules — so the outcome, chipless now and once burned, is
9-
named before you commit; the explanation sits in the shared ⓘ bubble. No scrim, like the spool
10-
detail card — the app stays visible and clickable behind it — and it joins the side-card cascade
11-
as its leftmost member, so opening a spool or a printer pushes it left instead of burying it.
12-
Same side card + rows as the printer add flow —
13-
`renderer/inventory.html`, `renderer/inventory.js`, `renderer/css/40-printers.css`
14-
- "Get it on MakerWorld" button in the TigerScale panel's empty state, next to "View on GitHub" —
15-
links to the printable TigerScale V3 body. Both CTAs now stack full-width so the pair reads the
16-
same in all 9 locales — `renderer/IoT/tigerscale/index.js`, `renderer/IoT/tigerscale/tigerscale.css`
174

185
## Changed
19-
- TigerScale onboarding card rebuilt around the V3 machine — the photo sits on a lit stage with a
20-
"V3" generation badge, the ✓ list became six icon-led feature rows (dual NFC readers, real
21-
remaining weight, on-board touchscreen + calibration wizard, account sync, offline recognition,
22-
runs unattended), and both destinations keep the brand colour they already have in the sidebar
23-
(GitHub slate, MakerWorld teal + package icon) —
24-
`renderer/IoT/tigerscale/index.js`, `renderer/IoT/tigerscale/tigerscale.css`
25-
- TigerScale illustration + header icon replaced with the V3 body (empty state, scale card
26-
thumbnail, README, header health icon) — `assets/img/TigerScale_Photo.png`,
27-
`assets/svg/icons/icon_tigerscale_3d.svg` (masters archived in `assets-src/`)
28-
- The TigerScale "View on GitHub" button pointed at the V2 repo (`TigerTag-Scale`, no longer
29-
developed); it now opens `Tiger-Scale-V3` — `renderer/IoT/tigerscale/index.js`
306

317
## Fixed
32-
- Printer photos showed as black silhouettes in the Printers list view in dark mode — the row
33-
thumbnail carried a leftover `mix-blend-mode: multiply` (needed back when the catalogue images had
34-
a white background; they are transparent PNGs now), which multiplied each photo with the dark row
35-
background. Permanent on Windows, hover-only on macOS. Blend mode dropped — `renderer/css/40-printers.css`
36-
- Windows virtual smart-card readers ("Windows Hello for Business", "Microsoft Virtual Smart Card")
37-
are no longer treated as NFC readers — PC/SC enumerates these TPM-backed certificate readers
38-
exactly like an ACR122U and they permanently report a card present, so a user with 2 readers got a
39-
3rd burn slot that never turned green and the Burn button stayed disabled. Added to the existing
40-
name filter at the reader-registration gate — `services/nfc-process.js`, `docs/READER-SELECTION-BRIEF.md`
8+
- Snapmaker printer side card showed "0m" next to the clock on a running print while the table
9+
showed the real 21m — the card printed `printDuration`, which is the time ELAPSED, not remaining.
10+
Moonraker sends no remaining time, so the card now reads the same normalised job the table does
11+
(slicer estimate − elapsed, else extrapolated from progress) via a new `ctx.getPrinterJob`, and
12+
shows "—" rather than a wrong "0m" while there is nothing to derive from yet —
13+
`renderer/printers/snapmaker/cards.js`, `renderer/printers/context.js`, `renderer/inventory.js`
14+
- Bambu Lab printer side card showed "0m" remaining on a running print while the table column
15+
showed the real figure. `mc_remaining_time` is reported in MINUTES, but the card fed it straight
16+
into a seconds formatter, so a 32-minute job floored to 0. The table was right because it goes
17+
through `_getPrinterJob`, which converts. `PROTOCOL.md` documented the field as seconds — the
18+
source of the mistake — and is corrected with the observed value — `renderer/printers/bambulab/cards.js`,
19+
`renderer/printers/bambulab/PROTOCOL.md`
20+
- Dependency refresh — 18 advisories (1 critical, 17 high) down to 0, entirely within the existing
21+
semver ranges: `package.json` is untouched, only the lockfile was stale. Covers the reported
22+
**CVE-2026-54673** / GHSA-p2f4-r6v6-j797 (`builder-util-runtime` 9.5.1 → 9.7.0 — electron-updater
23+
leaked `Authorization` / `PRIVATE-TOKEN` headers across a cross-origin redirect; `electron-updater`
24+
is a runtime dependency, though our update feed is a public GitHub release that carries no
25+
credentials), plus electron-builder/app-builder-lib 26.8.1 → 26.15.3 (AppImage search-path advisory),
26+
electron 41.3.0 → 41.10.6 (three advisories), and tar, undici, ws, js-yaml, tmp, form-data,
27+
ip-address. Supersedes external PR #10, which pinned a single package through `overrides` —
28+
`package-lock.json`
29+
- Six column headers in the Printers table view stayed in English in every language (Brand, Name,
30+
Model, Status, Job, Last seen) — they were hardcoded literals while their neighbours (Preview,
31+
Ends at) went through `t()`. They now reuse the existing table-header key family; switching
32+
language already re-renders this view, so they follow immediately — `renderer/inventory.js`
4133

4234
## Removed
43-
- The standalone "From Catalogue" button in the inventory action bar — it is now the first choice of
44-
the "+ Material" side card, so adding a material has one entry point instead of two.
45-
`renderer/inventory.html`, `renderer/inventory.js` (handler + its `_syncInvBarButtons` visibility
46-
line), i18n key `catalogBtn`
4735

4836
## i18n
49-
- Added: `matSourceTitle`, `matSourceSub`, `matSourceCatalogue`, `matSourceCatalogueHint`,
50-
`matSourceManual`, `matSourceManualHint` — 9 locales
51-
- Added: `scaleEmptyCtaModel`, `scaleEmptyBullet4`, `scaleEmptyBullet5`, `scaleEmptyBullet6` — 9 locales
52-
- Removed: `catalogBtn` — 9 locales
53-
- Rewritten for the V3 machine: `scaleEmptySub`, `scaleEmptyBullet1`, `scaleEmptyBullet2`,
54-
`scaleEmptyBullet3` — 9 locales
37+
- Added: `thModel`, `thStatus`, `thJob` — 9 locales (the Printers table headers; `thBrand`, `thName`
38+
and `printersLastSeen` already existed and are reused)

0 commit comments

Comments
 (0)