{"id":285750,"date":"2026-05-15T18:06:23","date_gmt":"2026-05-15T18:06:23","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/first-draft-feed\/"},"modified":"2026-05-15T18:42:08","modified_gmt":"2026-05-15T18:42:08","slug":"first-draft-feed","status":"publish","type":"plugin","link":"https:\/\/kir.wordpress.org\/plugins\/first-draft-feed\/","author":16304213,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"First Draft Feed","header_author":"Justin Nealey","header_description":"A block that renders a post's revision history as a readable, chronological feed. Readers follow the evolution of thinking, not just the finished product.","assets_banners_color":"e8f0e5","last_updated":"2026-05-15 18:42:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/nealey.pro","rating":0,"author_block_rating":0,"active_installs":0,"downloads":38,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"justinnealey","date":"2026-05-15 18:42:08"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3533326,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3533326,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3533326,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3533326,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"first-draft-feed\/revision-feed":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"first-draft-feed\/revision-feed","version":"1.0.0","title":"First Draft Feed","category":"widgets","icon":"backup","description":"Render a post's revision history as a readable, chronological feed.","keywords":["revisions","draft","history","feed","diff"],"supports":{"html":false,"align":["wide","full"],"color":{"background":true,"text":true},"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true}},"attributes":{"postId":{"type":"integer","default":0},"maxRevisions":{"type":"integer","default":10},"showDiff":{"type":"boolean","default":true},"showWordCount":{"type":"boolean","default":true},"showTimestamp":{"type":"boolean","default":true},"diffStyle":{"type":"string","default":"inline","enum":["inline","split","summary"]},"authorNote":{"type":"string","default":""}},"example":{"attributes":{"maxRevisions":5,"showDiff":true,"diffStyle":"inline","authorNote":"I rewrote this three times because the original angle wasn't working\u2026"}},"textdomain":"first-draft-feed","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","viewScript":"file:.\/view.js","style":"file:.\/style-index.css"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The First Draft Feed block in the editor with settings panel open.","2":"A published post showing the revision feed with inline diffs.","3":"Split diff view comparing two revisions side by side."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[9151,4665,252,1433,6243],"plugin_category":[],"plugin_contributors":[250712],"plugin_business_model":[],"class_list":["post-285750","plugin","type-plugin","status-publish","hentry","plugin_tags-diff","plugin_tags-draft","plugin_tags-feed","plugin_tags-history","plugin_tags-revisions","plugin_contributors-justinnealey","plugin_committers-justinnealey"],"banners":{"banner":"https:\/\/ps.w.org\/first-draft-feed\/assets\/banner-772x250.png?rev=3533326","banner_2x":"https:\/\/ps.w.org\/first-draft-feed\/assets\/banner-1544x500.png?rev=3533326","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/first-draft-feed\/assets\/icon-128x128.png?rev=3533326","icon_2x":"https:\/\/ps.w.org\/first-draft-feed\/assets\/icon-256x256.png?rev=3533326","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>First Draft Feed is a WordPress block that renders a single post's revision history as a readable, chronological feed. Each revision is a \"moment\" \u2014 timestamped, with a visual diff showing what changed. Readers follow the evolution of thinking, not just the finished product.<\/p>\n\n<p><strong>Who is this for?<\/strong><\/p>\n\n<ul>\n<li><strong>Writers<\/strong> who work in public and want to expose how their thinking evolved.<\/li>\n<li><strong>Readers<\/strong> who want to follow a post's development over time like a story.<\/li>\n<li><strong>Site owners<\/strong> who want to control which posts expose their drafts and how much history is visible.<\/li>\n<\/ul>\n\n<p><strong>How it works<\/strong><\/p>\n\n<p>Drop the First Draft Feed block onto any post or page. It renders a feed of that post's revision history, pulled from a custom REST API endpoint that safely surfaces WordPress revision data without requiring authentication.<\/p>\n\n<p>Each revision card shows:<\/p>\n\n<ul>\n<li>Timestamp \u2014 when the revision was saved<\/li>\n<li>Word count delta \u2014 e.g. \"+ 312 words\"<\/li>\n<li>Visual diff \u2014 additions and removals highlighted in context, rendered as clean text (no raw HTML diffs)<\/li>\n<\/ul>\n\n<p>The feed loads oldest-to-newest so readers experience the post as it was written.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Per-post opt-in \u2014 revisions are only exposed when the author explicitly enables the feed<\/li>\n<li>Author notes \u2014 optional context shown at the top of the feed<\/li>\n<li>Three diff styles \u2014 inline, split, or summary view<\/li>\n<li>Image tracking \u2014 images in revisions are preserved and diffed alongside text<\/li>\n<li>Collapsible cards \u2014 readers expand only what interests them<\/li>\n<li>Max revision limit \u2014 cap how many revisions appear (1-50)<\/li>\n<li>Toggle individual elements \u2014 show or hide diffs, word counts, and timestamps<\/li>\n<li>Block supports \u2014 wide\/full alignment, background\/text color, spacing, and font size<\/li>\n<\/ul>\n\n<h3>Source Code<\/h3>\n\n<p>The full source code is available on GitHub:<\/p>\n\n<p>https:\/\/github.com\/jnealey88\/first-draft-feed<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>first-draft-feed<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Edit a post or page and insert the \"First Draft Feed\" block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20enable%20the%20revision%20feed%20on%20a%20post%3F\"><h3>How do I enable the revision feed on a post?<\/h3><\/dt>\n<dd><p>Insert the First Draft Feed block into your post, then toggle \"Enable revision feed for this post\" in the block sidebar settings.<\/p><\/dd>\n<dt id=\"does%20this%20expose%20all%20my%20drafts%20automatically%3F\"><h3>Does this expose all my drafts automatically?<\/h3><\/dt>\n<dd><p>No. The revision feed is strictly opt-in. Each post must be individually enabled by the author. No revision data is exposed until you explicitly turn it on.<\/p><\/dd>\n<dt id=\"what%20post%20types%20are%20supported%3F\"><h3>What post types are supported?<\/h3><\/dt>\n<dd><p>Any public post type that supports revisions \u2014 posts, pages, and compatible custom post types.<\/p><\/dd>\n<dt id=\"can%20readers%20see%20my%20raw%20html%3F\"><h3>Can readers see my raw HTML?<\/h3><\/dt>\n<dd><p>No. The plugin strips all HTML from revision content and renders clean, readable text. Images are extracted and displayed separately.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20block%20themes%20and%20classic%20themes%3F\"><h3>Does this work with block themes and classic themes?<\/h3><\/dt>\n<dd><p>Yes. The block uses standard WordPress block supports (alignment, color, spacing, typography) and works in both the block editor and classic themes with block support.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Revision feed block with per-post opt-in.<\/li>\n<li>Three diff styles: inline, split, and summary.<\/li>\n<li>Author notes, word count deltas, and timestamps.<\/li>\n<li>Image tracking across revisions.<\/li>\n<li>Custom REST API endpoint for public revision data.<\/li>\n<li>Support for all public post types with revisions.<\/li>\n<\/ul>","raw_excerpt":"Show a post&#039;s revision history as a readable, chronological feed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/285750","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=285750"}],"author":[{"embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/justinnealey"}],"wp:attachment":[{"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=285750"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=285750"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=285750"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=285750"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=285750"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kir.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=285750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}