|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## 0.2.0 |
| 4 | + |
| 5 | +### Minor Changes |
| 6 | + |
| 7 | +- cf8eecd: Add a full blog system on top of Page Collections: |
| 8 | + - **Page Feeds**: archive Pages can export `feed` to publish a Page Collection as an Atom feed at `<page path>/feed.xml`, served in development and emitted during static builds. |
| 9 | + - **Static Params**: parameterized static JavaScript Pages can export `staticParams` to enumerate concrete output documents (for example one tag archive per tag) that build statically and join the Sitemap. |
| 10 | + - **Atlas blog layouts**: `atlasPostLayout` renders posts with a byline (date, authors, tag links) and `atlasBlogIndexLayout` renders the paginated post list with feed link, both exported from `@rocket/js/layouts/atlasBlog.js`. |
| 11 | + |
| 12 | +- 1d98f7c: Add Atlas Layout Head Content to documentation, hero, blog post, blog index, and not-found layouts. Shared layout data can now define a synchronous `headContent` callback that receives the current `PageData` and returns trusted Lit markup appended at the end of `<head>`. |
| 13 | + |
| 14 | + Rename the document helper's direct head fragment option from `headerContent` to `headContent`. The obsolete name is removed without a compatibility alias. |
| 15 | + |
| 16 | +- 60e2434: Reliability, correctness, and cleanup pass across the framework. |
| 17 | + |
| 18 | + CLI: |
| 19 | + - `rocket --help` now shows the `rocket` name, version, and command descriptions. |
| 20 | + - Expected errors print a clean message instead of a stack trace (set `ROCKET_DEBUG=1` for the full error). |
| 21 | + - Missing `rocket-config.js` now suggests `npx rocket init` instead of failing with `ERR_MODULE_NOT_FOUND`. |
| 22 | + - `rocket build --output-dir` refuses to write (and clear) directories outside the project root on every build path. |
| 23 | + - `rocket start` now observes the dev-server child process: crashes no longer leave a hung parent, restarts wait for the old process to exit before respawning, and SIGINT/SIGTERM shut down cleanly and restore the terminal. |
| 24 | + |
| 25 | + Core pipeline: |
| 26 | + - `node_modules` is excluded from Page discovery again (the guard was unreachable with the default empty `excludeRegex`). |
| 27 | + - `PageData` copies Page Metadata per render, so setting `pageData.title` no longer mutates the shared Page Registry across requests. |
| 28 | + - Titles derived from paths with a trailing slash (e.g. `/docs/`) no longer fall back to `Home`. |
| 29 | + - The generated `import { html } from 'lit'` detection now parses the module instead of using a regex that false-positived on imports like `htmlEscape`. |
| 30 | + - A ```js demo code block without exports now reports a clear authoring error instead of crashing. |
| 31 | + - `demo label="..."` code blocks are now consistently detected for Standalone Demo URLs. |
| 32 | + - Dynamic paths (e.g. `/blog/:slug/`) no longer clobber their parent menu entry. |
| 33 | + - Invalid Registered Component `loading` values now fail with an error naming the component. |
| 34 | + - `includeGlobs` is validated and the user config object is no longer mutated; config import works on Windows via file URLs. |
| 35 | + - `treeFromPages` page trees are computed lazily and route `URLPattern`s are cached per route path. |
| 36 | + |
| 37 | + Components and hydration: |
| 38 | + - `hydrate:onHover` now actually hydrates (it was parsed but never wired). |
| 39 | + - Click/focus/hover hydration triggers now match light-DOM descendants of the host element. |
| 40 | + - The hydration loader no longer leaks a `MediaQueryList` listener per element, and cleanup runs whenever any element hydrated. |
| 41 | + - `rocket-drawer` closed state is removed from the tab order and accessibility tree, closes on Escape, and manages focus. |
| 42 | + - `rocket-social-link` validates the icon name, caches SVG file reads, and lists supported names in its error. |
| 43 | + - The Social Preview Playground prefers the selected Page's title/description, debounces typing, and skips redundant iframe reloads and `history.replaceState` calls. |
| 44 | + - The markdown import hook sends module-dependency messages explicitly fire-and-forget (awaiting a reply can deadlock Node's module-hooks thread), and `makeAsyncPort`'s `sendAndWait` now returns the reply promise instead of a resolvers object. |
| 45 | + |
| 46 | + Layouts and generated output: |
| 47 | + - The default layout uses `<nav aria-label="Site">` and `<main>` landmarks; `defaultHtmlMenu` renders valid nested lists and no-link sections as text. `treeToHtml` item functions now receive the rendered child list as a fifth argument and must place it inside the returned item. |
| 48 | + - The Atlas hero layout no longer injects a hardcoded `/examples` nav link when `navLinks` is not configured. |
| 49 | + - The Atlas 404 layout reuses the shared header logo renderer (correct alt text) and guards against a missing logo. |
| 50 | + - Social Preview Image builds reuse one Chromium instance across captures, and Linux falls back to a locally installed browser when the bundled Chromium is unavailable. |
| 51 | + - Redirect sources/targets containing whitespace are rejected at config time (they would corrupt Netlify `_redirects`). |
| 52 | + - The dev server caches Public Asset discovery instead of re-walking `public/` on every request. |
| 53 | + |
3 | 54 | ## 0.1.2 |
4 | 55 |
|
5 | 56 | ### Patch Changes |
|
0 commit comments