|
1 | 1 | # Worklog — v2.26.2 (in progress) |
2 | 2 |
|
3 | 3 | ## Added |
| 4 | +- **Canada, with CAD and a rate per province.** All 13 provinces and territories, not the four the request named — half the country's users would otherwise have had no entry. No province SELECTOR was needed and none was built: `_vatEntryFor()` matches `code` as an opaque string, never parsing it or assuming two letters, so `CA-QC` is as valid a key as `FR`, and the picker already renders `label · rate% · symbol` — which is exactly the `Canada (Quebec) · 14.975% · CA$` the request asked for. Zero code, zero migration: `vatCountry` is a free field on `users/{uid}`, and the telemetry's `country` is derived from the locale, not from this, so a sub-national code cannot reach the roll-up that expects ISO-2. `rate` is the COMBINED rate a buyer pays — Canada has no national one, GST being federal with HST, PST, RST or QST layered on per province — and a new `note` field records what each is made of, so whoever updates them next can see it (Nova Scotia moved 15 → 14 in April 2025). Verified against the CRA's own rate table rather than copied from the request. The symbol is `CA$`, not `$`: a Canadian and an American dollar have to be told apart. Requested by @ImNanou (#23) — `data/vat-rates.json` |
| 5 | +- **A Wiki button in the sidebar's community footer**, linking to `wiki.tigersystem.io`. It reuses the existing community nudge machinery rather than adding a parallel one — the badge, the one-shot notification and the per-account "seen" flag synced to Firestore all come from the shared `COMMUNITY` table, so the entry IS the wiring. Contributed by @Ptitlouis6012 (#24) — `renderer/inventory.{html,js}`, `renderer/css/{00-base,10-settings,20-friends,70-detail-misc}.css`, `renderer/locales/*.json` |
| 6 | + - Fixes a pre-existing bug it surfaced: which local notifications were CLICKABLE was decided by a hardcoded list of brand names instead of the `COMMUNITY` table, so a new entry's notification was never actually clickable. The Firestore branch of the same renderer already tested the table; the two are aligned now. |
| 7 | + - **Its click was being thrown away by the security rules, in silence.** Like the five community links before it, the button stamps `wikiClickedAt` on `users/{uid}/telemetry/studio` — a field-whitelisted collection where the field was not listed. `hasOnly()` is evaluated on the POST-MERGE document, so the write failed WHOLESALE rather than dropping the one field, and the client swallows the rejection. Nothing was visible: the nudge's own "seen" flag lives on `users/{uid}`, which is not whitelisted, so the badge behaved correctly while the analytics vanished. Fixed in the backend repo's `firestore.rules` and deployed — the app side needed no change. |
| 8 | + - The button takes `var(--primary)` rather than a frozen `#FF6B00`, a colour that appears nowhere else in the app: ours is `#ff7a18` in light and `#ff8a33` in DARK, so the button would have sat slightly off every other accent on half the installs. The buttons beside it hardcode a THIRD-PARTY brand colour, which legitimately never moves; this one is ours. Its hover glow is derived from the same variable at the weight its neighbours use (~.42), not `--primary-20` (.25) which would have read weaker than all of them — `renderer/css/{10-settings,20-friends}.css` |
| 9 | + - It no longer RINGS on startup. `_PASSIVE_NOTIF_IDS` — the set that keeps passive nudges silent — is a second hardcoded list, and `wiki` was not in it, so the one nudge that arrives on first launch would have chimed where the others deliberately do not. |
| 10 | + - The icon is a square SVG in the icons folder like every other one, replacing a 292×200 PNG. Masked into the shared 24×24 slot it letterboxed to 24×16 — visibly shorter than the square logos beside it — and hard-coding both dimensions on a non-square source is exactly what the CSS standard forbids. Also 8.7 kB lighter, and crisp at any size — `assets/svg/icons/icon_book.svg`, `renderer/css/70-detail-misc.css` |
4 | 11 | - **Two more Bambu Lab machines: the A2L and the X2D.** Both were already in the printer catalogue but neither reached the connection tutorial, so picking one offered no walkthrough at all — and the X2D was wearing an X1C's photograph. The A2L joins the **A-series** walkthrough (the one the A1 and A1 mini use) and the X2D the **X / H / P** one; that second walkthrough is a single shared series already — the X1C, the H2 range and the P2S have been reading the same seven steps for months, so there is no separate X-series tutorial left to retire. Each model's own picture now appears both in the add form and in the tutorial's model picker. Both are also RECOGNISED on sight: a scanned or cloud-added printer is matched by the `DevModel` code it reports, and neither code was known — `N9` for the A2L, `N6` for the X2D — so either machine would have arrived as "Select Printer", with a "?" thumbnail and no camera transport chosen. The codes are read off Bambu Studio's own `resources/printers/<CODE>.json`, each carrying the machine's `display_name`, rather than inferred from a serial glimpsed in the wild. The same files settle both open questions: Bambu files the A2L under `series_n` with the A1 and A1 mini, and the X2D under `series_x1` with the X1C and the P2S — the two walkthroughs they were given — and their camera blocks match those families exactly, the A2L advertising a LOCAL liveview like an A1 (JPEG over TCP) and the X2D none, like a P2S (RTSP). No serial prefix is recorded for either: a prefix can only be read off a real machine, and the code is the path discovery and the cloud both take — `data/printers/bbl_printer_models.json`, `renderer/printers/bambulab/{tutorial.json,probe.js}`, `assets/img/bbl_printers/{a2l,x2d}.png`, `assets/img/tutorials/bambulab/models/{a2l,x2d}.png` |
5 | 12 |
|
6 | 13 | ## Changed |
|
9 | 16 | - **The bundled TigerTag database is refreshed** — 13 239 products across 65 brands, so a fresh install starts from a current catalogue instead of downloading the delta on first launch. Two version rows were renamed upstream (`TIGER_TAG_MAKER_V1.0` → `TIGER_TAG_V1.0`, `TIGER_TAG_PRO_V1.0` → `TIGER_TAG_PLUS_V1.0`); nothing in the app matches on those strings — the ids and the signing keys are unchanged — but `docs/rfid-vendors/tigertag.md` quoted the old ones and is corrected — `assets/db/tigertag/*`, `docs/rfid-vendors/tigertag.md` |
10 | 17 |
|
11 | 18 | ## Fixed |
| 19 | +- **In dark mode, every community notification wore a BLACK logo on its brand colour.** The glyph was painted with `--surface` — the card background — which is `#ffffff` in light and `#171a22` in dark, so it was white by coincidence rather than by intent, and the comment two lines above it had been claiming "white logo" all along. It is `--on-accent` now: the fixed-polarity token for something sitting ON a filled colour, already used by the low-stock chip right below and by the sidebar buttons — which is exactly why those looked right in both themes while the notifications did not. Discord, GitHub, MakerWorld and the Shop were all affected; the new Wiki chip is simply where it was noticed — `renderer/css/20-friends.css` |
12 | 20 | - **An H2C reporting `O1C2` was not recognised.** The machine answers with either of two model codes and only one of them was mapped, so the same printer resolved to its catalogue entry or to "Select Printer" depending on which it sent — and unresolved means a "?" thumbnail and no camera transport picked — `renderer/printers/bambulab/probe.js` |
13 | 21 |
|
14 | 22 | ## Removed |
|
0 commit comments