---
title: "2026-08-26 Histo dashboard viewer failure investigation"
description: "Inspected current mono main for WSI zoom, overlay, direct GeoTIFF, and browser CORS failure paths."
image: "https://docs.virdx.dev/img/virdx-social-card.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.virdx.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026-08-26 Histo dashboard viewer failure investigation

## Work Done

- Read the histo workstream indexes and the dashboard histo tile-serving SOP.
- Inspected current `mono` main without editing it, focusing on dashboard frontend `HistoViewerCard`, shared `TileViewer`/`TileClient`/`TileScheduler`, the direct HTTP GeoTIFF source, the dashboard-api histo router, and Vite URL proxies.
- Identified a deterministic overlay scheduling fault: overlay tile requests are scheduled during rendering, then immediately excluded from the base-image scheduler keep-set and cancelled. Their overlay-cache loading flags are not cleared.
- Identified the direct-S3 browser constraint: `HistoViewerCard` passes the raw presigned URL to the fetch-based GeoTIFF reader even though the existing `s3ObjectUrl` helper documents that the endpoint lacks CORS and provides a dev proxy for byte-reading callers.
- Recorded other likely mechanisms: silent overlay metadata/tile errors, one mutable source type shared by base and overlays, GeoTIFF top-level-IFD pyramid assumptions, ignored overlay PNG query, range-response requirements, and presigned URL expiry.
- No source files were edited and no tests were run because this was a read-only investigation.

## Lessons Learned: Pitfalls

- The dashboard tile-serving SOP describes the original on-disk TIFF and OME-Zarr paths but does not yet cover the later direct-S3 GeoTIFF path or its CORS and range constraints.
- Shared viewer logging methods currently contain no output, despite comments suggesting they can be enabled, so browser source breakpoints and Network inspection are more useful.

## Lessons Learned: Improvements

- Extend the dashboard histo tile-serving SOP with the direct-S3 flow and the required browser contract: successful CORS preflight for `Range`, `206`, readable `Content-Range`, and the dev/prod proxy distinction.
- Document that the viewer scheduler is shared by base and overlays, so cancellation keep-sets and loading-state cleanup must cover both cache families.
- Add an integration check that zooming changes requested pyramid levels and that a visible overlay completes at least one tile request.

Source: https://docs.virdx.dev/knowledge/inbox/2026-08-26-histo-dashboard-viewer-failure-investigation/index.mdx
