# Changelog

All notable changes to `mgf-fed-web` are documented here. The format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres
to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.3] - 2026-07-16

### Added
- **This console now has a real UI gate (WUI-07).** `tests/e2e/` carries its browser
  specs and its own `console_launch` glue, moved out of `mgf-uitest-web` — a
  console's UI gate belongs next to the code it gates, so a change to this chrome
  reds **this** repo's CI rather than the harness's. Adding `mgf-uitest-web` to the
  `dev` extra is all it takes: `mgf-fed` (>=0.14.0) detects the dependency and
  splices a dedicated `ui-gate` step (pinned Chromium, then `pytest tests/e2e -m e2e`)
  into the rendered pipeline. **15 specs**, green against this console.

  They live under the canonical `tests/e2e/` (TS-20), not a bespoke `tests/ui/`: a
  spec that boots the console as a subprocess and drives it through a browser IS a
  full bootstrap-to-output chain. The gate is a **separate step** because this repo's
  `addopts` deselect `e2e` by default — specs left inside a normal `pytest -q` job
  would be silently deselected, i.e. a gate that looks present and never runs.

  The console is launched with `sys.executable -m mgf.fed_web`, so the console under
  test is always **this checkout** — the specs previously reached into a hard-coded
  `/home/bassam/PycharmProjects/...` path and *skipped* when it was absent, which
  meant they effectively ran nowhere in CI.

  The three findings this harness originally surfaced here are now **real gates, not
  xfails**: the WCAG-AA contrast fix (0.2.1) and the mobile topbar fix
  (`mgf-brand-web` 0.5.2) must stay fixed; the third was a *false* finding from an
  unpinned browser, which is why the harness pins it.

## [0.2.2] - 2026-07-16

### Changed
- **`mgf-fedres` pin walked `>=0.1,<0.2` → `>=0.2,<0.3`.** The window EXCLUDED the
  current `mgf-fedres` (0.2.0), so this console could never pick it up and the
  federation's REL-13 consistency gate was RED. The pin was stale by convention,
  not by contract: fedres 0.2.0 "released what accumulated on `main` since v0.1.1"
  (the relicence + fixes), not an API break. **Verified rather than assumed** — the
  full suite passes against fedres 0.2.0 (73 passed). Released rather than merged
  alone: changing a dependency pin without a version bump would leave devpi's
  `0.2.1` wheel and `main`'s `0.2.1` meaning two different things (PAPER-130).

## [0.2.1] - 2026-07-16

### Fixed
- **Force-sync action contrast (WCAG AA).** In the always-dark topbar, the `.fw-act--gold` trigger used the theme accent (dark gold on light) and failed contrast on the dark chrome (3.1:1). It now uses the bright brand gold — mirroring the kit's own `.button-secondary` dark-chrome treatment. Surfaced + verified by the new `mgf-uitest-web` browser harness.

## [0.2.0] - 2026-07-14

### Changed
- **Released what accumulated on `main` since v0.1.0.** Ships the Apache-2.0 relicence (the published v0.1.0 wheel still carried `License: MIT` with no `NOTICE`) plus the fixes and pin updates merged since. A fix that isn't released isn't shipped; `mgf/tools/verify_release_currency.py` (now devpi-aware) flags this class.

## [Unreleased]

## [0.2.4] - 2026-07-25

### Changed
- **`mgf-fedres` pin widened to `>=0.3,<0.5`** so the shipped 0.4.0 resolves. The pin
  moved on `main` on 2026-07-23 (as part of clearing a RED federation consistency gate)
  but was never released — so the published 0.2.3 wheel still refused 0.4.0 while
  `main` claimed to allow it. This release makes the published artifact match `main`,
  which is what **REL-14** requires; the drift was caught by the release-currency check
  during the 2026-07-24 MGF Family feedback review (PAPER-130).

### Planned — the FastAPI app (Phase B, M2+)

- **B/M2** the web shell + legend + federation overview + one project's lenses, read
  through the spine's `DiskProvider` from `generated/`.
- **B/M3** the sync UI: shallow-on-load, deep `Check sync`, `Force-sync`, per-project +
  global, the full state language + the sync matrix.
- **B/M4** the feedback loop: compose → produce + deliver `feedback.json`; ingest
  `response.json`; the round thread (`open`/`answered`, `agent_raised`).
- **B/M5** polish: print / export + the project review pack; architecture graph mode;
  `derived` cross-project overview; multi-project.
- **B/M6** Follow-live: the live-activity mode on the In-progress lens, telemetry-tagged
  + gate-excluded. *(M7 package mode left stubbed behind the spine's `SourceProvider`.)*

> Not yet released. See the spine's
> [docs/planning/PLAN.md](https://codeberg.org/magogi-admin/mgf-fedres/src/branch/main/docs/planning/PLAN.md)
> (Phase B).

## [0.1.0] — skeleton (DOC-01 baseline + packaging shape)

> Initial pre-alpha cut (Development Status :: 2 — Pre-Alpha); not yet tagged or
> published. **Skeleton only** — no FastAPI app, routes, templates, or lenses yet.

### Added

- The **DOC-01 documentation baseline** — README, LICENSE, CHANGELOG, CONTRIBUTING,
  SECURITY, FEEDBACK, AGENTS, STARTHERE, DEPS, FEDERATION + the `docs/` tree
  (`docs/claude/`, `docs/memory/`, `docs/inprogress/`) and the conformance ledger.
- The **packaging shape** — the `mgf.fed_web` PEP 420 namespace package
  (`__init__.py` + `py.typed`), the hatchling FastAPI/Jinja distribution (FastAPI as a
  core dep, matching `mgf-cloud-app`), the `mgf-fed-web` console entry point (declared;
  served by the M2+ app), and the `[tool.ruff]`/`[tool.mypy]`/`[tool.pytest]`/`[tool.coverage]`/`[tool.uv]`
  configuration mirrored from the `mgf-fedres` spine.

[Unreleased]: https://codeberg.org/magogi-admin/mgf-fed-web/src/branch/main
[0.1.0]: https://codeberg.org/magogi-admin/mgf-fed-web/src/branch/main/CHANGELOG.md
