From dbda0abedf47603f3dd7444cb2e5900d624d94af Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Fri, 16 Jan 2026 16:43:55 -0500 Subject: [PATCH 01/10] feat: Send GutenbergKit the latest content when requested Allow GutenbergKit to retrieve the latest content persisted in the host app as needed. This is important for allowing GutenbergKit to display the latest content after the WebView reloads or re-initializes from memory pressure or backgrounding. --- .../Editor/CommentGutenbergEditorViewController.swift | 4 ++++ .../NewGutenberg/NewGutenbergViewController.swift | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/WordPress/Classes/ViewRelated/Comments/Controllers/Editor/CommentGutenbergEditorViewController.swift b/WordPress/Classes/ViewRelated/Comments/Controllers/Editor/CommentGutenbergEditorViewController.swift index 1423087f046c..9e829adc96be 100644 --- a/WordPress/Classes/ViewRelated/Comments/Controllers/Editor/CommentGutenbergEditorViewController.swift +++ b/WordPress/Classes/ViewRelated/Comments/Controllers/Editor/CommentGutenbergEditorViewController.swift @@ -83,6 +83,10 @@ extension CommentGutenbergEditorViewController: GutenbergKit.EditorViewControlle // Do nothing } + func editorRequestsLatestContent(_ controller: GutenbergKit.EditorViewController) -> (title: String, content: String)? { + return nil + } + func editor(_ viewController: GutenbergKit.EditorViewController, didUpdateContentWithState state: GutenbergKit.EditorState) { editorDidUpdate.send(()) } diff --git a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift index ca617baa889f..842d8fe25dfa 100644 --- a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift @@ -468,6 +468,12 @@ extension NewGutenbergViewController: GutenbergKit.EditorViewControllerDelegate setNavigationItemsEnabled(true) } + func editorRequestsLatestContent(_ controller: GutenbergKit.EditorViewController) -> (title: String, content: String)? { + // Return the current post title and content from Core Data. + // This is the authoritative source, updated via autosave. + return (post.postTitle ?? "", post.content ?? "") + } + private func convertMediaInfoArrayToJSONString(_ mediaInfoArray: [MediaInfo]) -> String? { do { let jsonData = try JSONEncoder().encode(mediaInfoArray) From 87f85aefc82414d485650c8b5dd5a917d6b52931 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Fri, 16 Jan 2026 17:25:26 -0500 Subject: [PATCH 02/10] build: Update GutenbergKit version --- Modules/Package.resolved | 5 ++--- Modules/Package.swift | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Modules/Package.resolved b/Modules/Package.resolved index 64b05a652b85..5eb7dcf5ab6a 100644 --- a/Modules/Package.resolved +++ b/Modules/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "70be48d0eb082238f9389749632f80f30c4c499b77ac89d84c8acab08c45509a", + "originHash" : "d71372b06363bccb6807fa8297bc0a5e78787c06823b49c154a38c8ea038d79b", "pins" : [ { "identity" : "alamofire", @@ -149,8 +149,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/wordpress-mobile/GutenbergKit", "state" : { - "revision" : "45e9ed3c77c989f4970731ef2657e658bdc87d2e", - "version" : "0.12.1" + "revision" : "4506f77222058c712ef6f586fc2887a9a539a580" } }, { diff --git a/Modules/Package.swift b/Modules/Package.swift index 11474b9270ee..4f15c1ff7ed5 100644 --- a/Modules/Package.swift +++ b/Modules/Package.swift @@ -56,7 +56,7 @@ let package = Package( .package(url: "https://github.com/wordpress-mobile/wpxmlrpc", from: "0.9.0"), .package(url: "https://github.com/wordpress-mobile/NSURL-IDN", revision: "b34794c9a3f32312e1593d4a3d120572afa0d010"), .package(url: "https://github.com/zendesk/support_sdk_ios", from: "8.0.3"), - .package(url: "https://github.com/wordpress-mobile/GutenbergKit", from: "0.12.1"), + .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "4506f77222058c712ef6f586fc2887a9a539a580"), // We can't use wordpress-rs branches nor commits here. Only tags work. .package(url: "https://github.com/Automattic/wordpress-rs", revision: "alpha-20260114"), .package( From 4f815fcca9c08e798e4ebcf4389899d6a0b3d0c9 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Tue, 20 Jan 2026 13:41:23 -0500 Subject: [PATCH 03/10] build: Update GutenbergKit version --- Modules/Package.resolved | 4 ++-- Modules/Package.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Package.resolved b/Modules/Package.resolved index 5eb7dcf5ab6a..718a67a3fd74 100644 --- a/Modules/Package.resolved +++ b/Modules/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "d71372b06363bccb6807fa8297bc0a5e78787c06823b49c154a38c8ea038d79b", + "originHash" : "efe11d92062675e3ed9aa36c6f5a0cd63ed114a4728409661e96e0cf50890910", "pins" : [ { "identity" : "alamofire", @@ -149,7 +149,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/wordpress-mobile/GutenbergKit", "state" : { - "revision" : "4506f77222058c712ef6f586fc2887a9a539a580" + "revision" : "add768fa0a4ac40573c18f47cd52b5668349392e" } }, { diff --git a/Modules/Package.swift b/Modules/Package.swift index 4f15c1ff7ed5..a3a2807581f2 100644 --- a/Modules/Package.swift +++ b/Modules/Package.swift @@ -56,7 +56,7 @@ let package = Package( .package(url: "https://github.com/wordpress-mobile/wpxmlrpc", from: "0.9.0"), .package(url: "https://github.com/wordpress-mobile/NSURL-IDN", revision: "b34794c9a3f32312e1593d4a3d120572afa0d010"), .package(url: "https://github.com/zendesk/support_sdk_ios", from: "8.0.3"), - .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "4506f77222058c712ef6f586fc2887a9a539a580"), + .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "add768fa0a4ac40573c18f47cd52b5668349392e"), // We can't use wordpress-rs branches nor commits here. Only tags work. .package(url: "https://github.com/Automattic/wordpress-rs", revision: "alpha-20260114"), .package( From 43196a36962b7f7e78e9163e6d9ea373bceb2d90 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Wed, 21 Jan 2026 11:14:44 -0500 Subject: [PATCH 04/10] feat: Set GutenbergKit post status --- .../ViewRelated/NewGutenberg/NewGutenbergViewController.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift index 842d8fe25dfa..37f6e94a5f7e 100644 --- a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift @@ -132,10 +132,12 @@ class NewGutenbergViewController: UIViewController, PostEditor, PublishingEditor // Create configuration with post content let postType = post is Page ? "page" : "post" + let postStatus = post.status?.rawValue ?? "draft" let editorConfiguration = EditorConfiguration(blog: post.blog, postType: postType) .toBuilder() .setTitle(post.postTitle ?? "") .setContent(post.content ?? "") + .setStatus(postStatus) .setNativeInserterEnabled(FeatureFlag.nativeBlockInserter.enabled) .build() From cec17c5fd590bcd4ec1bf0230c35b7be8998018f Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Wed, 21 Jan 2026 11:41:33 -0500 Subject: [PATCH 05/10] fix: Set post ID for GutenbergKit --- .../ViewRelated/NewGutenberg/NewGutenbergViewController.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift index 37f6e94a5f7e..bfcc97391790 100644 --- a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift @@ -137,6 +137,7 @@ class NewGutenbergViewController: UIViewController, PostEditor, PublishingEditor .toBuilder() .setTitle(post.postTitle ?? "") .setContent(post.content ?? "") + .setPostID(post.postID?.intValue) .setStatus(postStatus) .setNativeInserterEnabled(FeatureFlag.nativeBlockInserter.enabled) .build() From 450d106e812175e6e7a8e52ee21d2a659753a1e5 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Wed, 21 Jan 2026 11:49:29 -0500 Subject: [PATCH 06/10] build: Update GutenbergKit version --- Modules/Package.resolved | 4 ++-- Modules/Package.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Package.resolved b/Modules/Package.resolved index 718a67a3fd74..0279bcc13fa6 100644 --- a/Modules/Package.resolved +++ b/Modules/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "efe11d92062675e3ed9aa36c6f5a0cd63ed114a4728409661e96e0cf50890910", + "originHash" : "5faa58b0998f4c70b768e99e1526177ab7aaf4fae1215fbf764f4f2f7df1282f", "pins" : [ { "identity" : "alamofire", @@ -149,7 +149,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/wordpress-mobile/GutenbergKit", "state" : { - "revision" : "add768fa0a4ac40573c18f47cd52b5668349392e" + "revision" : "d37eee059a60d70c47f6b045d475d1eb31551bb3" } }, { diff --git a/Modules/Package.swift b/Modules/Package.swift index a3a2807581f2..b344fb423fc6 100644 --- a/Modules/Package.swift +++ b/Modules/Package.swift @@ -56,7 +56,7 @@ let package = Package( .package(url: "https://github.com/wordpress-mobile/wpxmlrpc", from: "0.9.0"), .package(url: "https://github.com/wordpress-mobile/NSURL-IDN", revision: "b34794c9a3f32312e1593d4a3d120572afa0d010"), .package(url: "https://github.com/zendesk/support_sdk_ios", from: "8.0.3"), - .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "add768fa0a4ac40573c18f47cd52b5668349392e"), + .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "d37eee059a60d70c47f6b045d475d1eb31551bb3"), // We can't use wordpress-rs branches nor commits here. Only tags work. .package(url: "https://github.com/Automattic/wordpress-rs", revision: "alpha-20260114"), .package( From 2987b22fb14cc4cfc2bbf11e59af611dde920258 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Thu, 22 Jan 2026 11:51:48 -0500 Subject: [PATCH 07/10] refactor: Use new `setPostStatus` method Adapt to latest GutenbergKit methods. --- .../ViewRelated/NewGutenberg/NewGutenbergViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift index bfcc97391790..9826164d9816 100644 --- a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift @@ -138,7 +138,7 @@ class NewGutenbergViewController: UIViewController, PostEditor, PublishingEditor .setTitle(post.postTitle ?? "") .setContent(post.content ?? "") .setPostID(post.postID?.intValue) - .setStatus(postStatus) + .setPostStatus(postStatus) .setNativeInserterEnabled(FeatureFlag.nativeBlockInserter.enabled) .build() From 7cce3e73fcc2e11ba004fc7ea0c1e3cfbbad1297 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Thu, 22 Jan 2026 11:56:02 -0500 Subject: [PATCH 08/10] build: Update GutenbergKit version --- Modules/Package.resolved | 4 ++-- Modules/Package.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Package.resolved b/Modules/Package.resolved index 0279bcc13fa6..afc7c5e2553e 100644 --- a/Modules/Package.resolved +++ b/Modules/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "5faa58b0998f4c70b768e99e1526177ab7aaf4fae1215fbf764f4f2f7df1282f", + "originHash" : "120d2e7f3f979eae9796da49eae286ecc4bfcfd1d2154d5e2273a3c40d2430cc", "pins" : [ { "identity" : "alamofire", @@ -149,7 +149,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/wordpress-mobile/GutenbergKit", "state" : { - "revision" : "d37eee059a60d70c47f6b045d475d1eb31551bb3" + "revision" : "9925a4312a9727c718aa9247d78966b58373226d" } }, { diff --git a/Modules/Package.swift b/Modules/Package.swift index b344fb423fc6..6ad1d371593e 100644 --- a/Modules/Package.swift +++ b/Modules/Package.swift @@ -56,7 +56,7 @@ let package = Package( .package(url: "https://github.com/wordpress-mobile/wpxmlrpc", from: "0.9.0"), .package(url: "https://github.com/wordpress-mobile/NSURL-IDN", revision: "b34794c9a3f32312e1593d4a3d120572afa0d010"), .package(url: "https://github.com/zendesk/support_sdk_ios", from: "8.0.3"), - .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "d37eee059a60d70c47f6b045d475d1eb31551bb3"), + .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "9925a4312a9727c718aa9247d78966b58373226d"), // We can't use wordpress-rs branches nor commits here. Only tags work. .package(url: "https://github.com/Automattic/wordpress-rs", revision: "alpha-20260114"), .package( From 822a3e1ee18b11031ed50b1ba32cd7c52c31339d Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Thu, 22 Jan 2026 16:09:27 -0500 Subject: [PATCH 09/10] refactor: Use GutenbergKit's latest method names Align with Swift naming conventions. --- Modules/Package.resolved | 4 ++-- Modules/Package.swift | 2 +- .../Editor/CommentGutenbergEditorViewController.swift | 2 +- .../ViewRelated/NewGutenberg/NewGutenbergViewController.swift | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Modules/Package.resolved b/Modules/Package.resolved index afc7c5e2553e..5db7dcf2d92d 100644 --- a/Modules/Package.resolved +++ b/Modules/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "120d2e7f3f979eae9796da49eae286ecc4bfcfd1d2154d5e2273a3c40d2430cc", + "originHash" : "5701fed54f4c40bda6a3dbfb4173e65a063cd60485bd358c446a85d9f857d369", "pins" : [ { "identity" : "alamofire", @@ -149,7 +149,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/wordpress-mobile/GutenbergKit", "state" : { - "revision" : "9925a4312a9727c718aa9247d78966b58373226d" + "revision" : "ba98f11399c285289efa1b46b9d590626be1ce3c" } }, { diff --git a/Modules/Package.swift b/Modules/Package.swift index 6ad1d371593e..9bba9dcc6f58 100644 --- a/Modules/Package.swift +++ b/Modules/Package.swift @@ -56,7 +56,7 @@ let package = Package( .package(url: "https://github.com/wordpress-mobile/wpxmlrpc", from: "0.9.0"), .package(url: "https://github.com/wordpress-mobile/NSURL-IDN", revision: "b34794c9a3f32312e1593d4a3d120572afa0d010"), .package(url: "https://github.com/zendesk/support_sdk_ios", from: "8.0.3"), - .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "9925a4312a9727c718aa9247d78966b58373226d"), + .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "ba98f11399c285289efa1b46b9d590626be1ce3c"), // We can't use wordpress-rs branches nor commits here. Only tags work. .package(url: "https://github.com/Automattic/wordpress-rs", revision: "alpha-20260114"), .package( diff --git a/WordPress/Classes/ViewRelated/Comments/Controllers/Editor/CommentGutenbergEditorViewController.swift b/WordPress/Classes/ViewRelated/Comments/Controllers/Editor/CommentGutenbergEditorViewController.swift index 9e829adc96be..a9c98db8282b 100644 --- a/WordPress/Classes/ViewRelated/Comments/Controllers/Editor/CommentGutenbergEditorViewController.swift +++ b/WordPress/Classes/ViewRelated/Comments/Controllers/Editor/CommentGutenbergEditorViewController.swift @@ -83,7 +83,7 @@ extension CommentGutenbergEditorViewController: GutenbergKit.EditorViewControlle // Do nothing } - func editorRequestsLatestContent(_ controller: GutenbergKit.EditorViewController) -> (title: String, content: String)? { + func editorDidRequestLatestContent(_ controller: GutenbergKit.EditorViewController) -> (title: String, content: String)? { return nil } diff --git a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift index 9826164d9816..f6ba67ae4348 100644 --- a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift @@ -471,7 +471,7 @@ extension NewGutenbergViewController: GutenbergKit.EditorViewControllerDelegate setNavigationItemsEnabled(true) } - func editorRequestsLatestContent(_ controller: GutenbergKit.EditorViewController) -> (title: String, content: String)? { + func editorDidRequestLatestContent(_ controller: GutenbergKit.EditorViewController) -> (title: String, content: String)? { // Return the current post title and content from Core Data. // This is the authoritative source, updated via autosave. return (post.postTitle ?? "", post.content ?? "") From 65cd33164b139f050d6621cc56a3c883a7e5b2cf Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Thu, 22 Jan 2026 16:32:02 -0500 Subject: [PATCH 10/10] build: Update GutenbergKit version --- Modules/Package.resolved | 5 +++-- Modules/Package.swift | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Modules/Package.resolved b/Modules/Package.resolved index 5db7dcf2d92d..4e572da38b64 100644 --- a/Modules/Package.resolved +++ b/Modules/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "5701fed54f4c40bda6a3dbfb4173e65a063cd60485bd358c446a85d9f857d369", + "originHash" : "024ca0929c05dc22af0ce33abb347be2db737ddaa09348ee3a09c1181b56a628", "pins" : [ { "identity" : "alamofire", @@ -149,7 +149,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/wordpress-mobile/GutenbergKit", "state" : { - "revision" : "ba98f11399c285289efa1b46b9d590626be1ce3c" + "revision" : "8addad7fd018985dd3f8b15cfcc0d028cdc189b3", + "version" : "0.13.0" } }, { diff --git a/Modules/Package.swift b/Modules/Package.swift index 9bba9dcc6f58..938b41a641f6 100644 --- a/Modules/Package.swift +++ b/Modules/Package.swift @@ -56,7 +56,7 @@ let package = Package( .package(url: "https://github.com/wordpress-mobile/wpxmlrpc", from: "0.9.0"), .package(url: "https://github.com/wordpress-mobile/NSURL-IDN", revision: "b34794c9a3f32312e1593d4a3d120572afa0d010"), .package(url: "https://github.com/zendesk/support_sdk_ios", from: "8.0.3"), - .package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "ba98f11399c285289efa1b46b9d590626be1ce3c"), + .package(url: "https://github.com/wordpress-mobile/GutenbergKit", from: "0.13.0"), // We can't use wordpress-rs branches nor commits here. Only tags work. .package(url: "https://github.com/Automattic/wordpress-rs", revision: "alpha-20260114"), .package(