Most features I work on are fairly small. I like to roll out improvements all the time, whenever they’re ready, rather than hold features for a big release. And I get nervous if there are Git branches sitting there, drifting away from the production code.
Sometimes there really are larger features that take time to get right, though. I’ve been working on a new thing that I teased in a screenshot a few weeks ago. It’s complicated enough that I don’t think I could build it all at once, so instead I iterate in small chunks over weeks or months.
I thought it would be interesting to share all the commits so far, about 75 messages. They illustrate the sort of meandering flow that a feature sometimes takes as I work out exactly what to build.
- Started jotting down planning thoughts.
- Added new fields for external blogs, changed params for async WordPress, Ghost.
- Added form for creating new external WordPress site.
- Added XML-RPC discovery and caching.
- More XML-RPC plumbing.
- Updated WordPress help text.
- Added another field so we can keep track of WordPress post ID.
- Added WordPress icon to change blog menu.
- More XML-RPC fixes, run sync after new post or edits.
- Added syncing date, fixed ID.
- Started syncing deleted posts.
- Added trash external ID so we can sync deletes.
- Added get blogs (using Blogger API, MetaWeblog not working with WordPress?) to verify username.
- Hide some menus for external blogs.
- Moved trash first, otherwise will just get posts again.
- Fixed delete, added date for sync.
- Started adding categories support.
- Added category external ID.
- Removed length, not needed.
- Added M.b icon, only show icons if any external sites.
- Update schema for uploads external id.
- Track WordPress attachment IDs and sync new uploads to external WordPress sites
- Added getting uploaded media, other tweaks.
- Fixed categories to use external ID.
- Added type checks.
- Fixed trying to delete on S3, placeholders for WP API.
- Disable rename for external uploads.
- Deleted old preview unused.
- Added saving categories, check sync when home loads.
- Fixed showing rename.
- Added sync check only at most every 4 minutes.
- Add Ghost API sync methods
- Add Ghost API sync support methods
- Fixed update_at to use published date.
- Added Ghost sign in form and more for sessions.
- Added prompt for Ghost sign-in code.
- Added new Ghost icon, other changes.
- Updated Ghost icon to use dark mode.
- Fixed using HTML with Ghost API.
- Removed page.run_sync, now runs during site publish.
- Fixed Ghost updating, use HTML, remember updated_at.
- Improved Ghost sync not overwriting posts, added Markdown conversion.
- Added a cache for recently updated post IDs.
- Fixed applying Ghost categories.
- Fixed skip subdomain for external blogs.
- Added figure/img tags from Ghost.
- Fixed GitHub/Archiving log lines.
- Added S3 thread_count to minimize memory use.
- Moved recently updated cache outside of save for more control.
- Hide category options for external blogs.
- Fixed Ghost image upload.
- Changed Ghost set_post to update with external URLs.
- Fixed progress pane not floating above Copy HTML and other buttons.
- Fallback to metaWeblog.getRecentPosts on wp.getPosts error.
- Handle WordPress pagination caps and preserve categories.
- WordPress: paginate wp.getPosts with fallback to metaWeblog.getRecentPosts and refactor post processing
- Let’s get categories before posts.
- Render WordPress post HTML before sync.
- Render Markdown to HTML for WordPress sync.
- Convert WP HTML to Markdown, other cleanup.
- Added external_url to uploads, updated WordPress to rewrite HTML.
- Fixed recently updated key to scope to user.
- Added New Blog menu to consolidate various options.
- Check modified date before updating local posts from WordPress.
- Fixed rewriting img for new Ghost posts.
- Fixed using appropriate MIME type.
- Hide summary field for external blogs.
- Add deletion detection to Ghost and WordPress sync.
- Fixed replies API to not include hidden replies that are being deleted.
- Verify WordPress deletions via wp.getPost
- Verify Ghost deletions via admin API
- Gate deletion checks on Ghost and WordPress errors
- Add deletion detection to Ghost and WordPress sync
- Added note for later.
- Added Ghost get_posts pagination.
- Fixed clearing external_id first.
- Filled in WordPress media delete using REST API.
Still more testing to do, then I’ll write up a formal announcement with details about what it is and why.