Plugin Directory

Changeset 3796383


Ignore:
Timestamp:
11/11/2026 01:19:55 PM (less than one hour ago)
Author:
backpilot
Message:

Release 1.3.1: Connect sends the store's base country

Location:
backpilot
Files:
10 edited
1 copied

Legend:

Unmodified
Added
Removed
  • backpilot/tags/1.3.1/admin/backpilot-conversations.css

    r3781389 r3796383  
    4545        flex: 1 1 auto;
    4646        min-height: 0;
    47         margin: 0 0 12px;
     47        margin: 1.25rem 0 12px;
    4848}
    4949
  • backpilot/tags/1.3.1/backpilot.php

    r3781389 r3796383  
    44 * Plugin URI:        https://backpilot.ai/woocommerce/
    55 * 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.0
     6 * Version:           1.3.1
    77 * Requires at least: 6.4
    88 * Requires PHP:      7.4
    … …  
    2222defined( 'ABSPATH' ) || exit;
    2323
    24 define( 'BACKPILOT_VERSION', '1.3.0' );
     24define( 'BACKPILOT_VERSION', '1.3.1' );
    2525define( 'BACKPILOT_PLUGIN_FILE', __FILE__ );
    2626define( 'BACKPILOT_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
  • backpilot/tags/1.3.1/languages/backpilot.pot

    r3781389 r3796383  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Backpilot for WooCommerce 1.3.0\n"
     5"Project-Id-Version: Backpilot for WooCommerce 1.3.1\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/backpilot\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    … …  
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"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"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.12.0\n"
    … …  
    101101
    102102#: src/Admin.php:680
    103 #: src/Client.php:374
     103#: src/Client.php:395
    104104msgid "Backpilot can show conversations only at the address your shop is registered as."
    105105msgstr ""
    … …  
    466466msgstr ""
    467467
    468 #: src/Client.php:153
    469 #: src/Client.php:205
    470 #: src/Client.php:350
     468#: src/Client.php:160
     469#: src/Client.php:226
     470#: src/Client.php:371
    471471msgid "Backpilot returned an unexpected response."
    472472msgstr ""
    473473
    474 #: src/Client.php:396
     474#: src/Client.php:417
    475475msgid "This store is already connected to Backpilot from another installation. Disconnect it there, or contact support."
    476476msgstr ""
    477477
    478 #: src/Client.php:478
     478#: src/Client.php:499
    479479msgid "Backpilot no longer recognizes this site."
    480480msgstr ""
    481481
    482 #: src/Client.php:484
     482#: src/Client.php:505
    483483msgid "Backpilot is still handling the previous request for this shop."
    484484msgstr ""
    485485
    486486#. translators: %d: HTTP status code returned by the Backpilot service.
    487 #: src/Client.php:493
     487#: src/Client.php:514
    488488#, php-format
    489489msgid "Backpilot answered with an unexpected status (%d)."
  • backpilot/tags/1.3.1/readme.txt

    r3781389 r3796383  
    77WC requires at least: 9.0
    88WC tested up to: 11.1
    9 Stable tag: 1.3.0
     9Stable tag: 1.3.1
    1010License: GPLv2 or later
    1111License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    6060The 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.
    6161
    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.
    6363
    6464[Terms of service](https://backpilot.ai/terms/) · [Privacy policy](https://backpilot.ai/privacy/)
    … …  
    120120== Changelog ==
    121121
     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
    122125= 1.3.0 =
    123126* Conversations: read your shoppers' chats, as they saw them, under Backpilot → Conversations.
    … …  
    145148== Upgrade Notice ==
    146149
     150= 1.3.1 =
     151Click Re-connect once after updating so Backpilot learns your store's base country and handles what depends on your location correctly.
     152
    147153= 1.3.0 =
    148154New Conversations page: read your shoppers' chats in your WordPress admin.
  • backpilot/tags/1.3.1/src/Client.php

    r3781389 r3796383  
    118118                }
    119119
     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
    120137                $response = wp_remote_post(
    121138                        $this->api_base_url() . '/api/plugin/register',
    … …  
    123140                                'timeout' => self::REGISTER_TIMEOUT,
    124141                                '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 ),
    136143                        )
    137144                );
    … …  
    161168                        'rest_api_ticket' => preg_match( '/^[A-Za-z0-9._-]{16,255}\z/', $ticket ) ? $ticket : '',
    162169                );
     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] );
    163184        }
    164185
  • backpilot/trunk/admin/backpilot-conversations.css

    r3781389 r3796383  
    4545        flex: 1 1 auto;
    4646        min-height: 0;
    47         margin: 0 0 12px;
     47        margin: 1.25rem 0 12px;
    4848}
    4949
  • backpilot/trunk/backpilot.php

    r3781389 r3796383  
    44 * Plugin URI:        https://backpilot.ai/woocommerce/
    55 * 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.0
     6 * Version:           1.3.1
    77 * Requires at least: 6.4
    88 * Requires PHP:      7.4
    … …  
    2222defined( 'ABSPATH' ) || exit;
    2323
    24 define( 'BACKPILOT_VERSION', '1.3.0' );
     24define( 'BACKPILOT_VERSION', '1.3.1' );
    2525define( 'BACKPILOT_PLUGIN_FILE', __FILE__ );
    2626define( 'BACKPILOT_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
  • backpilot/trunk/languages/backpilot.pot

    r3781389 r3796383  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Backpilot for WooCommerce 1.3.0\n"
     5"Project-Id-Version: Backpilot for WooCommerce 1.3.1\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/backpilot\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    … …  
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"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"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.12.0\n"
    … …  
    101101
    102102#: src/Admin.php:680
    103 #: src/Client.php:374
     103#: src/Client.php:395
    104104msgid "Backpilot can show conversations only at the address your shop is registered as."
    105105msgstr ""
    … …  
    466466msgstr ""
    467467
    468 #: src/Client.php:153
    469 #: src/Client.php:205
    470 #: src/Client.php:350
     468#: src/Client.php:160
     469#: src/Client.php:226
     470#: src/Client.php:371
    471471msgid "Backpilot returned an unexpected response."
    472472msgstr ""
    473473
    474 #: src/Client.php:396
     474#: src/Client.php:417
    475475msgid "This store is already connected to Backpilot from another installation. Disconnect it there, or contact support."
    476476msgstr ""
    477477
    478 #: src/Client.php:478
     478#: src/Client.php:499
    479479msgid "Backpilot no longer recognizes this site."
    480480msgstr ""
    481481
    482 #: src/Client.php:484
     482#: src/Client.php:505
    483483msgid "Backpilot is still handling the previous request for this shop."
    484484msgstr ""
    485485
    486486#. translators: %d: HTTP status code returned by the Backpilot service.
    487 #: src/Client.php:493
     487#: src/Client.php:514
    488488#, php-format
    489489msgid "Backpilot answered with an unexpected status (%d)."
  • backpilot/trunk/readme.txt

    r3781389 r3796383  
    77WC requires at least: 9.0
    88WC tested up to: 11.1
    9 Stable tag: 1.3.0
     9Stable tag: 1.3.1
    1010License: GPLv2 or later
    1111License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    6060The 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.
    6161
    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.
    6363
    6464[Terms of service](https://backpilot.ai/terms/) · [Privacy policy](https://backpilot.ai/privacy/)
    … …  
    120120== Changelog ==
    121121
     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
    122125= 1.3.0 =
    123126* Conversations: read your shoppers' chats, as they saw them, under Backpilot → Conversations.
    … …  
    145148== Upgrade Notice ==
    146149
     150= 1.3.1 =
     151Click Re-connect once after updating so Backpilot learns your store's base country and handles what depends on your location correctly.
     152
    147153= 1.3.0 =
    148154New Conversations page: read your shoppers' chats in your WordPress admin.
  • backpilot/trunk/src/Client.php

    r3781389 r3796383  
    118118                }
    119119
     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
    120137                $response = wp_remote_post(
    121138                        $this->api_base_url() . '/api/plugin/register',
    … …  
    123140                                'timeout' => self::REGISTER_TIMEOUT,
    124141                                '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 ),
    136143                        )
    137144                );
    … …  
    161168                        'rest_api_ticket' => preg_match( '/^[A-Za-z0-9._-]{16,255}\z/', $ticket ) ? $ticket : '',
    162169                );
     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] );
    163184        }
    164185
Note: See TracChangeset for help on using the changeset viewer.