mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2026-01-23 07:30:21 +00:00
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
102 lines
3.0 KiB
YAML
102 lines
3.0 KiB
YAML
name: Publish Python 🐍distribution 📦 to PyPI and TestPyPI
|
|
|
|
on: push
|
|
jobs:
|
|
build:
|
|
name: Build distribution 📦
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version: "3.11"
|
|
- name: Install pypa/build
|
|
run: >-
|
|
python3 -m
|
|
pip install
|
|
build
|
|
--user
|
|
- name: Build a binary wheel and a source tarball
|
|
run: python3 -m build
|
|
- name: Store the distribution packages
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: python-package-distributions
|
|
path: dist/
|
|
|
|
|
|
test-pypi-package:
|
|
name: Test the built package works basically.
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- build
|
|
steps:
|
|
- name: Download all the dists
|
|
uses: actions/download-artifact@v7
|
|
with:
|
|
name: python-package-distributions
|
|
path: dist/
|
|
- name: Set up Python 3.11
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.11'
|
|
|
|
- name: Test that the basic pip built package runs without error
|
|
run: |
|
|
set -ex
|
|
ls -alR
|
|
|
|
# Install the first wheel found in dist/
|
|
WHEEL=$(find dist -type f -name "*.whl" -print -quit)
|
|
echo Installing $WHEEL
|
|
python3 -m pip install --upgrade pip
|
|
python3 -m pip install "$WHEEL"
|
|
changedetection.io -d /tmp -p 10000 &
|
|
|
|
sleep 3
|
|
curl --retry-connrefused --retry 6 http://127.0.0.1:10000/static/styles/pure-min.css >/dev/null
|
|
curl --retry-connrefused --retry 6 http://127.0.0.1:10000/ >/dev/null
|
|
|
|
# --- API test ---
|
|
# This also means that the docs/api-spec.yml was shipped and could be read
|
|
test -f /tmp/url-watches.json
|
|
API_KEY=$(jq -r '.. | .api_access_token? // empty' /tmp/url-watches.json)
|
|
echo Test API KEY is $API_KEY
|
|
curl -X POST "http://127.0.0.1:10000/api/v1/watch" \
|
|
-H "x-api-key: ${API_KEY}" \
|
|
-H "Content-Type: application/json" \
|
|
--show-error --fail \
|
|
--retry 6 --retry-delay 1 --retry-connrefused \
|
|
-d '{
|
|
"url": "https://example.com",
|
|
"title": "Example Site Monitor",
|
|
"time_between_check": { "hours": 1 }
|
|
}'
|
|
|
|
killall changedetection.io
|
|
|
|
|
|
publish-to-pypi:
|
|
name: >-
|
|
Publish Python 🐍 distribution 📦 to PyPI
|
|
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
|
|
needs:
|
|
- test-pypi-package
|
|
runs-on: ubuntu-latest
|
|
environment:
|
|
name: release
|
|
url: https://pypi.org/p/changedetection.io
|
|
permissions:
|
|
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
|
|
steps:
|
|
- name: Download all the dists
|
|
uses: actions/download-artifact@v7
|
|
with:
|
|
name: python-package-distributions
|
|
path: dist/
|
|
- name: Publish distribution 📦 to PyPI
|
|
uses: pypa/gh-action-pypi-publish@release/v1
|