Skip to content

ModernFormsNext v1.8.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 20:35
· 263 commits to master since this release

Full Changelog: v1.7.0...v1.8.0

[1.8.0] - 2026-07-17

ModernFormsNext 1.8.0 expands the framework and designer substantially while keeping Windows as
the primary platform. Android is introduced as an experimental shared-control vertical slice, not
as a production-ready platform.

Added

  • Added CheckedListBox, native RichTextBox, and SkiaSharp-rendered ToolTip controls, with
    ControlGallery examples and automated coverage.
  • Added a native Markdown document pipeline with MarkdownViewer and DocumentViewer, including
    selection, links, images, tables, lists, footnotes, code blocks, syntax highlighting, viewport
    layout, and plain-text conversion.
  • Added MarkdownEditor with source highlighting, formatting commands, undo/redo, editor/preview/
    split modes, synchronized scrolling, and host-controlled link and image insertion workflows.
  • Added hierarchical dynamic resource dictionaries at application, window, and control scope.
    Resource lookup follows control, parent, window, then application order; live resource references
    update bound CLR properties when the winning value changes.
  • Added designer docking and document-outline workflows, including outline search, display modes,
    collapse/expand actions, and control reordering between containers.
  • Added WindowKit backend registration, platform service, dispatcher, and permission contracts that
    keep platform-specific implementations outside the shared UI projects.
  • Added an experimental net10.0-android WindowKit backend, an Android smoke test, a shared
    Windows/Android sample, deterministic Android tooling, and automated backend tests.
  • Added a reusable SkiaControlSurface so a platform host can lay out, render, hit-test, focus, and
    route input through a real ModernFormsNext control tree.
  • Added architecture decision records and a staged framework roadmap covering resources, themes,
    localization, navigation, and optional feature packages.

Changed

  • Improved designer code generation and reverse parsing. Newly generated .Designer.cs files now
    assign the form through Size; the parser still accepts ClientSize from files generated by
    earlier releases, so existing projects can be opened and saved without a manual migration.
  • Improved AltGr handling and text-editing shortcuts so international keyboard input is not
    mistaken for Ctrl/Alt commands or focus-navigation shortcuts.
  • Improved font and inherited-style resolution, including safe lookup before visual attachment,
    cached SkiaSharp typefaces, and diagnostics for performance-sensitive style resolution.
  • Expanded ControlGallery with the new controls and Markdown workflows, and made its Windows target
    explicit so solution builds select the correct desktop assets.
  • Updated the framework, templates, published library packages, and Visual Studio designer
    extension to the coordinated 1.8.0 release version.

Fixed

  • Fixed Unicode text editing by keeping document positions in UTF-16 while converting explicitly at
    the RichTextKit layout boundary. Caret movement, hit testing, selection, rendering, Backspace, and
    Delete now preserve emoji, supplementary characters, combining text, and IME composition.
  • Fixed local Markdown image reload/disposal so an in-flight asynchronous read does not keep an
    image or its temporary directory locked while the host replaces or removes the asset.
  • Fixed Android pointer routing with stable multi-touch IDs, deepest enabled-control hit testing,
    independent capture, tap/click semantics, drag cancellation, and real ScrollableControl
    scrolling rather than an Android-only scroll model.
  • Fixed Android hardware-key and screen-keyboard input, including surrounding text, selection,
    composition updates, committed text, code-point deletion, and activity recreation behavior for
    the shared text-control path.
  • Fixed Android lifecycle, permission coordination, deployment, launcher resolution, diagnostics,
    and Visual Studio launch configuration for the repository samples.
  • Fixed designer rendering and interaction on 100%, 125%, 150%, 175%, and 200% display scaling.
    Logical/device conversion is applied once for the surface, hit testing, drag and resize, grid,
    snapping, selection borders and adorners, resize handles, designer chrome, and SkiaSharp runtime
    previews.
  • Fixed form-size round trips so logical sizes do not drift when code is parsed, regenerated, or
    edited on a High DPI display.
  • Fixed duplicate native borders around Windows forms that draw ModernFormsNext-managed chrome.
  • Fixed generated template content so bin, obj, IDE state, and temporary files cannot leak into
    ModernFormsNext.Templates packages.
  • Fixed solution registration so designer tests remain in the intended solution folder and run in
    solution-level validation.

Experimental

  • Android 1.8.0 can build and run the repository's shared-control sample with SkiaSharp rendering,
    logical-pixel density conversion, basic layout and focus, multi-touch input, scrolling, hardware
    keys, IME text editing, lifecycle tracking, dispatching, and manifest-aware permissions.
  • Android does not yet support general Application.Run(Form), the full WindowKit windowing model,
    multiple framework windows, complete accessibility, native dialogs, clipboard, file pickers,
    drag and drop, or the complete set of platform services. APK and sample Release/AOT paths are
    exercised; general trimming and Android App Bundle/store publication are not release-supported.
  • Android APIs, hosting structure, and runtime behavior may change. Android 1.8.0 is not recommended
    for production applications. See Android platform status.

Documentation

  • Added Android backend, development, permissions, adb, deployment, diagnostics, and
    cross-platform sample guides with an explicit Experimental status and known limitations.
  • Added dynamic resource usage and architecture documentation, including lookup precedence,
    invalidation behavior, weak listeners, diagnostics, and current reflection/AOT considerations.
  • Expanded designer architecture documentation for logical coordinates, High DPI rendering,
    SkiaSharp composition, and the Size/legacy ClientSize round-trip contract.
  • Added public guidance for Markdown viewing/editing, Android development, framework architecture,
    roadmap items, and release packaging.

Packaging

  • Centralized shared NuGet authorship, company, repository, MIT license, package URL, README, icon,
    release notes, Source Link, repository publishing, and symbol-package metadata.
  • Enabled XML documentation and .snupkg symbols for published library packages; template packages
    remain symbol-free because they contain project content rather than a library API.
  • Marked tests, samples, playgrounds, generated applications, and smoke tests as non-packable while
    keeping only intended library and template projects publishable.
  • Kept all existing NuGet package IDs, the VSIX identity and Product ID, publisher, and Visual
    Studio installation targets unchanged.

Breaking changes

  • No intentional public API removals, package renames, namespace moves, target-framework removals,
    or identity changes were found between v1.7.0 and this release.
  • Size is the canonical assignment emitted for forms by the designer. This is a generated-code
    behavior change rather than a runtime API removal; the reverse parser remains compatible with
    legacy ClientSize assignments.
  • Android APIs are new in 1.8.0 and explicitly experimental. Consumers should not treat their
    current hosting shape as a stable production contract.

Known limitations

  • Windows remains the primary and best-supported runtime and designer platform.
  • The Visual Studio designer is still evolving; .mfdesign remains the source of truth and reverse
    parsing intentionally supports only recognized generated-code patterns.
  • Android limitations are listed in Android platform status, including
    the incomplete windowing/service model and the absence of a production release guarantee.