Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 16:17
· 70 commits to main since this release
Immutable release. Only release title and notes can be modified.

Added

  • A panel's Sync crosshair and step across charts setting now also locks its image-series sliders
    together: moving one moves the others to the latest step each has at or before it.
  • An image-series chart is titled with its artifact key.
  • A tag can carry a unit: tags={"took": Quantity(value=5400, unit=TimeUnit.SECONDS)} records what the
    number was measured in (time ns to d, size B to TB, decimal); on the wire it is
    {"value": 5400, "unit": "s"}. The client never says how to show it: the image chart shows it in the
    largest unit that fits by default (1.500 h, 2.500 GB, not 5400 or 2500000000), or in the unit set
    by its new tag_time_unit / tag_size_unit settings, to tag_precision significant digits, and
    tag_display overrides those per tag name. Plain
    numbers are written with separators (12,346) instead of 1.235e+04.
  • Opt-in OpenTelemetry for enterprise deployments. DLBOARD_TELEMETRY_METRICS=prometheus,otlp exports the
    server's own metrics (HTTP requests and latency, metric and artifact ingest, the artifact write queue, run
    lifecycle, sign-ins, artifact purges) either as a Prometheus scrape of /metrics -- added up across every
    worker -- or pushed over OTLP to a collector, Mimir or Grafana Cloud, and DLBOARD_TELEMETRY_LOGS sends the
    logs over OTLP too (Loki). It is the new otel extra (OpenTelemetry SDK 1.25 or later, 1.38 for logs),
    installed in the Docker image; with none of it set nothing is imported or logged, and every process (each
    Granian worker and its artifact writer) sets itself up on first use, so a collector that is down never stops
    the server from starting. Telemetry never takes down what it measures: a failure to record is logged once and
    skipped, and a setup that failed is retried with a back-off. The metrics API is public, as
    dlboard.serve.telemetry, for plugins to record their own. See docs/telemetry.md.
  • Docker images between releases: ghcr.io/dlangerm/dlboard:beta follows main (and sha-<commit> pins a
    single landing), :latest is the same tested main, and :stable follows the newest release.
    See docs/docker.md.

Fixed

  • Live updates replaced a chart's whole item with a whole new item nested inside it (a second set of
    controls and padding) the first time its data moved, and redrew every open chart on the first update
    after a page loaded, including ones whose data had not changed. A chart now carries a fingerprint of the
    data it was drawn from, so a poll replaces only the chart inside its item, and only when its data moved.
  • A request the sign-in gate turned away (a 401, or the redirect to the sign-in page) had no request id, and
    with DLBOARD_ACCESS_LOG on its response raised an error instead of being logged.
  • Pressing Ctrl+C during training left the process hung for a minute per unshipped queue, with "still hadn't
    all been shipped" and "shipping process is dead" warnings. The terminal's Ctrl+C reached the logger's
    background shipping processes too, so they died before the final flush could send what was queued. They now
    ignore Ctrl+C, and the training process flushes and exits.

Changed

  • The latest Docker tag no longer means "the newest release": it now follows main (the same as
    :beta). Pin :stable (or a version, :0.5.0) for releases only.
  • An image-series chart lays its runs out by what its panel and page say: as many columns as the panel's
    grid column count (following it the instant it changes) and as many runs per page as the viewer's
    charts-per-page size, instead of a fixed three and six. It never uses more columns than it has runs, so one
    run's image fills the chart's width and a large chart size now enlarges it.
  • Artifact tags values are JSON scalars (str | int | float | bool) on the wire and in storage, not
    text (#179): NewArtifact.tags is dict[str, TagValue], clients send what the caller logged
    (tags={"score": 0.14}), and the image-series and file-list charts format numbers the same way wherever
    they come from. A server older than this release rejects a numeric tag with a 400, so upgrade the
    server before the clients; existing string tags are unaffected. This replaces the text-only storage
    described under 0.5.0.