#330 · Presumptive outline: dashed moments, stack entries and durations (#325)
- timeline-app
- pull request
Adds **Presumptive outline** (`presumptive-outline`, version 1), an official plugin that marks moments, stack entries and durations as presumptive (not yet confirmed by evidence) and draws them with a dashed outline, the way events and causal factors charts draw presumptive events and conditions. Closes #325. ## What changed - **Data:** a checkbox labelled **Presumptive (unconfirmed)**, bound to the `presumptive` metadata key. Checking it stores `true`; unchecking it removes the key. Nothing changes in the core document format. - **New general plugin API** (checked by the manifest parser, open to custom plugins, documented in docs/plugins.md): - a `toggle` field kind. A stored `true` or `"true"` reads as checked. Any other stored value reads as unchecked and is kept until the box is changed. - an `outline` marker kind, `{ "kind": "outline", "metadataKey": … }`, and a scripted effect, `api.outline("dashed" | "solid")`. With no `targets`, an outline marker applies to moments and durations, as a color marker does. - **Drawing:** dark dashes over the marker's white border, so they show on light and dark backgrounds and against any marker color. - Circles and icon markers dash their CSS border. - Every other shape gets a dashed copy of its own SVG outline path (`renderPluginOutline`), so any shape is dashed, including ones added later such as the ellipse. - Duration bands and collapsed durations get a dashed border. - Group summaries, a band standing for several durations, and headings stay as they are. - **Where it shows:** the details panel and stack-entry cards (as a checkbox), the duration dialog (as a checkbox), the reader (as a flag), and the Focus on hover card (with a dashed border). - **Overviews keep it:** a toggle that is on is now carried along with text fields by: - `pluginMetadata` (the server overview); - `durationOverview` (duration bands, in PostgreSQL and the browser); - the native store's band and moment projections (desktop). So read-only viewers, the desktop app and duration bands all show the outline. - **Plugin suites:** not changed. ## Testing - `npm test` passes, including new unit tests for parsing, validation, scripted effects, targets, duration plugins and projections. `npm run typecheck` passes. Prettier and rustfmt are clean. - `cargo test` in native-store passes, including a new test that toggles reach moment projections and bands. - New browser check `test/presumptive-browser.mjs`, registered in `test/browser.mjs`, passes on Chromium, Firefox and WebKit. It covers: - circles, a colored star, icons, a hexagon stack entry and durations drawn dashed; - contrast, measured on the default light background and on a dark Timeline theme background; - summaries staying solid; - editing by checkbox in the details panel, stack cards and the duration dialog; - an odd stored value being kept; - the dashed hover card; - export and reimport; - the reader flags; - disabling the plugin. - Checked screenshots in both themes by eye. - `npm run build:offline` builds.
Sources
Open #330 · Presumptive outline: dashed moments, stack entries and durations (#325) in the timeline