docs: release notes for v3.2.0-beta and version references cleanup
This commit is contained in:
1 parent
0632bf53cb
commit
54f27ac98f
5 files changed
+76
-26
No files matched your search
+2
-1
@@ -2,7 +2,8 @@
|
||||
|
||||
The full, searchable reference is the Integration page of the running app (`/integration`). It
|
||||
renders `web/src/data/apiCatalogue.ts`, which is the single source for this page. This file is for
|
||||
readers without the UI.
|
||||
readers without the UI. Reading articles (pagination, `format`, body schemas) has its own page,
|
||||
[api/articles.md](api/articles.md), and API keys are covered in [api/api-keys.md](api/api-keys.md).
|
||||
|
||||
## Base URL
|
||||
The origin that serves the app, for example `https://cms.example`. Every path starts with `/v1`,
|
||||
|
||||
+4
-4
@@ -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:v2.9.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.0-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-<pre>` (for example `v2.9.0-beta`, `v2.9.0-rc.1`) | `vX.Y.Z-<pre>`, `X.Y.Z-<pre>`, and the moving tag `<pre-name>` (`beta`, `rc`) |
|
||||
| `vX.Y.Z-<pre>` (for example `v3.2.0-beta`, `v3.2.0-rc.1`) | `vX.Y.Z-<pre>`, `X.Y.Z-<pre>`, and the moving tag `<pre-name>` (`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 v2.9.0-beta
|
||||
git tag v3.2.0-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=v2.9.0-rc.1 -- --dry-run
|
||||
task docker:publish VERSION=v3.2.0-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`.
|
||||
|
||||
+19
-16
@@ -17,21 +17,24 @@ Rules: bullets are full sentences ending with a period; user-facing wording, no
|
||||
|
||||
## Published releases
|
||||
|
||||
Each body lives in `docs/releases/<tag>.md`. Publish with `tea releases create --tag <tag> --title "<name>" --note-file docs/releases/<tag>.md --prerelease --asset <file>` after `task release`, with one `--asset` per file: the six binaries, `bin/checksums.txt` and `bin/checksums.txt.sig`. `task release` produces all eight and fails before building when the signing key is missing or wrong (see [deployment.md](deployment.md#release-signing-key-maintainers-once)). Never publish a release without the two checksum files.
|
||||
Each body lives in `docs/releases/<tag>.md`. Publish with `tea releases create --tag <tag> --title "<tag> - <theme>" --note-file docs/releases/<tag>.md --prerelease --asset <file>` after `task release`, with one `--asset` per file: the six binaries, `bin/checksums.txt` and `bin/checksums.txt.sig`. `task release` produces all eight and fails before building when the signing key is missing or wrong (see [deployment.md](deployment.md#release-signing-key-maintainers-once)). Never publish a release without the two checksum files.
|
||||
|
||||
| Tag | Name |
|
||||
| Tag | Theme |
|
||||
| --- | --- |
|
||||
| `2.0.0-beta` (legacy tag without the `v`, kept as is) | v2.0.0-beta - Vue 3 SPA and domain-driven backend |
|
||||
| `v2.1.0-beta` | v2.1.0-beta - Image upload in the editor |
|
||||
| `v2.2.0-beta` | v2.2.0-beta - Image crop, image removal & reset screens |
|
||||
| `v2.3.0-beta` | v2.3.0-beta - Multi-user invitations, display names & profile page |
|
||||
| `v2.4.0-beta` | v2.4.0-beta - Owner role, invite management & Settings page |
|
||||
| `v2.5.0-beta` | v2.5.0-beta - Media library & image picker |
|
||||
| `v2.6.0-beta` | v2.6.0-beta - Signed updates and browser restart |
|
||||
| `v2.6.2-beta` | v2.6.2-beta - English and French interface |
|
||||
| `v2.7.0-beta` | v2.7.0-beta - Markdown and block article bodies |
|
||||
| `v2.8.0-beta` | v2.8.0-beta - API keys and API reference |
|
||||
| `v2.8.1-beta` | v2.8.1-beta - Docker deployment |
|
||||
| `v2.8.2-beta` | v2.8.2-beta - Security headers and clearer log in errors |
|
||||
| `v2.8.3-beta` | v2.8.3-beta - Security policy fixes for the web app |
|
||||
| `v3.1.0-beta` | v3.1.0-beta - Image variants |
|
||||
| `2.0.0-beta` (legacy tag without the `v`, kept as is) | Vue 3 SPA and domain-driven backend |
|
||||
| `v2.1.0-beta` | Image upload in the editor |
|
||||
| `v2.2.0-beta` | Image crop, image removal & reset screens |
|
||||
| `v2.3.0-beta` | Multi-user invitations, display names & profile page |
|
||||
| `v2.4.0-beta` | Owner role, invite management & Settings page |
|
||||
| `v2.5.0-beta` | Media library & image picker |
|
||||
| `v2.6.0-beta` | Signed updates and browser restart |
|
||||
| `v2.6.2-beta` | English and French interface |
|
||||
| `v2.7.0-beta` | Markdown and block article bodies |
|
||||
| `v2.8.0-beta` | API keys and API reference |
|
||||
| `v2.8.1-beta` | Docker deployment |
|
||||
| `v2.8.2-beta` | Security headers and clearer log in errors |
|
||||
| `v2.8.3-beta` | Security policy fixes for the web app |
|
||||
| `v2.9.0-beta` | Media duplicate purge |
|
||||
| `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 |
|
||||
@@ -0,0 +1,46 @@
|
||||
This release adds paginated, searchable article lists, links in the editor and an export of the activity log, and removes the article length limit. The article list API changes shape, so read the upgrading notes if you call it.
|
||||
|
||||
## New
|
||||
|
||||
**Articles**
|
||||
|
||||
- The article list is now paged, with a search box, an Online and Draft filter, sortable columns and a page size of 5, 25, 50 or 100. Counts for All, Online and Draft stay fixed while you search.
|
||||
- Articles have no length limit any more, and a new article can be created without a body.
|
||||
|
||||
**Editor**
|
||||
|
||||
- Insert, edit and remove links directly in the editor.
|
||||
|
||||
**Activity log**
|
||||
|
||||
- The summary cards at the top are now filters: select one to narrow the list, select it again to clear it.
|
||||
- A new Export menu downloads the filtered events as a CSV file.
|
||||
- The date range also accepts "All time".
|
||||
|
||||
**Integration**
|
||||
|
||||
- The Integration page has a new Images section covering image variants, and its code snippets now share one format.
|
||||
|
||||
## Improvements and fixes
|
||||
|
||||
- Each page now sets its own browser tab title, in the form "Page · RenewCMS", instead of keeping the title of the first page loaded.
|
||||
- Registering now waits for the session to be refreshed before showing the pending-approval screen, which fixes a redirect back to the sign in page.
|
||||
- The media and variant screens, the navigation contrast and the shell colors follow the design spec more closely.
|
||||
- The development workflow on Linux no longer deletes the visual check output.
|
||||
|
||||
## API
|
||||
|
||||
- Changed: `GET /v1/article/` always answers `{ items, total, page, size, counts }` instead of a bare array. It accepts `page`, `size` (`5`, `25`, `50`, `100`), `q`, `status` (`online` or `draft`) and `sort` (for example `title:asc`; default `updated_at:desc`). An invalid value answers `400`. Anonymous callers still only see online articles.
|
||||
- Changed: `POST /v1/article/` and `PATCH /v1/article/{id}` no longer reject a body over 10,000 characters, and `POST` accepts an empty body.
|
||||
- `GET /v1/activity` and `GET /v1/activity/export` accept `range=all`.
|
||||
|
||||
## Under the hood
|
||||
|
||||
- Add the paged article query to the article repository contract, with accent-insensitive title search, and promote `golang.org/x/text` to a direct dependency.
|
||||
- Add specifications, design checks and Go and Vitest suites for the new screens.
|
||||
- Document the article list in `docs/api/articles.md` and link the API docs from the README.
|
||||
|
||||
## 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/article/` must now read the `items` property of the response. Without `page` and `size` you get the first 25 articles, so loop over `page` until you have `total` items.
|
||||
Reference in new issue
Block a user