The second release for open.csr adds several foundational features, including the ability to edit text in the app, an initial rtf implementation for tables, a "values" section and various UX improvements. See the release overview for a demo of every new with in annotated captures from the live site.
The prose becomes editable
v0.1.0 let you read a Clinical Study Report the pipeline assembled. v0.2 adds the first editing verb: open any text block in the Demo's Text pane and type. Bindings resolve live against the committed ARDs as you edit, and the numeric-fidelity gate runs per keystroke — write a number the data doesn't support and the sentence flags it red before you finish it. Every edit produces a unified diff against version-controlled source, copyable or downloadable as one patch per visit. The gates that check you in the browser are the same code CI runs, so an edit that passes as you type passes the build.
Submission-format RTF
Every display now publishes a submission-format RTF alongside its HTML — 11 RTF artifacts across the six demo displays, generated by the same R pipeline from the same ARDs (pharmaverse r2rtf), hash-tracked in the manifest, verified in CI, and downloadable from the Tables pane. The table a statistician files is now the table the app shows.
A values store joins tables and text
Named study values — randomized N, median age, and thirteen more — are now first-class: each carries its value, display format, and provenance back to a committed ARD row. Prose cites them by name with {{value:}} bindings, they browse on their own Values page, and the fidelity gate re-derives every one against the ARDs, so a value that drifts from its source fails the same way a stale inline number does.
Edit where you read
The reading view is no longer read-only: any text block in the Reader opens an overlay editor in place — the same editor, the same live gates, without leaving the document (the Option C design from the requirement). Reading context stays on screen; applying the edit re-renders just that block.
A tree you can collapse
The document sidebar now folds: standard chevrons with keyboard-accessible disclosure on every section, collapse state that survives navigation, and sections modelled but empty are dimmed so the populated ones carry the visual weight. A structural stylesheet guard now fails the build if any CSS rule is left unreachable — the class of break that briefly shipped the sidebar's screen-reader label as visible text.
PR and dev previews
Every same-repo pull request now publishes its own live preview of the full site (pr/{N}/, linked by a sticky comment), dev/ tracks the integration branch, and the root serves the latest release — one publishing system, no downtime cut-over. Starting with this release, every major/minor release also freezes its demo permanently at v{X.Y.Z}/.
Requirements delivered: obot.roadmap#113 (reader→editor, first verb) · obot.roadmap#129 (parts A, B, and C) · open.csr#10, open.csr#11
These release notes were drafted by Claude Code using Fable 5 in an unattended --auto session; not yet reviewed by @jwildfire.