github dgtlmoon/changedetection.io 0.70.1

2 hours ago

What's Changed

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

New Contributors

Full Changelog: 0.60.10...0.70.1

Don't miss a new changedetection.io release

NewReleases is sending notifications on new releases.