May 04, 10-11 AM (36)
May 04, 11-12 PM (61)
May 04, 12-1 PM (34)
May 04, 1-2 PM (49)
May 04, 2-3 PM (64)
May 04, 3-4 PM (33)
May 04, 4-5 PM (64)
May 04, 5-6 PM (49)
May 04, 6-7 PM (13)
May 04, 7-8 PM (32)
May 04, 8-9 PM (45)
May 04, 9-10 PM (9)
May 04, 10-11 PM (54)
May 04, 11-12 AM (24)
May 05, 12-1 AM (4)
May 05, 1-2 AM (5)
May 05, 2-3 AM (5)
May 05, 3-4 AM (11)
May 05, 4-5 AM (11)
May 05, 5-6 AM (50)
May 05, 6-7 AM (16)
May 05, 7-8 AM (37)
May 05, 8-9 AM (81)
May 05, 9-10 AM (68)
May 05, 10-11 AM (34)
May 05, 11-12 PM (72)
May 05, 12-1 PM (115)
May 05, 1-2 PM (118)
May 05, 2-3 PM (66)
May 05, 3-4 PM (91)
May 05, 4-5 PM (41)
May 05, 5-6 PM (26)
May 05, 6-7 PM (28)
May 05, 7-8 PM (73)
May 05, 8-9 PM (31)
May 05, 9-10 PM (18)
May 05, 10-11 PM (25)
May 05, 11-12 AM (17)
May 06, 12-1 AM (10)
May 06, 1-2 AM (5)
May 06, 2-3 AM (9)
May 06, 3-4 AM (23)
May 06, 4-5 AM (7)
May 06, 5-6 AM (13)
May 06, 6-7 AM (30)
May 06, 7-8 AM (11)
May 06, 8-9 AM (106)
May 06, 9-10 AM (27)
May 06, 10-11 AM (41)
May 06, 11-12 PM (46)
May 06, 12-1 PM (86)
May 06, 1-2 PM (53)
May 06, 2-3 PM (43)
May 06, 3-4 PM (33)
May 06, 4-5 PM (18)
May 06, 5-6 PM (8)
May 06, 6-7 PM (12)
May 06, 7-8 PM (26)
May 06, 8-9 PM (13)
May 06, 9-10 PM (9)
May 06, 10-11 PM (30)
May 06, 11-12 AM (23)
May 07, 12-1 AM (7)
May 07, 1-2 AM (2)
May 07, 2-3 AM (1)
May 07, 3-4 AM (10)
May 07, 4-5 AM (4)
May 07, 5-6 AM (33)
May 07, 6-7 AM (97)
May 07, 7-8 AM (235)
May 07, 8-9 AM (42)
May 07, 9-10 AM (29)
May 07, 10-11 AM (55)
May 07, 11-12 PM (39)
May 07, 12-1 PM (59)
May 07, 1-2 PM (48)
May 07, 2-3 PM (47)
May 07, 3-4 PM (44)
May 07, 4-5 PM (58)
May 07, 5-6 PM (10)
May 07, 6-7 PM (24)
May 07, 7-8 PM (30)
May 07, 8-9 PM (12)
May 07, 9-10 PM (18)
May 07, 10-11 PM (65)
May 07, 11-12 AM (20)
May 08, 12-1 AM (6)
May 08, 1-2 AM (19)
May 08, 2-3 AM (19)
May 08, 3-4 AM (8)
May 08, 4-5 AM (3)
May 08, 5-6 AM (20)
May 08, 6-7 AM (19)
May 08, 7-8 AM (53)
May 08, 8-9 AM (34)
May 08, 9-10 AM (12)
May 08, 10-11 AM (32)
May 08, 11-12 PM (40)
May 08, 12-1 PM (30)
May 08, 1-2 PM (45)
May 08, 2-3 PM (46)
May 08, 3-4 PM (26)
May 08, 4-5 PM (23)
May 08, 5-6 PM (29)
May 08, 6-7 PM (15)
May 08, 7-8 PM (10)
May 08, 8-9 PM (14)
May 08, 9-10 PM (16)
May 08, 10-11 PM (23)
May 08, 11-12 AM (12)
May 09, 12-1 AM (4)
May 09, 1-2 AM (1)
May 09, 2-3 AM (0)
May 09, 3-4 AM (6)
May 09, 4-5 AM (6)
May 09, 5-6 AM (2)
May 09, 6-7 AM (6)
May 09, 7-8 AM (4)
May 09, 8-9 AM (4)
May 09, 9-10 AM (3)
May 09, 10-11 AM (9)
May 09, 11-12 PM (6)
May 09, 12-1 PM (21)
May 09, 1-2 PM (24)
May 09, 2-3 PM (12)
May 09, 3-4 PM (14)
May 09, 4-5 PM (7)
May 09, 5-6 PM (0)
May 09, 6-7 PM (2)
May 09, 7-8 PM (3)
May 09, 8-9 PM (1)
May 09, 9-10 PM (8)
May 09, 10-11 PM (33)
May 09, 11-12 AM (16)
May 10, 12-1 AM (15)
May 10, 1-2 AM (0)
May 10, 2-3 AM (0)
May 10, 3-4 AM (5)
May 10, 4-5 AM (0)
May 10, 5-6 AM (4)
May 10, 6-7 AM (0)
May 10, 7-8 AM (17)
May 10, 8-9 AM (8)
May 10, 9-10 AM (1)
May 10, 10-11 AM (26)
May 10, 11-12 PM (4)
May 10, 12-1 PM (49)
May 10, 1-2 PM (18)
May 10, 2-3 PM (8)
May 10, 3-4 PM (13)
May 10, 4-5 PM (26)
May 10, 5-6 PM (10)
May 10, 6-7 PM (7)
May 10, 7-8 PM (23)
May 10, 8-9 PM (12)
May 10, 9-10 PM (10)
May 10, 10-11 PM (29)
May 10, 11-12 AM (19)
May 11, 12-1 AM (12)
May 11, 1-2 AM (5)
May 11, 2-3 AM (5)
May 11, 3-4 AM (7)
May 11, 4-5 AM (3)
May 11, 5-6 AM (12)
May 11, 6-7 AM (28)
May 11, 7-8 AM (60)
May 11, 8-9 AM (32)
May 11, 9-10 AM (64)
May 11, 10-11 AM (6)
4,548 commits this week May 04, 2026 - May 11, 2026
fix(release): require manual publish, fix Latest pointer, pin Windows runners, trim signatures (#5282)
Closes #5281.

Three related fixes to the release pipeline, each in its own commit.

## 1. `chore(release): trim signatures template to current maintainers`

`scripts/release/release-template.md` shipped a 6-row signature table.
The
only currently-active wallet maintainers signing releases are Paolo
Veronelli (@paolino) and Pawel Jakubas (@paweljakubas). Removed the
other
rows so the templated release body no longer needs hand-editing for the
signature section.

## 2. `ci: pin Windows runners to windows-2025-vs2026`

Windows jobs emit a deprecation notice on `windows-latest`:

```
NOTICE: windows-2025 requests are being redirected to windows-2025-vs2026 by May 12, 2026
```

Pinned the four Windows job sites to the new explicit label:
- `.github/workflows/release.yml` (release e2e-windows)
- `.github/workflows/verify-release.yml` (verify-windows)
- `.github/workflows/windows-e2e.yml` (e2e-tests)
- `.github/workflows/windows.yml` (unit-tests)

`windows-2025-vs2026` is GA on GitHub-hosted runners (per
`actions/runner-images#14016`, May 7, 2026). `actionlint` does not yet
know the label; the warning it prints is a tooling lag, not a real
problem.

## 3. `fix(release): require manual publish for real releases`

This addresses two distinct bugs that share the same root cause: the
pipeline publishes too eagerly.

### Bug A — releases auto-undrafted before notes are reviewed

The `publish-release` job called `gh release edit --draft=false`
automatically once `verify-assets` passed. That published
v2026-05-11 as a prerelease with the raw template body — Docker link
placeholder still saying `FIX THIS LINK BY INSPECTING DOCKERHUB !`,
`Fixed/Added/Changed/Removed` sections empty, defunct signers
listed. Notes had to be rewritten in place after the release was
already public.

### Bug B — `releases/latest` API followed `nightly`

```
$ gh api repos/cardano-foundation/cardano-wallet/releases/latest --jq .tag_name
nightly
```

`nightly` is published as a non-prerelease, non-draft release. With
the default `make_latest=legacy` rule, GitHub picks the most recently
published non-prerelease release as Latest — which is `nightly`
every morning, until the next real release. So the "Latest" pointer
on the repo silently followed nightly builds.

### Fixes

`release.yml`:

- `create-release`: `gh release create` now passes `--prerelease` when
`IS_RELEASE != 'true'`. Nightly/test stop overtaking semver releases as
  GitHub's "Latest".
- `publish-release`: auto-un-drafts only nightly/test. For real
  releases it logs a notice ("Edit notes and click Publish in the UI")
  and leaves the draft in place. The maintainer reviews + publishes
  manually.
- `push-docker`: skipped on the release path. Tags renamed to
  reflect it now only handles nightly/test. The `latest` tag push is
  removed (it was already conditional on `IS_RELEASE`, which is now
  always false here).
- `update-docs`: removed from `release.yml`.

New `.github/workflows/publish-release.yml`:

- Triggered on `release.published` (filter:
`!github.event.release.prerelease`).
- `push-docker`: downloads the `cardano-wallet-<tag>-docker-image.tgz`
asset from the release, pushes `cardanofoundation/cardano-wallet:<tag>`
  and `:latest`.
- `update-docs`: checks out `gh-pages`, runs
  `releases/make_redirects.sh "<tag>"`, pushes.

### Flow after this PR

- **Nightly cron**: same UX as before — workflow runs end-to-end,
  release un-drafts as a prerelease, docker `nightly` tag pushed. No
  human action needed. GitHub "Latest" pointer no longer changes.
- **Real release**: workflow builds, verifies, uploads assets to a
  draft. Stops there. Maintainer edits the release notes, then
  clicks "Publish release" in the GitHub UI. That fires
  `release.published`, which runs `publish-release.yml` to push the
  docker image (`<tag>` and `latest`) and update gh-pages redirects.

## Test plan

- [ ] Nightly cron run: release is created as draft prerelease,
un-drafted
by publish-release, `releases/latest` still points to the most recent
      semver release.
- [ ] Manual release run: draft is created, publish-release logs the
notice URL, draft stays as draft, docker is NOT pushed yet, gh-pages
      not updated.
- [ ] Click "Publish release" in the UI: `publish-release.yml` runs,
      docker `<tag>` and `:latest` pushed to Docker Hub, gh-pages
      redirects added.
- [ ] Windows jobs no longer emit the `windows-2025 -> vs2026` redirect
      notice.
- [ ] Templated release body's signature table contains only Paolo and
      Pawel.
docs: add note about Docusaurus docs build location
Adds a short pointer in docs/README.md explaining that
docs/docusaurus is built as part of the hyperledger-identus/docs
repository, where the over-arching configuration lives and
loads these docs in as a git submodule.

Supersedes #1446 (which became stale and conflicted on main);
also fixes a typo ("heald" -> "held") and refreshes the link to
the current hyperledger-identus/docs repo.

Co-Authored-By: mix irving <[email protected]>
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Signed-off-by: Yurii Shynbuiev <[email protected]>