One file per decision that matters for performance or direction: what was decided, the evidence, and what would reopen it. Rejected ideas are kept so they are not tried again without new measurements. A decision is final until new measurements, or a change of direction by the maintainer, reopen it. A new choice gets a new record, numbered next.
| # | Decision | Status |
|---|---|---|
| 0001 | pdf.js is the only engine; no engine boundary | adopted |
| 0002 | No compatibility to keep before 1.0 | adopted |
| 0004 | Pages keep their canvases when they unmount | adopted |
| 0005 | Frame display (OffscreenCanvas, ImageBitmap) | rejected |
| 0006 | pdf.js's partial rendering of regions | rejected |
| 0007 | Keeping unmounted pages' parsed content | rejected |
| 0008 | Every whole-page detail becomes the base when zooming past its budget | rejected |
| 0009 | Each viewport owns its viewer work | adopted |
| 0010 | The renderer owns each page's DOM, and kept canvases move | adopted |
| 0011 | The React API: viewers of their own, live options, the session's state | adopted |
| 0012 | A whole-page detail no larger than a base becomes the base | adopted |
| 0013 | Text drawn as paths (disableFontFace) by default |
rejected |
| 0014 | No PDF preload in WebKit browsers | adopted |
| 0015 | What 1.0 requires, and what 1.x promises | proposed |
| 0016 | Form scripts start after the first paint | adopted |
| 0017 | ParaPDF is measured against react-pdf | adopted |
| 0018 | The scroller stops being a size query container | rejected |
| 0019 | What ParaPDF takes from pdf.js's viewer, and what it leaves | adopted |
| 0020 | Text layers are built out of the document | rejected |
| 0021 | Focus follows the page being read | adopted |
| 0022 | Keep runtime policies in the modules that own them | adopted |
| 0023 | URL open parameters belong to the provider | adopted |
| 0024 | Links found in the text are a feature off by default | adopted |
| 0025 | No base drawn again under a whole-page detail | adopted |
| 0026 | A detail kept while hidden, and until a base replaces it | adopted |
| 0027 | Search from the current page | adopted |
# NNNN. Title
- Status: proposed | adopted | rejected | superseded by NNNN
- Date: YYYY-MM-DD
## Decision
What was decided, and in a sentence or two why it came up. For a rejected
idea, what stays instead and why.
## Evidence
The script, the browsers, the runs, the result files, and the numbers that
decide it. Wins and losses both.
## Reopen if