Verification Report · changedetection 0.60.6
NOT PUBLISHED
changedetection-0.60.6-20260914-001
verified_at 2026-09-14T21:09:12Z
Immutable inputs
| App version | 0.60.6 ← release tag 0.60.6 · source 04b64fa15bd4 |
| Image (exact tag) | dgtlmoon/changedetection.io:0.60.6 |
| Image digest (linux/amd64) | sha256:c7af3d7f0f19bb8bd376d1c992cfa33dd3e015ded7c8952ce18c636a85523f6a |
| Index digest | sha256:eb4a9f718801004e006ffef0ce35171f42ec8d45c9b5d20da572bc5febe107ff |
| Pulled as | dgtlmoon/changedetection.io:0.60.6@sha256:c7af3d7f0f19bb8bd376d1c992cfa33dd3e015ded7c8952ce18c636a85523f6a via registry-1.docker.io |
| Platform contract | ami-025d99823a4caad37 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20260909-001) |
| Config revisions | app 3a1cbf880a9a · compose f1a3eb16a537 |
| Release type | bug_fix — rule3: patch-only bump 0.60.5 -> (0, 60, 6) |
Publish gate
| Check | Field | Result |
|---|
| Compose started | checks.compose_started | Passed |
| Container healthy | checks.container_healthy | Passed |
| Health check passed | checks.health_check_passed | Passed |
| Application tests | checks.tests_passed | Passed |
| Screenshots captured | checks.screenshots_generated | Passed |
| Screenshots published | checks.screenshots_uploaded | Failed |
| Report published | checks.report_uploaded | Failed |
| Manifest published | checks.verification_manifest_uploaded | Failed |
| Platform contract valid | checks.required_platform_contract_valid | Passed |
Evidence
| Health probe | HTTP 200 — ready |
| Version assertion | True actual 0.60.6 — 匹配(exact):kind=exec_command 取到 '0.60.6',期望 '0.60.6' |
| Tests | pytest exit=0
.. [100%]
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED apps/changedetection/tests/test_watchlist.py::test_root_reachable
PASSED apps/changedetection/tests/test_watchlist.py::test_watchlist_renders
2 passed in 0.90s
|
| Container state | running |
| Duration | 33.2s(2026-09-14T21:08:38Z → 2026-09-14T21:09:11Z) |
Screenshots

