Skip to content

Fix[Image Generation]: Detect support for connectors that authenticate without an API key (e.g. OAuth)#748

Open
diarmuidie wants to merge 1 commit into
WordPress:developfrom
diarmuidie:fix/image-gen-oauth-connectors
Open

Fix[Image Generation]: Detect support for connectors that authenticate without an API key (e.g. OAuth)#748
diarmuidie wants to merge 1 commit into
WordPress:developfrom
diarmuidie:fix/image-gen-oauth-connectors

Conversation

@diarmuidie

@diarmuidie diarmuidie commented Jun 19, 2026

Copy link
Copy Markdown

What?

Follow up to #679.

has_image_generation_support() skipped connectors that authenticate without an API key (e.g. OAuth) because it only checked for API-key credentials. It now also honors connectors the AI client registry reports as configured.

Why?

#679 gates the image generation UI on has_image_generation_support(). That check relied solely on has_connector_authentication(), which by design only detects API-key credentials (environment variable, constant, or stored option).

As a result, a provider that is fully configured but authenticates via OAuth was never counted as supporting image generation, and the image generation UI stayed hidden even though the provider exposes an image-generation-capable model.

This mirrors how text generation credential detection already honors connectors that do not rely on API key settings.

How?

In the connector loop, a connector now qualifies when it either has API-key credentials or is_connector_configured() reports it as configured through the registry:

if ( ! has_connector_authentication( $connector_id ) && ! is_connector_configured( $connector_id ) ) {
    continue;
}

A $reset_cache parameter was added to has_image_generation_support() so the per-request memoization can be recomputed (used by the new tests, and useful when connector configuration changes within a single request).

Use of AI Tools

AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 4.8
Used for: Investigating the regression, drafting the fix, and writing the integration tests; reviewed and edited by me.

Testing Instructions

Automated: tests/Integration/Includes/HelpersTest.php covers has_image_generation_support() for the API-key path, the non-API-key (registry-configured) path, the missing-capability case, and the unauthenticated/unconfigured skip path.

Manual:

  1. Configure an AI connector that authenticates without an API key (e.g. OAuth) and exposes an image-generation-capable model, with no API key set.
  2. Verify the image generation UI is now available (it was hidden before this change).
  3. Regression check: an API-key connector with image support still shows the UI; no configured/authenticated connectors keeps it hidden.

Changelog Entry

Fixed - Image generation is now detected for connectors that authenticate without an API key (e.g. OAuth).

Open WordPress Playground Preview

@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: diarmuidie <diarmuidwpe@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

has_image_generation_support() skipped connectors that authenticate
without an API key (e.g. OAuth) because it only checked for API-key
credentials. Also honor connectors the registry reports as configured,
consistent with text generation credential detection.

Add integration tests covering the API-key path, the non-API-key
(configured) path, the missing-capability case, and the
unauthenticated/unconfigured skip path.
@diarmuidie diarmuidie force-pushed the fix/image-gen-oauth-connectors branch from fc4e693 to 73b28bf Compare June 19, 2026 11:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant