diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md index f7dd11918..6f57fd452 100644 --- a/.github/SUPPORT.md +++ b/.github/SUPPORT.md @@ -1,8 +1,10 @@ Limited free support is only available using the online resources of the -project on GitHub, and Discord, see : +project on GitHub, and Discord, see : +   :house: — home page, blog, news, howto's and tutorials +   :package: — latest release    :speech_balloon: -   :bug: +   :bug: Support contracts, development of new features, fast-tracking of reviews and contributions, customer branding of Infix, and even customer specific diff --git a/README.md b/README.md index b5298608f..3e11dec5c 100644 --- a/README.md +++ b/README.md @@ -170,11 +170,11 @@ APIs. [2]: https://www.sysrepo.org/ "Sysrepo Homepage" [3]: https://www.kernelkit.org/infix/latest/cli/introduction/ [4]: https://www.kernelkit.org/infix/ -[5]: https://github.com/kernelkit/infix/releases +[5]: https://github.com/kernelkit/infix/releases/latest [Latest Build]: https://github.com/kernelkit/infix/releases/tag/latest "Latest build" [License]: https://en.wikipedia.org/wiki/GPL_license [License Badge]: https://img.shields.io/badge/License-GPL%20v2-blue.svg -[Release]: https://github.com/kernelkit/infix/releases +[Release]: https://github.com/kernelkit/infix/releases/latest [Release Badge]: https://img.shields.io/github/v/release/kernelkit/infix [GitHub]: https://github.com/kernelkit/infix/actions/workflows/build.yml/ [GitHub Status]: https://github.com/kernelkit/infix/actions/workflows/build.yml/badge.svg diff --git a/doc/ChangeLog.md b/doc/ChangeLog.md index f81a2ecb9..4efc652ca 100644 --- a/doc/ChangeLog.md +++ b/doc/ChangeLog.md @@ -3,7 +3,7 @@ Change Log All notable changes to the project are documented in this file. -[v26.03.0][UNRELEASED] +[v26.03.0][] - 2026-03-30 ------------------------- ### Changes @@ -13,6 +13,11 @@ All notable changes to the project are documented in this file. - Upgrade FRR to 10.5.3 - Add support for [Banana Pi R64 Mini][BPI-R64], 5 port router with WiFi 5 - Add support for [Raspberry Pi 400][RPI-400], an RPi 4B built into a keyboard +- Significant boot time improvements, issue #1284. The [InitViz][] boot + profiling tool is now included for users who want to visualize and measure + the boot process on their own hardware +- Add OSPF point-to-multipoint (P2MP) and hybrid interface type support. This + also includes support for setting static neighbors, issue #1426 - **Revamped device browser**. Device cards now show the IP address, product name, and firmware version from mDNS TXT records. the mDNS browser is now also available over plain HTTP @@ -25,30 +30,42 @@ All notable changes to the project are documented in this file. - cli: new `show mdns` command to list mDNS-discovered devices on the LAN, with addresses and product model - Add SSH client commands to the CLI: - - `ssh [user ] [port ] ` — connect to a remote device - - `set ssh known-hosts ` — pre-enroll a host key - received out-of-band, e.g. after a factory reset changes the device host key - - `no ssh known-hosts ` — remove a stale or changed host key entry -- Add OSPF point-to-multipoint (P2MP) and hybrid interface type support. This - also includes support for setting static neighbors, issue #1426 + - `ssh [user ] [port ] ` — connect to a remote device + - `set ssh known-hosts ` — pre-enroll a host key + received out-of-band, e.g. after a factory reset + - `no ssh known-hosts ` — remove a stale or changed host key entry - Add support for user-configurable HTTPS certificate: select any certificate stored in the keystore via `services web certificate `. The default auto-generated self-signed certificate is now stored in the keystore rather than in `/cfg/ssl` and existing certificates are auto-migrated on upgrade +- Add NTP `stratum-weight` setting to fine-tune server selection when multiple + NTP sources are available with different stratum levels +- Enable HDMI console output on Raspberry Pi 4 and Pi 400. Previously the + display was suppressed; a login prompt now appears on the HDMI monitor ### Fixes - Fix #892: suppress rousette RESTCONF server warnings from syslog +- Fix #1122: add missing migration script for the YANG validation introduced + in v25.10.0 that disallows IP addresses on bridge member ports. Without + this script, upgrading with such a `startup-config` would prevent the device + from booting. The migration removes all IP addresses from bridge member + ports; any addresses that should be kept must be re-added to the bridge + interface itself after upgrade - Fix #1387: `infix.local` now resolves to exactly one device per LAN. Previously all Infix devices claimed both `hostname.local` and `infix.local`, causing avahi to append `#2`, `#3` suffixes to the shared alias on busy networks. Assignment is now first-come-first-served using standard mDNS conflict resolution +- Fix #1389: firewall policies with names longer than 17 characters were + silently rejected - Fix #1416: `show firewall` command show an error when the firewall is disabled +- Fix #1438: default route from DHCP client not set at boot, regression in v26.02.0 +- Fix #1446: suppress netopeer2-server NETCONF server warnings from syslog +- Fix #1456: update project links in SUPPORT.md and README.md to point to + the home page and blog at , and update the + release link to always resolve to the latest stable release - Fix regression in MVEBU SafeXcel Crypto Engine for Marvell Armada SOCs (37xx, 7k, 8k, and CN913x series). Firmware package lost in v26.01.0 -- Fix #1438: default route from DHCP client not set at boot, regression - introduced in v26.02.0 -- Fix #1446: suppress netopeer2-server NETCONF server warnings from syslog - Fix DHCP client not sending hostname to server (e.g. for `dnsmasq` lease registration). All board factory configs had the hostname option without `value: auto`, so `udhcpc` only requested the option instead of sending it. @@ -60,8 +77,9 @@ All notable changes to the project are documented in this file. `dhcp-authoritative` so clients with unexpired leases are not NAKed after a router crash or factory reset that clears the lease database -[BPI-R64]: https://docs.banana-pi.org/en/BPI-R64/BananaPi_BPI-R64 -[RPI-400]: https://www.raspberrypi.com/products/raspberry-pi-400/ +[BPI-R64]: https://docs.banana-pi.org/en/BPI-R64/BananaPi_BPI-R64 +[RPI-400]: https://www.raspberrypi.com/products/raspberry-pi-400/ +[InitViz]: https://github.com/finit-project/InitViz [v26.02.0][] - 2026-03-01 ------------------------- diff --git a/doc/developers-guide.md b/doc/developers-guide.md index 592b2d7b0..d5d5eb721 100644 --- a/doc/developers-guide.md +++ b/doc/developers-guide.md @@ -175,6 +175,28 @@ making any changes, **always discuss them with the Infix core team**. This helps avoid issues later in development and makes pull request reviews smoother. +### Configuration Migration + +> [!IMPORTANT] +> Whenever a YANG model change makes existing `startup-config` files +> incompatible — removing a node, renaming a key, restructuring a +> container — you **must** include a migration script so that devices +> upgrading in the field are not left unbootable. + +Migration scripts live in `src/confd/share/migrate//` where +`` is the confd version (defined in `src/confd/configure.ac`) +that introduces the breaking change. Each script receives the path to +the startup configuration file as its first argument and must edit it +in-place. Scripts are run in lexicographic order, so prefix them with +a number (e.g. `40-my-change.sh`). + +See `src/confd/share/migrate/1.6/40-bridge-port-remove-ip.sh` for a +worked example, and the [Configuration Migration][upgrade-migration] +section of the Upgrade documentation for the user-facing side of this +mechanism. + +[upgrade-migration]: upgrade.md#configuration-migration + ### `confd` The Infix `src/confd/` is the engine of the system. Currently it is a diff --git a/doc/index.md b/doc/index.md index 3086f203d..19a3aefce 100644 --- a/doc/index.md +++ b/doc/index.md @@ -18,6 +18,14 @@ This document provides an introduction of key concepts, details how the system boots, including failure modes, and provides links to other documents for further study. +## Project Links + +| **Topic** | **URL** | +|---------------------------------------------|------------------------------------------------------| +| :fontawesome-solid-house: Home page & blog | | +| :fontawesome-brands-github: GitHub | | +| :fontawesome-solid-box-open: Latest release | | + ## Command Line Interface The command line interface (CLI, see-ell-i) is the traditional way of diff --git a/mkdocs.yml b/mkdocs.yml index c468c7518..bc640dc3d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -129,6 +129,9 @@ markdown_extensions: - pymdownx.highlight: anchor_linenums: true - pymdownx.inlinehilite + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.snippets - pymdownx.tabbed: alternate_style: true