Changeset 3796383
- Timestamp:
- 11/11/2026 01:19:55 PM (less than one hour ago)
- Location:
- backpilot
- Files:
-
- 10 edited
- 1 copied
-
tags/1.3.1 (copied) (copied from backpilot/trunk )
-
tags/1.3.1/admin/backpilot-conversations.css (modified) (1 diff)
-
tags/1.3.1/backpilot.php (modified) (2 diffs)
-
tags/1.3.1/languages/backpilot.pot (modified) (4 diffs)
-
tags/1.3.1/readme.txt (modified) (4 diffs)
-
tags/1.3.1/src/Client.php (modified) (3 diffs)
-
trunk/admin/backpilot-conversations.css (modified) (1 diff)
-
trunk/backpilot.php (modified) (2 diffs)
-
trunk/languages/backpilot.pot (modified) (4 diffs)
-
trunk/readme.txt (modified) (4 diffs)
-
trunk/src/Client.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
backpilot/tags/1.3.1/admin/backpilot-conversations.css
r3781389 r3796383 45 45 flex: 1 1 auto; 46 46 min-height: 0; 47 margin: 00 12px;47 margin: 1.25rem 0 12px; 48 48 } 49 49 -
backpilot/tags/1.3.1/backpilot.php
r3781389 r3796383 4 4 * Plugin URI: https://backpilot.ai/woocommerce/ 5 5 * Description: AI shopping concierge for your store. Shoppers ask in plain language; the concierge finds products, answers questions and fills the cart. Connects your shop to the Backpilot service. 6 * Version: 1.3. 06 * Version: 1.3.1 7 7 * Requires at least: 6.4 8 8 * Requires PHP: 7.4 … … 22 22 defined( 'ABSPATH' ) || exit; 23 23 24 define( 'BACKPILOT_VERSION', '1.3. 0' );24 define( 'BACKPILOT_VERSION', '1.3.1' ); 25 25 define( 'BACKPILOT_PLUGIN_FILE', __FILE__ ); 26 26 define( 'BACKPILOT_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); -
backpilot/tags/1.3.1/languages/backpilot.pot
r3781389 r3796383 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Backpilot for WooCommerce 1.3. 0\n"5 "Project-Id-Version: Backpilot for WooCommerce 1.3.1\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/backpilot\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2026-11- 03T08:25:08+00:00\n"12 "POT-Creation-Date: 2026-11-11T13:00:25+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 101 101 102 102 #: src/Admin.php:680 103 #: src/Client.php:3 74103 #: src/Client.php:395 104 104 msgid "Backpilot can show conversations only at the address your shop is registered as." 105 105 msgstr "" … … 466 466 msgstr "" 467 467 468 #: src/Client.php:1 53469 #: src/Client.php:2 05470 #: src/Client.php:3 50468 #: src/Client.php:160 469 #: src/Client.php:226 470 #: src/Client.php:371 471 471 msgid "Backpilot returned an unexpected response." 472 472 msgstr "" 473 473 474 #: src/Client.php: 396474 #: src/Client.php:417 475 475 msgid "This store is already connected to Backpilot from another installation. Disconnect it there, or contact support." 476 476 msgstr "" 477 477 478 #: src/Client.php:4 78478 #: src/Client.php:499 479 479 msgid "Backpilot no longer recognizes this site." 480 480 msgstr "" 481 481 482 #: src/Client.php: 484482 #: src/Client.php:505 483 483 msgid "Backpilot is still handling the previous request for this shop." 484 484 msgstr "" 485 485 486 486 #. translators: %d: HTTP status code returned by the Backpilot service. 487 #: src/Client.php: 493487 #: src/Client.php:514 488 488 #, php-format 489 489 msgid "Backpilot answered with an unexpected status (%d)." -
backpilot/tags/1.3.1/readme.txt
r3781389 r3796383 7 7 WC requires at least: 9.0 8 8 WC tested up to: 11.1 9 Stable tag: 1.3. 09 Stable tag: 1.3.1 10 10 License: GPLv2 or later 11 11 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 60 60 The plugin is the connector between your store and the [Backpilot service](https://backpilot.ai/woocommerce/), which powers the concierge; the service is required for the plugin to work. 61 61 62 **Nothing is sent until you click Connect.** Connecting registers your shop with the service: your site's URL, your administrator email (used only to tell you when your shop goes live or needs attention) and your WordPress, WooCommerce and plugin versions. The service then reads your catalog from WooCommerce — via the REST API with a read-only key you approve, or through the public Store API — and keeps it in sync. Your site periodically checks your shop's status with the site key issued at registration. When a shopper uses the concierge, their messages and the products shown are processed and stored by the service, and you can read those conversations in your WordPress admin under Backpilot → Conversations; payment details are never involved — checkout runs on your own site. Deleting the plugin deregisters your shop.62 **Nothing is sent until you click Connect.** Connecting registers your shop with the service: your site's URL, your administrator email (used only to tell you when your shop goes live or needs attention), your store's base country (so the service handles what depends on your location correctly, such as prices) and your WordPress, WooCommerce and plugin versions. The service then reads your catalog from WooCommerce — via the REST API with a read-only key you approve, or through the public Store API — and keeps it in sync. Your site periodically checks your shop's status with the site key issued at registration. When a shopper uses the concierge, their messages and the products shown are processed and stored by the service, and you can read those conversations in your WordPress admin under Backpilot → Conversations; payment details are never involved — checkout runs on your own site. Deleting the plugin deregisters your shop. 63 63 64 64 [Terms of service](https://backpilot.ai/terms/) · [Privacy policy](https://backpilot.ai/privacy/) … … 120 120 == Changelog == 121 121 122 = 1.3.1 = 123 * Connect tells Backpilot your store's base country, so the service handles what depends on your location correctly, such as prices. 124 122 125 = 1.3.0 = 123 126 * Conversations: read your shoppers' chats, as they saw them, under Backpilot → Conversations. … … 145 148 == Upgrade Notice == 146 149 150 = 1.3.1 = 151 Click Re-connect once after updating so Backpilot learns your store's base country and handles what depends on your location correctly. 152 147 153 = 1.3.0 = 148 154 New Conversations page: read your shoppers' chats in your WordPress admin. -
backpilot/tags/1.3.1/src/Client.php
r3781389 r3796383 118 118 } 119 119 120 // What this shop is running, as the registration record holds it: sent here 121 // and with nothing else. Four `get_bloginfo()`-class reads. 122 $body = array( 123 'shopUrl' => home_url(), 124 'adminEmail' => $admin_email, 125 'wpVersion' => get_bloginfo( 'version' ), 126 'wooVersion' => defined( 'WC_VERSION' ) ? WC_VERSION : '', 127 'pluginVersion' => BACKPILOT_VERSION, 128 ); 129 // The store's base country says whose shopper the service reads the shop as, 130 // which matters for a shop that prices by the visitor's location. A store 131 // without one sends nothing, and the service then reads the shop as before. 132 $base_country = self::base_country(); 133 if ( '' !== $base_country ) { 134 $body['baseCountry'] = $base_country; 135 } 136 120 137 $response = wp_remote_post( 121 138 $this->api_base_url() . '/api/plugin/register', … … 123 140 'timeout' => self::REGISTER_TIMEOUT, 124 141 'headers' => $headers, 125 // What this shop is running, as the registration record holds it: 126 // sent here and with nothing else. Three `get_bloginfo()`-class reads. 127 'body' => wp_json_encode( 128 array( 129 'shopUrl' => home_url(), 130 'adminEmail' => $admin_email, 131 'wpVersion' => get_bloginfo( 'version' ), 132 'wooVersion' => defined( 'WC_VERSION' ) ? WC_VERSION : '', 133 'pluginVersion' => BACKPILOT_VERSION, 134 ) 135 ), 142 'body' => wp_json_encode( $body ), 136 143 ) 137 144 ); … … 161 168 'rest_api_ticket' => preg_match( '/^[A-Za-z0-9._-]{16,255}\z/', $ticket ) ? $ticket : '', 162 169 ); 170 } 171 172 /** 173 * The store's base country as a bare country code. WooCommerce stores its base 174 * location as one option, country and state joined by a colon (`GB:ENG`, or `GB` 175 * alone where a country has no states); the state is of no use to the service. 176 * `''` when the store has no base location. 177 * 178 * @return string 179 */ 180 private static function base_country() { 181 $location = explode( ':', (string) get_option( 'woocommerce_default_country', '' ), 2 ); 182 183 return trim( $location[0] ); 163 184 } 164 185 -
backpilot/trunk/admin/backpilot-conversations.css
r3781389 r3796383 45 45 flex: 1 1 auto; 46 46 min-height: 0; 47 margin: 00 12px;47 margin: 1.25rem 0 12px; 48 48 } 49 49 -
backpilot/trunk/backpilot.php
r3781389 r3796383 4 4 * Plugin URI: https://backpilot.ai/woocommerce/ 5 5 * Description: AI shopping concierge for your store. Shoppers ask in plain language; the concierge finds products, answers questions and fills the cart. Connects your shop to the Backpilot service. 6 * Version: 1.3. 06 * Version: 1.3.1 7 7 * Requires at least: 6.4 8 8 * Requires PHP: 7.4 … … 22 22 defined( 'ABSPATH' ) || exit; 23 23 24 define( 'BACKPILOT_VERSION', '1.3. 0' );24 define( 'BACKPILOT_VERSION', '1.3.1' ); 25 25 define( 'BACKPILOT_PLUGIN_FILE', __FILE__ ); 26 26 define( 'BACKPILOT_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); -
backpilot/trunk/languages/backpilot.pot
r3781389 r3796383 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Backpilot for WooCommerce 1.3. 0\n"5 "Project-Id-Version: Backpilot for WooCommerce 1.3.1\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/backpilot\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2026-11- 03T08:25:08+00:00\n"12 "POT-Creation-Date: 2026-11-11T13:00:25+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 101 101 102 102 #: src/Admin.php:680 103 #: src/Client.php:3 74103 #: src/Client.php:395 104 104 msgid "Backpilot can show conversations only at the address your shop is registered as." 105 105 msgstr "" … … 466 466 msgstr "" 467 467 468 #: src/Client.php:1 53469 #: src/Client.php:2 05470 #: src/Client.php:3 50468 #: src/Client.php:160 469 #: src/Client.php:226 470 #: src/Client.php:371 471 471 msgid "Backpilot returned an unexpected response." 472 472 msgstr "" 473 473 474 #: src/Client.php: 396474 #: src/Client.php:417 475 475 msgid "This store is already connected to Backpilot from another installation. Disconnect it there, or contact support." 476 476 msgstr "" 477 477 478 #: src/Client.php:4 78478 #: src/Client.php:499 479 479 msgid "Backpilot no longer recognizes this site." 480 480 msgstr "" 481 481 482 #: src/Client.php: 484482 #: src/Client.php:505 483 483 msgid "Backpilot is still handling the previous request for this shop." 484 484 msgstr "" 485 485 486 486 #. translators: %d: HTTP status code returned by the Backpilot service. 487 #: src/Client.php: 493487 #: src/Client.php:514 488 488 #, php-format 489 489 msgid "Backpilot answered with an unexpected status (%d)." -
backpilot/trunk/readme.txt
r3781389 r3796383 7 7 WC requires at least: 9.0 8 8 WC tested up to: 11.1 9 Stable tag: 1.3. 09 Stable tag: 1.3.1 10 10 License: GPLv2 or later 11 11 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 60 60 The plugin is the connector between your store and the [Backpilot service](https://backpilot.ai/woocommerce/), which powers the concierge; the service is required for the plugin to work. 61 61 62 **Nothing is sent until you click Connect.** Connecting registers your shop with the service: your site's URL, your administrator email (used only to tell you when your shop goes live or needs attention) and your WordPress, WooCommerce and plugin versions. The service then reads your catalog from WooCommerce — via the REST API with a read-only key you approve, or through the public Store API — and keeps it in sync. Your site periodically checks your shop's status with the site key issued at registration. When a shopper uses the concierge, their messages and the products shown are processed and stored by the service, and you can read those conversations in your WordPress admin under Backpilot → Conversations; payment details are never involved — checkout runs on your own site. Deleting the plugin deregisters your shop.62 **Nothing is sent until you click Connect.** Connecting registers your shop with the service: your site's URL, your administrator email (used only to tell you when your shop goes live or needs attention), your store's base country (so the service handles what depends on your location correctly, such as prices) and your WordPress, WooCommerce and plugin versions. The service then reads your catalog from WooCommerce — via the REST API with a read-only key you approve, or through the public Store API — and keeps it in sync. Your site periodically checks your shop's status with the site key issued at registration. When a shopper uses the concierge, their messages and the products shown are processed and stored by the service, and you can read those conversations in your WordPress admin under Backpilot → Conversations; payment details are never involved — checkout runs on your own site. Deleting the plugin deregisters your shop. 63 63 64 64 [Terms of service](https://backpilot.ai/terms/) · [Privacy policy](https://backpilot.ai/privacy/) … … 120 120 == Changelog == 121 121 122 = 1.3.1 = 123 * Connect tells Backpilot your store's base country, so the service handles what depends on your location correctly, such as prices. 124 122 125 = 1.3.0 = 123 126 * Conversations: read your shoppers' chats, as they saw them, under Backpilot → Conversations. … … 145 148 == Upgrade Notice == 146 149 150 = 1.3.1 = 151 Click Re-connect once after updating so Backpilot learns your store's base country and handles what depends on your location correctly. 152 147 153 = 1.3.0 = 148 154 New Conversations page: read your shoppers' chats in your WordPress admin. -
backpilot/trunk/src/Client.php
r3781389 r3796383 118 118 } 119 119 120 // What this shop is running, as the registration record holds it: sent here 121 // and with nothing else. Four `get_bloginfo()`-class reads. 122 $body = array( 123 'shopUrl' => home_url(), 124 'adminEmail' => $admin_email, 125 'wpVersion' => get_bloginfo( 'version' ), 126 'wooVersion' => defined( 'WC_VERSION' ) ? WC_VERSION : '', 127 'pluginVersion' => BACKPILOT_VERSION, 128 ); 129 // The store's base country says whose shopper the service reads the shop as, 130 // which matters for a shop that prices by the visitor's location. A store 131 // without one sends nothing, and the service then reads the shop as before. 132 $base_country = self::base_country(); 133 if ( '' !== $base_country ) { 134 $body['baseCountry'] = $base_country; 135 } 136 120 137 $response = wp_remote_post( 121 138 $this->api_base_url() . '/api/plugin/register', … … 123 140 'timeout' => self::REGISTER_TIMEOUT, 124 141 'headers' => $headers, 125 // What this shop is running, as the registration record holds it: 126 // sent here and with nothing else. Three `get_bloginfo()`-class reads. 127 'body' => wp_json_encode( 128 array( 129 'shopUrl' => home_url(), 130 'adminEmail' => $admin_email, 131 'wpVersion' => get_bloginfo( 'version' ), 132 'wooVersion' => defined( 'WC_VERSION' ) ? WC_VERSION : '', 133 'pluginVersion' => BACKPILOT_VERSION, 134 ) 135 ), 142 'body' => wp_json_encode( $body ), 136 143 ) 137 144 ); … … 161 168 'rest_api_ticket' => preg_match( '/^[A-Za-z0-9._-]{16,255}\z/', $ticket ) ? $ticket : '', 162 169 ); 170 } 171 172 /** 173 * The store's base country as a bare country code. WooCommerce stores its base 174 * location as one option, country and state joined by a colon (`GB:ENG`, or `GB` 175 * alone where a country has no states); the state is of no use to the service. 176 * `''` when the store has no base location. 177 * 178 * @return string 179 */ 180 private static function base_country() { 181 $location = explode( ':', (string) get_option( 'woocommerce_default_country', '' ), 2 ); 182 183 return trim( $location[0] ); 163 184 } 164 185
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)