Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
20d9912
Connect: simplify first successful setup
andypotanin Nov 10, 2026
ab287d7
Connect: preserve CDN default and expire funnel state
andypotanin Nov 10, 2026
db8d7f9
Connect: guard funnel cleanup against replacement
andypotanin Nov 10, 2026
967ae3c
Connect: make funnel cleanup identity-safe
andypotanin Nov 10, 2026
3e3f897
Connect: handle raw funnel state safely
andypotanin Nov 10, 2026
227e7d3
Release: test prerelease asset fix
andypotanin Nov 10, 2026
bb74d67
Release: pin reviewed prerelease workflow
andypotanin Nov 10, 2026
78c432d
Connect: address onboarding review findings
andypotanin Nov 10, 2026
1022c73
Connect: pass user to funnel cleanup, count network uploads
andypotanin Nov 10, 2026
7ff5e16
Readme: document external services
andypotanin Nov 11, 2026
1ac9c50
Connect: report first upload once per request, only for new media
andypotanin Nov 11, 2026
640c5a1
Connect: keep first upload reporting off the upload response
andypotanin Nov 11, 2026
e2fb4ed
Connect: batch bulk upload checks, attribute milestones to the connec…
andypotanin Nov 11, 2026
a4b19d5
Connect: stop querying for a setup record on every sync
andypotanin Nov 11, 2026
3935ac4
fix(connect): align sign-in help actions
andypotanin Nov 11, 2026
6553ab6
fix(connect): recover provisioning after timeouts
andypotanin Nov 11, 2026
ae2192d
style(connect): mark completed setup steps
andypotanin Nov 11, 2026
3314914
fix(connect): resume after worker termination
andypotanin Nov 11, 2026
8c576e0
Connect: make interrupted setups safe to resume
andypotanin Nov 11, 2026
c444833
Readme: describe setup progress and resume in 4.5.1
andypotanin Nov 11, 2026
909ee91
Connect: keep disconnect, takeovers and reloads from undoing a setup
andypotanin Nov 11, 2026
fad830e
Connect: keep a failed setup's explanation until the next action
andypotanin Nov 11, 2026
9153322
Connect: revoke the key an interrupted setup had already replaced
andypotanin Nov 11, 2026
45fb679
Connect: keep the result of a finished setup across reloads too
andypotanin Nov 11, 2026
0bf7540
docs: refresh WordPress.org setup screenshots
andypotanin Nov 12, 2026
e179c15
docs: preserve WordPress.org branding assets
andypotanin Nov 12, 2026
1ee5f9e
Connect: keep setup state with WordPress core's lock and the Options API
andypotanin Nov 12, 2026
5f4de18
Connect: count one project and one bucket in the singular
andypotanin Nov 12, 2026
1ff531f
Connect: act on setup records as they are in the database
andypotanin Nov 12, 2026
678b082
docs: re-render screenshot 5 with the corrected project count
andypotanin Nov 12, 2026
0f8235c
Connect: hold a disconnect to the same ownership check as a setup
andypotanin Nov 12, 2026
b4d5ecd
docs: refresh media editor screenshot
andypotanin Nov 12, 2026
41797b3
docs: re-capture screenshot 7 without the mouse pointer
andypotanin Nov 12, 2026
8c99e76
Release 4.5.1: date the changelog 2026-11-12
andypotanin Nov 12, 2026
27f1fe9
ci: use the shared release workflow from master again
andypotanin Nov 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .wordpress-org/banner-1544x500.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/banner-772x250.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/icon-128x128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/icon-256x256.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 52 additions & 0 deletions .wordpress-org/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/screenshot-1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/screenshot-2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/screenshot-3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/screenshot-4.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/screenshot-5.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/screenshot-6.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .wordpress-org/screenshot-7.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
== Changelog ==
= 4.5.1 - 2026-11-12 =
* ENHANCEMENT - fresh, unconfigured activations and the Plugins screen lead directly to Stateless Connect; manual bucket and service-account settings remain available under Advanced.
* ENHANCEMENT - the recommended setup creates a project and US multi-region bucket with CDN mode, while existing projects, buckets, locations and modes remain available under Advanced.
* ENHANCEMENT - Google sign-in stays in the same tab, setup explains billing and key custody, and missing billing has a Check again path that preserves the storage choices.
* ENHANCEMENT - storage setup shows its progress on the Connect screen and no longer depends on one long request: it survives slow Google operations, proxy timeouts and page reloads, and an interrupted setup resumes its saved project, bucket and key instead of starting over.
* NEW - privacy-limited setup events measure actual Connect clicks through provisioning and the first verified upload without recording site addresses, email addresses, project IDs, bucket names or free-form errors.
* FIX - storage drafts restore the selected project and bucket after a failed attempt, and new project names are generated in Google's accepted format.
* FIX - the result of a storage setup, including the explanation when it fails, stays on the Connect screen until the next action, so reloading the page no longer loses it.
* FIX - a storage setup that is interrupted or replaced by another no longer leaves a service account key behind: the next setup or a disconnect revokes it, and a revocation that fails is retried.
* SECURITY - stateless.ci excludes OAuth callback query parameters from its load-balancer log sinks and retains only pseudonymous, short-lived setup-funnel records.

