Try our Chrome extension
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;
- Rate us at AlternativeTo.net
- Star us on GitHub
- Follow us at Twitter/X
- Check us out on LinkedIn
- And tell your friends and colleagues :)
The more popular changedetection.io is, the more time we can dedicate to adding amazing features!
Many thanks :)
changedetection.io team
Not yet seconds ago
False
Not yet seconds ago
11 hours ago
_ _ _ _ _ _ __| |_ __ _ _ _ __ _ ___ __| |___| |_ ___ __| |_(_)___ _ _ (_)___ / _| ' \/ _` | ' \/ _` / -_) _` / -_) _/ -_) _| _| / _ \ ' \ _| / _ \ \__|_||_\__,_|_||_\__, \___\__,_\___|\__\___\__|\__|_\___/_||_(_)_\___/ |___/ HEAD / 2024-09-02 15:11:31 +0200: - 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 | _ _ _ _ _ _ __| |_ __ _ _ _ __ _ ___ __| |___| |_ ___ __| |_(_)___ _ _ (_)___ / _| ' \/ _` | ' \/ _` / -_) _` / -_) _/ -_) _| _| / _ \ ' \ _| / _ \ \__|_||_\__,_|_||_\__, \___\__,_\___|\__\___\__|\__|_\___/_||_(_)_\___/ |___/ 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