# changedetection.io changelog
> Self-hosted website change detection and notification.
- Vendor: changedetection.io
- Category: Productivity
- Official site: https://changedetection.io
- Tracked by: What's New (https://whatsnew.fyi/product/changedetection-io)
- Harvested from: GitHub (dgtlmoon/changedetection.io)
- Entries below: 10 (newest first)
What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog.
Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'.
## Releases
### 0.55.8
- Date: 2026-07-13
- Version: 0.55.8
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.55.8
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.55.8
- **added** — Add Russian (ru) translation
- **changed** — Czech translation updated and refined
- **changed** — Restock rename original price to last price
- **changed** — LLM strip sampling params and retry when the model rejects them
- **changed** — Restock LLM fallback make the 8000 char content limit configurable, change to 15,000 chars by default
- **changed** — Raise or remove LLM timeout when local endpoint detected
- **changed** — JavaScript UI strings not covered by translations
- **fixed** — Extract
from pages with large sections
- **fixed** — Tag RSS feed ignores security token when password protection is enabled
- **fixed** — URL validation rejects valid URLs with '|' in the anchor/fragment
- **fixed** — Don't error watches when Content-Type is JSON but body isn't parsable
- **fixed** — Safe-empty restock default so restock notification tokens work for any watch
##### What's Changed
* feat: Czech translation updated and refined by @svetlemodry in https://github.com/dgtlmoon/changedetection.io/pull/4203
* fix: extract from pages with large sections (#4217) by @crossi-dev in https://github.com/dgtlmoon/changedetection.io/pull/4220
* Restock rename original price to last price by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4227
* fix: Tag RSS feed ignores security token when password protection is enabled by @medzin in https://github.com/dgtlmoon/changedetection.io/pull/4235
* LLM: strip sampling params and retry when the model rejects them by @quinnypig in https://github.com/dgtlmoon/changedetection.io/pull/4241
* fix: URL validation rejects valid URLs with '|' in the anchor/fragment (#4209) by @AmirF194 in https://github.com/dgtlmoon/changedetection.io/pull/4243
* fix: .gitignore the real test-log path (changedetectionio/tests/logs) by @AmirF194 in https://github.com/dgtlmoon/changedetection.io/pull/4247
* Add Russian (ru) translation by @Marfa in https://github.com/dgtlmoon/changedetection.io/pull/4236
* Bump the all group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/dgtlmoon/changedetection.io/pull/4238
* fix: don't error watches when Content-Type is JSON but body isn't parsable (#3827) by @TowyTowy in https://github.com/dgtlmoon/changedetection.io/pull/4250
* fix: safe-empty restock default so restock notification tokens work for any watch by @ebarkhordar in https://github.com/dgtlmoon/changedetection.io/pull/4249
* LLM - Raise or remove LLM timeout when local endpoint detected #4225 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4254
* [i18n] JavaScript UI strings not covered by translations #4233 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4255
* [feature] Restock LLM fallback: make the 8000 char content limit configurable, change to 15,000 chars by default #4213 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4257
##### New Contributors
* @crossi-dev made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4220
* @medzin made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4235
* @quinnypig made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4241
* @AmirF194 made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4243
* @Marfa made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4236
* @TowyTowy made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4250
* @ebarkhordar made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4249
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.55.7...0.55.8
### 0.55.7
- Date: 2026-05-25
- Version: 0.55.7
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.55.7
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.55.7
- **fixed** — Fix LLM settings UI issue with wtforms vs pydantic
##### What's Changed
* UI - LLM - Fix for settings (wtforms vs pydantic) by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4184
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.55.6...0.55.7
### 0.55.6
- Date: 2026-05-25
- Version: 0.55.6
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.55.6
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.55.6
- **security** — Fix SSRF vulnerability in ChangeDetection.io via urlparse/urllib3 Parser Differential
- **fixed** — UI preview problem with extract_text/ignore_text
- **added** — Flag `LLM_FEATURES_DISABLED` to disable all LLM from the UI/system
- **fixed** — Notifications `raw_diff` token was missing
- **changed** — LLM UI blueprint/code is also disabled when env flag `LLM_FEATURES_DISABLED` is enabled
- **changed** — LLM settings pydantic refactor
##### Security updates
Security - SSRF in ChangeDetection.io via urlparse/urllib3 Parser Differential
##### What's Changed
* UI - Preview problem fix for extract_text/ignore_text #4138 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4169
* UI - LLM - Flag `LLM_FEATURES_DISABLED` to disable all LLM from the UI/system by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4171
* Notifications - `raw_diff` token was missing by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4177
* LLM UI - Blueprint/code also disabled when env flag `LLM_FEATURES_DISABLED` is enabled by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4180
* Llm settings pydantic refactor by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4181
* lint: Bump dennis — adopt `--strict` mode and drop false-positive workarounds by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4182
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.55.5...0.55.6
### 0.55.5
- Date: 2026-05-19
- Version: 0.55.5
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.55.5
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.55.5
- **fixed** — Fix Spanish translations for 'Changed' and 'Last Changed'
- **fixed** — Fix 'str' object is not callable error when diff(...) callable tokens are used with HTML/htmlcolor output in notifications
- **added** — Add master on/off switch to enable/disable LLM
##### What's Changed
* Fix Spanish translations for 'Changed' and 'Last Changed' by @maperal in https://github.com/dgtlmoon/changedetection.io/pull/4160
* Notifications - Fix `'str' object is not callable` when `{{ diff(...)}}` callable tokens are used with HTML/htmlcolor output by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4161
* LLM - Master on/off switch (enable/disable) by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4162
##### New Contributors
* @maperal made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4160
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.55.4...0.55.5
### 0.55.4
- Date: 2026-05-19
- Version: 0.55.4
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.55.4
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.55.4
- **changed** — Improve LiteLLM dependencies
- **changed** — AI/LLM Summary button now sets last viewed
- **fixed** — API watch.link was accidentally a tuple, now enforcing string
- **added** — API Add restock config to API /v1/watch/ json output
- **fixed** — Notifications add extra check for system default
- **fixed** — Escape only the diff variables before Jinja2 renders them into the template to stop breaking custom HTML for plaintext pages on HTML notifications
- **security** — Fix GHSA-vwgh-2hvh-4xm5 substring match in the shared_diff_access
- **added** — LLM self-hosted OpenAI-compatible endpoint support for vLLM, LM Studio, and llama.cpp
- **changed** — LLM integration LiteLLM config UI tweaks
- **changed** — Make LLM status sticky in UI
- **fixed** — LLM fixing summary cache miss-hit
- **changed** — Text filters process subtractive_selectors first
- **changed** — API better support for watch API private and internal vars
- **changed** — Text filters ignore text should run before extract text
- **fixed** — Docker INSTALLED_MARKER is kept in /datastore but package installs are not persistent, now relying on pip instead
- **changed** — LLM Ollama etc tweaks
- **security** — LLM SSRF guard for the LLM api_base setting in UI
- **security** — API Security Watch GET history snapshot should return text/plain mimetype so it cannot be accidentally executed in the browser
##### What's Changed
* i18n: Ruff INT (flake8-gettext) by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4096
* UI - AI/LLM - "Summary" button should set last viewed by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4095
* Improve LiteLLM deps #4093 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4102
* i18n: Add dennis .pot/.po lint by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4097
* API - watch.link was accidently a tuple, enforcing string by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4104
* API - Add restock config to API /v1/watch/ json output #4099 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4103
* i18n: Enforce dennis lint warnings in CI by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4105
* i18n: Clear pre-existing dennis warnings in `messages.pot` by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4112
* i18n: Fix broken HTML tags and enforce dennis lint warnings in CI by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4116
* Notifications - extra check for system default by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4122
* Notifications - Escape only the diff variables before Jinja2 renders them into the template ( Stop breaking custom HTML for plaintext pages on HTML notifications) #4121 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4123
* Fixing GHSA-vwgh-2hvh-4xm5 — substring match in the shared_diff_access by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4130
* Bumping tests by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4131
* LLM - Self-hosted OpenAI-compatible endpoint support (vLLM, LM Studio, llama.cpp) — refs #3204 by @tekgnosis-net in https://github.com/dgtlmoon/changedetection.io/pull/4117
* LLM integration - LiteLLM config - UI tweaks by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4134
* UI - Make LLM status sticky by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4135
* LLM - Fixing summary cache miss-hit by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4136
* Text filters - Process subtractive_selectors first by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4142
* API - Better support for watch API private/internal vars by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4144
* Text filters - Ignore text should run before 'extract text' by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4143
* Fix/pr 4110 czech l12n catalog sync by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4145
* Docker - INSTALLED_MARKER is kept in /datastore but package installs are not persistent (Dont use custom marker file, rely on pip instead) by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4147
* Fix/llm ollama etc tweaks by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4148
* UI - LLM - SSRF guard for the LLM `api_base` setting by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4157
* API Security - Watch GET history snapshot - Should return `text/plain` mimetype so it cant be accidently executed in the browser by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4158
##### New Contributors
* @tekgnosis-net made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4117
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.55.3...0.55.4
### 0.55.3
- Date: 2026-04-28
- Version: 0.55.3
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.55.3
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.55.3
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.55.2...0.55.3
### 0.55.1
- Date: 2026-04-27
- Version: 0.55.1
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.55.1
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.55.1
- **added** — AI / LLM rulesets to set AI change detection rules and text summary rules using hundreds of existing providers via LiteLLM
- **fixed** — Broken opacity feedback for restock/price fields on tag edit screen
- **fixed** — Use pgettext for diff page From/To labels to prevent context collisions
- **fixed** — DeprecationWarning: codecs.open() is deprecated by using open() instead
- **changed** — Update python-engineio requirement from <5,>=4.9.0 to >=4.13.1,<5
#### Big stuff
AI / LLM rulesets - Set your AI change detection rules and text summary rules, use hundreds of existing providers via LiteLLM.
##### What's Changed
* Use pgettext for diff page From/To labels to prevent context collisions by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4073
* Fix broken opacity feedback for restock/price fields on tag edit screen by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4072
* i18n: Wrap untranslated UI strings in include_subtract.html and add ja translations by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4054
* Re #4080 msgfmt linting by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4081
* Update python-engineio requirement from <5,>=4.9.0 to >=4.13.1,<5 by @dependabot[bot] in https://github.com/dgtlmoon/changedetection.io/pull/4079
* CI - Translation sync check by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4085
* DeprecationWarning: codecs.open() is deprecated. Use open() instead. by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4078
* LLM implementation - by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4057
* i18n: Consolidate fragmented gettext calls into entire-sentence msgids by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4076
* Translations - Playwright macro unused, add extra linting for translations, add TRANSLATORS.md by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4087
* [i18n] "Usage" tab label in AI settings is ambiguous across contexts #4086 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4088
* Update Korean language by @limeade23 in https://github.com/dgtlmoon/changedetection.io/pull/4084
##### New Contributors
* @limeade23 made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4084
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.54.10...0.55.1
### 0.54.10
- Date: 2026-04-20
- Version: 0.54.10
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.54.10
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.54.10
- **changed** — Update Japanese translations and wrap untranslated UI strings for i18n
- **changed** — Bump apprise from 1.9.8 to 1.9.9
- **fixed** — Fix diff_changed_to causing some missed notifications
- **fixed** — Fix untranslated labels on mobile watchlist view
- **fixed** — Fix unresponsive help and tips button on tag edit screen
##### What's Changed
* i18n: Wrap untranslated UI strings and update ja translations by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4052
* Bump apprise from 1.9.8 to 1.9.9 by @dependabot[bot] in https://github.com/dgtlmoon/changedetection.io/pull/4059
* Fix - diff_changed_to causing some missed notifications by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4066
* Fix untranslated labels on mobile watchlist view by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4064
* Fix unresponsive "help and tips" button on tag edit screen by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4055
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.54.9...0.54.10
### 0.54.9
- Date: 2026-04-14
- Version: 0.54.9
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.54.9
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.54.9
- **added** — Add Japanese translation (ja)
- **added** — Add Portuguese (Brasil) translation
- **added** — Add Czech translation
- **added** — Add Turkish translation
- **added** — Add notification tokens {{diff_changed_from}} and {{diff_changed_to}}
- **added** — Add ability to apply a group by specifying a wildcard, ie *mysite.com*
- **added** — Add text filter "Extract lines containing text"
- **added** — Handle inline favicons
- **changed** — Update Selenium RemoteConnection to use ClientConfig for timeout
- **changed** — Allow setting custom colour for tag/group/label background
- **fixed** — Fix SCREENSHOT_MAX_HEIGHT not enforced by capping viewport step_size and clipping stitched output to max capture height
- **fixed** — Fix word-level diff ignoring include_change_type_prefix
- **fixed** — Fix step failure notification crash
- **fixed** — Fix XLSX import error messages reporting wrong row number after failed rows
- **fixed** — Fix strings not rendered in user's locale despite having .po entries
- **fixed** — Make ignore text override trigger text so it ignores the trigger text if it appears
##### What's Changed
* Add Japanese translation (ja) by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4019
* Update Selenium RemoteConnection to use ClientConfig for timeout by @mikaelz in https://github.com/dgtlmoon/changedetection.io/pull/4027
* Fix SCREENSHOT_MAX_HEIGHT not enforced: cap viewport step_size and clip stitched output to max capture height #3810 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4030
* Notification - Adding tokens `{{diff_changed_from}}` and `{{diff_changed_to}}` #3818 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4031
* Feature - Groups/tag - Apply a group by specifying a wildcard, ie `*mysite.com*` by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4032
* Add Portuguese (Brasil) translation by @mstrey in https://github.com/dgtlmoon/changedetection.io/pull/4033
* fix: word-level diff ignores include_change_type_prefix by @lawrence3699 in https://github.com/dgtlmoon/changedetection.io/pull/4037
* Groups - Set custom colour for tag/group/label background by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4040
* Fix/step failure notification crash by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4041
* Test - Word level diff - Re #4037 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4042
* fix: XLSX import error messages report wrong row number after failed rows by @lawrence3699 in https://github.com/dgtlmoon/changedetection.io/pull/4036
* Czech l12n by @svetlemodry in https://github.com/dgtlmoon/changedetection.io/pull/4043
* Add Turkish translation by @hekwert in https://github.com/dgtlmoon/changedetection.io/pull/4044
* Handle inline favicons - Re #3891 by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4047
* Text filters - New simpler filter "Extract lines containing text" by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4046
* Test improvement - text extract tidyup by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4048
* Update Japanese translations for new strings and fix fragment handling by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4050
* Fix strings not rendered in user's locale despite having .po entries by @skkzsh in https://github.com/dgtlmoon/changedetection.io/pull/4051
* Ignore text should override trigger text (It should ignore the trigger text if it appears) by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/3450
##### New Contributors
* @skkzsh made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4019
* @mikaelz made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4027
* @lawrence3699 made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4037
* @hekwert made their first contribution in https://github.com/dgtlmoon/changedetection.io/pull/4044
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.54.8...0.54.9
### 0.54.8
- Date: 2026-04-04
- Version: 0.54.8
- Original notes: https://github.com/dgtlmoon/changedetection.io/releases/tag/0.54.8
- Permalink: https://whatsnew.fyi/product/changedetection-io/releases/0.54.8
- **security** — Fix authentication bypass vulnerability via decorator ordering (CVE-2026-35490)
- **added** — Extendable theme pluggy implementation
- **changed** — Update openapi-core requirement from ~=0.22 to ~=0.23
##### What's Changed
CVE-2026-35490 - Authentication Bypass via Decorator Ordering
* Extendable theme pluggy implementation by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4011
* CI - Ensure all unit tests are run by @dgtlmoon in https://github.com/dgtlmoon/changedetection.io/pull/4022
* Update openapi-core requirement from ~=0.22 to ~=0.23 by @dependabot[bot] in https://github.com/dgtlmoon/changedetection.io/pull/4009
**Full Changelog**: https://github.com/dgtlmoon/changedetection.io/compare/0.54.7...0.54.8