yew-nav-link 0.12.5

Navigation link component for Yew with automatic active state detection
Documentation
<!--
SPDX-FileCopyrightText: RAprogramm <andrey.rozanov.vl@gmail.com>
SPDX-License-Identifier: MIT
-->

# Roadmap

Public plan toward stabilising `yew-nav-link` at 1.0. Anything here is a
target, not a promise; the [GitHub milestones][milestones] track the
authoritative cutline of each release.

[milestones]: https://github.com/RAprogramm/yew-nav-link/milestones

## 0.9.x — previous line (closed)

**Released.** Status: closed; no further patches. The active line is 0.10.x.

- 0.9.0 dropped the macros feature.
- 0.9.1 replaced the multi-page demo with a single-file SPA, fixed the
  `use_breadcrumbs` segment-loop shadow binding, and SPDX-tagged every
  source file.
- 0.9.2 surfaced `BreadcrumbLabelProvider` at the crate root.
- 0.9.3 made `BreadcrumbLabelProviderContext` part of the public API so
  consumers can actually inject a provider (the trait alone was reachable
  but inert).
- 0.9.4 fixed `normalize_path` `.`/`..` resolution, made
  `urlencoding_decode` UTF-8 aware, and stopped `pagination_page` panics
  on adversarial inputs.

## 0.10.x — current line

**Released 2026-05-10.** Status: maintained.

The breaking-change pass before 1.0 — four targeted breakages consumers
upgrade through in one hop:

- `NavError` is `#[non_exhaustive]`, leaving room for new variants under
  semver-minor.
- `BreadcrumbLabelProviderContext`'s tuple field is private; construct
  via `::new` and read via `.provider()`.
- The orphan `route_params.rs` module is removed; migrate to
  `use_route::<R>()` with a `Routable` enum.
- Active `NavLink` emits `aria-current="page"` on the rendered `<a>` for
  screen-reader-correct active state.

The line's MSRV is Rust 1.96 (`rust-version` in `Cargo.toml`), enforced by
CI's MSRV matrix on Linux/macOS/Windows.

Subsequent 0.10.x patches address CI, dependency bumps, and
documentation only — no public API changes.

## 1.0.0 — API freeze

**Target window:** earliest 2026-08, after 0.10.x has spent at least
one quarter in the ecosystem with no public API changes. **Status:**
dependent on 0.10 feedback.

The 1.0 commitment is small and deliberately boring:

- **Public API freeze.** Every name re-exported from `lib.rs` becomes a
  semver-stable surface; subsequent breaking changes require a 2.0.
- **Documented backwards-compatibility window** in `SECURITY.md` and
  `docs/REQUIREMENTS.md`: how long 1.x receives security patches.
- **Migration guide** from 0.x in `CHANGELOG.md` for the major bump.

Nothing about 1.0 is meant to be flashy. It is the version we keep
shipping for years.

## Beyond 1.0 — speculative

Tracked in [GitHub Discussions][discuss], not committed to:

- SSR support: yew-router supports it, but the active-state hooks have
  not been tested under SSR.
- Optional `axum-router`-style integration helpers for projects that
  generate their `Routable` enum from a backend.
- A standalone `aria-current` consumer hook for projects that build their
  own link components but want yew-nav-link's matching algorithm.

[discuss]: https://github.com/RAprogramm/yew-nav-link/discussions

## How to influence the roadmap

Open an issue with the `enhancement` label and a clear use case. Concrete,
narrow proposals beat large redesigns; we will steer toward what existing
consumers actually need.