watchlist · Watchlist dashboard / 监控列表面板
Application test output
pytest exit=0
.. [100%]
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED apps/changedetection/tests/test_watchlist.py::test_root_reachable
PASSED apps/changedetection/tests/test_watchlist.py::test_watchlist_renders
2 passed in 0.90s
Container logs (tail)
ection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/images/google-chrome-icon.png HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/modal.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/images/generic_feed-icon.svg HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/images/spread.svg HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/toast.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/csrf.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/queue-sparkline.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/toggle-theme.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/realtime.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/watch-overview.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/feather-icons.min.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/restock-price-graph.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/hamburger-menu.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/sidebar.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/menu-pop.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/language-selector.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/search-modal.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:09] "GET /static/js/flask-toast-bridge.js HTTP/1.1" 200 -
changedetection-1 | 2026-09-14 21:09:09.572 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:371 - Socket.IO: Sent initial queue size 0 to new client
changedetection-1 | 2026-09-14 21:09:09.573 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:379 - Socket.IO: Sent initial checking_now 0 to new client
changedetection-1 | 2026-09-14 21:09:09.573 | INFO | changedetectionio.realtime.socket_server:handle_connect:383 - Socket.IO: Client connected
changedetection-1 | 2026-09-14 21:09:09.605 | INFO | changedetectionio.realtime.socket_server:handle_disconnect:389 - Socket.IO: Client disconnected
changedetection-1 | 2026-09-14 21:09:10.085 | DEBUG | changedetectionio.blueprint.add_watch_ui.browser_config:is_visual_capable:50 - Add-watch browser 'system' -> 'html_requests': supports_browser_steps=False, supports_screenshots=False, supports_xpath_element_data=False - not offered, missing supports_browser_steps, supports_screenshots, supports_xpath_element_data
changedetection-1 | 2026-09-14 21:09:10.086 | DEBUG | changedetectionio.blueprint.add_watch_ui.browser_config:is_visual_capable:50 - Add-watch browser 'html_requests' -> 'html_requests': supports_browser_steps=False, supports_screenshots=False, supports_xpath_element_data=False - not offered, missing supports_browser_steps, supports_screenshots, supports_xpath_element_data
changedetection-1 | 2026-09-14 21:09:10.086 | DEBUG | changedetectionio.blueprint.add_watch_ui.browser_config:is_visual_capable:50 - Add-watch browser 'html_webdriver' -> 'html_webdriver': supports_browser_steps=False, supports_screenshots=True, supports_xpath_element_data=True - not offered, missing supports_browser_steps
changedetection-1 | 2026-09-14 21:09:10.086 | DEBUG | changedetectionio.blueprint.add_watch_ui.browser_config:list_visual_browser_choices:81 - Add-watch browsers offered for the live preview: none
changedetection-1 | 2026-09-14 21:09:10.086 | DEBUG | changedetectionio.blueprint.add_watch_ui.browser_config:is_visual_capable:50 - Add-watch browser 'html_requests' -> 'html_requests': supports_browser_steps=False, supports_screenshots=False, supports_xpath_element_data=False - not offered, missing supports_browser_steps, supports_screenshots, supports_xpath_element_data
changedetection-1 | 2026-09-14 21:09:10.087 | DEBUG | changedetectionio.blueprint.add_watch_ui.browser_config:is_visual_capable:50 - Add-watch browser 'html_webdriver' -> 'html_webdriver': supports_browser_steps=False, supports_screenshots=True, supports_xpath_element_data=True - not offered, missing supports_browser_steps
changedetection-1 | 2026-09-14 21:09:10.087 | DEBUG | changedetectionio.blueprint.add_watch_ui.browser_config:list_visual_browser_choices:81 - Add-watch browsers offered for the live preview: none
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET / HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/jquery-3.6.0.min.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/styles/styles.css?v=addd9f7cd3 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/styles/pure-min.css HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/styles/flag-icons.min.css HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/images/google-chrome-icon.png HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/socket.io.min.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/modal.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/images/generic_feed-icon.svg HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/images/spread.svg HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/feather-icons.min.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/csrf.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/toast.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/watch-overview.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/queue-sparkline.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/realtime.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/hamburger-menu.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/restock-price-graph.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/toggle-theme.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/menu-pop.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/language-selector.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/sidebar.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/search-modal.js HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [14/Sep/2026 21:09:10] "GET /static/js/flask-toast-bridge.js HTTP/1.1" 200 -
changedetection-1 | 2026-09-14 21:09:10.262 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:371 - Socket.IO: Sent initial queue size 0 to new client
changedetection-1 | 2026-09-14 21:09:10.262 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:379 - Socket.IO: Sent initial checking_now 0 to new client
changedetection-1 | 2026-09-14 21:09:10.262 | INFO | changedetectionio.realtime.socket_server:handle_connect:383 - Socket.IO: Client connected
changedetection-1 | 2026-09-14 21:09:11.455 | INFO | changedetectionio.realtime.socket_server:handle_disconnect:389 - Socket.IO: Client disconnected
Raw manifest
{
"schema_version": "1.0",
"verification_id": "changedetection-0.60.6-20260914-001",
"app": "changedetection",
"app_version": "0.60.6",
"release": {
"source_repo": "dgtlmoon/changedetection.io",
"source_revision": "04b64fa15bd451b566b9a331b75949847e0faae8",
"release_tag": "0.60.6",
"upstream_tag": "0.60.6",
"image_reference": "dgtlmoon/changedetection.io:0.60.6"
},
"container": {
"image": "dgtlmoon/changedetection.io:0.60.6",
"digest": "sha256:c7af3d7f0f19bb8bd376d1c992cfa33dd3e015ded7c8952ce18c636a85523f6a",
"manifest_digest": "sha256:eb4a9f718801004e006ffef0ce35171f42ec8d45c9b5d20da572bc5febe107ff",
"platform": "linux/amd64"
},
"platform": {
"platform_verification_id": "plat-us-east-1-x86_64-20260909-001",
"ami_id": "ami-025d99823a4caad37",
"base_ami_source": "public",
"source_ami_name": "ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-*",
"region": "us-east-1",
"architecture": "x86_64"
},
"config": {
"app_config_revision": "3a1cbf880a9aae0a7b9b90d7e8cb21943274d2c4",
"compose_revision": "f1a3eb16a537b16a403f8ea64d50910455539bc8",
"tests_revision": "fe384bc9879bd63fb096732323380c33e3b6a415"
},
"verification": {
"application": "passed",
"platform": "referenced",
"tests": "passed"
},
"checks": {
"compose_started": true,
"container_healthy": true,
"health_check_passed": true,
"tests_passed": true,
"screenshots_generated": true,
"screenshots_uploaded": false,
"report_uploaded": false,
"verification_manifest_uploaded": false,
"required_platform_contract_valid": true
},
"artifacts": {
"screenshots": [
{
"scenario": "watchlist",
"file": "watchlist.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/changedetection/0.60.6/watchlist.png",
"caption": {
"en": "Watchlist dashboard",
"zh": "监控列表面板"
}
}
],
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34897029198"
},
"website": {
"app": "changedetection",
"app_version": "0.60.6",
"verification_id": "changedetection-0.60.6-20260914-001",
"verification_run_id": "34897029198",
"platform_verification_id": "plat-us-east-1-x86_64-20260909-001",
"ami_id": "ami-025d99823a4caad37",
"architecture": "x86_64",
"region": "us-east-1",
"display_name": {
"en": "changedetection.io",
"zh": "changedetection.io 网页变动监测"
},
"description": {
"en": "Website change detection & notifications: watch web pages for changes",
"zh": "网页变动监测与通知:持续盯守网页变化并即时提醒"
},
"category": "productivity",
"icon": "/icons/changedetection.svg",
"featured": true,
"tags": [
"monitoring",
"notifications",
"web"
],
"features": [
{
"en": "Watch any web page for visual, text or JSON changes",
"zh": "监测任意网页的可见、文本或 JSON 变化"
},
{
"en": "Re-render JavaScript with the bundled Playwright fetcher",
"zh": "内置 Playwright 抓取器,支持重 JS 页面"
},
{
"en": "Alerts via email, Telegram, Discord and 80+ channels",
"zh": "支持邮件、Telegram、Discord 等 80+ 通知渠道"
}
],
"health": "passed",
"status": "pending",
"verified_at": "2026-09-14T21:09:12Z",
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34897029198",
"screenshots_order": [
"watchlist"
],
"deploy": {
"documentation_url": "https://github.com/dgtlmoon/changedetection.io/wiki",
"regions": [
"us-east-1"
],
"instance_type": "t3.small",
"data_volume_gb": 30,
"container_port": 5000,
"health_check_path": "/",
"docker_image": "dgtlmoon/changedetection.io:0.60.6",
"extra_environment": [],
"post_deploy": {
"admin_path": "/",
"admin_setup": {
"en": "The watchlist UI at / is open to the network; add a URL to start watching. No preset accounts.",
"zh": "监控界面在 / 直接开放;添加 URL 即可开始盯守网页变化;没有预置账号。"
},
"notes": [
{
"en": "The bundled Playwright/Chromium fetcher runs in the same container; scraping targets inside the cloud VPC work, JavaScript-heavy pages may need more RAM.",
"zh": "内置的 Playwright/Chromium 抓取器与主服务同容器运行;VPC 内目标可正常抓取,重 JS 页面建议提升内存。"
},
{
"en": "Watch data and history live on a retained volume (/datastore). It keeps billing after stack deletion; snapshot it, then delete the volume when no longer needed.",
"zh": "监控任务与历史快照保存在保留数据卷(/datastore)中。删除栈后该卷仍会计费;请先创建快照,不再需要时再删除卷。"
}
]
},
"cost_estimate": {
"monthly_usd": 23,
"note": {
"en": "Verified default in us-east-1: ~$15.2 t3.small + ~$4 for the 20 GB root and 30 GB data gp3 volumes + $3.65 public IPv4 per month.",
"zh": "us-east-1 已验证默认配置:t3.small 约 $15.2/月 + 20GB 系统盘与 30GB 数据盘 gp3 约 $4/月 + 公网 IPv4 约 $3.65/月。"
}
},
"data_path": "/datastore"
},
"release": {
"type": "bug_fix",
"previous_version": "0.60.5",
"type_evidence": "rule3: patch-only bump 0.60.5 -> (0, 60, 6)"
},
"screenshots": [
{
"scenario": "watchlist",
"file": "watchlist.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/changedetection/0.60.6/watchlist.png",
"caption": {
"en": "Watchlist dashboard",
"zh": "监控列表面板"
}
}
]
},
"verification_run_id": "34897029198",
"verified_at": "2026-09-14T21:09:12Z"
}