Releases: arcbaslow/meta-ads-agents
Release list
v1.0.2
Meta Ads Agents v1.0.2
Release date: 2026-09-08
This release makes installation, supported workflows and example output easier to verify from the repository front page.
Included
- Rewritten GitHub README with a clear capability table, source installation, quick start, tested commands and links to related tools.
- Project-specific SVG banner and icon, plus a real output screenshot generated from synthetic fixtures.
- Reproducible offline examples, an explicit test section and maintainer release instructions.
- Clarified that the full audit runs through an agent skill, while individual adapters run directly from Python.
- Documented the assembled report-input schema, report formats, account IDs and caching.
- Fixed distribution packaging: the wheel now includes all eight Python adapters instead of metadata only.
Validation
124 tests passed. Ruff passed.
Local validation used Windows and Python 3.12.14 (Node 24 for GTM Diff). The verification record lists the checks and their scope. The repository's CI matrix provides the other supported runtime/OS checks. No live ad account, analytics property, Figma file, AI call or external account write was used for the examples.
Downloads
Use the source archive for the complete toolkit, including scripts, skills, configuration, documentation and demo fixtures. SHA256SUMS.txt records the attached artifact hashes. GitHub's automatically generated source downloads are also available.
Package-registry publishing is separate from this GitHub release and remains controlled by the existing opt-in repository settings. No claim is made that this version is published on PyPI or npm.
v1.0.1
Fixed
- The OAuth callback listener on
localhost:8477accepted anycode
it was handed. There was nostateparameter, so while the listener
was open any local page could drive it into exchanging an
attacker-supplied code and bind the toolkit to someone else's ad
account. The flow now generates a 32-byte state, sends it, and
rejects a callback whose state doesn't match underhmac.compare_digest. read_cacheusedage > ttl_seconds, sottl_seconds=0— the way
callers force a fresh fetch — could still return a cache hit when the
entry was written in the same clock tick, or when the filesystem
reported an mtime marginally ahead of the wall clock. Non-positive
TTLs now short-circuit to a miss and age is clamped at zero. This was
reproducible as an intermittent test failure roughly one run in three.
Changed
- Package, plugin, and marketplace names aligned to
meta-ads-agents.
They previously readclaude-meta-ads, which pointed the plugin
homepage and repository URLs at a repo that does not exist. - README rewritten: badges, accurate CLI examples verified against the
adapters' argparse definitions, caching and rate-limit behaviour
documented.
Added
- MIT
LICENSEfile. The license was declared in metadata but the file
was missing. - CI on Python 3.10 / 3.11 / 3.12 / 3.13 running ruff and pytest.
CONTRIBUTING.md,SECURITY.md, issue and pull-request templates,
Dependabot config.- Ruff and pytest configuration in
pyproject.toml, plus trove
classifiers and project URLs. The lint rule set is selected
explicitly rather than inherited from ruff's implicit default, which
changes between releases and would otherwise turn a ruff upgrade into
a red CI run. scripts/conftest.py, which makes the adapters importable no matter
where pytest is invoked from and redirects the credentials path and
response cache to a temp directory for every test.- Release workflow with a tag-versus-
pyprojectversion guard, sdist
and wheel build, and atwine checkgate.