Skip to content

Restock: don't blame stock data when restock detection is off - #4495

Merged
dgtlmoon merged 2 commits into
dgtlmoon:masterfrom
drakeo338:claude/4476-restock-off-message
Oct 26, 2026
Merged

dgtlmoon merged 2 commits into
dgtlmoon:masterfrom
drakeo338:claude/4476-restock-off-message

Conversation

@drakeo338

Copy link
Copy Markdown
Contributor

With "Re-stock detection" set to "Off, don't follow availability/restock", a page with nothing extractable still failed with "Unable to extract restock data ... no embedded stock information was found". Failing there is right, since there is nothing to compare on later checks, but blaming stock data is misleading when the user said they don't care about stock. Now, with restock detection off, the message says no price data was found. The check and its condition are unchanged. I added a unit test that fails on the old wording.

Fixes #4476

When 'Re-stock detection' is set to "Off, don't follow availability/restock",
a page with nothing extractable at all still raised "Unable to extract
restock data" / "no embedded stock information was found". The check is
still right to fail there - there's nothing to compare on future checks
either - but blaming "restock"/stock data is wrong once the user has said
they don't care about stock: the actual failure in that case is that no
price could be found either, so say that instead.

Fixes dgtlmoon#4476
@dgtlmoon
dgtlmoon merged commit cb9c6c1 into dgtlmoon:master Oct 26, 2026
3 checks passed
scareyo pushed a commit to scareyo/homelab that referenced this pull request Nov 8, 2026
…0.2 (#54)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [ghcr.io/dgtlmoon/changedetection.io](https://changedetection.io) ([source](https://github.com/dgtlmoon/changedetection.io)) | image | minor | `0.60.9` → `0.70.2` |

---

### Release Notes

<details>
<summary>dgtlmoon/changedetection.io (ghcr.io/dgtlmoon/changedetection.io)</summary>

### [`v0.70.2`](https://github.com/dgtlmoon/changedetection.io/releases/tag/0.70.2)

[Compare Source](dgtlmoon/changedetection.io@0.70.1...0.70.2)

#### What's Changed

- MCP - "MCP Note" sub-tab, set what assistants are told when they connect by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4670](dgtlmoon/changedetection.io#4670)
- MCP - More monitor settings, test notifications, word diffs, and permission rows for notifications and browser steps by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4669](dgtlmoon/changedetection.io#4669)
- MCP OAuth - Claude Code can sign in: loopback redirect URIs match on any port (RFC 8252 7.3) by [@&#8203;kris-anderson](https://github.com/kris-anderson) in [#&#8203;4673](dgtlmoon/changedetection.io#4673)
- Clear history - don't fail when a save renames its .tmp file away mid-clear by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4674](dgtlmoon/changedetection.io#4674)
- MCP - "Public MCP address" setting, separate from the notification Base URL by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4676](dgtlmoon/changedetection.io#4676)
- gitignore: local AI configs to avoid credential leaks by [@&#8203;skkzsh](https://github.com/skkzsh) in [#&#8203;4677](dgtlmoon/changedetection.io#4677)
- Fix two races behind flaky tests: favicon cache, and a new monitor queued twice by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4681](dgtlmoon/changedetection.io#4681)
- CI - Third-party licence list: regenerate weekly and on release, drift is only a warning on PRs by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4684](dgtlmoon/changedetection.io#4684)
- MCP - Clearer tool descriptions (list\_tags, list\_notifications, notification\_services, restock\_status, limit/offset) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4678](dgtlmoon/changedetection.io#4678)
- MCP plugins - their own permission rows, a tool 'area', and open\_world by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4679](dgtlmoon/changedetection.io#4679)
- MCP - "Allow read-only access without sign-in" setting, for public demos by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4680](dgtlmoon/changedetection.io#4680)
- AI settings - saving no longer switches off checkboxes the page didn't show by [@&#8203;kris-anderson](https://github.com/kris-anderson) in [#&#8203;4683](dgtlmoon/changedetection.io#4683)
- AI settings - API key field could not be typed in by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4687](dgtlmoon/changedetection.io#4687)
- API - Watch list and search show each watch's paused and notification\_muted by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4686](dgtlmoon/changedetection.io#4686)

#### New Contributors

- [@&#8203;kris-anderson](https://github.com/kris-anderson) made their first contribution in [#&#8203;4673](dgtlmoon/changedetection.io#4673)

**Full Changelog**: <dgtlmoon/changedetection.io@0.70.1...0.70.2>

### [`v0.70.1`](https://github.com/dgtlmoon/changedetection.io/releases/tag/0.70.1)

[Compare Source](dgtlmoon/changedetection.io@0.60.10...0.70.1)

#### What's Changed

- Update ruff requirement from >=0.17.1 to >=0.17.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4604](dgtlmoon/changedetection.io#4604)
- Update jsonpath-ng requirement from \~=1.12.0 to \~=1.13.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4603](dgtlmoon/changedetection.io#4603)
- Update wtforms requirement from \~=3.2 to \~=3.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4610](dgtlmoon/changedetection.io#4610)
- i18n: Extract restock strings and add ja translations by [@&#8203;skkzsh](https://github.com/skkzsh) in [#&#8203;4608](dgtlmoon/changedetection.io#4608)
- Read the element locking scripts as UTF-8 by [@&#8203;b84330808](https://github.com/b84330808) in [#&#8203;4614](dgtlmoon/changedetection.io#4614)
- UI - Name the diff minimap so it reads as where, not when by [@&#8203;paoValle](https://github.com/paoValle) in [#&#8203;4613](dgtlmoon/changedetection.io#4613)
- Backups - Ability to select multiple .ZIPs of the watch data to restore by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4616](dgtlmoon/changedetection.io#4616)
- Scheduler - It may have been possible to import/restore/API update watches without 'use default schedule' set and a null recheck schedule causing excessive page fetching. by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4617](dgtlmoon/changedetection.io#4617)
- Update inscriptis requirement from <2.7.6,>=2.7.5 to >=2.7.6,<2.7.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4609](dgtlmoon/changedetection.io#4609)
- Bumping NOTICE and ensuring compatibility by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4618](dgtlmoon/changedetection.io#4618)
- Watch memory - share one read-only copy of identical time\_schedule\_limit values by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4602](dgtlmoon/changedetection.io#4602)
- API - Current restock price/stock state in watch GET and list (processor\_state\_{processor\_name}) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4621](dgtlmoon/changedetection.io#4621)
- Example plugins - API fetcher and check stats, watch list notes hook, update\_finalize fix by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4622](dgtlmoon/changedetection.io#4622)
- A watch that was fine (200) and then starts getting 403 must not keep reporting the old 200 by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4606](dgtlmoon/changedetection.io#4606)
- Bug: Successful checks always reset the filter failure streak, "no text found" records last\_check\_status by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4624](dgtlmoon/changedetection.io#4624)
- API Examples by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4625](dgtlmoon/changedetection.io#4625)
- Bump docker/login-action from 4.6.0 to 4.7.0 in the all group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4629](dgtlmoon/changedetection.io#4629)
- Bump apprise from 2.0.1 to 2.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4627](dgtlmoon/changedetection.io#4627)
- Notifications - post:// get:// etc, a header with capitals (?+X-Key=...) was also sent as a query parameter by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4633](dgtlmoon/changedetection.io#4633)
- Update jsonpath-ng requirement from \~=1.13.0 to \~=1.14.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4628](dgtlmoon/changedetection.io#4628)
- Notifications - setup widget, pick a service and fill in a few fields instead of writing Apprise URLs by hand by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4634](dgtlmoon/changedetection.io#4634)
- Plugins - register\_blueprints hook so plugins can mount their own Flask blueprints by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4632](dgtlmoon/changedetection.io#4632)
- API - systeminfo overdue\_watches no longer lists paused watches ([#&#8203;4607](dgtlmoon/changedetection.io#4607)) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4635](dgtlmoon/changedetection.io#4635)
- Settings - AI / LLM settings get their own page at /settings/llm, linked from the left sidebar by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4637](dgtlmoon/changedetection.io#4637)
- Datastore - startup checks run for every datastore again (removepassword.lock, missing RSS/API tokens, app\_guid, version\_tag) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4639](dgtlmoon/changedetection.io#4639)
- Restock - Prices in the visitor's language with the currency's own decimal places (ISO 4217) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4640](dgtlmoon/changedetection.io#4640)
- LLM - "Switch thinking off" option for Ollama and OpenAI-compatible servers (llama.cpp, vLLM, LM Studio) ([#&#8203;4638](dgtlmoon/changedetection.io#4638)) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4643](dgtlmoon/changedetection.io#4643)
- AI settings - Load models / Test connection work for a keyless server (Ollama) at an address not saved yet by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4645](dgtlmoon/changedetection.io#4645)
- LLM restock - keep the whole page when site-chrome removal would take nearly all of it, log when nothing is left by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4647](dgtlmoon/changedetection.io#4647)
- LLM restock: never strip `<html>`/`<body>` as site chrome by [@&#8203;snazzybean](https://github.com/snazzybean) in [#&#8203;4644](dgtlmoon/changedetection.io#4644)
- AI - Remove the unused llm\_prefilter (AI CSS pre-filter) and its setup call by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4646](dgtlmoon/changedetection.io#4646)
- MCP server at /mcp, plus GET /api/v1/changes, so AI assistants can use changedetection.io by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4636](dgtlmoon/changedetection.io#4636)
- Use explicit container registry by [@&#8203;tyll](https://github.com/tyll) in [#&#8203;4648](dgtlmoon/changedetection.io#4648)
- MCP - history tools: list\_snapshots, find\_change and get\_history (snapshots as diffs) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4649](dgtlmoon/changedetection.io#4649)
- MCP - history tools round 2: line\_timeline, every match in find\_change, price history in restock\_status by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4650](dgtlmoon/changedetection.io#4650)
- Plugins - select\_fetch\_backend and recheck\_seconds\_override hooks, with a fallback fetcher example plugin by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4652](dgtlmoon/changedetection.io#4652)
- Mcp history tools 2 by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4653](dgtlmoon/changedetection.io#4653)
- LLM - Claude 5.x thinks by default: give it reasoning headroom and skip temperature by [@&#8203;ChrisAL94](https://github.com/ChrisAL94) in [#&#8203;4656](dgtlmoon/changedetection.io#4656)
- Restock - Use 'Filters & Triggers' to pick the price when auto-detection fails by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4657](dgtlmoon/changedetection.io#4657)
- Tests - AI/MCP sub-tab links end in #overview, regenerate THIRD-PARTY-LICENSES.md by [@&#8203;ChrisAL94](https://github.com/ChrisAL94) in [#&#8203;4659](dgtlmoon/changedetection.io#4659)
- LLM - Thinking budget "Off" also switches thinking off for Claude Haiku/Sonnet 5.x by [@&#8203;ChrisAL94](https://github.com/ChrisAL94) in [#&#8203;4658](dgtlmoon/changedetection.io#4658)
- i18n - Restock & Price Detection (and Screenshot Comparison) tab help text is now translatable by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4660](dgtlmoon/changedetection.io#4660)
- Notifications - Markdown to HTML conversion applied per notification URL ([#&#8203;4619](dgtlmoon/changedetection.io#4619)) by [@&#8203;cestercian](https://github.com/cestercian) in [#&#8203;4641](dgtlmoon/changedetection.io#4641)
- LLM - Empty or unparsable intent evaluation passes the change through instead of suppressing it by [@&#8203;ChrisAL94](https://github.com/ChrisAL94) in [#&#8203;4661](dgtlmoon/changedetection.io#4661)
- MCP - OAuth 2.1 sign-in, so claude.ai and ChatGPT in the browser can connect by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4662](dgtlmoon/changedetection.io#4662)
- MCP OAuth - sign-in works for installs under a sub-path (authorization server metadata also at {issuer}/.well-known/openid-configuration) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4663](dgtlmoon/changedetection.io#4663)
- MCP OAuth - the consent form posts back under the sub-path (Allow gave a 404 behind a proxy) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4664](dgtlmoon/changedetection.io#4664)
- MCP oauth consent dialog cleanup by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4665](dgtlmoon/changedetection.io#4665)
- MCP helper texts by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4666](dgtlmoon/changedetection.io#4666)
- MCP - List watches history stats by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4667](dgtlmoon/changedetection.io#4667)

#### New Contributors

- [@&#8203;b84330808](https://github.com/b84330808) made their first contribution in [#&#8203;4614](dgtlmoon/changedetection.io#4614)
- [@&#8203;paoValle](https://github.com/paoValle) made their first contribution in [#&#8203;4613](dgtlmoon/changedetection.io#4613)
- [@&#8203;snazzybean](https://github.com/snazzybean) made their first contribution in [#&#8203;4644](dgtlmoon/changedetection.io#4644)
- [@&#8203;tyll](https://github.com/tyll) made their first contribution in [#&#8203;4648](dgtlmoon/changedetection.io#4648)
- [@&#8203;ChrisAL94](https://github.com/ChrisAL94) made their first contribution in [#&#8203;4656](dgtlmoon/changedetection.io#4656)
- [@&#8203;cestercian](https://github.com/cestercian) made their first contribution in [#&#8203;4641](dgtlmoon/changedetection.io#4641)

**Full Changelog**: <dgtlmoon/changedetection.io@0.60.10...0.70.1>

### [`v0.60.10`](https://github.com/dgtlmoon/changedetection.io/releases/tag/0.60.10)

[Compare Source](dgtlmoon/changedetection.io@0.60.9...0.60.10)

#### What's Changed

- Update orjson requirement from \~=3.12 to \~=3.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4542](dgtlmoon/changedetection.io#4542)
- LLM restock: fix locale-formatted string prices (1.299,95 read as 1.29995) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4544](dgtlmoon/changedetection.io#4544)
- Puppeteer fetcher - PDF improvements, Handle PDF fetching by Puppeteer directly, cleanup supports by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4547](dgtlmoon/changedetection.io#4547)
- Test - Puppeteer/Playwright PDF - Checksum the original document not the browser's PDF viewer HTML, browser PDF test by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4548](dgtlmoon/changedetection.io#4548)
- PDF - Keep the original PDF of the newest two versions by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4549](dgtlmoon/changedetection.io#4549)
- update spanish translations by [@&#8203;abrugues](https://github.com/abrugues) in [#&#8203;4546](dgtlmoon/changedetection.io#4546)
- Update pydantic requirement from <3.0,>=2.13.5 to >=2.14.0,<3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4543](dgtlmoon/changedetection.io#4543)
- Proxy auth fixes and extra tests for Puppeteer content fetcher by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4552](dgtlmoon/changedetection.io#4552)
- Update validators requirement from \~=0.35 to \~=0.36 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4558](dgtlmoon/changedetection.io#4558)
- Update pre-commit requirement from >=4.6.2 to >=4.7.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4557](dgtlmoon/changedetection.io#4557)
- UI - Fixing notification settings still trying to access main settings form that caused a crash on save  by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4561](dgtlmoon/changedetection.io#4561)
- Update flask-socketio requirement from <6,>=5.6.1 to >=5.7.0,<6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4540](dgtlmoon/changedetection.io#4540)
- UI - Follow the device's light/dark setting by default by [@&#8203;cookieguru](https://github.com/cookieguru) in [#&#8203;4507](dgtlmoon/changedetection.io#4507)
- Watch history index - Replace per-snapshot realpath()/exists() with a single directory listing, speeds up loading times by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4562](dgtlmoon/changedetection.io#4562)
- docker-compose - SCREENSHOT\_MAX\_HEIGHT default is 20000, not 16000 by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4568](dgtlmoon/changedetection.io#4568)
- Restock: let a plugin do LLM price/stock extraction without litellm (HTML + text hook, reusable helpers) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4545](dgtlmoon/changedetection.io#4545)
- Update chardet requirement from >=7.6.0 to >=7.7.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4582](dgtlmoon/changedetection.io#4582)
- Bump pypa/gh-action-pypi-publish from 1.14.2 to 1.14.3 in the all group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4583](dgtlmoon/changedetection.io#4583)
- Update pluggy requirement from \~=1.6 to \~=1.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4581](dgtlmoon/changedetection.io#4581)
- Update selenium requirement from \~=4.50.0 to \~=4.51.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4580](dgtlmoon/changedetection.io#4580)
- Notifications - Fix |regex\_replace doing nothing when rendered outside the main thread by [@&#8203;Enesuygurs](https://github.com/Enesuygurs) in [#&#8203;4577](dgtlmoon/changedetection.io#4577)
- feat(api): expand SystemInfo endpoint with queue metrics, config flags, and tag\_count by [@&#8203;Subere](https://github.com/Subere) in [#&#8203;4574](dgtlmoon/changedetection.io#4574)
- Log puremagic "Could not identify file" at debug instead of warning by [@&#8203;jtannahill](https://github.com/jtannahill) in [#&#8203;4533](dgtlmoon/changedetection.io#4533)
- Fix IndexError on empty/whitespace-only JSON content by [@&#8203;Yi-111-a](https://github.com/Yi-111-a) in [#&#8203;4534](dgtlmoon/changedetection.io#4534)
- Decode percent-encoded proxy credentials for the browser fetchers, and keep them out of the log by [@&#8203;alkaz-nodemaven](https://github.com/alkaz-nodemaven) in [#&#8203;4502](dgtlmoon/changedetection.io#4502)
- Judge favicon expiry on the icon the watch actually has, not whatever glob lists first by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4434](dgtlmoon/changedetection.io#4434)
- Bump cryptography from 44.0.0 to 50.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4284](dgtlmoon/changedetection.io#4284)
- Notifications - |regex\_replace ReDoS timeout now works in any thread (use 'regex' package timeout=) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4585](dgtlmoon/changedetection.io#4585)
- Fix Jinja2 false-positive when URL contains `{%` by [@&#8203;skkzsh](https://github.com/skkzsh) in [#&#8203;4208](dgtlmoon/changedetection.io#4208)
- Favicon - Clear the saved favicon when the watch URL changes by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4586](dgtlmoon/changedetection.io#4586)
- Tests - Fix test\_itemprop\_percent\_threshold for WTForms 3.3 (FloatField is now type="number") by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4588](dgtlmoon/changedetection.io#4588)
- API - Reject broken Jinja2 templates in url, link\_to\_open, body and headers (shared with the edit form) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4587](dgtlmoon/changedetection.io#4587)
- Improvements to plugin architecture by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4589](dgtlmoon/changedetection.io#4589)
- Update litellm requirement from >=1.40.0 to >=1.106.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4595](dgtlmoon/changedetection.io#4595)
- LLM Config - Dont import LiteLLM until a real config is used (saves memory) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4596](dgtlmoon/changedetection.io#4596)
- Update ruff requirement from >=0.16.10 to >=0.17.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4594](dgtlmoon/changedetection.io#4594)
- Update inscriptis requirement from <2.7.6,>=2.7 to >=2.7.5,<2.7.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4593](dgtlmoon/changedetection.io#4593)
- Update regex requirement from >=2022.1.18 to >=2026.9.29 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4592](dgtlmoon/changedetection.io#4592)
- Update pytest-mock requirement from \~=3.16 to \~=3.17 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4599](dgtlmoon/changedetection.io#4599)
- Update jsonpath-ng requirement from \~=1.9.1 to \~=1.12.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4598](dgtlmoon/changedetection.io#4598)
- Update pydantic requirement from <3.0,>=2.14.0 to >=2.14.1,<3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4591](dgtlmoon/changedetection.io#4591)
- Build - Switch to uv for build by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4600](dgtlmoon/changedetection.io#4600)
- Restock: don't blame stock data when restock detection is off by [@&#8203;drakeo338](https://github.com/drakeo338) in [#&#8203;4495](dgtlmoon/changedetection.io#4495)
- fix(strip\_ignore\_text): keep the surviving lines in document order by [@&#8203;Yi-111-a](https://github.com/Yi-111-a) in [#&#8203;4536](dgtlmoon/changedetection.io#4536)
- fix(filters): separate each match on its own line for source: watches by [@&#8203;Yi-111-a](https://github.com/Yi-111-a) in [#&#8203;4492](dgtlmoon/changedetection.io#4492)
- UI - Watchlist - "Mark unviewed" bulk operation by [@&#8203;pongoe](https://github.com/pongoe) in [#&#8203;4484](dgtlmoon/changedetection.io#4484)
- API - Recheck only watches with errors, never recheck paused watches ([#&#8203;4506](dgtlmoon/changedetection.io#4506)) by [@&#8203;dgtlmoon](https://github.com/dgtlmoon) in [#&#8203;4601](dgtlmoon/changedetection.io#4601)

#### New Contributors

- [@&#8203;abrugues](https://github.com/abrugues) made their first contribution in [#&#8203;4546](dgtlmoon/changedetection.io#4546)
- [@&#8203;cookieguru](https://github.com/cookieguru) made their first contribution in [#&#8203;4507](dgtlmoon/changedetection.io#4507)
- [@&#8203;pcbeingused333](https://github.com/pcbeingused333) made their first contribution in [#&#8203;4568](dgtlmoon/changedetection.io#4568)
- [@&#8203;Enesuygurs](https://github.com/Enesuygurs) made their first contribution in [#&#8203;4577](dgtlmoon/changedetection.io#4577)
- [@&#8203;Subere](https://github.com/Subere) made their first contribution in [#&#8203;4574](dgtlmoon/changedetection.io#4574)
- [@&#8203;jtannahill](https://github.com/jtannahill) made their first contribution in [#&#8203;4533](dgtlmoon/changedetection.io#4533)
- [@&#8203;Yi-111-a](https://github.com/Yi-111-a) made their first contribution in [#&#8203;4534](dgtlmoon/changedetection.io#4534)
- [@&#8203;alkaz-nodemaven](https://github.com/alkaz-nodemaven) made their first contribution in [#&#8203;4502](dgtlmoon/changedetection.io#4502)
- [@&#8203;drakeo338](https://github.com/drakeo338) made their first contribution in [#&#8203;4495](dgtlmoon/changedetection.io#4495)

**Full Changelog**: <dgtlmoon/changedetection.io@0.60.9...0.60.10>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMDQuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjEwNC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://scarey.dev/scarey/homelab/pulls/54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[bug] "Re-stock detection" setting not respected ?

2 participants