scavold 0.2.0-rc.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,11 +4,114 @@ All notable changes to Scavold are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), versions follow
5
5
  [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- While the version stays below `1.0.0` and carries a pre-release suffix, breaking
8
- changes may occur in any release.
7
+ While the version stays below `1.0.0`, a minor release may break what the previous
8
+ one offered; a patch release does not.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.2.0] — 2026-10-04
13
+
14
+ ### Added
15
+
16
+ - Named menus. A site declares them under `menus` in `.cratly.config.yaml`, a page
17
+ chooses in its `menus` front matter which of them it appears in, and the theme renders
18
+ one with `<ScavoldMenu menu="footer">` — so a page no longer has to sit in a folder of
19
+ its own, hidden from its URL by an alias, just to be collected into a footer. `depth`,
20
+ `active-only` and `expand` descend below each listed page as before, and a page
21
+ chosen along with its parent is listed below it there — or beside it in a flat menu,
22
+ which stays flat. `from-path` and `from-root` narrow the part of the site searched,
23
+ e.g. to one language. A name the site does not declare is warned about at build time.
24
+
25
+ ### Changed
26
+
27
+ - A page choosing named menus only leaves the page tree's menus unless it chooses
28
+ `auto` as well. Pages without `menus` front matter are listed exactly as before.
29
+
30
+ ## [0.2.0-rc.12] — 2026-10-03
31
+
32
+ ### Added
33
+
34
+ - `:::cover` takes `tone=light` or `tone=dark` for content on top that is meant to be
35
+ light or dark, depending on the picture. It only marks the cover with
36
+ `scavold-cover--light` or `scavold-cover--dark`; the colours are the theme's. The
37
+ editor offers it as a choice.
38
+
39
+ ## [0.2.0-rc.11] — 2026-10-01
40
+
41
+ ### Added
42
+
43
+ - A container opening a page carries an empty `data-leading` attribute, and the page
44
+ data name it as `leadingContainer` — known before the content renders, so a layout
45
+ can arrange its own parts around a cover at the top of a page, e.g. move its
46
+ breadcrumb below it. Both are information only; nothing changes for a theme that
47
+ does not ask.
48
+
49
+ ## [0.2.0-rc.10] — 2026-10-01
50
+
51
+ ### Added
52
+
53
+ - `:::cover` shows an image or a video across the full width and height of the
54
+ window, cropped to fit, with the block's content laid on top. An image comes with
55
+ all its variants and a `sizes` value that accounts for the cropping; a video plays
56
+ muted in a loop while at least half of it is on screen, stays still for visitors
57
+ asking for reduced motion, and always has a button to pause it. The editor offers it
58
+ as a section type.
59
+ - A container argument declared as `media-file` that names an image hands its
60
+ component the variants and dimensions as well, as `data-<arg>-srcset`,
61
+ `data-<arg>-webp-srcset`, `data-<arg>-width` and `data-<arg>-height`.
62
+ - `<ScavoldImage>` takes `loading` and `fetchpriority`, for an image at the top of a
63
+ page.
64
+ - `useAutoplay()` brings the same autoplay behaviour to a site's own video component.
65
+
66
+ ### Changed
67
+
68
+ - A `:::video` with `autoplay` plays only while at least half of it is on screen, and
69
+ pauses when scrolled away — unless the visitor turned the sound up. It stays paused
70
+ for visitors whose system asks for reduced motion, and once the visitor paused it.
71
+ The `autoplay` attribute is no longer part of the markup: it started the video at
72
+ once, wherever it was on the page and before reduced motion could be checked.
73
+
74
+ ### Removed
75
+
76
+ - The `overlay` and `controls` arguments of `:::video`. Use `:::cover` for a video
77
+ with content on top: the background mode had no way to pause a looping video, which
78
+ WCAG 2.2.2 requires, and ignored reduced motion. A `:::video` now always is a player
79
+ with its controls; a block still carrying `overlay` renders as one, with its content
80
+ as fallback text. `useVideo()` no longer returns `overlay` and `controls`, and the
81
+ `.scavold-video--overlay`, `.scavold-video__media` and `.scavold-video__overlay`
82
+ classes are gone.
83
+
84
+ ## [0.2.0-rc.9] — 2026-10-01
85
+
86
+ ### Fixed
87
+
88
+ - An image wider than the largest of `image_widths` named that width twice in its
89
+ `srcset`, and had its widest variant written twice at the same time.
90
+
91
+ ## [0.2.0-rc.8] — 2026-10-01
92
+
93
+ ### Added
94
+
95
+ - `SECURITY.md` says how to report a vulnerability and which versions receive fixes,
96
+ beside the [cratly security policy](https://cratly.io/security) it belongs to.
97
+ Every release's tag pipeline keeps a CycloneDX SBOM of what a site installs along
98
+ with scavold, and checks those packages for known vulnerabilities; `bun run sbom`
99
+ and `bun run audit:runtime` do the same locally.
100
+
101
+ ### Fixed
102
+
103
+ - A photo whose camera stored it turned, saying in its EXIF data how to show it, came
104
+ out upside down or lying on its side on the site, and a portrait got the variant
105
+ widths of a landscape. The variants are now turned the way the photo says, and
106
+ measured by the width it is shown at. Every image gets new variant names once, so
107
+ variants kept between builds are written again rather than served as they were.
108
+
109
+ ### Security
110
+
111
+ - `sharp` 0.35, whose bundled libvips and libheif fix vulnerabilities reported against
112
+ 0.34 (GHSA-f88m-g3jw-g9cj, GHSA-rgj7-g3m4-5g8c). It needs Node 20.9 or newer, and so
113
+ does scavold now.
114
+
12
115
  ## [0.2.0-rc.7] — 2026-09-29
13
116
 
14
117
  ### Fixed
@@ -258,7 +361,13 @@ First published release. Version `0.1.0` existed in-tree only.
258
361
  - Only images are processed out of `media_folder`; other file types (video, documents)
259
362
  are never copied into the build output and have to live in the static folder.
260
363
 
261
- [Unreleased]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.7...main
364
+ [Unreleased]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0...main
365
+ [0.2.0]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.12...v0.2.0
366
+ [0.2.0-rc.12]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.11...v0.2.0-rc.12
367
+ [0.2.0-rc.11]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.10...v0.2.0-rc.11
368
+ [0.2.0-rc.10]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.9...v0.2.0-rc.10
369
+ [0.2.0-rc.9]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.8...v0.2.0-rc.9
370
+ [0.2.0-rc.8]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.7...v0.2.0-rc.8
262
371
  [0.2.0-rc.7]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.6...v0.2.0-rc.7
263
372
  [0.2.0-rc.6]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.5...v0.2.0-rc.6
264
373
  [0.2.0-rc.5]: https://gitlab.com/cratly/scavold/-/compare/v0.2.0-rc.4...v0.2.0-rc.5