Verification Report · changedetection 0.60.10
NOT PUBLISHED
changedetection-0.60.10-20261101-001
verified_at 2026-11-01T12:13:15Z
Immutable inputs
| App version | 0.60.10 ← release tag 0.60.10 · source 16974bf351cd |
| Image (exact tag) | dgtlmoon/changedetection.io:0.60.10 |
| Image digest (linux/amd64) | sha256:82b82565b5f4fbb309c56ce888f03dd441b51805a17548f4763a7db840f27f0c |
| Index digest | sha256:72f97681f390e4d6ae3e6585e1e0036449910f347144b766fc23910458566a1a |
| Pulled as | dgtlmoon/changedetection.io:0.60.10@sha256:82b82565b5f4fbb309c56ce888f03dd441b51805a17548f4763a7db840f27f0c via registry-1.docker.io |
| Platform contract | ami-0d6dd9e8265d48906 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20261101-001) |
| Config revisions | app 90860a537501 · compose f1a3eb16a537 |
| Release type | bug_fix — rule3: patch-only bump 0.60.9 -> (0, 60, 10) |
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.10 — 匹配(exact):kind=exec_command 取到 '0.60.10',期望 '0.60.10' |
| 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 2.05s
|
| Container state | running |
| Duration | 37.4s(2026-11-01T12:12:36Z → 2026-11-01T12:13:14Z) |
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 2.05s
Container logs (tail)
s/flag-icons.min.css?v=1793016018-28040 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/jquery-3.6.0.min.js?v=1793016018-89501 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/socket.io.min.js?v=1793016018-61701 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/images/google-chrome-icon.png?v=1793016018-14480 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/modal.js?v=1793016018-9407 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/images/generic_feed-icon.svg?v=1793016018-569 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/toast.js?v=1793016018-7285 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/realtime.js?v=1793016018-15646 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/csrf.js?v=1793016018-1187 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/queue-sparkline.js?v=1793016018-12214 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/llm-summary.js?v=1793016018-9883 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/restock-price-graph.js?v=1793016018-19210 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/watch-overview.js?v=1793016018-22463 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/menu-pop.js?v=1793016018-1561 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/toggle-theme.js?v=1793016018-2744 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/hamburger-menu.js?v=1793016018-2114 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/scrollable-title.js?v=1793016018-1486 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/language-selector.js?v=1793016018-2158 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/search-modal.js?v=1793016018-3985 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/flask-toast-bridge.js?v=1793016018-2371 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /sw.js HTTP/1.1" 200 -
changedetection-1 | 2026-11-01 12:13:12.178 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:393 - Socket.IO: Sent initial queue size 0 to new client
changedetection-1 | 2026-11-01 12:13:12.179 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:401 - Socket.IO: Sent initial checking_now 0 to new client
changedetection-1 | 2026-11-01 12:13:12.179 | INFO | changedetectionio.realtime.socket_server:handle_connect:405 - Socket.IO: Client connected
changedetection-1 | 2026-11-01 12:13:12.207 | INFO | changedetectionio.realtime.socket_server:handle_disconnect:411 - Socket.IO: Client disconnected
changedetection-1 | 2026-11-01 12:13:12.638 | 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, supports_pdf=True - not offered, missing supports_browser_steps, supports_screenshots, supports_xpath_element_data
changedetection-1 | 2026-11-01 12:13:12.638 | 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, supports_pdf=False - not offered, missing supports_browser_steps
changedetection-1 | 2026-11-01 12:13:12.638 | 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 - - [01/Nov/2026 12:13:12] "GET / HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/styles/pure-min.css?v=1793016018-16789 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/jquery-3.6.0.min.js?v=1793016018-89501 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/styles/flag-icons.min.css?v=1793016018-28040 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/styles/styles.css?v=1793016018-112521 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/sidebar.js?v=1793016018-1330 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/feather-icons.min.js?v=1793016018-76047 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/socket.io.min.js?v=1793016018-61701 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/images/google-chrome-icon.png?v=1793016018-14480 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/modal.js?v=1793016018-9407 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/images/generic_feed-icon.svg?v=1793016018-569 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/toast.js?v=1793016018-7285 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/csrf.js?v=1793016018-1187 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/realtime.js?v=1793016018-15646 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/queue-sparkline.js?v=1793016018-12214 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/llm-summary.js?v=1793016018-9883 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/restock-price-graph.js?v=1793016018-19210 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/toggle-theme.js?v=1793016018-2744 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/watch-overview.js?v=1793016018-22463 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/hamburger-menu.js?v=1793016018-2114 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/scrollable-title.js?v=1793016018-1486 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/language-selector.js?v=1793016018-2158 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/search-modal.js?v=1793016018-3985 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/menu-pop.js?v=1793016018-1561 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /static/js/flask-toast-bridge.js?v=1793016018-2371 HTTP/1.1" 200 -
changedetection-1 | 172.18.0.1 - - [01/Nov/2026 12:13:12] "GET /sw.js HTTP/1.1" 200 -
changedetection-1 | 2026-11-01 12:13:12.804 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:393 - Socket.IO: Sent initial queue size 0 to new client
changedetection-1 | 2026-11-01 12:13:12.804 | DEBUG | changedetectionio.realtime.socket_server:handle_connect:401 - Socket.IO: Sent initial checking_now 0 to new client
changedetection-1 | 2026-11-01 12:13:12.804 | INFO | changedetectionio.realtime.socket_server:handle_connect:405 - Socket.IO: Client connected
changedetection-1 | 2026-11-01 12:13:13.899 | INFO | changedetectionio.realtime.socket_server:handle_disconnect:411 - Socket.IO: Client disconnected
Raw manifest
{
"schema_version": "1.0",
"verification_id": "changedetection-0.60.10-20261101-001",
"app": "changedetection",
"app_version": "0.60.10",
"release": {
"source_repo": "dgtlmoon/changedetection.io",
"source_revision": "16974bf351cd68b1978af9494082b75efadaa8e0",
"release_tag": "0.60.10",
"upstream_tag": "0.60.10",
"image_reference": "dgtlmoon/changedetection.io:0.60.10"
},
"container": {
"image": "dgtlmoon/changedetection.io:0.60.10",
"digest": "sha256:82b82565b5f4fbb309c56ce888f03dd441b51805a17548f4763a7db840f27f0c",
"manifest_digest": "sha256:72f97681f390e4d6ae3e6585e1e0036449910f347144b766fc23910458566a1a",
"platform": "linux/amd64"
},
"platform": {
"platform_verification_id": "plat-us-east-1-x86_64-20261101-001",
"ami_id": "ami-0d6dd9e8265d48906",
"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/41305319993/1/changedetection-0.60.10-20261101-001/screenshots/watchlist.png",
"caption": {
"en": "Watchlist dashboard",
"zh": "监控列表面板"
}
}
],
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/41305319993"
},
"website": {
"app": "changedetection",
"app_version": "0.60.10",
"verification_id": "changedetection-0.60.10-20261101-001",
"verification_run_id": "41305319993",
"platform_verification_id": "plat-us-east-1-x86_64-20261101-001",
"ami_id": "ami-0d6dd9e8265d48906",
"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-11-01T12:13:15Z",
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/41305319993",
"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.10",
"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.9",
"type_evidence": "rule3: patch-only bump 0.60.9 -> (0, 60, 10)"
},
"screenshots": [
{
"scenario": "watchlist",
"file": "watchlist.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/candidates/changedetection/41305319993/1/changedetection-0.60.10-20261101-001/screenshots/watchlist.png",
"caption": {
"en": "Watchlist dashboard",
"zh": "监控列表面板"
}
}
]
},
"verification_run_id": "41305319993",
"verified_at": "2026-11-01T12:13:15Z"
}