Verification Report · changedetection 0.60.5

NOT PUBLISHED   changedetection-0.60.5-20260914-001   verified_at 2026-09-14T17:11:05Z

Immutable inputs

App version0.60.5 ← release tag 0.60.5 · source b0783bce9023
Image (exact tag)dgtlmoon/changedetection.io:0.60.5
Image digest (linux/amd64)sha256:a53a0de4419e74eead7a5aa51509f4cfd847e7b2ae3c8165491d9726eef39673
Index digestsha256:f69554198005300addda04b0b3bd8acc075143fd0cd7bc9c0a081e0a395d63a7
Pulled asdgtlmoon/changedetection.io:0.60.5@sha256:a53a0de4419e74eead7a5aa51509f4cfd847e7b2ae3c8165491d9726eef39673 via registry-1.docker.io
Platform contractami-025d99823a4caad37 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20260909-001)
Config revisionsapp 3a1cbf880a9a · compose f1a3eb16a537
Release typeinitial — rule1: no published versions recorded for this app

Publish gate

CheckFieldResult
Compose startedchecks.compose_startedPassed
Container healthychecks.container_healthyPassed
Health check passedchecks.health_check_passedPassed
Application testschecks.tests_passedPassed
Screenshots capturedchecks.screenshots_generatedPassed
Screenshots publishedchecks.screenshots_uploadedFailed
Report publishedchecks.report_uploadedFailed
Manifest publishedchecks.verification_manifest_uploadedFailed
Platform contract validchecks.required_platform_contract_validPassed

Evidence

Health probeHTTP 200 — ready
Version assertionTrue actual 0.60.5 — 匹配(exact):kind=exec_command 取到 '0.60.5',期望 '0.60.5'
Testspytest 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.50s
Container staterunning
Duration32.5s(2026-09-14T17:10:32Z → 2026-09-14T17:11:04Z)

Screenshots

watchlist
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.50s

Container logs (tail)

changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/socket.io.min.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/modal.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/images/generic_feed-icon.svg HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/images/spread.svg HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/toast.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/csrf.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/feather-icons.min.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/restock-price-graph.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/queue-sparkline.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/toggle-theme.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/watch-overview.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/realtime.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/hamburger-menu.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/menu-pop.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/language-selector.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/search-modal.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/flask-toast-bridge.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:01] "GET /static/js/sidebar.js HTTP/1.1" 200 -
changedetection-1  | 2026-09-14 17:11:02.003 | DEBUG    | changedetectionio.realtime.socket_server:handle_connect:371 - Socket.IO: Sent initial queue size 0 to new client
changedetection-1  | 2026-09-14 17:11:02.004 | DEBUG    | changedetectionio.realtime.socket_server:handle_connect:379 - Socket.IO: Sent initial checking_now 0 to new client
changedetection-1  | 2026-09-14 17:11:02.004 | INFO     | changedetectionio.realtime.socket_server:handle_connect:383 - Socket.IO: Client connected
changedetection-1  | 2026-09-14 17:11:02.045 | INFO     | changedetectionio.realtime.socket_server:handle_disconnect:389 - Socket.IO: Client disconnected
changedetection-1  | 2026-09-14 17:11:02.665 | 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 17:11:02.666 | 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 17:11:02.666 | 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 17:11:02.666 | 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 17:11:02.666 | 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 17:11:02.666 | 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 17:11:02.667 | 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 17:11:02] "GET / HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/styles/pure-min.css HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/socket.io.min.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/styles/styles.css?v=aa79a8eaa8 HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/styles/flag-icons.min.css HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/images/google-chrome-icon.png HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/modal.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/jquery-3.6.0.min.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/images/generic_feed-icon.svg HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/images/spread.svg HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/toast.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/csrf.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/realtime.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/restock-price-graph.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/watch-overview.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/feather-icons.min.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/queue-sparkline.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/toggle-theme.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/sidebar.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/menu-pop.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/hamburger-menu.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/language-selector.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/search-modal.js HTTP/1.1" 200 -
changedetection-1  | 172.18.0.1 - - [14/Sep/2026 17:11:02] "GET /static/js/flask-toast-bridge.js HTTP/1.1" 200 -
changedetection-1  | 2026-09-14 17:11:02.878 | DEBUG    | changedetectionio.realtime.socket_server:handle_connect:371 - Socket.IO: Sent initial queue size 0 to new client
changedetection-1  | 2026-09-14 17:11:02.880 | DEBUG    | changedetectionio.realtime.socket_server:handle_connect:379 - Socket.IO: Sent initial checking_now 0 to new client
changedetection-1  | 2026-09-14 17:11:02.880 | INFO     | changedetectionio.realtime.socket_server:handle_connect:383 - Socket.IO: Client connected
changedetection-1  | 2026-09-14 17:11:04.054 | INFO     | changedetectionio.realtime.socket_server:handle_disconnect:389 - Socket.IO: Client disconnected

Raw manifest

{
  "schema_version": "1.0",
  "verification_id": "changedetection-0.60.5-20260914-001",
  "app": "changedetection",
  "app_version": "0.60.5",
  "release": {
    "source_repo": "dgtlmoon/changedetection.io",
    "source_revision": "b0783bce9023c2c8bb4b9af9c16859daf647e9e9",
    "release_tag": "0.60.5",
    "upstream_tag": "0.60.5",
    "image_reference": "dgtlmoon/changedetection.io:0.60.5"
  },
  "container": {
    "image": "dgtlmoon/changedetection.io:0.60.5",
    "digest": "sha256:a53a0de4419e74eead7a5aa51509f4cfd847e7b2ae3c8165491d9726eef39673",
    "manifest_digest": "sha256:f69554198005300addda04b0b3bd8acc075143fd0cd7bc9c0a081e0a395d63a7",
    "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.5/watchlist.png",
        "caption": {
          "en": "Watchlist dashboard",
          "zh": "监控列表面板"
        }
      }
    ],
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34873046658"
  },
  "website": {
    "app": "changedetection",
    "app_version": "0.60.5",
    "verification_id": "changedetection-0.60.5-20260914-001",
    "verification_run_id": "34873046658",
    "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-14T17:11:05Z",
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34873046658",
    "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.5",
      "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": "initial",
      "previous_version": "",
      "type_evidence": "rule1: no published versions recorded for this app"
    },
    "screenshots": [
      {
        "scenario": "watchlist",
        "file": "watchlist.png",
        "url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/changedetection/0.60.5/watchlist.png",
        "caption": {
          "en": "Watchlist dashboard",
          "zh": "监控列表面板"
        }
      }
    ]
  },
  "verification_run_id": "34873046658",
  "verified_at": "2026-09-14T17:11:05Z"
}