Skip to content

Swift-Markdown-engine

v0.7.0 Breaking

This release includes 2 breaking changes for platform teams planning a safe upgrade.

Published 1mo Editors & IDEs
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

ReleasePort's take

Moderate signal
editorial:auto 1mo

Version 0.7.0 introduces several new UI features and critical breaking changes to scroll‑view APIs.

Why it matters: Breaking change severity 80 forces code updates for `scrollView.documentView`; severity 70 alters default insets, requiring opt‑in via `config.safeAreaInsets` to preserve layout behavior.

Summary

AI summary

Updates Breaking, Main changes, and feat across a mixed release.

Changes in this release

Breaking High

`scrollView.documentView` is now always an internal container view, never the `NSTextView`.

`scrollView.documentView` is now always an internal container view, never the `NSTextView`.

Source: llm_adapter@2026-06-11

Confidence: high

Breaking High

Default `scrollView` content inset is now `0`; opt back in via `config.safeAreaInsets`.

Default `scrollView` content inset is now `0`; opt back in via `config.safeAreaInsets`.

Source: llm_adapter@2026-06-11

Confidence: high

Feature Medium

Adds opt-in centered reading column with full-width table breakout (`readingWidth`).

Adds opt-in centered reading column with full-width table breakout (`readingWidth`).

Source: llm_adapter@2026-06-11

Confidence: high

Feature Medium

Adds scroll-away header API with interactive SwiftUI view.

Adds scroll-away header API with interactive SwiftUI view.

Source: llm_adapter@2026-06-11

Confidence: high

Feature Low

Adds empty-document placeholder `placeholder: NSAttributedString?` ghost text.

Adds empty-document placeholder `placeholder: NSAttributedString?` ghost text.

Source: llm_adapter@2026-06-11

Confidence: high

Feature Low

Implements band‑aware bottom overscroll for expanded header.

Implements band‑aware bottom overscroll for expanded header.

Source: llm_adapter@2026-06-11

Confidence: high

Bugfix Medium

Suppresses spell‑check on fenced code blocks and inline `code` via `.spellingState: 0`.

Suppresses spell‑check on fenced code blocks and inline `code` via `.spellingState: 0`.

Source: llm_adapter@2026-06-11

Confidence: high

Full changelog

Highlights

Two big editor-layout features land in this release: an opt-in centered reading column with full-width table breakout (readingWidth), and a scroll-away header API — the engine can now host an embedder-supplied SwiftUI view above the document body that scrolls with the content and collapses to a pinned top row.

Main changes

  • Reading column (readingWidth) — opt-in fixed wrap width, centered by position (no re-wrap on resize); wide tables break out to the full window width like Google Docs (#60).
  • Scroll-away headerNativeTextViewWrapper gains header: AnyView?, headerCollapsedHeight: CGFloat, and headerExpanded: Bool. The hosted view scrolls with the document, stays fully interactive, refreshes on every SwiftUI update, and animates between collapsed and expanded; composes with readingWidth (#61).
  • Empty-document placeholder — new placeholder: NSAttributedString? ghost text rendered at the first-line position inside the scrolled content: it sits below the header band, tracks its reveal animation, and hides on the first keystroke (#61).
  • Band-aware bottom overscroll — the header band counts toward the overscroll activation, so short documents under an expanded header can scroll the band away instead of pinning the caret to the viewport bottom; the comfortable slack stays viewport-based, so long documents behave exactly as before (#61).
  • Spell-check suppression on codeMarkdownASTStyler stamps .spellingState: 0 on fenced code blocks and inline code, completing the existing convention (links, wiki-links, LaTeX, tables) (#64, thanks @Ender-Wang).

Breaking

  • The scroll view's documentView is now always an engine-internal container view, never the NSTextView itself. Embedders that reached into scrollView.documentView must adapt.
  • The enclosing scroll view no longer applies a hard-coded top: 55.4 content inset; the default is 0 on every edge. Opt back in via config.safeAreaInsets = SafeAreaInsets(top: …).

Bundled fixes

Height-neutral trailing empty line (typing on the last line at max overscroll no longer shifts the bottom scroll limit), scroll-to-reveal regressions in the reading column, header/body compositing during responsive scroll, live-resize scroll-position restoration.

Tests

swift test — 89 tests across 10 suites.

Full changelog: https://github.com/nodes-app/swift-markdown-engine/compare/0.6.0...0.7.0

What's Changed

  • docs: update ARCHITECTURE.md for the AST pipeline by @luca-chen198 in https://github.com/nodes-app/swift-markdown-engine/pull/53
  • Add opt-in readingWidth: full-width table breakout by @luca-chen198 in https://github.com/nodes-app/swift-markdown-engine/pull/60
  • feat: stamp .spellingState: 0 on fenced code blocks and inline code by @Ender-Wang in https://github.com/nodes-app/swift-markdown-engine/pull/64
  • Scrolling header API for the markdown editor (+ live-scroll stability) by @Nicolas-Py in https://github.com/nodes-app/swift-markdown-engine/pull/61

New Contributors

  • @Ender-Wang made their first contribution in https://github.com/nodes-app/swift-markdown-engine/pull/64

Full Changelog: https://github.com/nodes-app/swift-markdown-engine/compare/0.6.0...0.7.0

Breaking Changes

  • The scroll view's `documentView` is now always an engine‑internal container view, never the `NSTextView` itself; embedders must adapt their access patterns.
  • The enclosing scroll view no longer applies a hard‑coded `top: 55.4` content inset; default insets are `0` on all edges; opt back in via `config.safeAreaInsets = SafeAreaInsets(top: …)`.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Swift-Markdown-engine

Get notified when new releases ship.

Sign up free

About Swift-Markdown-engine

All releases →

Related context

Earlier breaking changes

  • v0.10.0 `==highlight==` and `~~strikethrough~~` are now opt‑in extensions, not core grammar.

Beta — feedback welcome: [email protected]