[1.2.6] - 2026-06-01
Fixed
- Shopify restock detection (#2) — three compounding bugs made the
voting scraper mislabel in-stock Shopify products as out-of-stock and
hide the (correctly extracted) price for any OOS product:scrapeProductWithVotingsilently dropped JSON-LD's
offers.availabilitysignal because it called the price-only
candidate extractor but not the full extractor that reads stock.- The generic CSS detector matched Shopify Dawn-family themes' hidden
.price__badge-sold-outelement on in-stock products (Dawn renders
both badge states in the DOM and toggles visibility via CSS rules
Cheerio can't evaluate). - The UI suppressed the price entirely when stock was OOS, leaving
affected users looking at an empty card and concluding detection
itself was broken.
- Wrong currency on generic CSS extractions (#6) — the generic
scraper defaults to USD when it can't detect a symbol or code in the
text. Added a per-product currency override that wins across writes,
notifications and SELECTs (viaCOALESCE), so users can correct it
without waiting for a code fix.
Added
- Shopify-aware extraction. New scraper path that detects a Shopify
storefront by itscdn.shopify.com/Shopify.themesignature and
fetches/products/<handle>.jsfor canonical per-variantavailable
and price. Bypasses theme/localization variation entirely and covers
the full Shopify long tail, not just the reported store. - Localised in-stock phrases in the generic stock detector
(Dutch / German / French / Spanish / Italian / Portuguese), so
non-English Shopify pages produce a positive in-stock signal instead
of falling through to OOS by default. - "Notify on any price change" toggle per product (#5). When
enabled, the scheduler fires aprice_changenotification on every
movement ≥ 0.01 in either direction, replacing the threshold-based
drop notification while it's on (no double-firing). Implemented for
Telegram, Discord (green/red embed by direction), Pushover, ntfy
(up/down trend tags) and Gotify. notify_back_in_stockaccepted onPOST /productsand defaulted
totruewhen adding an OOS product — the typical reason someone
tracks something unbuyable is to know when it returns.- Price now shown alongside the OOS badge on the product card and
detail page (no more "Price unavailable" hiding the last-known price). - "Detected via: ()" hint under the price on the
product detail page (#6). Generic CSS surfaces the actual selector
that matched, so wrong-currency / wrong-price calls are diagnosable. - GitHub Actions runner bump to Node 24-compatible majors
(actions/checkoutv6,dorny/paths-filterv4,docker/*v4/v6/v7),
ahead of the June 2026 deprecation.