Skip to content

Meridian v2.4.0

Latest

Choose a tag to compare

@oernster oernster released this 27 Jun 12:54

Meridian Release Notes

Component-split licensing

Meridian is now dual-licensed by component instead of as a single LGPL-3.0
project:

  • User interface (meridian/ui): LGPL-3.0-or-later, to align with Qt's own
    licensing.
  • Model (meridian/domain, meridian/application, meridian/infrastructure,
    main.py, version.py, build scripts and tests): Apache-2.0, aligning with
    the MMSP specification ecosystem.

The root LICENSE is now an overview and component map. The full texts live in
LICENSE-APACHE-2.0.txt (model) and LICENSE-LGPL-3.0.txt (UI);
LICENSE-GPL-3.0.txt is retained because the LGPL-3.0 incorporates it by
reference.

Two licence buttons in the header

The single "Licence" button has been replaced by two:

  • UI Licence (scroll icon) opens a dialog showing the LGPL-3.0 text.
  • Model Licence (scales icon) opens a separate dialog showing the Apache-2.0
    text.

LicenceDialog.qml is now parameterized (licenceTitle and licenceBody) and
reused for both. main.py injects two context properties, uiLicenceText and
modelLicenceText, read from the two licence-text files. Both buttons are in the
keyboard focus ring with the amber focus ring, Enter/Space activation and
Left/Right lateral movement.

Contributor guidelines

Added CONTRIBUTING.md: the layer invariant, coding standards (no magic numbers,
frozen domain dataclasses, single composition root, 400-line module limit), the
100% branch-coverage gate, the per-layer test table and the design boundaries
(single-device, MMSP pull-only, HTTPS-only) that a contribution has to respect.

Packaging

The Windows (buildexe.py), macOS (builddmg.py) and Linux
(build_flatpak.sh) build scripts now bundle the three licence-text files so the
frozen app resolves both licence dialogs.