= 4.5.0 - 2026-11-02 =
* NEW - Stateless Connect replaces the setup wizard: sign in with Google from wp-admin, confirm your site on stateless.ci, and WP-Stateless creates the project, bucket, service account and key inside your own Google Cloud account. No iframe, no copying of keys.
* NEW - setup works from Network Admin on multisite, with network and per-site connections kept separate.
Expand Down
11 changes: 11 additions & 0 deletions changes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
#### 4.5.1 - 2026-11-12
* ENHANCEMENT - fresh, unconfigured activations and the Plugins screen lead directly to Stateless Connect; manual bucket and service-account settings remain available under Advanced.
* ENHANCEMENT - the recommended setup creates a project and US multi-region bucket with CDN mode, while existing projects, buckets, locations and modes remain available under Advanced.
* ENHANCEMENT - Google sign-in stays in the same tab, setup explains billing and key custody, and missing billing has a Check again path that preserves the storage choices.
* ENHANCEMENT - storage setup shows its progress on the Connect screen and no longer depends on one long request: it survives slow Google operations, proxy timeouts and page reloads, and an interrupted setup resumes its saved project, bucket and key instead of starting over.
* NEW - privacy-limited setup events measure actual Connect clicks through provisioning and the first verified upload without recording site addresses, email addresses, project IDs, bucket names or free-form errors.
* FIX - storage drafts restore the selected project and bucket after a failed attempt, and new project names are generated in Google's accepted format.
* FIX - the result of a storage setup, including the explanation when it fails, stays on the Connect screen until the next action, so reloading the page no longer loses it.
* FIX - a storage setup that is interrupted or replaced by another no longer leaves a service account key behind: the next setup or a disconnect revokes it, and a revocation that fails is retried.
* SECURITY - stateless.ci excludes OAuth callback query parameters from its load-balancer log sinks and retains only pseudonymous, short-lived setup-funnel records.

#### 4.5.0 - 2026-11-02
* NEW - Stateless Connect replaces the setup wizard: sign in with Google from wp-admin, confirm your site on stateless.ci, and WP-Stateless creates the project, bucket, service account and key inside your own Google Cloud account. No iframe, no copying of keys.
* NEW - setup works from Network Admin on multisite, with network and per-site connections kept separate.
Expand Down
23 changes: 9 additions & 14 deletions lib/classes/class-bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -1760,35 +1760,30 @@ public function wp_delete_site($old_site) {
* @param string $plugin
*/
public function redirect_to_splash($plugin = '') {
// $this->settings = new Settings();
$configured = $this->settings->get('sm.key_json') && $this->settings->get('sm.bucket');

if (defined('WP_CLI') || $this->settings->get('sm.key_json') || isset($_POST['checked']) && count($_POST['checked']) > 1) {
if (defined('WP_CLI') || $configured || isset($_POST['checked']) && count($_POST['checked']) > 1) {
return;
}

if (GoogleConnect::hidden_for_site() && !is_network_admin()) {
return;
}

if (
!$this->settings->get('sm.key_json') &&
defined('WP_STATELESS_MEDIA_HIDE_SETUP_ASSISTANT') && WP_STATELESS_MEDIA_HIDE_SETUP_ASSISTANT == true &&
defined('WP_STATELESS_MEDIA_HIDE_SETTINGS_PANEL') && WP_STATELESS_MEDIA_HIDE_SETTINGS_PANEL == true
) {
return;
}

if (!$this->settings->get('sm.key_json') && defined('WP_STATELESS_MEDIA_HIDE_SETUP_ASSISTANT') && WP_STATELESS_MEDIA_HIDE_SETUP_ASSISTANT == true) {
if (defined('WP_STATELESS_MEDIA_HIDE_SETUP_ASSISTANT') && WP_STATELESS_MEDIA_HIDE_SETUP_ASSISTANT == true) {
$url = $this->get_settings_page_url('?page=stateless-settings');
exit(wp_redirect($url));
exit(wp_safe_redirect($url));
}

if ($plugin == plugin_basename($this->boot_file)) {
// #152
// $url = $this->get_settings_page_url('?page=stateless-setup&step=splash-screen');
$url = $this->get_settings_page_url('?page=stateless-settings');

if (json_decode($this->settings->get('sm.key_json'))) {
$url = $this->get_settings_page_url('?page=stateless-settings');
}

exit( wp_redirect($url) );
exit(wp_safe_redirect(GoogleConnect::instance()->page_url()));
}
}

Expand Down
Loading
Loading