v0.15.487
Released 10 April 2026.
Highlights
Sites β domain discovery, graphing, and watch promotion
DeltaWatch now models an entire domain as a connected site rather than a flat list of URLs. Point it at a root URL and it discovers the rest. Sites is available on the Sentinel tier.
- Site crawler β BFS crawl with robots.txt support, rate limiting, checkpointing, and a configurable edge cap. Reuses the same SSRF and redirect validation path as regular watch checks, so crawling a new site canβt reach anywhere a watch couldnβt.
- Network graph β visualise a site as nodes and edges. Neighbourhood scoping (default), viewport culling, zoom-based label visibility, and adaptive force parameters keep the graph responsive even at 1,000+ nodes.
- Table view β sortable, paginated table of discovered pages with inbound link count, depth, last-seen, and status. Table is the default; graph is a toggle.
- Node statuses and titles β every node carries a status (
discovered,reviewed,watched,ignored,blocked, orerror) and a title resolved in priority order: linked watch title β crawled page<title>β normalised path. Custom watch titles remain authoritative after promotion, and re-crawls preserve existingwatched/reviewed/ignoredstates instead of resetting them todiscovered. - Promote to watch β promote any discovered node (or bulk-promote many) into a full watch. Promotion routes through the standard watch creation flow, so duplicate detection, plan limits, interval enforcement, and initial queueing all still apply.
- Auto-watch on discovery β optional per-site toggle that turns every newly discovered page into a real watch as the crawler finds it (with the same billing and duplicate rules as manual promotion).
- Associated domains β external links are aggregated during the crawl and can be promoted into brand-new sites directly from the Sites UI.
- Hybrid recrawl scheduling β sites are re-crawled automatically when one of their watches detects a change (debounced at 12 hours site-wide to avoid storms) and, as a fallback, every site is scheduled for a full recrawl roughly every 7 days with Β±40% per-site jitter so abandoned sites still stay fresh.
- Automatic watch adoption β existing workspace watches whose domain matches a site are adopted into its graph automatically.
- Instant delete β removing a site responds immediately and cleans up nodes, edges, and crawl jobs in the background via bulk SQL deletes. No more multi-minute blocking deletes on sites with 100k edges.
Platform health monitoring
Internal platform operations gained a Health tab that surfaces real-time metrics every 5 minutes, alerting platform operators (not customer workspaces) to infrastructure issues before they become user-visible incidents.
- Metrics β disk usage, Node memory (RSS vs system total), database connection pool pressure, watch-check failure rate, crawl job health, scheduler misses, and API p95 latency.
- Alerts on state transitions β
ok β warn β criticalonly, with a configurable cooldown (default 30 minutes) and a recovery notification when everything returns took. - Configurable thresholds β every threshold is editable from the admin UI.
- Alert history β the last 20 alerts are retained for quick triage.
Platform runtime split
Behind the scenes, the platform runtime was split into web and worker roles so that user-facing API traffic and background workloads (watch checks, crawls, imports, exports, workspace deletes) run in separate processes. This keeps API p95 flat during heavy crawl activity and lets the two roles be scaled independently. A new 10-second drain loop on the worker keeps manual actions (recheck, crawl, export) responsive without waiting for the 5-minute scheduler tick. Customers see no change to behaviour β only to latency under load.
Watchlist
- Inline watch errors β failed checks now surface their error message directly on the watch card, so you donβt have to open the detail page to see why a watch is red.
- Parallel batch loading β the Watchlist loads filtered views in parallel batches with a progress indicator, instead of sequentially. Large workspaces feel dramatically faster.
Reliability
- Distributed crawl locking β concurrent crawls of the same site are prevented even under rolling restarts and scheduler overlaps.
- Self-healing sites β sites reconcile their own state periodically in the background: unlinked watches on the same domain are adopted, missing crawl jobs are created, and previously-queued jobs that stalled are picked back up.
- Stale crawl recovery β stuck crawl jobs are recovered automatically during scheduled maintenance, not just via manual intervention.
Bug fixes
- Fixed the graph view showing zero edges by default at high node counts β edges and nodes now display correctly without pre-filtering.
- Fixed the table view ignoring graph scope filters.
- Fixed duplicate site nodes created during watch adoption.
- Fixed watch card error text alignment.