mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2026-07-08 08:21:14 +00:00
3d14df6a11
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
161 lines
4.9 KiB
Plaintext
161 lines
4.9 KiB
Plaintext
# eventlet>=0.38.0 # Removed - replaced with threading mode for better Python 3.12+ compatibility
|
|
feedgen~=1.0
|
|
feedparser~=6.0 # For parsing RSS/Atom feeds
|
|
flask-compress
|
|
# 0.6.3 included compatibility fix for werkzeug 3.x (2.x had deprecation of url handlers)
|
|
flask-login>=0.6.3
|
|
flask-paginate
|
|
flask_expects_json~=1.7
|
|
flask_restful
|
|
flask_cors # For the Chrome extension to operate
|
|
janus # Thread-safe async/sync queue bridge
|
|
flask_wtf~=1.2
|
|
flask~=3.1
|
|
flask-socketio~=5.6.0
|
|
python-socketio~=5.16.0
|
|
python-engineio~=4.13.0
|
|
inscriptis~=2.2
|
|
pytz
|
|
timeago~=1.0
|
|
validators~=0.35
|
|
|
|
# Set these versions together to avoid a RequestsDependencyWarning
|
|
# >= 2.26 also adds Brotli support if brotli is installed
|
|
brotli~=1.2
|
|
requests[socks]
|
|
requests-file
|
|
|
|
# urllib3==1.26.19 # Unpinned - let requests decide compatible version
|
|
# If specific version needed for security, use urllib3>=1.26.19,<3.0
|
|
chardet>2.3.0
|
|
|
|
wtforms~=3.2
|
|
jsonpath-ng~=1.7.0
|
|
|
|
# Fast JSON serialization for better performance
|
|
orjson~=3.11
|
|
|
|
# dnspython - Used by paho-mqtt for MQTT broker resolution
|
|
# Version pin removed since eventlet (which required the specific 2.6.1 pin) has been eliminated
|
|
# paho-mqtt will install compatible dnspython version automatically
|
|
|
|
# jq not available on Windows so must be installed manually
|
|
|
|
# Notification library
|
|
apprise==1.9.5
|
|
|
|
diff_match_patch
|
|
|
|
# Lightweight URL linkifier for notifications
|
|
linkify-it-py
|
|
|
|
# - Needed for apprise/spush, and maybe others? hopefully doesnt trigger a rust compile.
|
|
# - Requires extra wheel for rPi, adds build time for arm/v8 which is not in piwheels
|
|
# Pinned to 43.0.1 for ARM compatibility (45.x may not have pre-built ARM wheels)
|
|
# Also pinned because dependabot wants specific versions
|
|
cryptography==46.0.3
|
|
|
|
# apprise mqtt https://github.com/dgtlmoon/changedetection.io/issues/315
|
|
# use any version other than 2.0.x due to https://github.com/eclipse/paho.mqtt.python/issues/814
|
|
paho-mqtt!=2.0.*
|
|
|
|
# Used for CSS filtering, JSON extraction from HTML
|
|
beautifulsoup4>=4.0.0,<=4.14.3
|
|
|
|
# XPath filtering, lxml is required by bs4 anyway, but put it here to be safe.
|
|
# #2328 - 5.2.0 and 5.2.1 had extra CPU flag CFLAGS set which was not compatible on older hardware
|
|
# It could be advantageous to run its own pypi package here with those performance flags set
|
|
# https://bugs.launchpad.net/lxml/+bug/2059910/comments/16
|
|
lxml >=4.8.0,!=5.2.0,!=5.2.1,<7
|
|
|
|
# XPath 2.0-3.1 support - 4.2.0 had issues, 4.1.5 stable
|
|
# Consider updating to latest stable version periodically
|
|
elementpath==5.0.4
|
|
|
|
# For fast image comparison in screenshot change detection
|
|
# opencv-python-headless is OPTIONAL (excluded from requirements.txt)
|
|
# - Installed conditionally via Dockerfile (skipped on arm/v7 and arm/v8 due to long build times)
|
|
# - Pixelmatch is used as fallback when OpenCV is unavailable
|
|
# - To install manually: pip install opencv-python-headless>=4.8.0.76
|
|
|
|
selenium~=4.31.0
|
|
|
|
# Templating, so far just in the URLs but in the future can be for the notifications also
|
|
jinja2~=3.1
|
|
arrow
|
|
openpyxl
|
|
# https://peps.python.org/pep-0508/#environment-markers
|
|
# https://github.com/dgtlmoon/changedetection.io/pull/1009
|
|
jq~=1.3; python_version >= "3.8" and sys_platform == "darwin"
|
|
jq~=1.3; python_version >= "3.8" and sys_platform == "linux"
|
|
|
|
# playwright is installed at Dockerfile build time because it's not available on all platforms
|
|
|
|
pyppeteer-ng==2.0.0rc10
|
|
pyppeteerstealth>=0.0.4
|
|
|
|
# Include pytest, so if theres a support issue we can ask them to run these tests on their setup
|
|
pytest ~=9.0
|
|
pytest-flask ~=1.3
|
|
pytest-mock ~=3.15
|
|
|
|
# Anything 4.0 and up but not 5.0
|
|
jsonschema ~= 4.25
|
|
|
|
# OpenAPI validation support
|
|
openapi-core[flask] >= 0.19.0
|
|
|
|
|
|
loguru
|
|
|
|
# For scraping all possible metadata relating to products so we can do better restock detection
|
|
extruct
|
|
|
|
# For cleaning up unknown currency formats
|
|
babel
|
|
# For internationalization (i18n) support
|
|
Flask-Babel>=4.0.0
|
|
|
|
levenshtein
|
|
|
|
# Needed for > 3.10, https://github.com/microsoft/playwright-python/issues/2096
|
|
greenlet >= 3.0.3
|
|
|
|
# Optional: Used for high-concurrency SocketIO mode (via SOCKETIO_MODE=gevent)
|
|
# Note: gevent has cross-platform limitations (Windows 1024 socket limit, macOS ARM build issues)
|
|
# Default SOCKETIO_MODE=threading is recommended for better compatibility
|
|
gevent
|
|
|
|
# Pinned or it causes problems with flask_expects_json which seems unmaintained
|
|
referencing==0.35.1
|
|
|
|
# For conditions
|
|
panzi-json-logic
|
|
# For conditions - extracted number from a body of text
|
|
price-parser
|
|
|
|
# flask_socket_io - incorrect package name, already have flask-socketio above
|
|
|
|
# Lightweight MIME type detection (saves ~14MB memory vs python-magic/libmagic)
|
|
# Used for detecting correct favicon type and content-type detection
|
|
puremagic
|
|
|
|
# Scheduler - Windows seemed to miss a lot of default timezone info (even "UTC" !)
|
|
tzdata
|
|
|
|
#typing_extensions ==4.8.0
|
|
|
|
pluggy ~= 1.6
|
|
|
|
# Needed for testing, cross-platform for process and system monitoring
|
|
psutil==7.2.1
|
|
|
|
ruff >= 0.11.2
|
|
pre_commit >= 4.2.0
|
|
|
|
# For events between checking and socketio updates
|
|
blinker
|
|
pytest-xdist
|
|
|
|
|