dgtlmoon and GitHub
3d14df6a11
Development branch merge into release/master
...
Multi-language / Translations Support (#3696 )
- Complete internationalization system implemented
- Support for 7 languages: Czech (cs), German (de), French (fr), Italian (it), Korean (ko), Chinese Simplified (zh), Chinese Traditional (zh_TW)
- Language selector with localized flags and theming
- Flash message translations
- Multiple translation fixes and improvements across all languages
- Language setting preserved across redirects
Pluggable Content Fetchers (#3653 )
- New architecture for extensible content fetcher system
- Allows custom fetcher implementations
Image / Screenshot Comparison Processor (#3680 )
- New processor for visual change detection (disabled for this release)
- Supporting CSS/JS infrastructure added
UI Improvements
Design & Layout
- Auto-generated tag color schemes
- Simplified login form styling
- Removed hard-coded CSS, moved to SCSS variables
- Tag UI cleanup and improvements
- Automatic tab wrapper functionality
- Menu refactoring for better organization
- Cleanup of offset settings
- Hide sticky tabs on narrow viewports
- Improved responsive layout (#3702 )
User Experience
- Modal alerts/confirmations on delete/clear operations (#3693 , #3598 , #3382 )
- Auto-add https:// to URLs in quickwatch form if not present
- Better redirect handling on login (#3699 )
- 'Recheck all' now returns to correct group/tag (#3673 )
- Language set redirect keeps hash fragment
- More friendly human-readable text throughout UI
Performance & Reliability
Scheduler & Processing
- Soft delays instead of blocking time.sleep() calls (#3710 )
- More resilient handling of same UUID being processed (#3700 )
- Better Puppeteer timeout handling
- Improved Puppeteer shutdown/cleanup (#3692 )
- Requests cleanup now properly async
History & Rendering
- Faster server-side "difference" rendering on History page (#3442 )
- Show ignored/triggered rows in history
- API: Retry watch data if watch dict changed (more reliable)
API Improvements
- Watch get endpoint: retry mechanism for changed watch data
- WatchHistoryDiff API endpoint includes extra format args (#3703 )
Testing Improvements
- Replace time.sleep with wait_for_notification_endpoint_output (#3716 )
- Test for mode switching (#3701 )
- Test for #3720 added (#3725 )
- Extract-text difference test fixes
- Improved dev workflow
Bug Fixes
- Notification error text output (#3672 , #3669 , #3280 )
- HTML validation fixes (#3704 )
- Template discovery path fixes
- Notification debug log now uses system locale for dates/times
- Puppeteer spelling mistake in log output
- Recalculation on anchor change
- Queue bubble update disabled temporarily
Dependency Updates
- beautifulsoup4 updated (#3724 )
- psutil 7.1.0 → 7.2.1 (#3723 )
- python-engineio ~=4.12.3 → ~=4.13.0 (#3707 )
- python-socketio ~=5.14.3 → ~=5.16.0 (#3706 )
- flask-socketio ~=5.5.1 → ~=5.6.0 (#3691 )
- brotli ~=1.1 → ~=1.2 (#3687 )
- lxml updated (#3590 )
- pytest ~=7.2 → ~=9.0 (#3676 )
- jsonschema ~=4.0 → ~=4.25 (#3618 )
- pluggy ~=1.5 → ~=1.6 (#3616 )
- cryptography 44.0.1 → 46.0.3 (security) (#3589 )
Documentation
- README updated with viewport size setup information
Development Infrastructure
- Dev container only built on dev branch
- Improved dev workflow tooling
2026-01-12 17:50:53 +01:00
dgtlmoon and GitHub
12ce03c0bb
RSS - New Settings option for making RSS follow the format of Notification Body across watch/group/etc, or system default and override the format with your own as you like.
2025-11-19 12:58:12 +01:00
dgtlmoon and GitHub
48299e5738
UI - Moving 'RSS' options to its own settings tab, RSS - Adding watch history length ( #3633 )
2025-11-13 19:20:03 +01:00
dgtlmoon and GitHub
8dc39d4a3d
RSS feeds for a single watches!
Build and push containers / metadata (push) Has been cancelled
Build and push containers / build-push-containers (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built package works basically. (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Has been cancelled
ChangeDetection.io App Test / lint-code (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-10 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-11 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-12 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-13 (push) Has been cancelled
2025-11-12 17:38:18 +01:00
dgtlmoon and GitHub
969c75e7be
Notification body/title - Fixing validation on empty strings #3606 ( #3607 )
2025-11-07 11:42:57 +01:00
dgtlmoon and GitHub
ab0b85d088
Unify safe URL checking to the one function, strengthen tests and filters ( #3564 )
Build and push containers / metadata (push) Has been cancelled
Build and push containers / build-push-containers (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built package works basically. (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Has been cancelled
ChangeDetection.io Container Build Test / Build linux/amd64 (alpine) (push) Has been cancelled
ChangeDetection.io Container Build Test / Build linux/arm64 (alpine) (push) Has been cancelled
ChangeDetection.io Container Build Test / Build linux/amd64 (main) (push) Has been cancelled
ChangeDetection.io Container Build Test / Build linux/arm/v7 (main) (push) Has been cancelled
ChangeDetection.io Container Build Test / Build linux/arm/v8 (main) (push) Has been cancelled
ChangeDetection.io Container Build Test / Build linux/arm64 (main) (push) Has been cancelled
ChangeDetection.io App Test / lint-code (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-10 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-11 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-12 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-13 (push) Has been cancelled
2025-10-28 13:24:37 +01:00
dgtlmoon
2116b2cb93
CVE-2025-62780 - Stored XSS in Watch update via API
2025-10-28 10:09:30 +01:00
dgtlmoon and GitHub
a8cadc3d16
Fixing wrong notification type in <select> that lead to wrong type of notifications (plaintext vs html) being sent #3558 ( #3559 )
2025-10-27 18:56:01 +01:00
dgtlmoon and GitHub
f71550da4d
Discord + Telegram - Adding better styling (Discord now uses strike-through and bold for removal/additions instead of broken HTML) ( #3528 )
2025-10-23 20:57:59 +02:00
dgtlmoon and GitHub
249dc55212
Notification - Make sure all notification tokens have something set even for form validation, fixes hassio:// with {{ watch_uuid }} in notification URL form ( #3504 )
2025-10-14 10:58:53 +02:00
dgtlmoon and GitHub
64350a2e78
Replace jinja2-time with arrow and improve timedate timezone integration, fixes timezones in templates such as {% now 'Europe/London', '%Y-%m-%d' %} etc ( #3496 )
2025-10-13 11:52:02 +02:00
dgtlmoon
02ecc4ae9a
UI - Add missing 'requests timeout in seconds' field to main settings, Re #975
2025-10-12 21:42:07 +02:00
dgtlmoon and GitHub
3ee50b7832
UI - Proxy and external browser settings URL validation ( #3494 )
2025-10-12 21:24:59 +02:00
dgtlmoon
66ddd87ee4
Move proxy default selection to proxy tab
2025-10-12 19:26:04 +02:00
dgtlmoon and GitHub
0fcfb94690
Adding 'RSS reader mode' (see main Settings) ( #3488 )
2025-10-10 18:17:30 +02:00
dgtlmoon and GitHub
4b9ae5a97c
Filters - Adding "Strip ignored lines" in output option to filters ( #3449 )
Build and push containers / metadata (push) Has been cancelled
Build and push containers / build-push-containers (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Has been cancelled
ChangeDetection.io App Test / lint-code (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built 📦 package works basically. (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-10 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-11 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-12 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-13 (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
2025-10-01 12:39:57 +02:00
dgtlmoon and GitHub
2b72d38235
Time interval field - Extra validation improvements and tests ( #3432 )
2025-09-17 12:49:28 +02:00
dgtlmoon and GitHub
b74b76c9f9
"Time between check" field is now validated correctly (requires atleast one of the weeks days hours minutes seconds to be set)
Build and push containers / metadata (push) Has been cancelled
Build and push containers / build-push-containers (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built 📦 package works basically. (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Has been cancelled
ChangeDetection.io App Test / lint-code (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-10 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-11 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-12 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-13 (push) Has been cancelled
2025-09-16 19:09:45 +02:00
dgtlmoon and GitHub
9db7fb83eb
Always extract page <title>, {{watch_title}} added to notification body tokens ( #3415 )
Build and push containers / metadata (push) Has been cancelled
Build and push containers / build-push-containers (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Has been cancelled
ChangeDetection.io App Test / lint-code (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built 📦 package works basically. (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-10 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-11 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-12 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-13 (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
2025-09-10 14:52:41 +02:00
dgtlmoon and GitHub
93b14c9fc8
Re #3337 - UI - Various fixes for 'Extract Data' ( #3341 )
Build and push containers / metadata (push) Has been cancelled
Build and push containers / build-push-containers (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built 📦 package works basically. (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Has been cancelled
ChangeDetection.io App Test / lint-code (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-10 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-11 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-12 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-13 (push) Has been cancelled
2025-07-28 18:24:21 +02:00
dgtlmoon and GitHub
5980bd9bcd
UI - Set default favicon, offer option to disable favicons ( #3316 )
2025-07-14 18:13:16 +02:00
dgtlmoon
8f1a6feb90
UI - Tweak UI option text description for 'Open history page in new tab' setting
2025-06-11 12:09:19 +02:00
dgtlmoon and GitHub
73f3beda00
Realtime UI - Socketio tweaks and refactor ( #3220 )
2025-06-03 10:17:19 +02:00
dgtlmoon and GitHub
eada0ef08d
UI - Custom headers should have validation ( #3172 )
2025-05-03 13:57:42 +02:00
dgtlmoon and GitHub
96dc49e229
App memory - Apprise import only when needed - saves ~50Mb RAM if you dont have any notifications enabled ( #3106 )
2025-04-11 10:37:09 +02:00
Oleksandr Perepadia and GitHub
1378b5b2ff
UI - Add UI options tab and setting to disable opening diff in a new tab ( #3071 )
2025-04-09 14:56:23 +02:00
dgtlmoon and GitHub
2c630e9853
UI - Field name update - Keyword triggers - Trigger/wait for text ( #3088 )
Build and push containers / metadata (push) Has been cancelled
Build and push containers / build-push-containers (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Has been cancelled
ChangeDetection.io App Test / lint-code (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built 📦 package works basically. (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-10 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-11 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-12 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-13 (push) Has been cancelled
2025-04-04 12:46:25 +02:00
Luca and GitHub
ea9ba3bb2e
Notifications backend - Refactor + tests for Apprise custom integration ( #3057 )
Build and push containers / metadata (push) Waiting to run
Build and push containers / build-push-containers (push) Waiting to run
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Waiting to run
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built 📦 package works basically. (push) Blocked by required conditions
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Blocked by required conditions
ChangeDetection.io App Test / lint-code (push) Waiting to run
ChangeDetection.io App Test / test-application-3-10 (push) Blocked by required conditions
ChangeDetection.io App Test / test-application-3-11 (push) Blocked by required conditions
ChangeDetection.io App Test / test-application-3-12 (push) Blocked by required conditions
ChangeDetection.io App Test / test-application-3-13 (push) Blocked by required conditions
2025-03-27 18:07:36 +01:00
dgtlmoon and GitHub
f26ea55e9c
RSS Fixes and improvements - Ability to set "RSS Color HTML Format" in Settings, detect and filter content with bad content that could break RSS ( #3055 )
Build and push containers / metadata (push) Waiting to run
Build and push containers / build-push-containers (push) Waiting to run
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Waiting to run
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built 📦 package works basically. (push) Blocked by required conditions
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Blocked by required conditions
ChangeDetection.io App Test / lint-code (push) Waiting to run
ChangeDetection.io App Test / test-application-3-10 (push) Blocked by required conditions
ChangeDetection.io App Test / test-application-3-11 (push) Blocked by required conditions
ChangeDetection.io App Test / test-application-3-12 (push) Blocked by required conditions
ChangeDetection.io App Test / test-application-3-13 (push) Blocked by required conditions
2025-03-26 12:08:15 +01:00
dgtlmoon and GitHub
7e7d5dc383
New major functionality CONDITIONS - Compare values, check numbers within range, etc
Build and push containers / metadata (push) Waiting to run
Build and push containers / build-push-containers (push) Waiting to run
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Waiting to run
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built 📦 package works basically. (push) Blocked by required conditions
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Blocked by required conditions
ChangeDetection.io App Test / lint-code (push) Waiting to run
ChangeDetection.io App Test / test-application-3-10 (push) Blocked by required conditions
ChangeDetection.io App Test / test-application-3-11 (push) Blocked by required conditions
ChangeDetection.io App Test / test-application-3-12 (push) Blocked by required conditions
ChangeDetection.io App Test / test-application-3-13 (push) Blocked by required conditions
ChangeDetection.io Container Build Test / test-container-build (push) Has been cancelled
2025-03-17 19:20:24 +01:00
dgtlmoon
e37467f649
UI - More W3C HTML validation fixes
2025-02-19 10:44:54 +01:00
dgtlmoon and GitHub
1fb0adde54
Notifications - Support for commented out notification URLs ( #2825 #2769 )
2024-12-04 18:08:52 +01:00
dgtlmoon and GitHub
7421e0f95e
New functionality - Time (weekday + time) scheduler / duration ( #2802 )
2024-12-03 12:45:28 +01:00
Christopher Charbonneau Wells and GitHub
e8b82c47ca
#2502 - Add jinja2 template handling to request body and headers ( #2740 )
2024-10-28 15:46:05 +01:00
Emmanuel Ojighoro and GitHub
b0ff9d161e
UI - Fix mobile styling inconsistencies and resolve diff page overflow issue ( #2716 )
2024-10-21 11:34:22 +02:00
dgtlmoon and GitHub
5a768d7db3
UTF-8 handling fixes, Improvements to whitespace filtering ( #2691 )
2024-10-10 14:59:39 +02:00
dgtlmoon and GitHub
b656338c63
UI - Improve error handling when a module is missing when editing a URL/link ( #2678 )
2024-10-05 16:58:40 +02:00
dgtlmoon and GitHub
00458b95c4
UI - Improvements to live preview of Filters text
...
"Ignore text" is now "Remove text", it works the same but it removes the text instead of ignoring it, which is the same thing, but makes the code simpler
2024-10-05 16:32:28 +02:00
dgtlmoon and GitHub
e830fb2320
Text filters - Adding filters "Trim whitespace" and "Remove duplicate lines"
2024-09-18 15:45:44 +02:00
Michael McMillan and GitHub
dc936a2e8a
Filters - Add support for also removing HTML elements using XPath selectors ( #2632 )
2024-09-17 22:43:04 +02:00
dgtlmoon and GitHub
273adfa0a4
Testing - Fix false filter missing check alerts
2024-09-17 16:55:04 +02:00
dgtlmoon and GitHub
7f2fa20318
Small memory allocation fixes ( #2625 )
2024-09-11 14:51:32 +02:00
dgtlmoon and GitHub
321426dea2
Ability to use restock and price amounts in notifications as tokens (for example {{restock.price}} ) ( #2503 )
2024-07-17 20:27:47 +02:00
dgtlmoon and GitHub
cffb6d748c
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
2024-07-12 17:09:42 +02:00
dgtlmoon and GitHub
76ffc3e891
RSS - Setting to hide muted watches in RSS feed (default ON) ( #2411 )
2024-06-13 11:52:12 +02:00
dgtlmoon and GitHub
f49eb4567f
Ability to set default User-Agent for either fetching types directly in the UI ( #2375 )
2024-05-20 15:11:15 +02:00
dgtlmoon and GitHub
8d1fb96d18
UI - Refactor of the Recheck Time Settings, Added "Use default recheck time" checkbox and refactor/simplify system handling ( #2362 )
2024-05-14 13:51:03 +02:00
dgtlmoon and GitHub
bd6eda696c
Merge pull request from GHSA-4r7v-whpg-8rx3
...
* CVE-2024-32651 - Security fix - Server Side Template Injection in Jinja2 allows Remote Command Execution
* use ImmutableSandboxedEnvironment also in validation
2024-04-25 22:06:09 +02:00
dgtlmoon and GitHub
9449c59fbb
Code - Getting ready for newer python versions - packing our own strtobool ( #2291 )
2024-04-03 16:17:15 +02:00
dgtlmoon and GitHub
823a0c99f4
Code - Split content fetcher code up (playwright, puppeteer and requests), fix puppeteer direct chrome support ( #2169 )
2024-02-11 00:09:12 +01:00