From 33943a907b85b6cda0515da8ec68214f4b4b408b Mon Sep 17 00:00:00 2001 From: Ruben Date: Tue, 17 Mar 2026 11:23:19 +0100 Subject: [PATCH] Document `author` setting for Atom feeds **Date deduplication:** Atom requires unique `` timestamps per entry. Items sharing the same date get seconds incremented to preserve sort order. **Cache-Control for assets:** JSON/GeoJSON get 60s TTL; others get 1 year immutable. --- docs/04-development/02-content-system.md | 1 + docs/04-development/07-rendering.md | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/04-development/02-content-system.md b/docs/04-development/02-content-system.md index b821dbb..302976c 100644 --- a/docs/04-development/02-content-system.md +++ b/docs/04-development/02-content-system.md @@ -54,6 +54,7 @@ Returns flat key-value array with a special `_raw` key containing the full parse | `order` | string | `"descending"` | List sort direction (`ascending`\|`descending`) | | `redirect` | string | — | External URL (list items can redirect) | | `feed` | bool | `false` | Enable Atom feed on list pages (`feed.xml`) | +| `author` | string | title | Atom feed author name (falls back to page title) | | `plugins` | string | — | Comma-separated page-level plugin names | ### Settings Section diff --git a/docs/04-development/07-rendering.md b/docs/04-development/07-rendering.md index c2d1de1..a761287 100644 --- a/docs/04-development/07-rendering.md +++ b/docs/04-development/07-rendering.md @@ -57,6 +57,8 @@ Handled in `router.php` before `parseRequestPath()`. When a request path ends wi Feed piggybacks on the existing Markdown cache — no separate feed cache needed. The `rawDate` field on items provides ISO dates for Atom `` elements. Content is wrapped in `` with `]]>` safely escaped. +**Date deduplication:** Atom requires unique `` timestamps per entry. Items sharing the same date get seconds incremented (`T00:00:00Z`, `T00:00:01Z`, etc.) to ensure uniqueness while preserving sort order. + ## Markdown Caching Defined in `app/cache.php`. File-based cache in `/tmp/folderweb_cache/`. @@ -87,7 +89,9 @@ Files not in this list are not served as static assets. ### Custom Assets (router.php) -Files in `custom/assets/` are served at the document root URL. Example: `custom/assets/favicon.ico` → `/favicon.ico`. Uses `mime_content_type()` for MIME detection. +Files in `custom/assets/` are served at the document root URL. Example: `custom/assets/favicon.ico` → `/favicon.ico`. Uses an explicit MIME type map; falls back to `application/octet-stream`. + +Cache-Control headers: `json` and `geojson` files get `max-age=60` (short TTL for data files); all other asset types get `max-age=31536000` (1 year, immutable). ### Framework Assets (static.php)