Skip to content

v0.11.1-beta.5

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Jun 21:13
· 331 commits to main since this release
9542679

Delta since previous beta (v0.11.1-beta.4) — 2 new changesets.

Patch Changes

  • Cascade new editor windows instead of stacking them dead-center. Electron centers every window that has no explicit position, so opening several projects — most visibly the post-update relaunch, which restores every previously open project at once — produced one indistinguishable pile of windows. Each new editor window now opens offset down-right from the focused (or most recently opened) window, macOS-document-app style, wrapping back to the top-left of the work area when it would run off the screen edge. The first window of a session still opens centered.

  • Fixed: the first WYSIWYG edit to a freshly loaded document no longer misroutes through a concurrent-edit merge that falsely reported divergence, and byte-unsafe constructs the canonical serializer would rewrite (un-padded GFM tables, inline-math delimiter form, PUA sentinels, multi-blank-line runs) are now preserved across WYSIWYG edits and editor mount — visually editing such a document no longer rewrites untouched constructs, and a mere editor mount no longer mutates the file on disk. Whitespace-only differences within bridge tolerance on untouched lines (e.g. the blank line between the frontmatter closer and the body that most real-world docs carry) are normalized on that first WYSIWYG edit — the documented transition behavior of the Y.Text-is-truth contract's architectural floor.

    For maintainers — mechanism: the sync baseline previously recorded the canonical serialization where the router strict-compares raw Y.Text bytes, so the first WYSIWYG edit after loading a non-round-trip-byte-stable doc (and after any source-mode edit Observer B absorbed) misrouted through Path B's three-way merge with telemetry falsely asserting ytextDiverged: true. The baseline is now split into two witnesses — canonical serialization for the fragment-unchanged short-circuit; raw Y.Text bytes for the router and the divergence-merge base — and the in-sync leg splits on residual tolerance: within tolerance routes Path A's canonical rewrite; beyond tolerance applies only the fragment's canonical-space delta onto the raw bytes via a canonical-base three-way merge. Source-mode edits within bridge tolerance (e.g. trailing whitespace) are still real divergence and still merge byte-preservingly through Path B.

    For operators: observer-a-path-b-fired and the observerAPathBFires / observerAPathBFiresSuppressed counters are now scoped strictly to real unabsorbed Y.Text divergence, and the event's ytextDiverged attribute is derived from the routing decision instead of hardcoded — dashboards keyed on the event will see the rate drop on residual-bearing docs whose first-edit fires were previously misclassified. The in-sync canonical-base residual merge is not a divergence fire; its volume is visible via the new observerAResidualMergeRuns counter and the observer.a.path span attribute (path-a | residual-merge | path-b).