Skip to content

Tags: raystack/chronicle

Tags

v0.12.5

Toggle v0.12.5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: await full SSR stream so first-byte HTML contains page content (#…

…159)

renderToReadableStream resolves when only the shell is ready, so the
first flush contained just the Suspense skeleton fallback while real
content streamed in later chunks. Await stream.allReady before
responding so the complete document ships in a single response.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

v0.12.4

Toggle v0.12.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: fallback to site description when page description missing (#149)

Pages without frontmatter description now use config.site.description
for meta description, og:description, and twitter:description tags.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.12.3

Toggle v0.12.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
perf: preload API specs fetch in SSR head (#146)

Browser starts fetching /api/specs as soon as <head> is parsed,
overlapping with JS bundle download instead of waiting for it.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.12.2

Toggle v0.12.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: add structured OTel request logs with source IP (#117)

Adds OpenTelemetry SDK logs to the telemetry plugin, emitting structured
log records to stdout for every HTTP request. Each log includes
client.address (from x-forwarded-for/x-real-ip/remoteAddress), method,
route, status code, and duration.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.12.1

Toggle v0.12.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: design QA sidebar spacing and alignment (#111)

* fix: sidebar spacing and alignment

- Sub-nav horizontal padding: 24px → 28px
- Remove extra bottom padding on cardWrapper
- Remove gap between top link items
- Section spacing maintained at 24px

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: sidebar spacing adjustments

- Remove margin-bottom from topLinks
- Nav group header: zero top/bottom padding, 12px margin-bottom
- Remove h3 margin inside sidebar nav groups

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: target h3 margin via navGroupHeader classNames prop

Replace global selector hack with scoped .navGroupHeader h3.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove extra margins and padding from sidebar nav groups

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.12.0

Toggle v0.12.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: mobile responsive layout for default theme (#99)

* feat: add mobile responsive layout for default theme

Sidebar becomes slide-out drawer on <768px with backdrop overlay.
Desktop sub-nav replaced with mobile header (hamburger + logo +
search + theme switcher). Sidebar closes on navigation. Content
padding and spacing reduced for mobile.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: match mobile layout to Figma design

- Hamburger moved to right side with search + theme switcher
- Menu is full-screen overlay below navbar (not side drawer)
- Bottom prev/next navigation cards on mobile
- Toggle between hamburger and X icon
- Card 100% width on mobile
- Content padding 40px top, 16px horizontal per Figma specs
- Mobile nav gap 40px between prev/next cards

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address CodeRabbit review comments for mobile layout

- Hide hamburger button when hideSidebar is true
- Add type=button, aria-expanded, aria-controls for accessibility
- Move mobileMenu data-open rule inside media query only
- Add version switcher to mobile menu

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove min-width on API right block for mobile

Reset min-width and max-width on stacked layout so code blocks
don't overflow on mobile viewports. Add overflow-x: auto on
code snippet body.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: reduce API layout gap on mobile

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: reduce API layout gap only on mobile (768px)

Keep original gap at 1100px tablet breakpoint, reduce to space-5
only at 768px mobile breakpoint.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.11.3

Toggle v0.11.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: include externalDocs link in API markdown output (#106)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.11.2

Toggle v0.11.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: normalize backslashes in image URLs for Windows paths (#101)

* fix: normalize backslashes in image URLs

Windows-style paths (adminimgs\project_1.png) caused 404s
because backslashes aren't valid in URLs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: add backslash normalization tests for Windows path support

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: guard decodeURIComponent and use @ alias in test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.11.1

Toggle v0.11.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
ci: add Docker build and run tests for Node and Bun (#100)

* ci: add Docker build and run tests for Node and Bun

Build and health-check chronicle with basic example on both runtimes.
Verifies server starts, pages render, and search API responds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: move Dockerfiles to docker/ directory

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use node:24-slim and fix curl flags for redirect check

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: exclude test files from Nitro server bundle

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: split verify steps for better CI debug output

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: update CI checks to test index, page API, and search API

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: add image optimization API test

Add test PNG to basic example and verify /api/image endpoint in CI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: replace curl checks with node smoke test script

8 assertions: index, page API, search API, search query,
image resize, image 400, image invalid width, image 404.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: rename docker/ to docker-tests/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: run Docker smoke tests only on pull requests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: move Docker smoke tests to separate pr.yaml workflow

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: rename pr.yaml to docker-smoke-test.yaml

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use npm/bun init + local install instead of global

Pack CLI as tarball, init project in runner, install locally.
Tested on both Node and Bun — all 8 smoke tests pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: rename workflow name to docker-smoke-test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use /api/ready instead of /api/health for server readiness

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.11.0

Toggle v0.11.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: on-demand image optimization with sharp (#95)

* feat: on-demand image optimization with sharp

Add /api/image endpoint that resizes and converts content images to
WebP on first request, caching results to disk. Images go from ~1.8MB
originals to ~6KB optimized WebP at 640w.

- New /api/image endpoint: accepts url, w (width), q (quality) params
- Remark plugin rewrites image URLs to point through optimization endpoint
- Image component and SSR preload use optimized URLs
- SVGs pass through unchanged, sharp externalized for Nitro bundling
- Allowlisted widths prevent cache flooding

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove unnecessary window.Image, use Image directly

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: rename Image component to MDXImage

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: use top-level import for sharp

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: content negotiation via Accept header for image format

Serve AVIF, WebP, or original format based on browser Accept header.
AVIF preferred > WebP > original (resized only). Adds Vary: Accept
for proper CDN caching.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: use Nitro storage for image cache instead of manual fs

Portable across deployment targets (filesystem, KV, Redis, etc.).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: extract image-cache storage key to constant

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: configure fs storage driver for image cache

Persists optimized images to .cache/images/ on disk. Survives
server restarts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use StatusCodes from http-status-codes, fix lint error

Move useStorage before early returns to satisfy Biome hook ordering
rule. Replace magic status numbers with StatusCodes constants.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: restore semicolons in new files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: extract DEFAULT_WIDTH and DEFAULT_QUALITY constants

Replace magic numbers 1024 and 75 with named constants from
image-utils.ts, used across all image optimization call sites.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: add tests for image optimization utilities and API

24 tests covering negotiateFormat, cacheKey, MIME mapping,
isLocalImage, isSvg, buildOptimizedUrl, and constants.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address image optimization review comments

- Restrict quality to allowed steps [60, 75, 90, 100] with snap-to-nearest
- Add cache stampede protection via in-flight promise map
- Add LRU cache eviction with 500 entry cap
- Skip image optimization rewrite for static build presets
- Accept optimize option in remark-resolve-images plugin

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>