This release adds 1 notable feature for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+11 more
Affected surfaces
Summary
AI summaryAdded a generic per-account OAuth wizard for plugins and fixed Meta override plus STATE.json campaign upsert issues.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Adds generic per-account OAuth wizard for plugins Adds generic per-account OAuth wizard for plugins Source: llm_adapter@2026-06-10 Confidence: high |
— |
| Bugfix | Medium |
Fixes Meta per-account override being silently ignored Fixes Meta per-account override being silently ignored Source: llm_adapter@2026-06-10 Confidence: low |
— |
| Bugfix | Medium |
Fixes STATE.json rendering clients as inactive after campaign upsert Fixes STATE.json rendering clients as inactive after campaign upsert Source: llm_adapter@2026-06-10 Confidence: low |
— |
| Bugfix | Medium |
Corrects Meta adapter to properly handle per-account override by aligning field name to account_id Corrects Meta adapter to properly handle per-account override by aligning field name to account_id Source: granite4.1:30b@2026-06-10-audit Confidence: low |
— |
| Bugfix | Medium |
Ensures STATE.json correctly updates campaign state after upsert, populating platforms and last_synced_at Ensures STATE.json correctly updates campaign state after upsert, populating platforms and last_synced_at Source: granite4.1:30b@2026-06-10-audit Confidence: low |
— |
Full changelog
Plugin OAuth onboarding plus two credential/state correctness fixes surfaced while integrating the multi-account / agency layering.
Added
- Generic per-account OAuth (authorization-code) wizard for plugins (#201) — a third-party provider whose per-account secret is obtained via the OAuth2 authorization-code grant (Yahoo! JAPAN Ads first) can declare an
AccountOAuthConfig.mureo configurethen offers an Authenticate button that runs the browser consent flow, exchanges the code at the provider's token endpoint, and saves therefresh_tokeninto the named field — instead of the operator pasting it by hand. Same "OSS = mechanism, plugin = values" split as #186; a parallel, library-agnostic flow that reuses the bridge / callback-server / status-poll machinery without touching the Google/Meta onboarding path. Secrets are never logged, the exchange ishttps-only, and the callback enforces the host +stateguards before any exchange. Providers withoutaccount_oauthkeep manual entry.
Fixed
- Meta per-account override silently ignored (#202) — the Meta adapter declared its per-account field as
ad_account_id, butload_meta_ads_credentialsreadsaccount_id(and the wizard persistsaccount_id). The mismatch dropped a per-account override and connected to the wrong ad account. The declared key is nowaccount_id, so the declaration, wizard output, and loader all agree. - STATE.json renders clients as inactive after campaign upsert —
mureo_state_upsert_campaignonly wrote the legacy v1 flatcampaignslist and never stampedlast_synced_at, leaving the v2platformssection (with its requiredaccount_id) empty. The tool now requiresplatform+account_id, populatesplatforms[platform], stampslast_synced_at, and keeps the v1 flat list in lockstep.
Full changelog: https://github.com/logly/mureo/blob/main/CHANGELOG.md
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About logly/mureo
Framework for AI agents (Claude Code, Cursor, Codex, Gemini) to operate Google Ads, Meta Ads, and Search Console. Grounded in a local STRATEGY.md — not metric-chasing. Defense-in-depth security, local-first. Apache 2.0.
Related context
Related tools
Beta — feedback welcome: [email protected]