v0.45.25

Try our Chrome extension

Chrome Webstore

Easily add the current web-page from your browser directly into your changedetection.io tool, more great features coming soon!

Changedetection.io needs your support!

You can help us by supporting changedetection.io on these platforms;

The more popular changedetection.io is, the more time we can dedicate to adding amazing features!

Many thanks :)

changedetection.io team


Keyboard: ← Previous   → Next
Not yet seconds ago
            False
        
Not yet seconds ago
Current erroring screenshot from most recent request
11 hours ago
Grey lines are ignored Blue lines are triggers Pro-tip: Highlight text to add to ignore filters
_ _ _ _ _ _
__| |_ __ _ _ _ __ _ ___ __| |___| |_ ___ __| |_(_)___ _ _ (_)___
/ _| ' \/ _` | ' \/ _` / -_) _` / -_) _/ -_) _| _| / _ \ ' \ _| / _ \
\__|_||_\__,_|_||_\__, \___\__,_\___|\__\___\__|\__|_\___/_||_(_)_\___/
|___/
0.48.04 / 2024-12-16 21:50:53 +0100:
- 0.48.04
- Windows was sometimes missing timezone data (#2845 #2826)
0.48.03 / 2024-12-16 16:14:03 +0100:
- 0.48.03
- 0.48.02
- 0.48.02
- Notifications - "Send test" was not always following "System default notification format" (#2844)
- Notifications - "Send test" was not always following "System default notification format"
0.48.02 / 2024-12-16 16:07:11 +0100:
- 0.48.02
- Notifications - "Send test" was not always following "System default notification format"
- Notifications - Default notification format (for new installs) now "HTML color" (#2843)
- Notification - `HTML Color` format notification colors should be same as UI, `{{diff_full}}` token should also get HTML colors ( #2842 #2554 )
- Notifcations - Adding "HTML Color" notification format option (#2837)
- UI - Make 'tag' sticky - redirect to current tag on edit or add watch (#2824 #2785)
- Notifications - Support for commented out notification URLs (#2825 #2769)
- Docs - Adding information to README.md about the new scheduler
0.48.01 / 2024-12-03 18:44:20 +0100:
- 0.48.01
- UI - Fixing scheduler options
0.48.00 / 2024-12-03 14:26:01 +0100:
- 0.48.00
- Fix HIDE_REFERER env option for hiding changedetection.io from referer headers (#2787)
- New functionality - Time (weekday + time) scheduler / duration (#2802)
- Add Turkish phrases for out-of-stock detection (#2809)
- UI - Always use UTC timezone for storing data, show local timezone (#2799)
- Update stock-not-in-stock.js
- Python 3.13 compatibility (#2791)
- Code - Update .gitignore and .dockerignore (#2797)
- VisualSelector - Use 'deflate' for storing elements.json, 90% file size reduction (#2794)
- UI - Show local timezone info in settings (for future functionality) #2793
- Notification - Locking paho-mqtt:// version fix
- Update COMMERCIAL_LICENCE.md
- Ability to disable version check (set `DISABLE_VERSION_CHECK=true`) Re #2773 (#2775)
- Minor improvement for queue management
- Update bug_report.md
0.47.06 / 2024-11-07 20:10:02 +0100:
- Security - Fix test
- Security check - improve test
- 0.47.06
- CVE-2024-51998 - file:/ path traversal access should not be allowed to access a file without ALLOW_FILE_URI set
- Update docker-compose.yml (#2767)
- Price tracker - fix for sites that supply an empty additional price (#2758)
- Testing - Pinning werkzeug (#2757)
0.47.05 / 2024-10-31 22:51:03 +0100:
- 0.47.05
- CVE-2024-51483 - Fix for limiting access to file:// via source:file:///tmp/file.txt when using webdriver/playwright
- Backups - Hide incomplete/running backups from being downloaded
- Backups - Backups now operate in the background, provide a nice UI to access/download previous backups (#2755)
- Filters - Process all CSS and XPath 'subtract' selectors in a single pass to prevent index shifting and reference loss during DOM manipulation. (#2754)
0.47.04 / 2024-10-29 08:25:05 +0100:
- 0.47.04
- Do not recheck 'paused' watches on edit/save (Re #2747 #2750)
- Notification post:// get:// etc - Fixing URL encoding of headers so that '+' in URL is correctly parsed as ' ' (and other url-encodings) (#2745)
- #2502 - Add jinja2 template handling to request body and headers (#2740)
- Restock detection - Add additional out-of-stock detection for PT language (#2738)
- "Send test notification" in "Restock" mode was not working correclty when restock tokens "{{restock.price}}" were in the notification body (#2737)
- #2727 Notifications - Fix "send test notification" on empty list, includes test (#2731)
- UI - Fix mobile styling inconsistencies and resolve diff page overflow issue (#2716)
- Filters - "Block change detection when text exists" should not trigger a change when the original text returns
- UI - More work on tab buttons hiding behind menu/header :-)
0.47.03 / 2024-10-11 17:33:00 +0200:
- 0.47.03
- Remove same checksum skip check - saved a little CPU but added a lot of complexity (#2700)
- UI - Fix scroll offset / tab buttons hiding behind menu/header
- 0.47.02
- UI - Fix scroll offset / tab buttons hiding behind menu/header
0.47.02 / 2024-10-11 15:35:36 +0200:
- 0.47.02
- UI - Fix scroll offset / tab buttons hiding behind menu/header
0.47.01 / 2024-10-11 15:02:17 +0200:
- 0.47.01
- Adding missing `apprise_plugin` for pypi/pip based installs
0.47.00 / 2024-10-11 13:04:56 +0200:
- 0.47.00
- Restock multiprice improvements (#2698)
- Test - Simple test for live preview
- Adding test for proxy checker/scanner (#2697)
- Fixing proxy checker (#2696)
- UTF-8 handling fixes, Improvements to whitespace filtering (#2691)
- Testing - Tidyup (#2693)
- Filters & Text - Preview refactor/improvements (#2689)
- Build - Add image source label to Dockerfile (Better Renovate and others support) (#2690)
- Custom JSON/POST Notifications - Log when it could not apply the application/json content-type header
- UI - Filters live preview - improvements to layout
- Restock - Use the scraped 'Not in stock' product status over the metadata version (many website lie in the metadata) (#2684)
- UI - Better 40x error message (#2685)
- Visual Selector - Including <button> (#2686)
- Stock/not-in-stock scraper - slight reliability improvement (#2687)
- Code - Small improvements in logging
- UI - CSS - Fix on sorting row wrapping issue (#2680)
- UI - Live filters preview - Better handling of watch preferences
- UI - "Diff" button in overview list is now "History" button (#2679)
- UI - Improve error handling when a module is missing when editing a URL/link (#2678)
- UI - Live filters preview - Make it sticky in the viewport so its easier to build nice filters
- UI - Live filters preview - dark mode improvements
- UI - Improvements to text preview on mobile
- UI - Improvements to live preview of Filters text
- UI - Misc fixes for mobile styling (#2669)
- Update docker-compose.yml - Adding example for enabling change detection on local files
- UI - Live preview - misc improvements (Adding test, fixes to filters) (#2663)
- UI - "Filters & Triggers" - Live preview of text filters (Preview the output of the filters section in realtime) (#2612)
- Reversing subprocess execution - saved a little memory but used a LOT more CPU (#2659)
- [test] Use local data instead of reaching out to changedetection when testing (#2660)
- Restock monitor - Only try to process restock information (like scraping for "out of stock" keywords) if the page was actually rendered correctly. (#2645)
- Text filters - Adding filters "Trim whitespace" and "Remove duplicate lines"
- Browser Steps - UI - Use a better flexbox layout
- Filters - Add support for also removing HTML elements using XPath selectors (#2632)
- Update AppRise notification library to 1.9.0 (#2624)
- browser_steps: add "click element containing text if exists" (#2629)
- Testing - Fixing Restock test #2641
- Testing - Fix false filter missing check alerts
- Restock/Price detection - Fix duplicated prices with different data type on single page product #2636 (#2638)
- Memory management improvements - LXML and other libraries can leak allocation, wrap in a sub-process (#2626)
- Small memory allocation fixes (#2625)
- Testing - locale fix for test (#2623)
- Testing/Code - Improving test reliability (#2617)
- UI - Hiding noisy info under 'show advanced help' button (#2609)
0.46.04 / 2024-09-04 13:55:18 +0200:
- 0.46.04
- Fixing restock monitor tests and tweaking docker default config example,
- Container name should be 'sockpuppetbrowser' because its not just playwright that uses it
- Restock/Price detection - Better catching of errors when parsing metadata documents for restock/price check (#2602)
- Restock - updating texts and text offsets
- Build - Unpin jsonschema for faster builds (#2583)
- Price detection/scraping - Adding extra element training data (#2582)
0.46.03 / 2024-08-19 17:22:13 +0200:
- 0.46.03
- Watch 'Download last snapshot' link/button should give last, not first snapshot (#2576)
- Price and restock scraping - small price fix scraper (#2575)
- Browser Steps UI - Interactive UI wasn't sending headers but was when the check ran (#2551)
- Set encoding type for scraper script reader (#2574 #2568)
- Handle zero-byte/empty content responses with "`[ ] Empty pages are a change`" option, the same as when the HTML doesnt render any useful text (#2530)
0.46.02 / 2024-07-27 20:28:04 +0200:
- 0.46.02
- Adding test for #1995 UTF-8 encoding in POST request body and post:// notifications (#2525)
- Updating Apprise notification library , Splunk/VictorOps, Africas Talking, Microsoft Power Automate / Workflows, Société Française du Radiotéléphone (SFR) Support (#2524)
- Encode POST style requests and notifications as UTF-8 if it has no encoding/basic string (#2523)
- VisualSelector+BrowserSteps - When scraping elements, check for null results (#2517)
- Use #!/usr/bin/env to support virtualenv (#2518)
- Update README.md
- UI - Adding "Download latest HTML snapshot" from Edit Watch > Stats page for easier debugging (#2513)
0.46.01 / 2024-07-19 13:53:00 +0200:
- 0.46.01
- UI - Fixing up 'test notification' bug from main settings and tag settings pages #2510 (#2511)
0.46.00 / 2024-07-18 14:13:06 +0200:
- 0.46.00
- Restock/Price detection - Improving text information snapshot value
- Restock - Tweaking storage of "original price"
- Fixing file:// file pickup - for change detection of local files (#2505)
- Adding Apple M1 Pro type arm64/v8 support docker image (#2507)
- Dropping older ARM v6 support due to dependencies not having support (#2506)
- Ability to use restock and price amounts in notifications as tokens (for example {{restock.price}} ) (#2503)
- Restock & Price detection - Ability to set up a tag/group that applies to all watches with price + restock limits
- Fixing problematic tag assigning via UI which caused watches to not accept new settings
- Fixing first history/preview save issue (First version after an error, on the first check, wasnt available) (#2494)
- UI - Restock/price following text cleanups
- UI - Extract <title> as title should work on all processors (#2490)
- Restock & Price monitor - Huge refactor, set upper and lower price alert limits, set % change, follow the prices and restock amounts directly in the watch-overview list
- Product checks - Just a basic string check is far more efficient for suggestion price/restock check plugin (#2488)
- Update COMMERCIAL_LICENCE.md
- Update README.md - Adding link to COMMERCIAL_LICENCE.md for those interested in reselling the software
- Adding COMMERCIAL_LICENCE.md
- Testing - Adding simple memory usage test (#2483)
- Bugfix - Watches with BrowserSteps should recreate the data-dir if it was missing (in the case that you deleted/migrated) (#2484)
0.45.26 / 2024-07-11 13:52:13 +0200:
- 0.45.26
- Code - Fixing deprecation warning (#2477)
- UI - Visual Selector should still update when elements were not found (#2476)
- Code - Update/modernise diff.py (#2471)
- UI - Visual Selector - Multiple selections (refactor) (#2475)
- UI - Visual Selector now supports Shift+Click for multiple selections!
- UI - Visual Selector - Show/visualise all/any matching filter elements from all filters in "CSS/JSONPath/JQ/XPath Filters" include filters (#2440)
- UI - Visual Selector graphics should be centred
- Snapshot count from history was not updated in watch after using [clear history] (#2459)
- Fixing 'tags'' field from old installs (0.43.0+) could have wrong data-type causing crash
0.45.25 / 2024-07-03 19:27:23 +0200:
- 0.45.25
- UI - Fixing preview/diff "ignore text" highlight button (refactor, didnt work in "preview" mode) (#2455)
- Restock detection - Updating detection texts
- UI - Mobile - Hiding empty columns
- UI - Mobile - Watch overview table - Sort/order buttons were not being shown correctly
- Update docker-compose.yml - fix indentation re #2447
- Restock detection - Added extra out-of-stock phrases for DE (#2442)
- Restock detection - updating texts
- UI - Fixing double punctuation in 'unpaused' message #2435
- Build - Bump docker/build-push-action from 5 to 6 in the all group (#2436)
- Now saving last two HTML snapshots for future reference, refactor, dont write screenshots and xpath to disk when no change detected (saves disk IO) (#2431)
- Filters - Implement jqraw: filter (use this to output nicer JSON format when selecting/filtering by JSON) (#2430)
- Build - fixing build warnings
- Upgrade to Python 3.11 from 3.10, add faster prebuilt "wheels" for rPi devices, upgrade cryptography security library
- Prefer pythons built in "importlib" over pkg_resources+setuptools (#2424)
- Security/dependabot - Bump urllib3 from 1.26.18 to 1.26.19 (#2423)
0.45.24 / 2024-06-17 13:27:11 +0200:
- 0.45.24
- Update eventlet ( Fixes SSL error on Python 3.12 ) (#2419)
- Filter failure/not found notification threshold - Counter should be reset when editing a watch, clear watch errors on 'save' (#2413)
- Bump dnspython from 2.3.0 to 2.6.1 (#2306)
- Improve testing for Python 3.10, 3.11 and 3.12
- UI - Add space around checkbox operation buttons so they work better in mobile #2393
- RSS - Setting to hide muted watches in RSS feed (default ON) (#2411)
- Fetching/Requests - Fixing user agent header overrides per-watch of global settings (#2409)
- Code - improving unique key fix for history database handler (#2402)
- UI - 'Mark all viewed' button should not show when all viewed (#2399)
- Fixing build test - Adding small delay (#2397)
- Code - Bump eventlet from 0.33.3 to 0.35.2 (#2305)
- UI - Mobile CSS/layout fix wrapping on empty list text #2393
- UI - Preview single snapshot - Date and button fixes (#2389)
- Build - PIL/pillow package not used, probably shouldnt be installed/required (#2382)
0.45.23 / 2024-05-22 00:01:50 +0200:
- 0.45.23
- RSS - Only insert feed header if app_rss_token is set (should be only shown in index/overview page) (#2381)
- Fetcher - Using pyppeteerstealth with puppeteer fetcher (#2203)
- Fix overflowing text
- RSS and tags/groups - Fixes use active_tag_uuid, fixes broken RSS link in page html (#2379)
- Ability to set default User-Agent for either fetching types directly in the UI (#2375)
- Testing - Fixing JSON test
- UI - Mobile - quick watch form element fixes
- UI - CSS - Remove gradient border, it did not add much to the design #2377
- RSS - Muted watches should not show in RSS feed (#2374 #2304)
- Notifications - Fixing truncated notifications when tgram:// or discord:// is used with other notification methods (#2372 #2299)
- UI - Ability to preview/view single changes by timestamp using keyboard or select box(#1916)
- Browser Steps - Fixing "goto site" step #2330 #2337 (#2364)
- Crash on older CPU - Setting LXML version to any version without the known modern-CPU-only CPU flags (#2365 #2328 )
- Notifications - Update Apprise notification library to 1.8.0 (#2363 #2324) fixes mailto:// with IP as server endpoint
- UI - Refactor of the Recheck Time Settings, Added "Use default recheck time" checkbox and refactor/simplify system handling (#2362)
- UI - Search should scan/search error messages (#2353)
- UI - 'stats' tab should show what the server-type detected is ( #2348 )
- Update README.md
- Notifications - Setting set minimum version for mqtt:// library notifications (#2334 / #2333)
0.45.22 / 2024-05-02 12:09:45 +0200:
- 0.45.22
0.45.21 / 2024-04-25 22:29:38 +0200:
- 0.45.21
- UI - Wrap tag names in solid background to make it easier to read when theres multiple tags
- UI - Error text on exception should contain the word Exception (#2322)
0.45.20 / 2024-04-18 11:55:46 +0200:
- 0.45.20
- Bug fix - further work on lxml filter extract (#2313 #2312 #2317)
0.45.19 / 2024-04-17 20:01:35 +0200:
- 0.45.19
- Bug fix for newer lxml module - module 'lxml.etree' has no attribute '_ElementStringResult' - reimplement _ElementStringResult (#2313 #2312)
0.45.18 / 2024-04-16 18:50:14 +0200:
- 0.45.18
- UI - Adding UI notice if watch has group options set (#2311 #2307)
- dependabot - automatically follow apprise
- "Send Test Notification" - In "Group" settings form it should not fallback to the system wide notifications when sending a test if nothing is set.
- "Send Test Notification" - Now provides better feedback and works with the actual values in system settings form
- Code - Getting ready for newer python versions - packing our own strtobool (#2291)
- UI - BrowserSteps - Show step screenshot/pic should use absolute URL #2243
- UI - Remove unique check for URLs entered on the "quick watch add" form ( #2286 #2292 )
- UI - Improvements to tag/groups page, show number of watches under each group, link group name to list (#2290)
- "Send Test Notification" button from watch form edit should respect global settings and tag/group settings ( #2289, #2263 )
0.45.17 / 2024-03-31 16:35:44 +0200:
- 0.45.17
- UI - Add helper note
- UI Text - Adding helper text to VisualSelector to explain what the connection is with the CSS/xPath filters
- Update contributing documentation for discontinuation of `dev` branch (#2272)
- Updating pyppeteer-ng (mainly newer pillow release) (#2247)
- Notifications - Updating apprise version, pinning mqtt:// to compatible version (#2242)
0.45.16 / 2024-03-08 21:07:08 +0100:
- 0.45.16
- Pip build - content fetchers package was missing
0.45.15 / 2024-03-08 19:00:37 +0100:
- 0.45.15
- Updating restock detection texts
- Adding CORS module - Solves Chrome extension API connectivity (#2236)
- UI - Overview list shortcut button - Ability to reset any previous errors
- Chrome Extension - Adding link and install information from the API page
- Chrome Extension - Adding link in README.md to the webstore
- Chrome Extension - Adding callout to UI
- Import - Fixed "Include filters" option (fixed typo on select) (#2232)
- Updating restock detection texts
- Restock detection - Improving test for restock IN STOCK -> OUT OF STOCK (#2219)
- Puppeteer - remove debug hook
- Custom headers fix in Browser Steps and Playwright/Puppeteer fetchers ( #2197 )
- text_json_diff/fix: Keep an order of filter and remove duplicated filters. 2 (#2178)
- Fetching - restock detecting and visual selector scraper - Fixes scraping of elements that are not visible
- BrowserSteps UI - Avoid selecting very large elements that are likely to be the page wrapper
- Fetching - Puppeteer - Adding more debug/diagnostic information
- Update stock-not-in-stock.js
- UI - Sorted alphabetical tag list and list of tags in groups setting (#2205)
- Code - Remove whitespaces in visual selector elements config
- Build fix - Pinning package versions and Custom browser endpoints should not have a proxy set (#2204)
- Update stock-not-in-stock.js
- Fetching pages - Custom browser endpoints should not have default proxy info added
- Puppeteer - fixing wait times
- Puppeteer - more improvements to proxy and authentication
- Puppeteer - client fixes for proxy and caching (#2181)
- dependabot - Bump the all group with 1 update (artifact store) (#2180)
- Puppeteer fetch - fixing exception names
- Code - Split content fetcher code up (playwright, puppeteer and requests), fix puppeteer direct chrome support (#2169)
- Alpine linux build - adding JPEG development headers to fix build errors
- Plawright content fetcher - Fixes for status codes and screenshot info (#2168)
- Fetching - Prefer to use SockPuppetBrowser (#2163)
0.45.14 / 2024-02-07 12:43:23 +0100:
- 0.45.14
- Bug fix - fix missing default var (#2162/ #2118/ #2122 )
- Fix - Pinning elementpath xPath filter library to 4.1.5 (#2164)
- Restock detection - Update stock-not-in-stock.js (NL)
- New text filter - Sort text alphabetically filter (#2153)
- Filtering - include_filters in group and watch settings should not duplicate (#2151 #1845)
- Record notification count and show in [stats] tab (#2150)
- Restock - Update stock-not-in-stock.js Italian translation (#2149)
- UI - Show error/warning when trying to compare the same version
- Fetching - Make an obvious error when using BrowserSteps with the simple text fetcher (#2145)
- Fix for switching to price-data-follower mode (when page has JSON price data), only needs to be queued once. Re #1565
- Fetching - Always record `server` software reply headers (will be used in the future) (#2143)
- Testing - General test workflow improvements (#2144)
- RSS - Include link to the watched URL in the feed (#2139 #2131 and #327)
- Notifications - skip empty notification URLs from being processed (#2138)
- UI - Filters & Triggers - Adding example for keyword matching in a line
- RSS - Adding performance stats
- Notification - logging - adding performance information for processing time of notifications #327
- UI - Adding icon to show which watch has Browser Steps enabled (#2137)
- Logging - Adding extra debug logging to change detection (#2136)
- Fetcher - Improve status_code logging (#2130 #2122)
- Notifications - Bugfix: Notification format not being set correct (HTML emails being sent as plaintext and other problems) (#2129)
- Restock tweaks - use a single regex, tidy up height detection (#2125)
- Notification - Templates - Adding an example of how to use URL encoding with tokens
- Notification - Templates - Adding an example of how to use |tojson for JSON payloads
- Build maintenance - dependabot - Bump the all build helpers (#2121)
- Enable dependabot for github-actions (#2119)
- Update docker-compose.yml
0.45.13 / 2024-01-19 10:24:47 +0100:
- 0.45.13
- Security update - Adding API token secure check for API endpoint `/api/v1/watch/<uuid>/history` @rozpuszczalny
- Test - tidy up backup test (#2117)
- Adding contributors section (#2116)
- Logging loguru output tweaks (#2112)
- Support Loguru as a logger (#2036)
- Update stock-not-in-stock.js texts
- Test - Adding extra test for HTML output in emails ( #2103 )
- Update README.md
- Restock detection - Check all elements for text to get stock status from, only consider elements inside the viewport, only consider elements more than 100px from the top (avoid menu) , trim any text returned (#2040)
- Notifications - When any in a list of notifications fails, the others should still work (#2106)
- Browser Steps - Fixing "'Response' object is not subscriptable" where quotes were used in connection URL - Quote wrapped URL for browserstep url was breaking the connection #1627 #1823 #2099 (#2100)
- Added OPTIONS HTTP method (#2094)
- API Docs - Examples should use port 5000 (same as the docker-compose default installation and other documentation)
0.45.12 / 2024-01-05 20:17:14 +0100:
- 0.45.12
- 0.45.11
- Notification fixes - error on mailto:// when no format was specified, fixing default body and title of notifications to respect global settings (#2085)
- Update README.md
- Removing heroku support as its no longer free
- PyPi package build fixes (#2084)
- Adding PyPi pip package publisher script
0.45.10 / 2024-01-05 14:51:35 +0100:
- 0.45.10
- Update README.md - Remove deprecated docker-compose (now docker compose)
- Browser Steps - General error handling improvements (#2083)
- Browser Steps - Fix for correct tokens/information in browser step failure notification (#2066)
- UI - [Send test notification] - Refactor to use all tokens like a real watch and Notification Body+Title from UI value (#2079)
- Notifications upgrade - Upgrade to Apprise 1.7.1 - Emojis support, Telegram topics support, Discord support for user and role @ping support. (#2075)
- Restock detection - "In stock" should be None/"Not yet checked" by default (#2069)
- Restock detection - updating texts
- Fetching - Custom browser on experimental/puppeteer fetcher - Don't switch to custom puppeteer mode if external browser URL is active (#2068)
0.45.9 / 2023-12-20 15:30:58 +0100:
- 0.45.9
- Restock detection - Update stock-not-in-stock.js strings (Dutch translations)
- Testing: Improve application signal handling test coverage (#2052)
- Update docker-compose.yml
- Restock detection - Update stock-not-in-stock.js strings (#2032)
- API - Updating documentation
- Update README.md
- API - Ability to add/import bulk list of watches as a line-feed separated list (#2021)
- Notifications - Fixing support for headers in custom post://, posts:// notifications, ability to include HTTP headers when making custom notifications (#2018)
- Improve handling of SIGTERM shutdown in containers, remove unnecessary multi-process handler for pip installs, tidy up modules (#2014)
- UI - Extra Browsers - Adding links and more resources on how to connect a fingerprint/scraping browser
0.45.8.1 / 2023-11-30 20:01:40 +0100:
- 0.45.8.1
- PDF Fetcher for change detection - Always use plain requests for PDF because otherwise we cant access the embed PDF in the browser (#2020)
- UI - Fix - Edit Watch 'Show advanced options' should fire at page load to show you whats possible
0.45.8 / 2023-11-29 10:25:11 +0100:
- 0.45.8
- Restock detector - adding more detection strings
- UI - remove incorrect label
- UI - "Add new watch" URL at main input box should always grow to match the viewport
- UI - Tidy-up for advanced settings under watch edit, HTML validation fixes (#2011)
- UI - 'Request body' section disappears after switching from 'Playwright' to 'System settings default' and back on 'Request' tab - Fixed #1449
- Browser Steps - Adding validation for "Click X,Y" step
- API - Make sure the watch "is viewed" attribute is correctly represented in the API output (#2009)
- Update playwright fetcher library and API calls
- Testing - Improve PDF text change detection tests (#1992)
- UI - Clicking the "[Diff]" link should take you to the difference starting at the relative time to when you last viewed the difference page (#1989)
- Visual Selector - xPath handling misc fixes (#1976)
- Fix build issue
- feature: Support XPath2.0 to 3.1 (#1774)
- New functionanlity - Selectable browser / ability to add extra browser connections (good for using "scraping browsers"/ etc) (#1943)
- API/UI - Button to regenerate API key (#1975 / #1967)
- Code refactor for fetchers (#1941)
0.45.7.3 / 2023-11-12 12:05:54 +0100:
- 0.45.7.3
- Build - update docker container cache setup
0.45.7.2 / 2023-11-12 00:29:35 +0100:
- 0.45.7.2
- UI - Cleanup fonts better display in firefox, request CSS according to version (#1968)
- Revert "Build - Add piwheels support for ARMv6 and ARMv7 machines (rPi etc) (#1814)" (#1964)
0.45.7.1 / 2023-11-11 20:42:16 +0100:
- 0.45.7.1
- Build: python libraries - pinning more libraries (#1962)
- Build: python libraries - eventlet + dnspython dep problems were fixed (#1963)
- Pip builder - ignore proxy test data if it exists
0.45.7 / 2023-11-10 17:39:49 +0100:
- 0.45.7
- UI - Fixing issue where search box JS interfered with page render when logged out
0.45.6 / 2023-11-10 17:32:21 +0100:
- 0.45.6
- UI - Adding support-us widget <3 (#1956)
- Visual Selector - Small fix, Improving elements fetcher reliability (#1947)
- Update README.md - Adding import information
- Upgrade playwright browser library (#1942)
- Update docker-compose.yml - playwright version should be the same as in the automated tests
- Import - Improved Wachete Excel XLS import support for "dynamic wachet" (sets correct state of using chrome browser or not) column (#1934)
- Refactor Excel / wachete import, extend tests (#1931)
- Build - Upgrading pip packages (#1915)
- Ability to Import from Wachete XLSX (or any XLSX) - Wachete alternative made easy (#1921)
- Docker build - upgrade image to "bookworm" debian version - fix glibc mismatch (#1918)
- Fetcher - experimental puppeteer fetch - dont rewrite the proxy protocol (fixes socks5 bug)
- Nice format stats (comma sep)
- Selenium fetcher - Test was on `4.14.1` but documentation was not, change both to `4` (#1912)
0.45.5 / 2023-10-28 20:20:24 +0200:
- 0.45.5
- BrowserSteps - Wrong text taken from browser steps (#1911)
0.45.4 / 2023-10-28 16:48:10 +0200:
- 0.45.4
- Code cleanup - Browser Steps
- Fetching - Browser Step enabled watches should also identify 404/non-200 status situations (#1907)
- Text Filters - "Extract Text" filter was not being error checked properly when using a RegEx (#1902)
- Fetching/BrowserSteps - Going to a page was using slightly logic to the main way - make them use the same methods (#1890)
- UI - "With errors" tag/button should always show the current tag error count
- Build - Add piwheels support for ARMv6 and ARMv7 machines (rPi etc) (#1814)
- Upgrade selenium to 4.14.0 (latest) (#1783)
- UI - Don't show search icon when logged out (#1896)
- UI - Adding handy "limit to watches with errors" button (#1886)
- UI - Viewing text differences - Tweaks to "Jump to next change" button
- UI - BrowserSteps - Show the screenshot of an error if it happened on a step, highlight which step had the error to make it easier to find out why the step didnt work, minor fixes to timeouts(#1883)
- UI - Visual Selector should be the same page-size as Browser Steps (fit inside the browser viewport)
- Packaging - Enable jq query for filters package installation for darwin (mac) #1868
- UI - Adding [stats] tab to watch Edit page (#1880)
- Bugfix - [Clear history] button was not clearing all metadata (#1881)
- RSS fetch - RSS field <title> was not rendering as text correctly, added workaround #1879
- PDF Fetching - Handle when the PDF is given as inline content without a proper mime header (#1875)
- Notification library - Bump Apprise notification library to 1.6.0 (#1867)
- RSS Fetching - Handle CDATA (commented out text) in RSS correctly, generally handle RSS better (#1866)
- UI - Adding mouseover/title to show absolute date/time of a last-change or last-checked date #1860
- UI - Difference text viewer - fixing jump to new difference on changing word/line/etc style
- Testing - Improve xPath tests (#1863)
- UI - Fixing jump to next difference button after refactor
- UI - Updating proxy tip link
- UI - Adding watch label/title to [edit] page title (#1858)
- Documentation - Add note that playwright is not supported on ARM type devices #1856
- UI - Difference page - added 'title' to each change for nice mouse-over information about when the change occured
- UI - Difference page - Tweak 'preview' page invite text
- UI - Ability to select between any difference date ( from / to ) and minor UI cleanup for differences page (#1855)
- UI - Difference page, make the button to find the preview page for triggers and ignored text easier to find
- System - No need to run updates on fresh installs (#1854)
- UI - Proxy configuration helper notes improvements
- Preview/Difference page - When sharing the preview/difference page, highlight-to-ignore should login should be required (#1852)
- Fetching - Clarifying how fetchers work with SOCKS5 proxies
0.45.3 / 2023-10-05 12:29:59 +0200:
- 0.45.3
- Update README-pip.md
- Update README.md
- LD JSON Price followers - Handle incorrectly created LD-JSON price structures better (#1837)
- Dockerfile/fix: Update builder and runner to Python 3.11 (#1781)
- Backend - Regular expression / string filtering refactor for Python 3.11 and deprecation warnings since Python 3.6 (#1786)
- Update README.md
- UI - BrowserSteps - Browser Steps interface screen should resize relative to the browser
- BrowserSteps - <input> of type 'number' should use 'enter text in field'
- Restock detect - bumping texts for restock detection
- UI - Proxy Scanner tool should also understand when a filter is empty or contains only an image
- UI + Fetching - Improving helper message when filter contains only an image (adding link to more help)
- UI + Fetching - Be more helpful when a filter contains no text, suggest ways to deal with images in filters (#1819)
- Building application - Upgrade test workflows to latest versions (#1817)
- Page fetching - Fixed possible incorrect browser user-agent header in playwright/puppeteer/browserless fetchers (#1811)
- UI - Add extra validation help for notification body with Jinja2 markup (#1810)
- UI - More precise text to describe "current_snapshot" notification token
0.45.2 / 2023-09-22 09:45:55 +0200:
- 0.45.2
- Code/Test - Improve testing for creating backups
- UI - Re-order notification field settings
- UI - Notifications - Tidyup - Hide the notification tokens but show with a button/link
- UI - Notifications - Tweak discord help text
- RSS feeds - Fixing broken links from RSS index in some environments, refactor code (#152, #148, #1684, #1798)
- UI - "recheck all" button should ignore blank/empty "tag" setting when set
- Update README.md
- UI - Fix spelling error
- UI - Make tgram:// and discord:// examples in notification settings link to how-to pages (#1785)
- Catch possible crash scenario for listing watches - `date_created` was missing on add (#1787)
- Ability to select "No proxy" for a watch when you have proxy's configured
- Updating notification library - Adds support for Pushy, PushDeer, PushMe and Matrix attachment support (screenshots)
- Update README.md
- UI - Fixing update for sort by "date created" or "#" in watch overview table ( #1775 )
- Add 'diff_patch' notification body token - This will allow the diff to be generated in the "unified patch format." (#1765)
- README/docs: Clarifying xpath version changedetection.io uses (#1773)
0.45.1 / 2023-09-06 12:27:56 +0200:
- 0.45.1
- UI - Fixing open/broken HTML which was causing some buttons to not display
0.45 / 2023-09-06 09:46:27 +0200:
- 0.45
- Adding Oxylabs proxy recommendation to proxy config page (#1756)
- Fix - Link in the RSS feed was showing the path twice (when used in reverse proxy)
- Fix - Regular Expression text in `ignore` and `trigger` were not processing correctly, also refactored for lower CPU usage (#1747)
- Fix typo in README.md (#1759)
- UI - "Test notification" button in "Group Tag" settings page was broken due to missing variable #1753
- UI - Clicking 'ignore text' when highlighting text should clear the preview text button/area. #1754
- Update documentation - How to set number of concurrent fetchers
0.44.2 / 2023-08-28 19:01:59 +0200:
- 0.44.2
- UI - Ability to highlight text and have it offered as a ignore-text option, really nice easy way to set ignores on changing text (#1746)
- Update README.md
- Enable ARMv8 builds (for RaspberryPi and other portable devices) (#1733)
- Updating in app links
- Updating URL validation library, ability to block access to simple (no dot) hostnames like "localhost" with BLOCK_SIMPLEHOSTS setting (#1732)
- Re-enable ARMv6 builds (for Raspberry and other portable devices) (#1724)
0.44.1 / 2023-08-02 08:55:07 +0200:
- 0.44.1
- Re-enable ARMv7 builds (for Raspberry and other portable devices)
- UI - Fixing darkmode switch icon
0.44 / 2023-07-17 18:03:42 +0200:
- 0.44
- Updating AppRise notification library, Improved pover, ntfy support, whatsapp updates, Pagertree support, Voip.ms support, Misskey support, plus many fixes and improvements.
- API - Updating API description for handling a single watch
- Removing docker build for RaspberryPi (armv6/armv7) for now due to packaging problems
- Proxy scan improvements - handle custom proxies, dont restart when a scan is already running (#1689)
- Browser Steps - When cleaning up old screenshots, check the file exists
- Scan/Recheck proxies - Report filter not found as "OK" but with warning
- Bug fix - Previously encountered fetch errors were sometimes not being cleared (#1687)
- New feature - Helper button to trigger a scan/access test of all proxies for a particular watch (#1685)
0.43.2 / 2023-06-30 22:57:05 +0200:
- 0.43.2
- Bug - SMTP mailto:// Notification content-type (HTML/Text) fix and add CI tests (#1660)
- Fix - Watches werent falling back to global default formats correctly when required (#1656)
0.43.1 / 2023-06-27 18:28:18 +0200:
- 0.43.1
- Bug fix - Notification settings were not cascading from global -> tags -> watch correctly in some cases (#1654)
- Bug - Fix watch clone (#1647)
- UI - Dont allow empty tag names (#1641)
0.43 / 2023-06-21 14:35:08 +0200:
- 0.43
- UI - Watch Table - Clicking anywhere on the watch list row table also activates the operations buttons and checkbox
- UI/Functionality - Ability to manage/apply filters and notifications across tags/groups
- UI - Fixes to dark mode toggle (#1629)
- Docker container updates - use specific debian version (libssl1 vs libssl3) (#1630)
- Code - Adding CI test for search (#1626)
0.42.3 / 2023-06-12 15:28:51 +0200:
- 0.42.3
- Bug fix - Fixed crash when deleting watch from UI when watch was already manually deleted from datadir (#1623)
- README - Update links to new website
- Fetcher / Parser - Automatically attempt to extract JSON from document when document contains JSON but could be wrapped in HTML (#1593)
- Test improvement - Also test that custom request headers works with Playwright/Browserless (#1607)
- Fetching - Be sure that content-type detection works when the headers are a mixed case (#1604)
- UI/Fetching - Update "Filter not found" message to be more explanatory/helpful (#1602)
- Restock monitor - Updating texts for tickets available/unavailable restock detection
- Docs - Update README.md (Changed LXML re:math reference to re:match) (#1594)
0.42.2 / 2023-05-25 16:47:30 +0200:
- 0.42.2
- UI - Configurable pager size #1599 #1598
- Fetcher - Ability to specify headers from a textfile per watch, global or per tag ( https://github.com/dgtlmoon/changedetection.io/wiki/Adding-headers-from-an-external-file )
- Restock detection - Better reporting when it fails (#1584)
- Fetcher - Puppeteer experimental fetcher wasn't returning the status-code (#1585)
- Update README.md
0.42.1 / 2023-05-21 14:20:23 +0200:
- 0.42.1
- Fetcher fix - Clear any fetch error when the fetched document was the same (clear any error that occurred between fetching a document that was the same)
0.42 / 2023-05-18 22:10:10 +0200:
- 0.42
- UI - "Search List" also works for 'Title' field
- UI - New "Search List" icon and functionality (#1580)
- VisualSelector - Add message when first version cannot be found
- UI - update link to official project page
- BrowserSteps - Dont highlight elements that are the full page width (body, wrappers etc)
- BrowserSteps - Support for float seconds (0.5 etc)
- BrowserSteps - Session keep alive timer countdown fix
- BrowserSteps - adding setup check
- BrowserSteps - Refactored to re-use playwright context which should solve some errors
- BrowserSteps - Be sure to select the most appropriate input/button/a when an input element is wrapped in a <div> or other
- Fetcher - Experimental fetcher - dont cache embedded data URLs
- Fetcher - Experimental fetcher improvements (Code TidyUp, Improve tests, revert to old playwright when using BrowserSteps for now) (#1564)
- BrowserSteps - Include nice big start button SVG
- BrowserSteps - Remove unreliable method for detecting if the element has a "click" listener and default to click (switch to 'Click X,Y' will return the right co-ords anyway)
- Puppeteer fetcher, adding disk cache and other fixes (#1563)
- UI - Adding shortcut list select button for "clear/reset history"
- Fetcher - Experimental fetcher fixes, now only enabled with 'USE_EXPERIMENTAL_PUPPETEER_FETCH' env var (default off) (#1561)
- UI - Adding shortcut list select button for "clear/reset history"
- Element scraper - wrap offset detection in try/catch
- BrowserSteps - BrowserSteps was not always following proxy information
- BrowserSteps - remove minor delay
- Fetcher - playwright/browserless - Use builtin node puppeteer handler in browserless, scales way better, and is faster (#1559)
- UI - Fix back navigation / browser history (#1556)
- UI - HTML validation improvements for edit forms (#1553)
- UI - Various minor HTML validation fixes
- UI - pagination - use count including tag filter for pagination display
- UI - Notifications - Adding icon to "Add Email" button
- UI - Adding pagination to watch list (#1549)
- UI - Set selected watches as 'viewed' (#1550)
- UI - Fix missing </span> in watch list when using restock detection
- UI - Make sort order and type sticky in cookies, ability to sort by watch created time (#1519)
- Notifications - Send test notification should use system defaults for body and title if not set in watch (#1547 #1503)
- Adding generic changedetection.io SVG icon #1527
- Tests - error test - be sure to clear results from other test parts
- Update README.md
- Tests - Add test to check that low level fetch errors are cleared on next check
- Restock alerts - adding extra detection texts
- Restock monitor - Identify the cases where the product is also definitely in stock (#1489)
- Automated CI test for ensuring pypi package was built correctly (#1488)
0.41.1 / 2023-03-22 10:40:49 +0100:
- GitHub container build - 'provenance' was disabled
- 0.41.1
- Fix for pip installations
0.41 / 2023-03-21 20:30:21 +0100:
- 0.41
- Notifications - Include triggered text token as `{{triggered_text}}` in notifications, so you can send just the content that matches. (#1485)
- Notification tokens - add comment that the {{tokens}} can be used in the URLs also
- Quick add form - adjust font size and rename stock recheck
- Ability to set which text to process triggers on (added, removed, changed) according to the difference (#1483)
- Restock / stock / out of stock monitor - bumping detection texts
- Use brotli for reducing the size of the text snapshots (#1482)
- Notification screenshots - now PNG only for now to save disk space (no point creating two images) (#1481)
- New feature - Restock / stock / out of stock monitor option/mode
- UI - Clone/copy watch - A paused watch should not be checked when copied/cloned #1471.
- Update README.md
- Code - Abstract out the diff fetch types to make it easier to integrate new ones (#1467)
- BrowserSteps - Adding `Goto URL` step
- Fixing bad linebreak definition `</br>` in notifications and UI (#1465)
- Notification Improvements - New tokens `{{diff_added}}` and `{{diff_removed}}`, removed whitespace around `added` and `into` ( Issue #905 ) (#1454)
- Update README.md
0.40.3 / 2023-02-28 18:04:58 +0100:
- Bug - False change alerts - code cleanups Re #962 (#1444)
- Update README.md
- Be sure that `process_changedetection_results` is off after PageUnloadable and EmptyReply exceptions from fetcher - Re #962 (#1439)
- False change alerts fix - Don't reset watch checksum when a fetch error happens, adjust test to not test for fluctuating filter (#1437)
- Library update - Replace bs4 with beautifulsoup4 (#1433)
- API - Including `last_changed` timestamp in watch API info (#1436)
- Update apprise to 1.3.0 (#1430)
- API documentation - improving example for list watches
- API documentation - improving example for snapshot history
- API - Adding current version to 'System Information' endpoint, bumping API docs, Re #1429
- Further improving API documentation Re #1426
- Improving API documentation Re #1426
- Browser Steps - Adding "Wait for text" and "Wait for text in element" Re #1427
- Re #1382 - UI fix - sorting now works with selected tag
- Dont rewrite/resave snapshot when its the same data, just bump the history index, saves disk space. (#1414)
- Fetching - False alerts issue #962 - be sure to avoid triggering changedetection when checksums were the same (#1410)
- Deleting a watch now removes the entire watch storage directory (#1408)
- Use year/date in the backup snapshot zip filename instead of epoch seconds (#1377 #1407)
- PDF text conversion - fix bug where it detected a site as a PDF file incorrectly Re #1392 #1393
- Remove unused code (#1394)
- UI - preview page - Fix bug where playwright/chrome was system default and [preview] didnt show snapshot
- Adding example docker-compose.yml config to ignore errors from self-signed certs #1389
0.40.2 / 2023-02-03 19:20:13 +0100:
- 0.40.2
- Code cleanup - remove unused import
- UI fix - Fix logic for showing screenshot on diff page (#1379)
- Re #1365 - Playwright - Browser "Service Workers" should be enabled by default but unset via env var PLAYWRIGHT_SERVICE_WORKERS=block (#1367)
- New setting to allow passwordless access to your 'diff' page - perfect for sharing your diff page securely, refactored login code (#1357)
- Security - Possible stored XSS in watch list - Only permit HTTP/HTTP/FTP by default - override with env var `SAFE_PROTOCOL_REGEX` (#1359)
- Playwright - Removing old bug fix where playwright needed screenshot called twice to make the full screen screenshot be actually fullscreen (#1356)
- Fetch backend UI default fixes for VisualSelector and BrowserSteps (#1344)
- Fix fetch UI default fetch backend option icon (#1343)
- Docker container build - docker container buildx version change causing errors with watchtower and others (#1336)
0.40.1.1 / 2023-01-22 13:03:15 +0100:
- 0.40.1.1
- Re #1328 - add `-6` flag to enable IPv6 (#1329)
0.40.1.0 / 2023-01-21 15:38:54 +0100:
- 0.40.1.0
- Update README.md
- Setting docker-compose.yml version to 3.2 so it works with portainer and others #1306 #1144 #1079
- UI - Fix wrong logic when dealing with webdriver/playwright watch screenshot settings (#1325)
- Ability for watch to use a more obvious system default fetcher (#1320)
- Update README.md
- pip - eventlet doesnt support dnspython >=2.3.0 (Fixes build error)
- Reliability fix - Remove loop that could cause app to stop checking if data changes (#1313)
- API - Improvements, support PUT for updating existing watch, set muted state, set paused state, see https://changedetection.io/docs/api_v1/index.html (#1213)
- Data storage - Don't recreate DB if its corrupt, exit with error cleanly so operator can look into the problem (#1296)
- UI: Updating queued success message (#1285)
- README.md - Fix release link (#1277)
- Notifications: updating apprise (slack notification fixes and others) (#1272)
- Remove docker-compose version so it works on any modern version #1144 (#1268)
- Update the docker compose file to any version (#1079) (#1144)
- IPv6 support for listening on (#1267)
- Test improvements (#1264)
0.40.0.4 / 2022-12-25 18:25:45 +0100:
- 0.40.0.4
- UI - Suggest adding proxy for watch when 403 access denied is reached (#1260)
- Filters & Notifications - fixed tokens in filter not found notification
- UI - Fix broken html tags in settings page
- Proxy Settings in UI - TidyUp BrightData text
- Ability to configure extra proxies via the UI (#1235)
- Docker container updates - use Python 3.10, remove unused packages
- Tidy up list icons a bit (#1250)
- PDF File change detection - Initial PDF fetcher support with basic text extraction (#1244)
- Testing - Run test as fully built docker container (#1245)
- Dark mode - system setting var is not required (its cookie based)
0.40.0.3 / 2022-12-19 12:41:52 +0100:
- 0.40.0.3
- Visual Selector - Select smallest/most precise element first, better filtering of zero size elements
- Fetching - Check the most overdue watch first (#1242)
- Overview list - Checkbox action "Recheck"
- Playwright - Better error reporting and re-try fetch on fail once (#1238)
- Fetching - Always sort the key order of JSON content for less false alerts (May cause an alert on upgrade, but will be better going forwards) #1219
- Fetcher + VisualSelector - xPath filter with attribute filter was breaking the element finder
- Fetcher - CPU usage - Skip processing if the previous checksum and the just fetched one was the same (#925)
- Playwright+BrowserSteps - Fetch changes - Fetch simply after page starts rendering + delay seconds, disable service workers
- Improve ARM/rust build comment
- README.md - Improving JSONPath example for LD+JSON product data
0.40.0.2 / 2022-12-08 22:36:59 +0100:
- 0.40.0.2
- Price follower - Dont scan for ldjson data when 'no' was clicked on the suggestion (#1207)
- Adding missing parts for pip build Re #1206
0.40.0 / 2022-12-08 20:09:42 +0100:
- 0.40.0
- VisualSelector - Exclude items that are not interactable or visible
- Automatically offer to track LD+JSON product price data (#1204)
- UI - favicon callback no longer needed
- Test cleanups (#1196)
- Update runtime.txt (#1198)
- Dark mode - HTML template tidy up (#1197)
- UI - watch tags also known as watch tag / label
- Notification templates - bug in update, was updating the main system instead of the watch notification_title incorrectly
- Extract data - minor improvement to example
- Darkmode - Pause/Mute notification colour fix, re #1195
- Notification - Support for standard API calls post:// posts:// get:// gets:// delete:// deletes:// put:// puts:// (#1194)
- Notifications - tokens/jinja2 templating (#1184)
- Dark mode - more colour fixes
- Test improvement - improving notification error network test
- Extract text as CSV - Extra validation (#1192)
- Dark mode - make watch list easier to read when theres 'unviewed' entries
- New feature - Simple extract data by regex from all historical watch text into CSV (#1191)
- UI - Cursor over labels should be pointer
- Dark mode - Make watches with errors easier to read
- Dark mode - cookie path should be all site
- Tweaks - adding hover/title to dark mode button
- UI - Dark Mode (#1187)
- docker-compose - Add playwright/selenium container dependencies example (#1178)
- BrowserSteps - Can be shared by the watch share link
- UI - Make tabs hoverable
- Favicon multiplatform and path fix/update (#1176)
- BrowserSteps - Cleanup interface on shutdown
- BrowserSteps - More work on cleaner shutdowns of browser session
- BrowserSteps - Forcefully shutdown playwright to prevent any race-conditions waiting for it to shutdown
- BrowserSteps - Make the UI require an extra step so it doesnt slow down the experience when clicking through the tabs (#1175)
- BrowserSteps - Use correct mimetype for screenshot update
- BrowserSteps - Faster screenshot updates and enable gzip compression for all content replies in the UI (#1171)
- BrowserSteps - Add 'Execute JS' step
- BrowserSteps - Also try to find clickable div/spans
- Update README.md
- Update README.md
- BrowserSteps - Element finder filter (offpage) should also calculate top scroll offset
- Visual Selector and BrowserSteps - More accurate element detection when the page auto-scrolls on load Re #1169
- Extra validation for URLs with template markup (#1166)
- Browser Steps - adding 'please wait' text while loading
- Re #1163 psutil missing from pip requirements
- Update README.md
- Update README.md
- VisualSelector & BrowserSteps - Scraper improvements, remove duplicate code
- Bumping VisualSelector example animation
- Remove dupe xpath finder prep code
- Browsersteps 'Beta' label image path fix
- Configurable "Browser Steps" when Playwright/Chrome is configured (enter text, scroll, wait for text, click button etc) (#478)
- Update README.md - Make docker instructions easier to follow on Windows (#1158)
0.39.22.1 / 2022-11-22 18:09:25 +0100:
- 0.39.22.1
- Notification screenshot/JPEG was not being regenerated correctly (#1149)
- Re #1148 - Notification screenshot/JPEG was not being regenerated correctly
- Update README.md
- Update README.md
0.39.22 / 2022-11-20 16:29:16 +0100:
- 0.39.22
- Fix dangling HTML tag from screenshot notification
- Notification screenshot option should only be available to webdriver/playwright watches, screenshot sent as JPEG to save bandwidth, Simplify the logic around screenshot, (#1140)
- Minor test improvements
- Option to attach screenshot to notification (#1127)
- VisualFilter - check previously set filters were set before highlighting
- Add diff view option for JSON compare (comparing the fields defined on each. The order of fields, etc does not matter in this comparison.)
- Update visual text difference library, add option to ignore whitespace when viewing diff (#1137)
- Make VisualSelector show first available multiple selector, refactor to make more maintainable (#1132)
- Make link to notification debug log easier to find (#1130)
- Bump notification library (#1128)
- Re #1126 HIDE_REFERER setting had wrong default
- Test: Re-test under HIDE_REFERER condition, use strtobool so you can use 'False' (#1121)
- Stability fix related to the new watch check count (#1113)
- Use deepcopy to stop possible data corruption (#1108)
- Code- Use dict .get instead of key
- Adding a check counter to watch fetching (#1099)
- Update README.md
- HIDE_REFERER incompatible with password based login, added comment to code #996
- Update README.md
- Filters can now accept a list/multiple filters (#1064) #623
0.39.21.1 / 2022-11-02 23:48:10 +0100:
- 0.39.21.1
- Playwright extension added back to Dockerfile to resolve conditional fix Alpine (musl) based systems (#1087)
0.39.21 / 2022-11-02 15:12:33 +0100:
- 0.39.21
- Disable version check when pytest is running (#1084)
- Removing unused code (#1070)
- Docker & python - Jq conditional pip requirements.txt include (Don't install in Windows because theres no Windows library/wheel)
- Docker & python - Use pip conditional requirements to not install playwright for ARM (unsupported on ARM) (#1067)
- UI - Make fetch error more readable (#1038)
- Update README.md
- Re #1052 - Watch 'open' link should use any dynamic/template info (#1063)
- Remove accidental files
- Backups and Snapshots - Data directory now fully portable, (all paths are relative) , refactored backup zip export creation
- Re #1052 - Dynamic URLs, use variables in the URL (such as the current date, the date in a month, and other logic see https://github.com/dgtlmoon/changedetection.io/wiki/Handling-variables-in-the-watched-URL ) (#1057)
- API - system info - allow 5 minutes grace before watch is considered 'overdue'
- API - Adding basic system info/system state API (#1051)
- Build - Fix syntax in container build test (#1050)
- Building - Test container build on PR
- Testing - Use same version of playwright while running tests as in production builds (#1047)
- update path for validation in the CONTRIBUTING.md (#1046)
- History index safety check - Be sure that only valid history index lines are read (#1042)
- Option to Hide the Referer header from monitored websites. (#996)
0.39.20.4 / 2022-10-17 18:36:47 +0200:
- 0.39.20.4
- Better cross platform file handling in diff and preview (#1034)
0.39.20.3 / 2022-10-17 17:43:35 +0200:
- 0.39.20.3
- Windows - diff file handling improvements (#1031)
- Also include tests in pip build
- Update README.md
0.39.20.2 / 2022-10-12 09:53:59 +0200:
- 0.39.20.2
- Windows - JQ - Make library optional so it doesnt break Windows pip installs (#1009)
- Adding test - Test the 'execute JS before changedetection' (#1006)
0.39.20.1 / 2022-10-09 23:05:35 +0200:
- 0.39.20.1
- Code - check containers build when Dockerfile or requirements.txt changes (#1005)
- Adding `make` to Dockerfile build as required by jq for ARM devices
- Dont use default Requests `user-agent` and `accept` headers in playwright+selenium requests, breaks sites such as united.com. (#1004)
0.39.20 / 2022-10-09 16:13:32 +0200:
- 0.39.20
- Adds support for jq JSON path querying engine (#1001)
- Adding link to BrightData Proxy info (#1003)
- Remove quotationspage default watch
- Notification library: Bump apprise to 1.1.0 (signal, opsgenie, pagerduty, bark and mailto fixes, adds support for BulkSMS and SMSEagle) (#1002)
- Selenium fetcher - screenshot should be taken after 'wait' time, not before #873
- Upgrade Playwright to 1.26
- Render Extract Configurable Delay Seconds should also apply after executing any JS #958
- Re #958 - remove change screensize, should be in 1280x720 default, was causing "Unable to retrieve content because the page is navigating and changing the content." on some sites
- Tidy up proxies.json logic, adding tests (#955)
- Update README.md - Include BrightData suggestion
- Improve Proxy minimum time debug output
- Default proxy settings fixes
- Use proxies.json instead of proxies.txt - see wiki Proxies section (#945)
- Upgrade Playwright to 1.25
- Update README.md
0.39.19.1 / 2022-09-11 09:23:43 +0200:
- 0.39.19.1
- Notification - code tidyup
- Watch list & notification - Adding extra list batch operations for Mute, Unmute, Reset-to-default
- Notification - Reset defaults button should be on edit page only
- Notification watch settings - add button to make watch use defaults (empties the settings)
- Notification system update - set watch to use defaults if it is the same as the default
- Fix typo (#924)
0.39.19 / 2022-09-08 20:16:35 +0200:
- 0.39.19
- Update README.md
- Tweaks to python PIP readme
- Use play and pause separate icons (#919)
- Further notification settings refinement (#910)
- Reliability improvement - Check watch UUID exists when reporting missing path (#915)
- repair pip readme
- Test improvement - Visual selector data loads as JSON (#895)
- Cleaner separation of watch/global notification settings (#894)
- Code maintenance - Removing old function (#875)
- Show screenshot age in [preview]
- Update README.md
- Update README.md
- Update README.md
- Update bug_report.md
- Update bug_report.md
- Update README.md
0.39.18 / 2022-08-19 11:37:26 +0200:
- 0.39.18
- More data saving pre-checks (#863)
- Update screenshot
- Checkbox operations - reorder buttons for safety
- UI feature - Basic checkbox/group operations (#861)
- Bug fix - automatically queued watch checks weren't always being processed sequentially
- Playwright - Support proxy auth mechanisms (#859)
- Update README.md
- Update README.md
- Skip processing when watch was deleted
- Playwright fetcher didn't report low level HTTP errors correctly (like Connection Refused) (#852)
- Be sure visual-selector data is set when xPath/CSS filter is not yet found (#851)
- Visual selector data not being saved by refactor
- 'Save chrome screenshot' checkbox never used, removing, we always save the screenshot. (#844)
- Crash fix: Data store sub-directories werent always being created when needed (#842)
- Make the table header easier to understand when sorting (#840)
- Column sorting (#838)
- Update README.md
- Revert "don't process paused entries after queue", so we can still manually recheck a paused watch
- Remove 'last-changed' from url-watches.json and always calculate from history index (#835)
- Massive improvements to error handling - show separate output for non HTTP 200 status replies
- Execute JS should happen after waiting seconds
- Upgrade playwright python driver (#834)
- Crash protection - handle the case where watch was deleted while being checked (#833)
- Don't process a watch if it was paused after being queued (#825)
- Notification Library Update (fixes for Home Assistant) - update requirements.txt (#818)
- Remove social links for now
0.39.17.2 / 2022-08-05 15:53:09 +0200:
- 0.39.17.2
- Test fix - Remove debug from test
- Security update - Password could be unset from settings form unexpectedly (#808)
- Disable SIGCHLD Handler for now - keeping SIGTERM for DB writes
- Handle SIGTERM for cleaner shutdowns (#737)
- Remove [save & preview] button, the preview is not updated live so it can lead to confusion (#801)
- Feature - priority queue - edited and added watches should get checked before automatically queued watches (#799)
- [preview current] cleanup code and add test
- Feature - mute notifications (#791)
- Test improvement - remove unnecessary step
0.39.17.1 / 2022-07-29 10:13:29 +0200:
- 0.39.17.1
- Bug fix: Filter failure detection notification was interfering with change-detection results, added test case (#786)
- README.md - new Discord invite link
0.39.17 / 2022-07-28 13:07:51 +0200:
- 0.39.17
- Add https://discord.com/api notification hook to the automatic truncation due to Discords 2000 char limit
- UI Feature - Add watch in "paused" state, saving then unpauses (#779)
- Enhancement - support xPath text() function filter, for example "//title/text()" in RSS feeds (#778)
- Bug fix - Filter "Only trigger when new lines appear" should check all history, not only the first item (#777)
- Visual Selector direct element finder fix
- Update README.md
- Update README.md links
- Filter failure notification send default enable now controlled by setting Env var
- Refactor of extract text filter - Regex, support Regex (groups) and all python regex flags via /something/aiLmsux (#773)
- Update README.md - adding LinkedIn link
- Update README.md - Adding Discord and YouTube links
- Bug fix for alerting when xPath based filters are no longer present (#772)
- Send notification when CSS/xPath filter is missing after more than 6 (configurable) attempts (#771)
- mailto plaintext handling fix for 'plaintext' apprise integration
- Minor code cleanups
- Notifications - email - Correctly send plaintext notification email with plaintext header (#767)
- Form text tweak - Regex clarification (#766)
- Update README.md
- Handle simple obfuscations - HomeDepot.com style price obfuscation (#764)
- Fixing docker-compose.yml PLAYWRIGHT_DRIVER_URL example URL
- Notifications fix - Discord - added discord webhook base url to truncation rules (#753)
- Update Playwright URI Env example with stealth setting and CORS workaround (more reliable fetching)
- remove extra file
- removing package-lock.json - not required to be in git
- Share-icon cleanups
- Test improvement: Extract text should return all matches
- Bug fix: RSS Feed should also announce utf-8 charset
- Regex extract filter: Return all regex results instead of first match (#730)
- Ability to specify JS before running change-detection (#744)
- Playwright - log console errors to output
- UI Improvement - Clarifying "Visual Filter" tool as "Visual Selector Filter"
- Use environment variables to override new watch settings defaults (user-agent, timeout, workers) (#742)
- Update docker-compose.yml - Remove duplicate environment variables from playwright-chrome sample config in docker-compose.yml (#738)
0.39.16 / 2022-07-05 16:14:57 +0200:
- 0.39.16
- Fix notification apprise application name to changedetection.io #731
- Update README.md
- [new filter] Filter option - Trigger only when NEW content (lines) are detected ( compared to earlier text snapshots ) (#685)
- Playwright - Use HTTP Request Headers override (Cookie, etc)
- lang: prefer 'clear (snap) history' to 'scrub' (#721)
- Minor diff page improvements - list should be sorted 'newest first' and no need to include the current version to compare against (#716)
- bug fix: `last_changed` was being set on the first fetch, should only be set on the change after the first fetch #705
- Update README.md
- Improve docker-compose.yml browserless docker container example, add env var for STEALTH and BLOCK_ADS (#701)
- New filter - Block change-detection if text matches - for example, block change-detection while the text "out of stock" is on the page, know when the text is no longer on the page (#698)
- Docker containers - :latest is now stable release, :dev is now master/nightly
- Trigger filters improvement- it's possible some changes weren't getting detected because the previous checksum only recorded when an event occurred (#697)
- Some changes werent getting triggered because the previous checksum only recorded when an event occured
- Notifications regression bug in 0.39.15 - only sent the first notification URL
- Playwright screenshots - no need for high-res "bug workaround" screenshot, use lower quality/faster configurable image quality env var
- Adding extra check when updating DB on ReplyWithContentButNoText
- Notifications log - log what was sent after applying all cleanups
- Re #555 - tgram:// notifications - strip added HTML tag which is not supported by Telegram
- Give more helpful error message when a page doesnt load
- Tweaks to playwright fetch code - better timeout handling
- Re #580 - New functionality - Random "jitter" delay to requests (#681)
0.39.15 / 2022-06-12 14:05:34 +0200:
- 0.39.15
- Watch overview list - adding spinner to make it easier to see whats currently being 'Checked'
- Preview section - add helpful check
- Send test notification - improved handling of errors
- Notification log - also log normal requests and make the log easier to find
- Update bug_report.md
- Use correct RSS CDATA handling (#662)
- Improve logging (#671)
- New [scrub] button when editing a watch - scrub single watch history (#672)
- Diff + Preview - Hide date selector widget when viewing screenshots as its not yet possible to compare screenshots (but will be soon!)
- Diff + Preview - Fixing screenshot behaviour after preference change
- Screenshot handling on the diff/preview section refactor (#630)
- Shared watches - include "Extract text" filter
- Improve error message when filter not found in page result (#666)
- "Extract text" filter - improve placeholder example
- Visual selector - 'clear selection' button should clear the filter also
- New feature - "Extract text" filter ability (#624)
- Fixing RSS feed HTML content formatting (#662)
- Update notification library - Improving telegram support
- 'Mark all viewed' button was missing in this version, added test also. (#652)
- Content fetcher - Handle when a page doesnt load properly
- Playwright - Correctly close browser context/sessions on exceptions
- Move history data to a textfile, improves memory handling (#638)
- Update feature_request.md
- Remove UK Covid news
- Visual Selector fix: Firefox compatibility - Visual Selector (#646)
- Remove group tag arbitrary length limit (#645)
- Distill.io import bug fix when no tags assigned to a watch (#557)
- Ignore whitespace on by default
- Visual Selector - clear events when changing tabs
- Minor code cleanup
- Re #616 - content trigger - adding extra test (#620)
- README.md update Visual Selector tool - tidy up screenshots, improve text
- Playwright - ByPass CSP for more reliable JS scraping, disable accept downloads
- VisualSelector - Better handling of filter targets that are no longer available in the HTML
- Update bug_report.md
- 0.39.14.1
0.39.14.1 / 2022-05-24 00:21:30 +0200:
- 0.39.14.1
- pip build fix - include API module
- Visual Selector - be more resilient when sites interfere with the xPath scraping
- Adding new Visual Selector for choosing the area of the webpage to monitor - playwright/browserless only (#566)
0.39.14 / 2022-05-23 14:40:26 +0200:
- 0.39.14
- Fix encoding errors with XPath filters from UTF-8 responses (#619)
- API Interface (#617)
- Add note that changedetection is not performed on the screenshot just yet (WIP https://github.com/dgtlmoon/changedetection.io/pull/419 )
- Fixing edit template HTML
- Proxy settings on watch should have a "[ ] default" option (#610)
- Input field tidyup (#611)
- Update wiki link for 'More info' about sharing a watch and its configuration
- Option to control if pages with no renderable content are a change (example: JS webapps that dont render any text sometimes) (#608)
- Playwright - raise EmptyReply on empty reply, no need to process further
- Re #214 - configurable wait extra seconds for webdriver requests before extracting text (#606)
- Fix PLAYWRIGHT_DRIVER_URL default value (cf. #587) (#599)
- Update PIP readme.md
0.39.13.1 / 2022-05-10 22:45:08 +0200:
- Fixing Pip install problem - Update MANIFEST to include model/ subdir, improving imports (#593)
0.39.13 / 2022-05-10 17:24:38 +0200:
- 0.39.13
- Distill.io JSON export file importer (#592)
- Ability to specify a list of proxies to choose from, always using the first one by default, See wiki (#591)
- Improving Playwright docs (#588)
- Playwright - code fix
- Playwright fetcher - more reliable by just waiting arbitrary seconds after the last network IO
- Make proxy configuration more consistent - see https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration (#585)
- Playwright fetcher - use the correct default User-Agent
- Toggle visibility of extra requests options/settings when not in use (#584)
- Add new fetch method: Playwright Chromium (Selenium/WebDriver alternative) (#489)
- Simplify scrub operation (simply cleans all) (#575)
- Bugfix - dont update record when deleted during check
- Improving support info in README.md
- Handle deletions better (#570)
- Data storage bug fix #569
- Upgrade notifications library - fixing marketup in email subject
- Ability to 'Share' a watch by a generated link, this will include all filters and triggers - see Wiki (#563)
- Upgrade notifications library Re #555 - fixing telegram HTML markup in notification title
- Unify MINIMUM_SECONDS_RECHECK_TIME env var variable to 60 seconds
- Seconds/minutes/hours/days between checks form field upgrade from 'minutes' only (#512)
- Form styling improvements
- Form field handling improvements - fixing field list handler for empty lines
- Fix "Add email" button in main global notification settings
- Test notification button fixed in main settings (#556)
- tgram:// be sure total notification size is always under their 4096 size limit
- Shows which items are already in the queue, disables adding to the queue if already in the recheck queue (#552)
- Notifications - Signal API support, Ntfy support, hotmail, matrix, Gotify API fixes
- Discord:// notification size limit - also includes the notification title
- Fix spelling errors
- Update README.md
- Update README.md
- Import speed improvements, and adding an import URL batch size of 5,000 to stop accidental CPU overload (#549)
- Ability to set the default fetch mode via the DEFAULT_FETCH_BACKEND variable
- Refactor form handling (#548)
- Adding support for change detection of HTML source-code via "source:https://website.com" prefix (#540)
- Re-label the quick-add widget placeholder 'tag' to 'watch group'
- HTTP Fetcher code improvements
- Adding RSS metadata auto-discovery
- Upgrade WTforms form handler to v3 (#523)
0.39.12 / 2022-04-09 14:16:30 +0200:
- 0.39.12
- Miscellaneous settings form visual improvements (#535)
- Option to render links as [Some Text ](/link), adds the ability to change-detect on hyperlink changes
- Specify our Discord avatar_url as default avatar_url
- Minor git updates
- Fix screenshot tab name
- Discord:// notifications should be cut to 2000 chars or Discord will not process them. (#531 + #323)
- Make long reports in the notification error log easier to read
- [Add email] button in notification settings with a prefix set from NOTIFICATION_MAIL_BUTTON_PREFIX env variable when defined. (#528)
- Update README.md
- Skip processing a watch into the RSS feed if there's not enough data to examine (fixes Internal Server Error when accessing the RSS feed) (#521)
- Introduce an AJAX button for sending test notifications instead of the checkbox (#519)
- Make text tab always available at default
- When fetching a snapshot via Chrome, make the most recent screenshot available on the Diff and Preview pages (#516)
- Remove 'unviewed' status in watch table when Diff link clicked (#514)
- RSS feed CDATA should contain difference output
- Fix - {diff} and {diff_full} notifications tokens were not always including the full output
- Update README.md
- Update README.md
- Minor UI cleanups (mobile tabs, font sizing) (#503)
- Fix typo in Filters & Triggers settings. (#495)
- Add autofocus attribute to password login field (#496)
0.39.11 / 2022-03-23 09:42:51 +0100:
- 0.39.11
- Microsoft Windows installation fixes (#492)
- GitHub tweak - container tags should be CSV list (Fix ghcr.io not building)
- GitHub tweak - build containers also on push to master
- Allow changedetector to ignore status codes as a per-site setting (#479) (#485)
- Security update - Use CSRF token protection for forms, make "remove password" use HTTP Post (#484)
- Security update - Protect against file:/// type access by webdriver/chrome. (#483)
- Only build container on GitHub releases, not tests
- Also change container names to help stop some DNS issues
- Detect byte-encoding when the server mishandles the content-type header reply (#472)
- Improving form/edit example markup
- JSON diff/preview should use utf-8 encoding where possible (#465)
- Fix typo in settings form
- Add python venv to .gitignore
0.39.10 / 2022-03-12 17:28:30 +0100:
- 0.39.10
- Add filter to remove elements by CSS rule from HTML before change detection is run (#445)
- Minor updates to filters form text
- Re #448 - Dont use changedetection.io as the container name and hostname, fix problems fetching from the real changedetection.io webserver :)
- Testing - Refactor HTTP Request Type test (#453)
- Make table header font size the same as content
- Adjust background colours
- Handle the case where the visitor is already logged-in and tries to login again (#447)
- Make the Request Override settings easier to understand
- Minor tweak to notification token table
- Style tweak to watch form
- Login form style fixes
- Upgrade apprise notification engine to 0.9.7 (important telegram fixes)
- Remove pytest from production release pip requirements
- Style fix for background image relative to X-Forwarded-Prefix when running via reverse proxy subdirectory
- Re-arranging primary links so the important ones are easier to find on mobile
- Set authentication cookie path relative to X-Forwarded-Prefix when running via reverse proxy subdirectory (#446)
- Upgrade inscriptis HTML converter to version 2.2~ (#434)
- Better text/plain detection and refactor tests (#443)
- Tweak support tabs and text (#440)
- Include link to changedetection.io hosted option (#439)
- Improved CPU usage around the loop responsible for what sites needs to be checked
- Update README.md with hosting options
0.39.9 / 2022-02-24 17:02:50 +0100:
- 0.39.9
- Minor reliability upgrade for large datasets - retry deepcopy (#436)
- "Recheck" button should work when entry is in paused state
- Better file exception handling on saving index JSON
- Fix small issue in highlight trigger/ignore preview page with setting the background colours, add test
- Ensure string matching on the ignore filter is always case-INsensitive
- Ability to visualise trigger and filter rules against the current snapshot on the preview page
- Update README.md
- XPath RegularExpression support
- better checking of JSON type
- Make system level errors from the HTTP fetchers easier to find (#421)
- Bump node-sass from 6.0.1 to 7.0.0 in /changedetectionio/static/styles (#415)
- Dont allow redirect on login, it's safer and more reliable this way (#414)
- When using Env. FETCH_WORKERS or WEBDRIVER_DELAY_BEFORE_CONTENT_READY , it should be type int
0.39.8 / 2022-02-08 18:56:10 +0100:
- 0.39.8
- Number of fetching workers can be overriden by Env "FETCH_WORKERS" (#413)
- Adding Env var "WEBDRIVER_DELAY_BEFORE_CONTENT_READY" to wait n seconds before extracting the text from the browser
- Language fix "watches are rechecking." it actually puts them into an internal queue "watches are QUEUED for rechecking"
- Use flask url_for() for webdriver chrome icon instead of relative path
- Fix typo in the startup create-directory command suggestion (#405)
- Introduce -h option to allow listening not on 0.0.0.0. (#406)
- Refactor tests for notification error log handler (#404)
- Notification error log handler (#403)
- Add notification note - tgram:// bots cant send messages to other bots, so you should specify chat ID of non-bot user.
- fixed the reference to wiki for rpi section (#402)
- /preview format doesnt need <pre> - fixing too many returnlines in content on diff/preview page
- Update README.md
- Update README - Fix docker section
- Update README - Tidy up sections
- Offer instance on Lemonade Tidy README
- Ability to use a generated salted password in deployments as env var SALTED_PASS (#397)
- #323 Adding note about discord:// 2000 char limit (#392)
- plaintext mime type fix - Don't attempt to extract HTML content from plaintext, this will remove lines and break changedetection (#391)
- .add_watch() can accept empty tag Use https://changedetection.io/CHANGELOG.txt as a nice default page to watch
- Add option for tags on import (#377)
- Update CONTRIBUTING.md
- Update README.md
- Fix bug where diff and diff_full were switched in notification templates. (#380)
- Closes #378
0.39.7 / 2022-01-15 23:21:06 +0100:
- 0.39.7
- Scrub watch snapshot fixes
- Simple HTTP auth (#372)
- Adding note about JS pages
- Notification settings defaults and validation (#361)
- Filters settings helper text tidy-up
- Add test for low-level network error text handling
- Add API endpoint for current snapshot (#359)
- Clarify notice/messages around changing ignore text
0.39.6 / 2022-01-05 19:13:42 +0100:
- 0.39.6
- Heroku tweaks (backup download) (#356)
- XPath support (#355)
- Better handling of EmptyReply exception, always bump 'last_checked' in the case of an error (#354)
- Adding note in comments for working arm64 chrome with rPi-4 (#336)
- fix typo in README.md (#350)
- Re #348 - Add test for backup, use proper datastore path
- Update README.md
- Be sure that documents returned with a application/json header are not parsed with inscriptis (#337)
- Re #340 - snapshot should not be modified by ignore text (#344)
- Re #133 Option for ignoring whitespacing (#345)
- Re #342 notification encoding (#343)
- Update README.md
- Adding global ignore text (#339)
- Adding new proxyType to selenium mappings
- Use selenium 4.1.0
- Bumping selenium version re https://github.com/dgtlmoon/changedetection.io/pull/331#issuecomment-1003323594
- Add socksVersion mapping (#331)
- Fix broken RSS link fields
- RSS Link links you back to the difference UI/JS page, RSS Description is the page you're watching, and RSS Title is the page you're watching
- Unify Filters and Triggers tabs into a single tab
- Move 'request type' field to the new 'Requests' tab
- Aligning call signatures #325
- Extend Request Parameters to add Body & Method (#325)
- Update README.md
- Create CONTRIBUTING.md
- Update README.md
- Re #267 - Pass settings for the proxy setup for webdriver (#326)
- Update README.md
- Update README.md
- Update README.md
0.39.5 / 2021-12-27 23:46:29 +0100:
- 0.39.5
- Update feature_request.md
- Update issue templates
- Update bug_report.md
- Update issue templates
- W3C HTML validation issue around RSS icon
- Closes #323 adds link to wiki
- Update README.md
- Update README.md
- improve theming docs
- Update README.md
- Update README.md
- Closes #315 - Include library apprise Notify_mqtt
- Re #80, sets SECLEVEL=1 in openssl.conf to allow monitoring sites with weak/old cipher suites (#312)
- Go back to docker hub
- RSS allow access via token (#310)
- Adding deploy to Heroku button
- Adding heroku app.json app
- Tweak runtime Heroku version
- Tweaking heroku Procfile
- Adjust buildpacks on Heroku
- Adding heroku python3 runtime config
- Try simpler heroku recipe
- -C option to create a datadir if it doesnt exist
- Re #308 - Adding test and including settings in clone operation (#309)
- fixing too small font in diff UI (#260)
- Update README.md
- Send diff in notifications (#296)
- Fix scrub form theme
- Scrub dates: Fix date regex limit handler parsing
- Wait 60 seconds or until stop_thread is set
- Check that a notification URL is set when sending the test notification (#300)
- Flask 2 (#299)
- Re #269 - Show current/correct BASE_URL information (#271)
- Re #269 - Fix env var comment name
- Enable Markdown and HTML notifications. (#288)
0.39.4 / 2021-12-02 22:54:38 +0100:
- 0.39.4 release
- Re #286 - Solving lost data/corrupted data - Tweak timing and try to write to a temp file first (#292)
- Fix element paths when using reverse proxy subfolder (#272)
0.39.3 / 2021-10-28 11:32:33 +0200:
- 0.39.3 release
- Re #264 - fixing clone watch operation
- Re #265 - extended jsonpath support (#266)
- Re #265 - wasnt catching the jsonpath exception due to invalid jsonpath expressions properly
- Re #257 - Handle bool val of json path better (#263)
- Re #249 - Add EXPOSE 5000 to Dockerfile
- Provide better combination of chardet and urllib3
- Prefer GHCR.io over DockerHub (#245)
- Limit branches/tags of container build
- Re #213 - Adding screensize examples to selenium container
- Be more specific about tagged release builds
- Fix :latest release worflow syntax check
- Form helper - explain where the webdriver setting comes from
- Rename workflow name
- Just 'published' and 'edited' package release is enough (remove 'created')
0.39.2 / 2021-10-06 08:49:33 +0200:
- Fixing workflow tag syntax issues
- fix broken workflow syntax
- add step for metadata debug, see if it runs by checking workflow tag name
- Container build/push doesnt need to be so specific
- Oops on/release was in the wrong block
- release also on edited, published
- Run workflow on release
- Use a better switch mechanism for build type
- version 0.39.2
- Configurable BASE_URL (#228)
- Split python pip builder to its own release based workflow
- remove accidental syntax add
- Re #242 - app was treating notification field defaults as the field value (#244)
- attempt to re-enable docker layer cache
- Forgot GHCR tag with version
- Limit container build to releases and master
- Fix GHCR login
- Use the same workflow for tag and release
- Drop redundant build workflow
- try :latest and :tag in same workflow run
- Separate workflows
- Docker image build issues (#243)
- Re #239 - Individual GUID for watch+changeevent (#241)
- Update README.md
- Re #232 - Use a copy of the datastore incase it changes while we iterate through it (#234)
- Setting for Extract <title> as title option on individual watches (#229)
- GitHub repo build platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7
- GitHub container repo (#227)
- Remove extra build step
- push github container master also
- Tidy up workflow names
- Attempt to setup GitHub Container Registry
0.39.1 / 2021-09-17 18:40:16 +0200:
- v0.39.1
- Re #185 - [feature] Custom notifications templates per watch (#226)
- Bump tar from 6.1.6 to 6.1.9 in /changedetectionio/static/styles (#209)
- Re #225 - Notifications refactor token replacement fix possible missing value for watch_title
- Re #42 - Notifications refactor token replacement fix possible missing value for watch_title
- Bump tar from 6.1.6 to 6.1.9 in /changedetectionio/static/styles (#209)
- Adds 'Create Copy' feature to clone a watch (#184)
- adding specific test (#205)
- New notification tokens - watch_uuid, watch_title, watch_tag, (#201)
- Re #203 - validate tokens (#204)
- No point hiding the notifications customisation area because it's now in its own tab
- Update README.md
- Test - prove that notifications are not being sent when content does not change
- remove quotes from env vars
- Re https://github.com/dgtlmoon/changedetection.io/discussions/189 A note to not use quotes in env parts
- WebDriver fetcher - settings - when an alternative one is configured, show it in the label
- Update README.md
0.39 / 2021-08-16 15:24:37 +0200:
- Installation via pip (#186)
- Update README.md
- Trigger text/wait (#187)
- Reword group tag - more obvious name
- Fix img alt/title accesibility for pause icon
- Let the fetcher throw an exception which will be caught and handed to the operator anyway
- Example placeholder was pushed out
- Move fetcher tab back to general - save space on mobile
- WebDriver test fetch should use environment var too
- Add fetch option to each watch
- Chrome/Webdriver support for Javascript websites (#114)
- Fixing tar npm security issue npm install "tar@>=6.1.2"
0.38.2 / 2021-08-07 14:18:28 +0200:
- tag 0.38.2
- Re #172 - be sure that we are non-greedy matching the first : when splitting the headers so we dont break "Cookie" header (#175)
- Update heroku.yml
- Re #156 - PORT should always be an Integer
- Re #159 - Adding env var example to docker-config.yml
- Add Heroku Deployment Support (#159)
- Re #154 - Handle missing JSON better
- high res
- higher res screenshot
- Update screenshot
- Assert that html_tools.JSONNotFound is correctly raised
- Re #154 Ldjson extract parse (#158)
- Responsive fix for input field on mobile
- Re #148 - Always set something for {base_url} so we dont send possibly an empty body/title notification which could break some services.
- Add medium-size-desktop class to notification custom title
- Notification default: Make sure to use atleast some text here, a blank notification body could be problematic for some services
- Re #150 - stop using 'size' across all elements and rely on CSS for a better mobile experience (stops fields from pushing out)
- fix: setting overflow in mobile view (#150)
- Re #121, #123 - Show the current base_url value
- Re #149 - allow empty timestamp limit for scrub operation
- Dont show "new version available" message when password is enabled and user is logged out
- test fix - dont trigger notifications in header test
- Strengthen the notification tests
- Re #137 - Adding test to confirm that headers are not repeated
- Add debug output to notify loop
- Add note to field
- Cleanup test helper data before and after running
- Improve debug info
0.38.1 / 2021-07-20 17:57:27 +1000:
- 0.38.1 tag
- Re #143 - Remove old notification test code, fix form handler (#145)
- Update README.md
- Re #135 - refactor the quick add widget (#136)
- Partially revert 47e5a7cf0990bc958061ce57de8ae88f3fbd39aa (#138)
0.38 / 2021-07-16 16:24:01 +1000:
- use a github action for getting the tag
- rename tag build runner
- fix tag
- build and push tag
- Re #76 - Fixing links
- Cleaner is to let flexbox overflow and scroll on the X where needed
- #76 app path prefix when behind proxy_pass (#91)
- Settings: Remove password link fix
- Make sure right menu is still visible when URL is long
- 0.38 release
- Re #132 - Make a list of the JSONpath results instead of using only the first value
- Customisable notifications (#123)
- Re #117 - dont re-encode single value types, looks better in the diff
- Usability tweak - [edit] on diff page should go back to diff page
- Update README.md
- Adding text about JSON API Monitoring
- Re #117 Jsonpath based JSON change detection filter (#125)
- Update README.md
- Update README.md
- Use right sticky for version
- Re #118 - Make 'show current version' more obvious
- Diff page - use the document title in <title> for better bookmarking
- node-sass 6.0.1 works with node-sass watch way better
- Updating inscriptis/text/html library to 1.2
- Update readme with the branch link for javascript support
- Updating trim-newlines packages
0.37 / 2021-07-02 20:19:26 +1000:
- 0.37 release
- #110 global recheck time (#113)
- Re #106 - handling empty title with gettr cleanup (#107)
- Update README.md
- Auto extract html title as title (#102)
- Bug fix - Check 'minutes_between_check' is set
- tweak <pre> text wrapping when displaying diff
- CSS Filter - Smarter is to just extract the HTML blob and continue with inscriptus, so we have almost the same output as not using the filter
- CSS Filter - restore nicer linefeeds
- @todo Comment - BS4's element.get_text() seems to lose the indentation format no-matter what
- CSS Filter - strip text of whitespacing, preserve new lines where applicable, remove extra newlines
- Include statistics for number of watches
- Set edit-form for settings+watch to always be wide
0.36 / 2021-06-22 10:33:27 +1000:
- Update README.md
- 0.36
- Re #42 - dont use blank titles
- Re #100 - Fixing storage of minutes_between_check and adding automated test for field storage
0.35 / 2021-06-22 00:28:41 +1000:
- 0.35
- Time between rechecks is always stored as minutes
- Ability to reset app password by placing a file called removepassword.lock into your data directory and restarting the instance
- Adding tests for password control handling
- Remove unused field (removepassword is actually a link)
0.34 / 2021-06-21 22:13:14 +1000:
- 0.34
- Be sure not to use blank passwords as the password
- Re #42 - custom title (#98)
- Re #92 - Re-use existing [preview] function for viewing current (#97)
0.33 / 2021-06-21 20:07:04 +1000:
- 0.33
- #81 - Regex support (#90)
- Use wtforms handler (#96)
- Re #95 - Include PUID/PGID example
- re-enable tests
- On settings submit, display saved message
- Use flasks' built in 'flash' method instead of a custom message/notices (#94)
- Adding rPi support info
- Re #92 Adding link to CSS selector help in wiki
- Re #93 - tweak build packages
- Re #93, #79 - docker image multistage build lost the packages required for rPi etc
- Strip surrounding whitespace from elements (#89)
- Queue an entry for immediate recheck after [edit]
- Adding helper method to remove text files that are not in the index
- Fix typo
- Re #88 - placeholder text on CSS rule
- Re #86 - fix typo
0.32 / 2021-06-15 09:50:24 +1000:
- 0.32 release
- Sassify the diff page
- "Sassify" the theme, easier to manage
- Mobile fixes (#87)
- Re #86 - Refactor scrub date limit code
- Tweak comments
- Re #77 - Repair and refactor time threshold check code
- Modifies Dockerfile to use multistage builds (#79)
- Bumping to 0.31
0.31 / 2021-06-03 10:51:18 +1000:
- Re #75 - Adding test to confirm watched URL appears in RSS feed
- CSS selector filter (#73)
- Fixing var name
- Include release metadata during github build
- Update README.md
- Re #40 Ability to set individual timers (#72)
- Update README.md
- Improvements for backup (#70)
- Update README.md
- Disable image layer cache service
- Re-enable ARM v6/v7 builds
- Install requirements, remove rust and dev packages that are no longer needed, hopefully for a smaller docker layer size
- Remove rust build comments
- Arm build fixes (#68)
- Re #65 - Append BASE_URL env var to the notification if it is set (#66)
- Update README.md
- Adding BTC support instructions
- Switch to just amd64 for now due to apprise not building on ARM
- Fixing syntax
- Re #49 Re #60 - Adding more information about proxy setup to README.md
- Add socks proxy support (#60)
- Created docker-compose file (#55)
- Re #58 - reduce to 1 minute (a small rewrite is required to change the backend to store in 'seconds' instead of minutes)
- 56 - Fix notification test
- Update README.md
- Update README.md
- Adding rust compiler :(
- trying without libssl and only libffi
- Adding extra libs required for build
- Cleanup docs
- Tweak workflow (tests)
0.30 / 2021-05-08 11:33:46 +1000:
- Security update
- Apprise notifications (#43)
- Fixing security update
- Also detect pytest in the environ (for local debug)
- Prepend 'test-' when runnning under pytest to guid
- - Relabel login button - misc test cleanup
- Re #46 - Add note to README.md about Javascript support
- Bumping version
- Re #45 - Set datastore path in app.config
- Re #44 - Broke the menu by accident, adding tests and fixing.
- bump to 0.29
0.29 / 2021-04-30 16:54:07 +1000:
- docker-compose for dev not needed (use venv etc)
- Password protection / login support (#34)
- Update FUNDING.yml
- Skip using tag limit on pause when no tag is being viewed
- Pause/Unpause should respect limit tag on redirect
- Validate duplicate URLs
- Chdir is not needed because we add the file from the full path, but make it 'relative' in the Zip
- Fix backup generation on relative paths (like when run outside docker, under venv, etc)
- Adding noopener per CodeQL, stop pages from knowing the referer etc
- Create codeql-analysis.yml
- yarl not needed, lock requests version
- dev packages needed, drop apt cache
- See if we get a clean buildx without dev packages
- Tweaking build size thanks to https://github.com/hadolint/hadolint
- Adding dockerignore
- Re #18 - Show "preview" of the page when only one revision exists (#33)
- Update README.md
- Update README.md
- Also check that the watch is not paused before putting it into the checking queuex
- revert c60be562718d23972d7d43821bb6b87f2add3256
- remove extra packages (#32)
0.28 / 2021-04-01 14:43:46 +0200:
- Bumping version to 0.28
- Docker push amd64 rpi etc (#28)
- Open [diff] links into their own window
- Fix auto jump on viewing the diff
- Re #30 - Delete history watch snapshots (#31)
- Slow down the DB write interval and catch the case that it changed during write
- Immediately 'jump' to the change
- Tweak to hover pause icon
- Stop runtime error on dict changing during write/init at start (#27)
- Re #22 - ability to pause
- Re #23 - always check value of interval time, not just on start
- Update README.md
- Use absolute image links so the screenshots work from docker hub
- Update README.md
- Updating screenshot
- Reuse the GUID if we have one
0.27 / 2021-03-01 15:50:25 +0100:
- Dont show 'empty' tag, it will be in the [ALL] list
- Adding RSS feed icon
- Generic object sync should use private method
- Add missing urllib3
- Add missing pytz
- Check for new version
- Fix import form flow logic
- Code tidy/lint
- Tidy up thread logic and version check
- Add missing dep
- Remove todos
- Add icon for RSS, RSS should show only unviewed entries
- Issue #7 - RSS feeds
- Always override tag version (load from disk in future, so we can add it at build time)
- next dev is 0.27
- Tweak to tests
- Move logic
- Remove erroneous extra liveserver setup
- When new ignore text is specified, reprocess the checksum
- Adding filter and log output to pytest
- Fix edit action link
- Minor lint cleanup
- Clean up after test case
- Remove liveserver, doesnt belong here
- Fix syntax, Triggers the workflow on push or pull request events
- Activate workflow on all branches
- Issue #14 - Tweaks to edit, create ignore text, tests for ignore text, integrate ignore text
- Validation of added headers, should contain key/val (2 parts)
- Issue #12 include version for easy reference.
- Bring dev environment inline
- Tidying up requirements.txt
0.26 / 2021-02-24 09:56:29 +0100:
- Handle the case of someone supplying a bad link
- Adding jump to next change diff widget
- Moving nice screenshot to above the fold :)
- Adding docker hub badge for tag information
0.25 / 2021-02-22 08:53:04 +0100:
- Bumping schema tag to 0.25
- Issue #5 - Remove arbitrary '600' minutes limit
- Add test delay for github action test
- Add wait for threads in test
- Extending tests to cover resetting the diff/unviewed status correctly
- Tidy up return logic
- Code tidy
- Fix docker app files paths
- Tweaking Dockerfile for new eventlet wrapper
- Create LICENSE
- Adding docker pulls counter badge
- Use master branch for badge
- Removing unused import
- Fixing a few more easy lint wins
- Linting fixups
- Update README.md
- Add badge under pytest branch
- Create python-app.yml
- Create the test datastore
- Minor cleanup
- Just use the current/previous md5
- Finalse pytest methods
- Port should be an integer
- Tweaking client
- remove unused imports
- Use session/client fixture
- Addingmissing files
- hack of pytest implementation - doesnt work yet
- Tidy up a few broken datastore paths
- WIP, separate out the Flask from everything else, get pytest working
- Make records in the overview that have a difference that have not been viewed in the [diff] tab bold
0.24 / 2021-02-05 18:46:00 +0100:
- Adding 0.24 tag
- Avoid accidently using Python's objects that are copied - but land as a 'soft reference', need to use a better dict struct in the future #6
- Minor fix to 'last changed' field, simplify template and logic
- Remove debug print
0.23 / 2021-02-04 12:38:48 +0100:
- Use a thread locker and cleaner separation of concerns between main thread and site status fetch
0.22 / 2021-02-03 22:28:37 +0100:
- Adding tag to json
- Adding SEND_FILE_MAX_AGE_DEFAULT to ensure backups etc dont get old
- Minor fix - load extra stylesheet only once
- Minor tweaks for development setup
- Provide named containers and remove all existing
- Adding new [Scrub All Version History] button under [settings] (But keep your URL list)
- Flag for immediate sync of index after adding new watch
- Sometimes it seems .update wasnt thread safe and isnt used here, just add a clean new dict member
- Adding ARG to Dockerfile
- Include the triggered build SHA as part of the backup info, when built in docker hub.
- Add cache busting var to style sheets
- Slightly more bulletproof instructions
- Updating screenshot
- Push newly created watches directly into the update check Queue.
- Adding checkall
- Easily download a full backup
- Show the date/time of the current/most up to date version
- Use a pool of thread workers, better for huge lists of watchers
- Code cleanup edit submit handler can be the same function
- Add update howto
- Refactor slightly confusing difference build function
- Version comparison had the wrong order
- https://github.com/psf/requests/issues/4525 - brotli compression is not yet supported in requests, be sure that users cant accidently use this content type encoding in the headers
0.21 / 2021-02-01 21:56:18 +0100:
- Include the current URL in the page when viewing the version diff
- Include a selfcheck/diagnosis routine
- On manual recheck request, redirect to same tag listing
- Set default diff type to 'lines', faster for starters.
- Supply different versions to browse
- Fix heading
- Update README.md
- Adding diff screenshot
- Add more start-up examples
- Tweak theming
- Use a even simpler run command
- improve the wording
- Add basic settings page (so far just recheck time in minutes)
- Updating README
- Updating screenshot (new diff button)
- Trigger write index after edit of a watch
- Add [diff] mechanism
- Use a single thread for writing the sync json
- Use existing tag
- When all items showed, show which tag it belongs to
- Sort tag list
- Set active tag selection
- Support for comma separated tags
- Tweak styling for 'new watch' form
- Remove import for old lib
- Switch to inscriptis prepare config backend struct
- Support for custom headers per watch
- Going back to larger PNG screenshot, looks better in Github :)
- Fix alt text in markup
- Adding new screenshot binary
- Updating screenshot
- Moving start text to a more visible part
- Tweak messages
- Change message text
- Fixing messages styling
- Basic tag browse buttons
- Bulk import
- Tidy up 'last_checked' date handling
- Dev environment setup
- Dev docker tweaks
- Remove messy text
- Tweaking text
- Fixing checkall hook
- Use requests's r.text so we dont have to deal with charsets
- Add note
- Fix bad copy command
- Oops left out the image name
0.12 / 2021-01-29 12:33:42 +0100:
- Fix build setup for the docker hub image https://hub.docker.com/r/dgtlmoon/changedetection.io
- Update screenshot
0.11 / 2021-01-29 10:49:05 +0100:
- Add more start-up examples
- Tweak theming
- Use a even simpler run command
- improve the wording
- Add basic settings page (so far just recheck time in minutes)
- Updating README
- Updating screenshot (new diff button)
- Trigger write index after edit of a watch
- Add [diff] mechanism
- Use a single thread for writing the sync json
- Use existing tag
- When all items showed, show which tag it belongs to
- Sort tag list
- Set active tag selection
- Support for comma separated tags
- Tweak styling for 'new watch' form
- Remove import for old lib
- Switch to inscriptis prepare config backend struct
- Support for custom headers per watch
- Going back to larger PNG screenshot, looks better in Github :)
- Fix alt text in markup
- Adding new screenshot binary
- Updating screenshot
- Moving start text to a more visible part
- Tweak messages
- Change message text
- Fixing messages styling
- Basic tag browse buttons
- Bulk import
- Tidy up 'last_checked' date handling
- Dev environment setup
- Dev docker tweaks
- Remove messy text
- Tweaking text
- Fixing checkall hook
- Use requests's r.text so we dont have to deal with charsets
- Add note
- Fix bad copy command
- Oops left out the image name
- Fix build setup for the docker hub image https://hub.docker.com/r/dgtlmoon/changedetection.io
- Update screenshot
0.2 / 2021-02-01 10:24:29 +0100:
- Add more start-up examples
- Tweak theming
- Use a even simpler run command
- improve the wording
- Add basic settings page (so far just recheck time in minutes)
- Updating README
- Updating screenshot (new diff button)
- Trigger write index after edit of a watch
- Add [diff] mechanism
- Use a single thread for writing the sync json
- Use existing tag
- When all items showed, show which tag it belongs to
- Sort tag list
- Set active tag selection
- Support for comma separated tags
- Tweak styling for 'new watch' form
- Remove import for old lib
- Switch to inscriptis prepare config backend struct
- Support for custom headers per watch
- Going back to larger PNG screenshot, looks better in Github :)
- Fix alt text in markup
- Adding new screenshot binary
- Updating screenshot
- Moving start text to a more visible part
- Tweak messages
- Change message text
- Fixing messages styling
- Basic tag browse buttons
- Bulk import
- Tidy up 'last_checked' date handling
- Dev environment setup
- Dev docker tweaks
- Remove messy text
- Tweaking text
- Fixing checkall hook
- Use requests's r.text so we dont have to deal with charsets
- Add note
- Fix bad copy command
- Oops left out the image name
- Fix build setup for the docker hub image https://hub.docker.com/r/dgtlmoon/changedetection.io
- Update screenshot
- Add edit UI Move to keyed structure instead of list
- Fixes to CSS
- Add method to launch a full recheck of all @note - needs to be converted to a python Queue threads
- Tweaks to docker layout
- Remove actual :// links, dont consider these as part of the changes, often they include variables/trackingscript ref etc
- Create FUNDING.yml
0.1 / 2021-01-28 11:17:12 +0100:
- Specify image name in docker files to avoid a confusing build/run
- Tidy up devel docker
- Tweak comments
- Avoid recasting the type
- Store a history of changes, used for future lookup/diff/explore changes UI
- Update README.md
- Show the backend error in the table if there is one
- Include screenshot
- Fix branch name
- Tweak todo
- Adding README amd docker info
- Add missing file
- Primitive support for extra headers
- remove debug
- Handle titles and links
- Fix base definition of the watcher
- sort by last changed
- fix button size
- Store the html2text version too
- fix favicon
- small fixes
- Handle errors better, use the plaintext output
- Workon threads
- WIP
- Remove nocache experimental
- Initial commit
For now, Differences are performed on text, not graphically, only the latest screenshot is available.

Screenshot requires Playwright/WebDriver enabled