{
  "id": "demo-blog-engine/rss-feed-and-sitemap",
  "slug": "rss-feed-and-sitemap",
  "title": "Session: rss-feed-and-sitemap — 2026-03-25",
  "type": "source",
  "project": "demo-blog-engine",
  "date": "2026-03-25",
  "started": "2026-03-25T10:00:00+00:00",
  "ended": "2026-03-25T11:30:00+00:00",
  "model": "claude-sonnet-4-6",
  "cwd": "/Users/demo/code/demo-blog-engine",
  "git_branch": "feat/feeds",
  "permission_mode": "default",
  "user_messages": "3",
  "tool_calls": "9",
  "tools_used": [
    "Read",
    "Write",
    "Bash"
  ],
  "is_subagent": "false",
  "wikilinks_out": [
    "RSS",
    "Sitemap",
    "demo-blog-engine"
  ],
  "body_text": "Project: demo-blog-engine · Branch: feat/feeds · Mode: default · Model: claude-sonnet-4-6\n\nSummary\n\nEmitted public/rss.xml and public/sitemap.xml during the build. Both are pure string templates — no XML library needed — escaped via a tiny xml_escape helper. Added the feed URL to the <head> of every post page.\n\nConversation\n\nTurn 1 — User\n\nAdd RSS 2.0 + sitemap.xml generation. Keep dependencies light.\n\nTurn 1 — Assistant\n\nWrote src/feeds.rs with two functions:\n\n- build_rss(posts: &[Post]) -> String\n- build_sitemap(posts: &[Post], base_url: &str) -> String\n\nBoth return strings which main.rs writes to public/. Escaping goes through a tiny xml_escape function that handles <, >, &, \", '.\n\nTools used in this turn:\n- Write: src/feeds.rs (5-line preview)\n- Edit: src/main.rs — added feeds::build_rss call\n- Bash: cargo test — exit 0\n\nTurn 2 — User\n\nShip it.\n\nTurn 2 — Assistant\n\nCommitted. Added <link rel=\"alternate\" type=\"application/rss+xml\" href=\"/rss.xml\"> to the post template.\n\nTools used in this turn:\n- Write: templates/post.html (5-line preview)\n\nConnections\n\n- demo-blog-engine — project\n- RSS — concept\n- Sitemap — concept",
  "sha256": "eef2d05a42ebe1b6",
  "source_url": "sessions/demo-blog-engine/rss-feed-and-sitemap.html"
}