[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"journal-post-summercms-0-5-1":3},{"author":4,"categories":8,"content":13,"content_html":14,"created_at":15,"excerpt":16,"featured_image_url":13,"featured_images":17,"id":18,"is_pinned":19,"metadata":13,"next_post":20,"previous_post":24,"published":28,"published_at":29,"reading_time":10,"related_posts":30,"slug":31,"sources":13,"tags":32,"title":33,"translations":13,"updated_at":34},{"first_name":5,"id":6,"last_name":5,"login":7},"",1,"jakubzych@gmail.com",[9],{"id":10,"name":11,"slug":12},2,"Framework","framework",null,"\u003Ch2>Highlights\u003C\u002Fh2>\n\u003Cp>Three new seams let one plugin build on another plugin's records without editing it: it can add fields and tabs to the other plugin's admin forms, react to every write of its records, and map a public URL to the record behind it. The release is strictly additive: nothing exported in 0.5.0 is removed or changed, and existing plugins compile and behave as before.\u003C\u002Fp>\n\u003Cp>Released together:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>sm-journal-plugin v0.2.5\u003C\u002Fli>\n\u003Cli>sm-seo-plugin v0.1.0 (first release)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Added\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Form extensions across plugins.\u003C\u002Fstrong> A plugin places its own fields and tabs inside another plugin's admin form (\u003Ccode>pact.AdminFormExtension\u003C\u002Fcode> on an admin action extension), anchored with \u003Ccode>before:\u003C\u002Fcode>, \u003Ccode>after:\u003C\u002Fcode> or \u003Ccode>zone:\u003C\u002Fcode> in a \u003Ccode>fields.yaml\u003C\u002Fcode>-style document. Placements are compiled once at boot, and a missing anchor or a cycle stops the boot with a clear error. The extension loads and saves its own values inside the record's save transaction, so the owner's tables and model stay untouched, and it can see what the owner's save changed.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Record events.\u003C\u002Fstrong> \u003Ccode>pact.RecordSaved\u003C\u002Fcode> and \u003Ccode>pact.RecordDeleted\u003C\u002Fcode> are published after the write commits, from every admin write path: create, update, delete, bulk delete, tree reorder and relation children. A saved event carries the changed attributes with old and new values per locale. Plugins that write outside the admin publish the same events with \u003Ccode>cabana.EmitRecordSaved\u003C\u002Fcode> and \u003Ccode>cabana.EmitRecordDeleted\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Content descriptors.\u003C\u002Fstrong> A menu item type can declare which records have public URLs (\u003Ccode>pact.ContentDescriptor\u003C\u002Fcode>: list, describe and match). The signpost registry answers the content types, describes a record, lists records page by page, and maps a URL back to its record (\u003Ccode>MatchPath\u003C\u002Fcode>) strictly: a path that names a record without being its address does not match.\u003C\u002Fli>\n\u003C\u002Ful>\n","2026-10-27T13:16:05+00:00","Plugins can extend each other's admin forms, react to record writes and map URLs to records. Strictly additive.",[],45,false,{"id":21,"slug":22,"title":23},44,"sm-sociallogin-plugin-0-1-5","sm-sociallogin-plugin 0.1.5",{"id":25,"slug":26,"title":27},52,"sm-journal-plugin-0-2-5","sm-journal-plugin 0.2.5",true,"2026-10-27T13:00:42+00:00",[],"summercms-0-5-1",[],"SummerCMS 0.5.1","2026-10-29T10:18:05+00:00"]