diff --git a/docs/docker.md b/docs/docker.md index 18c70a0..b038c7f 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -21,7 +21,7 @@ Requirements: Docker with Compose v2. [task](https://taskfile.dev) is optional f docker compose up -d ``` - `docker-compose.yml` uses `image: ${RENEWCMS_IMAGE:-git.floriansylvain.fr/fsylvain/renewcms:beta}`. The default tag is `beta` because `latest` does not exist until the first stable release (the default changes to `latest` then). Set `RENEWCMS_IMAGE` in your shell or in a `.env` file next to the compose file to pin another tag, for example `RENEWCMS_IMAGE=git.floriansylvain.fr/fsylvain/renewcms:v3.2.0-beta`. + `docker-compose.yml` uses `image: ${RENEWCMS_IMAGE:-git.floriansylvain.fr/fsylvain/renewcms:beta}`. The default tag is `beta` because `latest` does not exist until the first stable release (the default changes to `latest` then). Set `RENEWCMS_IMAGE` in your shell or in a `.env` file next to the compose file to pin another tag, for example `RENEWCMS_IMAGE=git.floriansylvain.fr/fsylvain/renewcms:v3.2.1-beta`. To build from the local sources instead, see [Building from source](#building-from-source). @@ -50,7 +50,7 @@ docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build | Release | Tags pushed | |---|---| | `vX.Y.Z` (stable) | `vX.Y.Z`, `X.Y.Z`, `X.Y`, `latest` | -| `vX.Y.Z-
` (for example `v3.2.0-beta`, `v3.2.0-rc.1`) | `vX.Y.Z-
`, `X.Y.Z-
`, and the moving tag `` (`beta`, `rc`) |
+| `vX.Y.Z-
` (for example `v3.2.1-beta`, `v3.2.1-rc.1`) | `vX.Y.Z-
`, `X.Y.Z-
`, and the moving tag `` (`beta`, `rc`) |
 
 A pre-release never moves `latest`. Images are published for `linux/amd64` and `linux/arm64`. `renewcms --version` in the image prints the exact release tag. Images are not signed; the Ed25519 key signs the release binaries only.
 
@@ -198,7 +198,7 @@ Publishing is a manual, maintainer-run task, like `task release`. There is no CI
 1. Tag the release and keep the work tree clean:
 
    ```sh
-   git tag v3.2.0-beta
+   git tag v3.2.1-beta
    ```
 
 2. Log in once to the registry. The task never reads or stores credentials:
@@ -226,7 +226,7 @@ Publishing is a manual, maintainer-run task, like `task release`. There is no CI
 
 ```sh
 task docker:publish -- --dry-run
-task docker:publish VERSION=v3.2.0-rc.1 -- --dry-run
+task docker:publish VERSION=v3.2.1-rc.1 -- --dry-run
 ```
 
 The dry run builds for the host platform only, loads the image into the local Docker, pushes nothing and needs no login. It prints the tags a real run would push. A `VERSION` override is accepted only with `--dry-run`, and a dirty tree is allowed there. Remove the loaded images afterwards with `docker rmi`.
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 71dbf77..9123d09 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -38,3 +38,4 @@ Each body lives in `docs/releases/.md`. Publish with `tea releases create -
 | `v3.0.0-beta` | Activity log, more databases and S3 storage |
 | `v3.1.0-beta` | Image variants |
 | `v3.2.0-beta` | Article lists, editor links and activity export |
+| `v3.2.1-beta` | Paged media library and remembered page sizes |
diff --git a/docs/releases/v3.2.1-beta.md b/docs/releases/v3.2.1-beta.md
new file mode 100644
index 0000000..f9aec3b
--- /dev/null
+++ b/docs/releases/v3.2.1-beta.md
@@ -0,0 +1,31 @@
+This release pages the media library, remembers your page size on the article, activity and media lists, and previews image variants on a real sample photo. The media list API changes shape, so read the upgrading notes if you call it.
+
+## New
+
+**Media library**
+
+- The media library is now paged, with a page size of 5, 25, 50 or 100. The image picker in the editor uses the same pages.
+
+**Image variants**
+
+- Creating a variant shows a preview rendered from a real sample image, so the size estimate and the before and after comparison match what visitors will get.
+
+## Improvements and fixes
+
+- The article, activity and media lists keep their page and page size in the address, so a reload or a shared link opens the same view.
+- The Integration page is now fully translated into French.
+
+## API
+
+- Changed: `GET /v1/media/` answers `{ items, total, page, size, counts }` instead of `{ items, next_cursor, counts }`. It accepts `page` (default `1`) and `size` (`5`, `25`, `50` or `100`, default `25`). An invalid value answers `400`.
+- Changed: `GET /v1/media/` no longer accepts `cursor` or `limit`.
+
+## Under the hood
+
+- Replace the cursor and limit of the media list query with a page and a size in the image domain and the list use case.
+- Add specifications, design checks and Go and Vitest suites for the paged media screens.
+
+## Upgrading
+
+- Replace the binary, or pull the new image. There is no schema change and no new environment variable.
+- Any script or site that reads `GET /v1/media/` must now read `total` and loop over `page` instead of following `next_cursor`.