Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,20 @@ All notable changes to Connect for Procore are documented here.
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this
project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [3.0.1] — 2026-08-16

### Changed

- Documented, at the top of `Support\Encryption`, why the class calls `base64_encode()`.
AES-256-GCM emits raw bytes — IV, auth tag and cipher text — which cannot be stored
in a `wp_option` as-is; base64 is the transport encoding applied after encryption and
reversed before decryption. Every automated scan flags base64 as possible obfuscation,
and a WordPress.org reviewer reads that flag by hand, so the justification belongs
where they will look rather than only in per-line annotations.

No behaviour change. Released so the artifact submitted to WordPress.org corresponds
exactly to a tag.

## [3.0.0] — 2026-08-15

### Changed
Expand Down
4 changes: 2 additions & 2 deletions connect-for-procore.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Plugin Name: Connect for Procore
* Plugin URI: https://github.com/ibuilder/ProcoreWP
* Description: Connect WordPress to the Procore construction management platform. Display projects, teams, drawings, RFIs and more with shortcodes, blocks and a cached REST proxy.
* Version: 3.0.0
* Version: 3.0.1
* Requires at least: 6.5
* Requires PHP: 7.4
* Author: ibuilder
Expand All @@ -22,7 +22,7 @@

defined( 'ABSPATH' ) || exit;

const VERSION = '3.0.0';
const VERSION = '3.0.1';

define( 'PROCORE_CONNECT_VERSION', VERSION );
define( 'PROCORE_CONNECT_FILE', __FILE__ );
Expand Down
9 changes: 8 additions & 1 deletion readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Tags: procore, construction, project management, shortcode, api
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 3.0.0
Stable tag: 3.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Expand Down Expand Up @@ -127,6 +127,10 @@ Yes. Caching goes through the transient API, so a persistent object cache such a

== Changelog ==

= 3.0.1 =

* Documented why the encryption class uses base64: AES-256-GCM produces raw bytes that cannot be stored in a WordPress option as-is, so base64 is the transport encoding applied after encryption. No behaviour change.

= 3.0.0 =

* Renamed from "Procore Connect" to "Connect for Procore". WordPress.org does not permit a plugin name or slug to begin with someone else's trademark, and Procore is a registered trademark of Procore Technologies, Inc. The new name follows the format WordPress.org prescribes for integrations built by non-employees.
Expand Down Expand Up @@ -201,6 +205,9 @@ A complete rewrite. See the upgrade notice below before updating.

== Upgrade Notice ==

= 3.0.1 =
Documentation only. No functional change from 3.0.0.

= 3.0.0 =
The plugin is now called Connect for Procore, to comply with WordPress.org's trademark naming rule. Activate it once after updating — WordPress sees the renamed directory as a new plugin. Your settings, template overrides and custom CSS are preserved.

Expand Down
8 changes: 8 additions & 0 deletions src/Support/Encryption.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@
* without `wp-config.php` does not disclose credentials. If OpenSSL is not
* available the payload is stored base64-encoded and `is_strong()` reports
* false, which the admin screen surfaces as a warning.
*
* On the use of base64: AES-256-GCM produces raw bytes — an initialisation
* vector, an authentication tag and cipher text — which cannot be stored in a
* `wp_option` as-is. base64 is the transport encoding that makes those bytes
* text-safe, applied *after* encryption and reversed *before* decryption. It is
* not hiding anything: every call is on a value that is either already cipher
* text or is about to be, and the plugin ships no encoded source, no encoded
* payloads and no encoded URLs.
*/
final class Encryption {

Expand Down
Loading