Skip to content

Hardening candidates: v2.29.0 #240

Description

@jeiel85

Candidates surfaced by the v2.29.0 work (#219, #226, #222 follow-ups). Filed at the tag, not worked on in it. Nothing here blocks the release.

  • Property-based round-trip test for SyncFrontmatter. The parser is hand-rolled and now carries unknown entries through verbatim; only one realistic Obsidian file pins decode → encode → decode stability. Random-input invariants would cover the classes of input a fixed example cannot. Affects: user files in the sync folder.
  • No automated coverage that a preview toggle reaches the mirror file. Tapping a checkbox in Preview should toggle it #219 is covered by unit and Compose tests up to the callback and the string edit; that the flip actually lands in the note and in the synced file was verified by hand on an emulator. Affects: regressions in the Tapping a checkbox in Preview should toggle it #219 write path.
  • PreviewLine.sourceLine is only set by the commonmark adapter, not parseHandRolled. If the legacy fallback parser were ever used, checkboxes would silently stop responding rather than fail loudly. Affects: the retained fallback path.
  • IncludeSourceSpans.BLOCKS cost is unmeasured. Every preview parse now accumulates block spans; fine for ordinary notes, unquantified for very long ones. Affects: preview latency and memory on large notes.
  • Rapid taps inside the one-second save debounce are unverified. The toggle reads editorState.text at tap time and bumps saveTrigger; several taps in quick succession were not exercised. Affects: a check that appears to take and then reverts.
  • The local Roborazzi baseline is 20 images off on Windows. Visual regressions cannot be judged off-CI without comparing failure sets before and after, which is what this release had to do. A documented baseline, or a supported way to render the Linux goldens locally, would make the gate usable during development. Affects: developer feedback loop, not shipped behaviour.

Already filed separately, linked so it is not lost: #234 — an indented --- inside a block scalar closes the frontmatter early because the delimiter search uses trim().

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions