[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"journal-post-summercms-0-1-27":3},{"author":4,"categories":8,"content":9,"content_html":10,"created_at":11,"excerpt":12,"featured_image_url":9,"featured_images":13,"id":14,"is_pinned":15,"metadata":9,"next_post":16,"previous_post":20,"published":24,"published_at":25,"reading_time":6,"related_posts":26,"slug":27,"sources":9,"tags":28,"title":29,"translations":9,"updated_at":11},{"first_name":5,"id":6,"last_name":5,"login":7},"",1,"jakubzych@gmail.com",[],null,"\u003Ch2>Highlights\u003C\u002Fh2>\n\u003Cp>A big infrastructure release: a new \u003Ccode>cooler\u003C\u002Fcode> cache module, cookie-based token auth across subdomains, per-route CORS profiles, Cloudflare Turnstile, and opt-in S3 uploads behind a build tag.\u003C\u002Fp>\n\u003Ch2>Added\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ccode>cooler.Cache\u003C\u002Fcode> with in-memory and Redis drivers, and a Redis store that shares rate limits across instances.\u003C\u002Fli>\n\u003Cli>A site-cache purge after admin saves, configured with \u003Ccode>site_cache.purge_url\u003C\u002Fcode> and \u003Ccode>purge_token\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Token refresh through cookies across subdomains in \u003Ccode>bouncer\u003C\u002Fcode>, with hardened credentialed CORS.\u003C\u002Fli>\n\u003Cli>Per-group CORS policies through \u003Ccode>cors:&lt;profile&gt;\u003C\u002Fcode> middleware, with preflights registered on the router.\u003C\u002Fli>\n\u003Cli>Cloudflare Turnstile verification as \u003Ccode>turnstile:open\u003C\u002Fcode> or \u003Ccode>turnstile:closed\u003C\u002Fcode> middleware.\u003C\u002Fli>\n\u003Cli>An opt-in \u003Ccode>\u002Fapi-docs\u003C\u002Fcode> Swagger UI page.\u003C\u002Fli>\n\u003Cli>\u003Ccode>build.tags\u003C\u002Fcode> in \u003Ccode>summer.yaml\u003C\u002Fcode>, and a \u003Ccode>summercms_s3\u003C\u002Fcode> tag that links the S3 uploads driver.\u003C\u002Fli>\n\u003Cli>\u003Ccode>storage.uploads.public_url\u003C\u002Fcode> for direct bucket or CDN file URLs.\u003C\u002Fli>\n\u003Cli>\u003Ccode>pact.ReorderAfterSave\u003C\u002Fcode>, a hook that runs inside the reorder transaction.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Fixed\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>Stored uploads are named after their sniffed content type rather than the client's extension.\u003C\u002Fli>\n\u003C\u002Ful>\n","2026-10-17T21:26:29+00:00","Redis caches and shared rate limits, token cookies and Turnstile, CORS profiles, \u002Fapi-docs, build tags and S3 uploads.",[],27,false,{"id":17,"slug":18,"title":19},26,"summercms-0-1-26","SummerCMS 0.1.26",{"id":21,"slug":22,"title":23},28,"summercms-0-2-0","SummerCMS 0.2.0",true,"2026-10-15T18:05:01+00:00",[],"summercms-0-1-27",[],"SummerCMS 0.1.27"]