Verification Report · changedetection 0.60.8
NOT PUBLISHED
changedetection-0.60.8-20260928-001
verified_at 2026-09-28T12:14:34Z
Immutable inputs
| App version | 0.60.8 ← release tag 0.60.8 · source 09881f8b26aa |
| Image (exact tag) | dgtlmoon/changedetection.io:0.60.8 |
| Image digest (linux/amd64) | sha256:aa36286677a1ea637bc46e99e0247b5e97faf709214e775e7720d43dcef0d6fc |
| Index digest | sha256:34df3680db1cbffc45ac1e9c1514bc0507dd0c5b5fde47d1992fe6f14a7b40e4 |
| Pulled as | dgtlmoon/changedetection.io:0.60.8@sha256:aa36286677a1ea637bc46e99e0247b5e97faf709214e775e7720d43dcef0d6fc via registry-1.docker.io |
| Platform contract | ami-0045d7fc2ad003464 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20260924-002) |
| Config revisions | app 90860a537501 · compose f1a3eb16a537 |
| Release type | bug_fix — rule3: patch-only bump 0.60.7 -> (0, 60, 8) |
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.8 — 匹配(exact):kind=exec_command 取到 '0.60.8',期望 '0.60.8' |
| 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 1.15s
|
| Container state | running |
| Duration | 29.8s(2026-09-28T12:14:04Z → 2026-09-28T12:14:33Z) |
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 1.15s
Container logs (tail)
- [28/Sep/2026 12:14:31] "GET /static/js/realtime.js?v=1790580305-15646 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /static/js/llm-summary.js?v=1790580305-9883 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /static/js/csrf.js?v=1790580305-1187 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /static/js/toggle-theme.js?v=1790580305-2522 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /static/js/hamburger-menu.js?v=1790580305-2114 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /static/js/menu-pop.js?v=1790580305-1561 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /static/js/language-selector.js?v=1790580305-2158 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /static/js/search-modal.js?v=1790580305-3985 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /static/js/flask-toast-bridge.js?v=1790580305-2371 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /static/js/scrollable-title.js?v=1790580305-1486 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:31] "GET /sw.js HTTP/1.1" 200 -
changedetection-1 | 2026-09-28 12:14:31.442 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:393 - Socket.IO: Sent initial queue size 0 to new client
changedetection-1 | 2026-09-28 12:14:31.442 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:401 - Socket.IO: Sent initial checking_now 0 to new client
changedetection-1 | 2026-09-28 12:14:31.443 | INFO | changedetectionio.realtime.socket_server:handle_connect:405 - Socket.IO: Client connected
changedetection-1 | 2026-09-28 12:14:31.477 | INFO | changedetectionio.realtime.socket_server:handle_disconnect:411 - Socket.IO: Client disconnected
changedetection-1 | 2026-09-28 12:14:32.066 | 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-28 12:14:32.066 | 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-28 12:14:32.066 | 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-28 12:14:32.066 | 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-28 12:14:32.067 | 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-28 12:14:32.067 | 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-28 12:14:32.068 | 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 - - [28/Sep/2026 12:14:32] "GET / HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/styles/pure-min.css?v=1790580305-16789 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/styles/flag-icons.min.css?v=1790580305-28040 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/styles/styles.css?v=1790580305-105100 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/feather-icons.min.js?v=1790580305-76047 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/jquery-3.6.0.min.js?v=1790580305-89501 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/sidebar.js?v=1790580305-1330 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/socket.io.min.js?v=1790580305-61701 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/modal.js?v=1790580305-9407 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/images/google-chrome-icon.png?v=1790580305-14480 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/images/generic_feed-icon.svg?v=1790580305-569 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/toast.js?v=1790580305-7285 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/watch-overview.js?v=1790580305-22463 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/llm-summary.js?v=1790580305-9883 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/queue-sparkline.js?v=1790580305-12214 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/realtime.js?v=1790580305-15646 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/restock-price-graph.js?v=1790580305-19210 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/csrf.js?v=1790580305-1187 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/hamburger-menu.js?v=1790580305-2114 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/toggle-theme.js?v=1790580305-2522 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/menu-pop.js?v=1790580305-1561 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/language-selector.js?v=1790580305-2158 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/scrollable-title.js?v=1790580305-1486 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/search-modal.js?v=1790580305-3985 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /static/js/flask-toast-bridge.js?v=1790580305-2371 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [28/Sep/2026 12:14:32] "GET /sw.js HTTP/1.1" 200 -
changedetection-1 | 2026-09-28 12:14:32.293 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:393 - Socket.IO: Sent initial queue size 0 to new client
changedetection-1 | 2026-09-28 12:14:32.296 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:401 - Socket.IO: Sent initial checking_now 0 to new client
changedetection-1 | 2026-09-28 12:14:32.296 | INFO | changedetectionio.realtime.socket_server:handle_connect:405 - Socket.IO: Client connected
changedetection-1 | 2026-09-28 12:14:33.439 | INFO | changedetectionio.realtime.socket_server:handle_disconnect:411 - Socket.IO: Client disconnected
Raw manifest
{
"schema_version": "1.0",
"verification_id": "changedetection-0.60.8-20260928-001",
"app": "changedetection",
"app_version": "0.60.8",
"release": {
"source_repo": "dgtlmoon/changedetection.io",
"source_revision": "09881f8b26aa01a2be66c5f63daf54a79a42b6bd",
"release_tag": "0.60.8",
"upstream_tag": "0.60.8",
"image_reference": "dgtlmoon/changedetection.io:0.60.8"
},
"container": {
"image": "dgtlmoon/changedetection.io:0.60.8",
"digest": "sha256:aa36286677a1ea637bc46e99e0247b5e97faf709214e775e7720d43dcef0d6fc",
"manifest_digest": "sha256:34df3680db1cbffc45ac1e9c1514bc0507dd0c5b5fde47d1992fe6f14a7b40e4",
"platform": "linux/amd64"
},
"platform": {
"platform_verification_id": "plat-us-east-1-x86_64-20260924-002",
"ami_id": "ami-0045d7fc2ad003464",
"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": "90860a537501c19ccece98fb562ad93272bcc565",
"compose_revision": "f1a3eb16a537b16a403f8ea64d50910455539bc8",
"tests_revision": "fe384bc9879bd63fb096732323380c33e3b6a415",
"template_revision": "c9350db2baff041f7af1051e500f8db9da8c749a"
},
"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/candidates/changedetection/36420444100/1/changedetection-0.60.8-20260928-001/screenshots/watchlist.png",
"caption": {
"en": "Watchlist dashboard",
"zh": "监控列表面板"
}
}
],
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/36420444100"
},
"website": {
"app": "changedetection",
"app_version": "0.60.8",
"verification_id": "changedetection-0.60.8-20260928-001",
"verification_run_id": "36420444100",
"platform_verification_id": "plat-us-east-1-x86_64-20260924-002",
"ami_id": "ami-0045d7fc2ad003464",
"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-28T12:14:34Z",
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/36420444100",
"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.8",
"extra_environment": [],
"template": {
"url": "https://corenovalaunch-templates.s3.us-east-1.amazonaws.com/corenova-one-click.template.yaml",
"revision": "c9350db2baff041f7af1051e500f8db9da8c749a"
},
"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",
"hold": {
"reason": {
"en": "Deployment paused pending protected access to the management interface.",
"zh": "暂停部署:待补齐管理界面访问保护。"
}
},
"production_contract": {
"checks": [
"admin_auth",
"data_dir_write"
]
}
},
"release": {
"type": "bug_fix",
"previous_version": "0.60.7",
"type_evidence": "rule3: patch-only bump 0.60.7 -> (0, 60, 8)"
},
"screenshots": [
{
"scenario": "watchlist",
"file": "watchlist.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/candidates/changedetection/36420444100/1/changedetection-0.60.8-20260928-001/screenshots/watchlist.png",
"caption": {
"en": "Watchlist dashboard",
"zh": "监控列表面板"
}
}
]
},
"verification_run_id": "36420444100",
"verified_at": "2026-09-28T12:14:34Z"
}