# New in 0.6 | DRE

> PDF and HTML documents, per-row outputs (a statement per member), held deliveries with dre release, on_empty, --from-results and delivery rate limits.

You're reading the docs for DRE 0.10 (v0.10.0). [This page for 0.11](https://getdre.com/docs/new-in-0.6/)

# New in 0.6

DRE 0.6 makes branded documents and sends one per member, client or account, with a review step before anything goes out. It’s a minor release with nothing to change in existing projects: every new key is optional, and a project that doesn’t use them runs as before.

## Documents: PDF and HTML

The new [`document` plugin](https://getdre.com/docs/v0.10/plugin-document/) 1.0.0 (formats `html` and `pdf`) fills a Jinja HTML + CSS template with a report’s results and lays it out into a PDF in-process: no browser and no conversion service. The template reads what a message reads (`results.<query>`, `var()`, `run.*`, the number filters), plus `date('d mmm yyyy')`, `table(results.<query>)` and `row.fmt('column')` for a column’s YAML format. Page size, margins, running headers and page numbers go in CSS (`@page`); long tables repeat their header row on every page; fonts are bundled (IBM Plex) or your own through `@font-face`, never the machine’s. Add `document` to `dependencies.yml`.

A template is found by its file name: next to the report’s YAML, then in each parent folder, then anywhere in the project where it’s unique. The same rule now finds an xlsx `template.file`; a path with `/` still means a path from the project root, as before.

## One output per row: `for_each`

[Per-row outputs](https://getdre.com/docs/v0.10/per-row-outputs/) make one copy of an output for each row of a driver query: a statement per member, an extract per client. The queries run once; each copy gets only its row’s slice, and the driver row as `each.*` in templates and destination paths and addresses. Failed rows are recorded and the rest carry on; `--retry-failed <run id>` redoes only those, from the same saved results. `--preview`, `--only-keys` and `--limit-rows` let you test without sending to everyone, and addresses are masked in logs and results.

## Review before sending: `hold` and `dre release`

`hold: true` on a destination (or `dre run --hold`) renders everything and holds that delivery. After review, [`dre release`](https://getdre.com/docs/v0.10/per-row-outputs/#held-deliveries-and-dre-release) delivers the held files byte for byte, refuses any that changed, and never sends one twice. It works for any output.

## When there’s no data: `on_empty`

`on_empty: continue | skip | fail` on an output or a query says what happens when queries return no rows, with a clear no-data line in every case. See [When there’s no data](https://getdre.com/docs/v0.10/building-reports/#when-theres-no-data).

## Delivery rate limits

`rate: 100/minute` (or `/second`, `/hour`) on a destination spaces its deliveries evenly, with an optional `burst:`; `--rate` overrides it for one command. When a service says to slow down, `retry_wait` and `max_retry_wait` set the waits between tries (see [Tries again](https://getdre.com/docs/v0.10/plugins/#tries-again)).

## Also

-   `dre run --from-results <dir>` re-renders a report’s outputs from results saved with `--output-json`, with no query: the design loop for templates.
-   `run.date.yyyymm` (`202609`), for monthly paths.
-   Email attachments and S3, GCS and Azure objects are labelled `application/pdf` and `text/html` for those files.
-   Plugins: email 1.3.0, slack 1.3.0, teams and google\_chat 1.0.0-rc.3, object\_store 1.2.0, sftp 1.3.0, ftp 1.2.0 and postgres 1.4.0 take `retry_wait` and `max_retry_wait`; databricks 1.3.1, clickhouse 1.0.2, bigquery and snowflake 1.0.0-alpha.3 update their dependencies. `dre plugin update <package>` picks them up.

## Fixes and later additions

-   **0.6.1**: a long send shows how far it’s got. At a terminal, `dre release` and every per-row output in `dre run` show a bar with rows done, the measured speed, the `rate:` it’s capped at, and the time left; without one, a `Progress` line every 30 seconds (see [Watching a long send](https://getdre.com/docs/v0.10/per-row-outputs/#watching-a-long-send)). `dre release` shows its warnings as they happen.
-   **document 1.0.1**: an `<img>` of an SVG file (a logo) appears in the PDF. Run `dre plugin update document` to get it.

[Previous  
New in 0.5](https://getdre.com/docs/v0.10/new-in-0.5/)[Next  
New in 0.7](https://getdre.com/docs/v0.10/new-in-0.7/)
