Skip to content

Latest commit

 

History

History
678 lines (478 loc) · 72.3 KB

File metadata and controls

678 lines (478 loc) · 72.3 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.7.0 (2026-04-09)

Features

  • Account management, adcp 3.10 migration, and BDD test infrastructure (#1170) (ccf91eb)
  • introduce BDD behavioral test suite (delivery metrics, creative formats) (#1146) (7f0d45a)
  • universal request normalization for AdCP backward compatibility (#1175) (1ad11b6)

Bug Fixes

  • add missing AdCP spec fields to UpdateMediaBuyRequest and correct e2e assertions (#1152) (e9a7a67)
  • apply SSRF protection to signals agent URL ingestion (F-04) (c18ac11)
  • ci e2e port allocation and setting | crypto package update (#1188) (e48edda)
  • enforce update budget guardrails and preserve currency in media … (#1140) (1e1aa6d)
  • harden login redirect validation and test-auth gate (F-06, F-02) (#1141) (cd56496)
  • raise on anomalous empty format responses instead of silent return [] (#1167) (149f58b)
  • replace dict subscript with attribute access on FormatId objects (#1166) (80c5776)
  • require authenticated principal for task management tools (#1139) (ff1006d)
  • resolve CI failures on PR #1143 (5c5f34f)
  • use request.script_root for dynamic URL prefixing (#1160) (0b304ed)
  • video/display format template appears unselected after saving product (#1168) (9e395c5)

Performance Improvements

  • ci: parallelize integration tests + local mock creative agent (#1148) (9c65617)

Code Refactoring

  • AdapterConfigRepository + GAM service account auth consolidation (#1171) (5e89166)

Documentation

  • add architecture patterns reference for contributors (#1145) (2d61ea1)

1.6.0 (2026-03-19)

Features

  • consolidate security-sensitive code — SSRF protection and OAuth normalization (#1125) (a683f86)

Bug Fixes

  • coerce AnyUrl to str before passing to yarl.URL() (#1106) (#1118) (641ee9e)
  • creative agent TextContent fallback for adcp SDK 3.6.0 (#1135) (d83ed14)
  • normalize admin UI to canonical /admin routes (0283124)
  • persist platform_line_item_ids in execute_approved_media_buy (#1126) (6a9776d)
  • remove unauthenticated /init-api-key endpoint and harden control-plane auth (#1103) (3a336ef)
  • resolve forked Alembic migration graph and prevent recurrence (#1144) (a4cd866)
  • restore pre-#1066 admin routes via flask fallback mount (4b919f3)
  • Skip format validation when creative agent returns no formats (#1137) (1173473)

Code Refactoring

  • complete delivery schema extraction from _base.py (#1121) (46624e9)
  • Eliminate get_db_session() from business logic — complete repository pattern adoption (#1097) (1965f1d)
  • extract shared delivery helpers and migrate all adapters (#1124) (e8a9b8a)

1.5.0 (2026-03-09)

Features

  • AdCP v3.6 upgrade — schema migration, auth hardening, repository pattern, multi-tenant isolation (#1071) (3398aab)
  • Creative domain completion — v3.6 schema, auth hardening, error propagation, 3300+ tests (#1080) (0cbe97c)
  • delivery domain completion + media buy test coverage (v3.6) (#1081) (46db70f)
  • Error recovery classification and standard error vocabulary (#1083) (96ed70f)
  • Product v3.6 completion — schema extraction, repository pattern, obligation test coverage (#1082) (90e1dfa)

Bug Fixes

  • resolve FormatId AttributeError crashing Add/Edit Product pages (#1079) (0b22f1e)

Code Refactoring

  • FastAPI migration — unify MCP + A2A + Admin into single process (#1066) (7d2b1d9)

1.4.0 (2026-02-27)

Features

  • Add Broadstreet Ads adapter with template support (#1013) (d7db92e)
  • implement get_media_buys tool with delivery snapshots (#1063) (0ebcf93)
  • Support AdCP v3 structured geo targeting (#1006) (#1024) (ec3939a)

Bug Fixes

  • Add root-level URL fallback for simple creatives (843ab76)
  • bump googleads to 49.0.0 and remove GAM_API_VERSION constant (#1070) (f6ce2a9)
  • handle FormatId objects in format validation during media buy creation (3e9dcaf)
  • improve test harness stability and add real GAM e2e tests (#1062) (52dc231)
  • propagate delivery_type in GAM products_map for correct line item type selection (#1058) (ff36add)
  • resolve property_ids/property_tags authorization in property discovery (#1054) (a188b6a)
  • Unify creative URL extraction and update GAM macro mappings (56cbc6a)
  • Unify creative URL extraction and update GAM macro mappings (70b04e2)
  • Update vulnerable dependencies (cryptography, pillow) (4ba6c61)
  • use attribute access for FormatId in format validation during media buy creation (502f978), closes #1019

Code Refactoring

  • eliminate model_dump antipatterns and migrate to adcp library base classes (#1051) (5e6815f)
  • enforce typed model boundaries across serialization and data flow (#1044) (c412ce9)

1.3.1 (2026-02-06)

Bug Fixes

  • Convert FormatId dicts to objects for GAM creative placeholders (#1016) (0a6f2a2)

1.3.0 (2026-02-04)

Features

  • Add schema-driven adapter configuration (#1007) (e6324b6)
  • Display version in tenant landing page footer (27780c5)
  • Display version in tenant landing page footer (37015e6)

Bug Fixes

  • Add audit logging for get_products, update_media_buy, and update_performance_index (9dfd39b)
  • Add audit logging for get_products, update_media_buy, and update_performance_index (d563dc8)
  • Correct comment to match actual implementation (starts with, not contains) (666f889)
  • Improve GAM creative-to-line-item matching for flexible naming templates (126f0dd)
  • Improve GAM creative-to-line-item matching for flexible naming templates (7d85208)
  • more tests (88b0347)
  • mypy (0aeb111)
  • preserve format dimensions during media buy approval (1bdc4a7)
  • preserve format dimensions during media buy approval (dc2429e)
  • Preserve signup flow state through OAuth redirect (7e63052)
  • Preserve signup flow state through OAuth redirect (735211d)
  • reset tests to main (03e32db)
  • tests (491e21e)
  • Update organization and repository names in ipr sig workflow (3217152)
  • Use dynamic dates in GAM pricing restriction tests (bef48d1)
  • Use dynamic dates in pricing integration tests (a89dc8a)

Documentation

  • Add PR naming guideline to CLAUDE.md (34a87be)

1.2.0 (2026-01-29)

Features

  • Add get_adcp_capabilities tool for AdCP v3 compliance (#973) (407a495)

Bug Fixes

  • ipr policy should point to prebid.org (1fad905)
  • Remove unnecessary trafficker_id requirement from GAM creatives_manager (#975) (87fad8a)

Documentation

1.1.0 (2026-01-26)

Features

  • Add dry_run mode support for create/update media buy operations (#970) (e9aac61)

Bug Fixes

  • Add v2.x backward compatibility for pricing_options and clean up production logs (#971) (0992131)

1.0.0 (2026-01-26)

⚠ BREAKING CHANGES

  • This updates the AdCP library dependency from 2.14.0 to 3.0.0.

Features

0.9.3 (2026-01-25)

Bug Fixes

  • Handle product.format_ids as dicts in creative validation (#965) (1c760e6)
  • ignore url not configured when use mock adapters (#943) (7f55e02)

0.9.2 (2026-01-22)

Bug Fixes

  • Construct FormatId from DB creative's agent_url and format columns (#961) (b22dbff)

0.9.1 (2026-01-19)

Bug Fixes

  • Sync custom targeting keys to adapter_config during inventory sync (fa187f9)
  • Sync custom targeting keys to adapter_config during inventory sync (d49badc)

0.9.0 (2026-01-16)

Features

  • Add role name fallback for tracker detection and fix REDIRECT_URL macro (4054133)
  • Add tracker_redirect support with REDIRECTION_URL macro (6b34831)
  • Add tracking pixel macro substitution for GAM adapter (a3dd2d1)

Bug Fixes

  • Add isinstance check for list before append in creative_helpers (8b42656)
  • Improve click tracker and native creative tracking handling (ade8de4)
  • Pass tenant_gemini_key as keyword argument to build_order_name_context (5f4f1f1)
  • Restore click tracking URL support via destinationUrl (c3eeab7)

0.8.0 (2026-01-14)

Features

  • update to adcp 2.18.0 with new assets field support (6d19499)
  • update to adcp 2.18.0 with new assets field support (4c94434)

Bug Fixes

  • Accept Authorization: Bearer header for MCP authentication (#948) (a1ae3ff)
  • Fix CI test failures and security vulnerabilities (f1e4c40)
  • Improve onboarding experience and resolve first-run issues (#946) (e803e85)
  • resolve mypy type errors for adcp 2.18.0 format assets (7d0a021)
  • Update adcp to 2.18.0 for assets field support (9693fcc)
  • Update adcp to 2.18.0 for assets field support (ebfb27d)
  • update tests for adcp 2.18.0 compatibility (0a60085)
  • update urllib3 and werkzeug to fix security vulnerabilities (9490db8)
  • use dynamic adcp version in e2e tests instead of hardcoded 2.5.0 (ecee6f2)

Code Refactoring

  • rename asset_req to asset_spec for clarity (f15c9ea)

Documentation

  • clarify that repeatable groups were never supported in asset extraction (dbee49e)

0.7.0 (2026-01-08)

Features

  • Add tenant-configurable favicon support (#940) (f8b1696)

Bug Fixes

  • a2a bugs with media buy and media buy delivery (c5325b9)
  • a2a bugs with media buy and media buy delivery (ea98357)
  • Add security audit to CI and upgrade fastmcp (#941) (ec592ed)
  • Include empty pricing_options in serialization for anonymous users (#939) (4e57265)
  • Set default role to admin for SSO auto-provisioned users (#937) (e64440c)

0.6.0 (2026-01-05)

Features

  • Add GAM placement targeting for creative-level targeting (adcp#208) (#915) (b2f9585)
  • apply suggestions (362513f)
  • apply suggestions (9b75990)
  • improve e2e test for a2a push notification delivery v2 (f9008b9)
  • Make SSO optional for multi-tenant deployments (#931) (8ac80a1)
  • migrate push notification sending for media_buy (6fa4cda)
  • undo unrelated changes (9a7e45f)
  • update webhook delivery function to support both mcp and a2a payloads (7f41d98)
  • update webhook delivery function to support both mcp and a2a payloads (27b2eaa)
  • wip (0713543)

Bug Fixes

  • adcp version; media buy status change; media buy delivery look up (41dd1dc)
  • Add Fly.io header middleware for proper HTTPS detection (#920) (a115fc9)
  • Add multi-admin domain support for cross-domain OAuth (#919) (f373ebb)
  • Clear session before OAuth to prevent stale cookie conflicts (#924) (addab84)
  • Correct middleware ordering for Fly.io header processing (#921) (c4d373d)
  • e2e webhook delivery check (1599266)
  • Explicitly save session on OAuth redirect to persist state cookie (#928) (e78ae67)
  • Fix list_creatives enum serialization and invalid creative count (#930) (3d9c643)
  • improve tests (676690b)
  • integration test v2 (756d6d4)
  • integrations (8050605)
  • link validator check for cyclic bugs (91fe6f7)
  • mypy failures (79de36d)
  • Preserve tenant context on OAuth callback errors (#918) (c82760b)
  • Preserve X-Forwarded-Proto from Fly.io through nginx (#922) (5eddd36)
  • Prevent redirect loop for super admins accessing /admin/ (#929) (95d7cac)
  • Restore deleted migration to fix Fly.io deploy (#914) (2cfbccc)
  • Reuse unwrapped brand_manifest for policy checks (#932) (#935) (03ba408)
  • Route multi-tenant subdomain requests to tenant-specific login (#916) (c0152db)
  • Run database migrations automatically on docker compose up (#933) (c5c73a8)
  • run_all_tests ci (3a1b1d2)
  • Show full values in Pydantic extra_forbidden errors (#912) (165d985)
  • Task and TaskStatusUpdate serializations (a8e7792)
  • Use global OAuth as fallback, not setup mode for multi-tenant (#917) (ef63349)

Documentation

  • Update Docker Compose documentation to reflect nginx proxy architecture (#934) (5503768)

0.5.0 (2026-01-01)

Features

  • Add dynamic per-tenant OIDC/SSO authentication (#903) (ed05a41)
  • Add format template picker UI for AdCP 2.5 parameterized formats (#782) (#882) (532657e)
  • Add vidium MCP server to local configuration (#904) (ebcfdd1)
  • Convert advertising channel from single to multi-select (#897) (a1aa8e4)
  • Display sales agent version in agent card (#902) (663702b)
  • Implement AI product ranking with simplified catalog (#906) (d59e76b)
  • Simplify user authorization with User records as primary auth method (#907) (504b489)

Bug Fixes

  • Simplify Docker Compose setup to fix mount errors (#910) (723b0b2)
  • Single-tenant deployment and SSO configuration (#908) (e725781)
  • src.core.format_spec_cache undefined (#901) (e3e701c)
  • Update docs links and fix alembic migrations (#911) (e498a43)
  • Use pull_request_target for PR title check on fork PRs (#909) (bb9817d)

Documentation

  • Clarify SUPER_ADMIN_EMAILS is optional with per-tenant OIDC (#905) (399b255)

0.4.1 (2025-12-29)

Documentation

  • Add Fly Managed Postgres option to deployment guide (#894) (6bf6ce9)
  • Fix GCP Cloud Run deployment walkthrough (#896) (10a9674)

0.4.0 (2025-12-28)

Features

  • Add GAM currency detection and Budget Controls integration (#887) (f7539e3)
  • Consolidate Docker entrypoint to use Python directly (#880) (a12b19d)
  • Default to production setup, make demo mode opt-in (#883) (580bcfe)
  • Restrict currency selection to GAM-supported currencies (#890) (1076539)

Bug Fixes

  • Only set SESSION_COOKIE_DOMAIN in multi-tenant mode (#886) (dfbb577)

Code Refactoring

  • Reorganize admin settings navigation and elevate publisher management (#892) (2f5e9e6)

Documentation

  • Reorganize documentation with automatic link checking (#879) (a8f57a6)

0.3.0 (2025-12-26)

Features

  • Add Docker Hub as secondary container registry (#878) (71e7d2f)
  • Enhance AdCP 2.5 creative rotation weight support with improved error handling (#876) (d226b58)

0.2.1 (2025-12-25)

Bug Fixes

  • Use www-data user in nginx-simple.conf for Debian compatibility (#874) (81f6e42)

0.2.0 (2025-12-24)

Features

  • Improve Docker quickstart - ARM64 support, better docs, fail-fast validation (#859) (ba3f81a)
  • Improve single-tenant mode UX and Docker quickstart (#868) (8559f8d)
  • Pydantic AI multi-provider integration with admin UI (#860) (1ff0366)
  • show access token directly in advertisers table (#867) (ceac7b0)

Bug Fixes

  • enforce tenant human_review_required for media buy approval (#866) (92c562e)
  • Fix/format ids type handling for the format_ids in the products table (#864) (bd65beb)
  • Update release-please to use manifest mode (v4 config) (925a1b2)

Code Refactoring

  • align schemas with AdCP library specifications (#856) (3c60413)

Documentation

  • Add Conventional Commits guidance to CLAUDE.md (4578eab)
  • Add platform-specific deployment guides and Cloud SQL improvements (#869) (38626f8)
  • Update quickstart to use published Docker images (#857) (435d6d2)
  • Update quickstart to use published Docker images (#857) (#861) (7db5c94)

0.1.0 (2025-12-20)

⚠ BREAKING CHANGES

  • Media buy creation now FAILS when creatives are missing required fields (URL, dimensions) instead of silently skipping them.

Features

  • Add AdCP 2.5 extension to A2A agent card (#783) (a979cb6)
  • add auth_header and timeout columns to creative_agents table (#714) (64eecd8)
  • add background scheduler to auto-transition media buy statuses based on flight dates (4af1343)
  • add background scheduler to auto-transition media buy statuses based on flight dates (d6f8d78)
  • Add brand manifest policy system for flexible product discovery (#663) (1c00e1d)
  • Add brand manifest policy UI dropdown in Admin (#726) (55d2414)
  • add commitizen for automated version management (#666) (4c49051)
  • Add creative format size filtering with inventory-based suggestions (#690) (ced6466)
  • add date range validation and testing for validation (9706fd1)
  • Add hierarchical product picker with search and caching (#707) (6a6c23d)
  • Add inventory profiles for reusable inventory configuration (#722) (ceb2363)
  • Add manual delivery webhook trigger to admin UI (f91d55e)
  • Add manual delivery webhook trigger to admin UI (e95d6f4)
  • Add real-time custom targeting values endpoint and visual selector widget (#678) (ebd89b9)
  • Add signals agent registry with unified MCP client (#621) (9a15431)
  • alphabetize targeting keys/values and show display names (#687) (c6be06d)
  • Auto-download AdCP schemas on workspace startup (#616) (94c3876)
  • calculate clicks and ctr (ebe7d66)
  • enforce strict AdCP v1 spec compliance for Creative model (BREAKING CHANGE) (#706) (ff1cbc4)
  • improve product workflow - always show formats and descriptive targeting values (#688) (4530f25)
  • Publish Docker images on release (#855) (47e88e3)
  • refactor and add integration and e2e tests for delivery metrics webhooks (3df36de)
  • refactor webhook deliveries (f1302ba)
  • Remove Scope3 dependencies - make codebase vendor-neutral (#668) (de503bf)
  • Simplify targeting selector to match existing UI patterns (#679) (ce76f8e)
  • support application level context (#735) (ea6891d)
  • Update budget handling to match AdCP v2.2.0 specification (#635) (0a9dd4a)

Bug Fixes

  • 'Select All' buttons in Create Product page by fixing JS scope (5f5553a)
  • 'Select All' buttons in Create Product page by fixing JS scope (6bcca14)
  • Achieve 100% mypy compliance in src/ directory - 881 errors to 0 (#662) (d7f4711)
  • ad unit format button, targeting selector crash, and service account auth (#723) (83bd497)
  • AdCP responses now exclude None values in JSON serialization (#642) (c3fa69a)
  • AdCP responses now properly omit null/empty optional fields (#638) (ab7c4cd)
  • Add /admin prefix to OAuth redirect URI for nginx routing (#651) (a95a534)
  • Add content hash verification to prevent meta file noise (#659) (20b0a16)
  • add e2e tests for get_media_buy_delivery direct request (1263a81)
  • Add logging + fix targeting browser sync button (#677) (bdf19cc)
  • Add missing /api/tenant/<tenant_id>/products endpoint (9dc4bdc)
  • Add missing activity feed and audit logs to manual approval path (#729) (114778c)
  • Add missing adapter_type to SyncJob creation (fb0fb79)
  • Add null safety checks for audience.type and audience.segment_type (#682) (b8e6e77)
  • add pricing to delivery (78eab1e)
  • Add timeout to discover_ad_units to prevent stuck syncs (56457ad)
  • add type field to audience segments API for filtering (28302f2)
  • add type field to audience segments API for filtering (474df9a)
  • advertiser creation (4e9e32d)
  • advertiser creation (d323477)
  • apply type filter when fetching inventory by IDs (3fc3ded)
  • approval flow (ee2e90a)
  • attempt to fix e2e test in ci (8c269a8)
  • Auto-create default principal and improve setup output (#849) (0c222f3)
  • Auto-create user records for authorized emails on tenant login (#492) (454eb8f)
  • Check super admin status before signup flow redirect (#674) (e5dfb8d)
  • Clean up smoke tests and resolve warnings (#629) (73cbc99)
  • Complete /admin prefix handling for all API calls (#736) (4c20c9c)
  • Convert FormatReference to FormatId in MediaPackage reconstruction (#656) (7c24705)
  • Convert summary dict to JSON string in sync completion (3318ee0)
  • convert to utc (bcb54f0)
  • Correct AdManagerClient signature for service account auth (#571) (bcb1686), closes #570
  • Correct API field name mismatch in targeting selector widget (#681) (9573749)
  • correct creative agent URL typo (creatives → creative) (#844) (f29659b)
  • correct inventory search endpoint and parameters in unified view (201fd4f)
  • correct inventory search endpoint and parameters in unified view (5532adb)
  • Correct tenant context ordering in update_media_buy (#773) (2c2d9b1)
  • Create mock properties only for mock adapters (#854) (efdcfca)
  • creative agent url check; allow to fallback to /mcp when creating mcp client (09bc1ac)
  • creative agent url check; allow to fallback to /mcp when creating mcp client (6bf221f)
  • creative approval/rejection webhook delivery (9062449)
  • Creative management - reject invalid creatives (#460) (1540de3)
  • Default publisher_properties to 'all' when not specified (#759) (690f2b1)
  • display and save custom targeting keys in product inventory (#692) (991656b)
  • Docker test cleanup to prevent 100GB+ resource accumulation (9036cae)
  • Docker test cleanup to prevent 100GB+ resource accumulation (9ed12fd)
  • e2e test context initialization (0c463a1)
  • e2e test for media buy deliveries webhooks (64d9529)
  • edit configuration feature (fb61f20)
  • Enable all 189 integration_v2 tests - achieve 100% coverage goal (#626) (6377462)
  • enforce brand_manifest_policy in get_products (#731) (075e681)
  • Ensure Package objects always have valid status (#755) (757c0d3)
  • ensure User record creation during OAuth tenant selection (#701) (be22ffb)
  • Exclude null values from list_authorized_properties response (#647) (5afb6b5)
  • existing unit tests (60a1961)
  • fetch inventory by IDs to bypass 500-item API limit (c1e197e)
  • fetch specific ad units by ID for placement size extraction (85f792d)
  • file lint error (#625) (2fec26e)
  • flush deleted inventory mappings before recreating (c83e34c)
  • GAM adapter (f4f0df1)
  • GAM adpaters and other logic changes including bumping adcp client to 2.5.5 (8367e0a)
  • GAM advertiser search and pagination with Select2 UI (#710) (792d4ae)
  • GAM product placements not saving when line_item_type absent (#691) (eb66e33)
  • GAM test connection error fix (78e88ae)
  • GAM test error fix (48b07a9)
  • Handle /admin prefix in login redirects and API calls (#733) (15ab582)
  • Handle CreateMediaBuyError response in approval and main flows (#745) (574943b)
  • Handle unrestricted agents in property discovery (no property_ids = all properties) (#750) (136575b)
  • Implement creative assignment in update_media_buy (#560) (99cdcdc)
  • implement missing naming template preview logic (39eafff)
  • implement missing naming template preview logic (66fc55d)
  • Implement missing update_media_buy field persistence (#749) (f67a304)
  • Import get_testing_context in list_authorized_properties (#632) (6612c7d)
  • improve creative status handling and dashboard visibility (#711) (539e1bb)
  • improve inventory browser UX and fix search lag (#709) (0d09f1b)
  • include ALL statuses when fetching inventory names for existing products (2a61600)
  • Include service_account_email in adapter_config dict for template (#517) (c36aef6)
  • increase sync_id length from 50 to 100 (cd89098)
  • increase sync_id length from 50 to 100 (6ae87ff)
  • Integration tests, mypy errors, and AdCP schema compliance (#633) (77c4da6)
  • Integration tests, mypy errors, and deprecation warnings (#628) (be52151)
  • Integration tests, mypy errors, and test infrastructure improvements (#631) (ca4c184)
  • inventory profile save URL and property_mode handling (40f192a)
  • inventory profile save URL and property_mode handling (7440350)
  • inventory sync (d300258)
  • Inventory sync JavaScript errors (0d2ad1f)
  • inventory sync status now checks GAMInventory table instead of Products (#708) (193e87d)
  • lint errors (dff427a)
  • list_tasks query using non-existent WorkflowStep.tenant_id (#822) (c17abcb)
  • Load pricing_options when querying products (#413) (a87c69a)
  • make media_buy_ids optional in get_media_buy_delivery per AdCP spec (#704) (5c69013)
  • media buy tests creation (4045386)
  • media buys & creatives (58c4f45)
  • mypy (77b5ecc)
  • nest inventory picker modal to resolve search input focus issue (a14c47b)
  • nest inventory picker modal to resolve search input focus issue (f888fe9)
  • Normalize agent URL variations for consistent validation (#497) (9bef942)
  • parse and apply custom targeting from product forms to GAM line items (#686) (a1132ae)
  • pass DELIVERY_WEBhOOK_INTERVAL when running e2e tests in ci/cd (07f3eee)
  • persist targeting and placement selections in product editor (#689) (ebbecf0)
  • populate custom targeting keys when editing products (#693) (88f0b9e)
  • prevent duplicate IDs in placement display after removal (#696) (87b0eac)
  • Prevent duplicate tenant display when user has both domain and email access (#660) (92ca049)
  • product editor bugs - JSON parsing, text color, selection preservation (#694) (50765cf)
  • rebase (581b18b)
  • Reduce skipped tests from 323 to ~97 (70% improvement) (#669) (c48f978)
  • rejection (79cb754)
  • remove /a2a suffix from A2A endpoint URLs and add name field to configs (2b036c6)
  • remove /a2a suffix from A2A endpoint URLs and add name field to configs (13914b8)
  • remove 97% of type: ignore comments and fix 169 mypy errors (#820) (#823) (1175c63)
  • Remove auto-restart of delivery simulators on server boot (#646) (52c2378)
  • remove dead API docs link and fix testing docs path (#700) (9fd959e), closes #676
  • Remove fake media_buy_id from pending/async responses in mock adapter (#658) (dc2a2ba)
  • remove inventory sync requirement for mock adapter (#719) (4268b2e)
  • Remove non-existent fields from SyncCreativesResponse (9bf3da7)
  • Remove non-existent fields from SyncCreativesResponse (453c329)
  • Remove non-existent impressions field from AdCPPackageUpdate (#500) (404c653)
  • Remove non-spec tags field from ListAuthorizedPropertiesResponse (#643) (a38b3d7)
  • Remove stale ui-test-assistant MCP server configuration (#851) (0e7cf9a)
  • remove top-level budget requirement from create_media_buy (#725) (4474de3)
  • Replace progress_data with progress in SyncJob (f4008f4)
  • require authentication for sync_creatives and update_media_buy (#721) (defa383)
  • Resolve GAM inventory sync and targeting data loading issues (#675) (ca31c6a)
  • Resolve product creation and format URL issues (#756) (d99a6f8)
  • Restore accidentally deleted commitizen configuration files (c92075c)
  • Restore brand manifest policy migrations and merge with signals agent (e30c106)
  • restore unrelative changes (8c159e6)
  • Return human-readable text in MCP protocol messages (#644) (3bb9bce)
  • Route external domains to tenant login instead of signup (#661) (b194b83)
  • sales agent logic (0a51476)
  • sanitize tenant ID in GCP service account creation (b4c3bbc)
  • sanitize tenant ID in GCP service account creation (6774587)
  • Set session role for super admin OAuth login (#654) (505b24f)
  • set tenant context before fetching delivery metrics (1042274)
  • Set tenant context when x-adcp-tenant header provides direct tenant_id (#467) (20b3f9c)
  • show both name and ID for placements consistently (#695) (52caddd)
  • signals agent test endpoint async handling (#718) (e1c5d72)
  • Support ListCreativesRequest convenience fields with adcp 2.9.0 (#770) (1bd57f0)
  • syntax (af504a6)
  • Targeting browser, product page auth, UI repositioning + format conversion tests (#683) (d363627)
  • targeting keys errors in browser and product pages (#685) (7fc3603)
  • test (62c2fe0)
  • test delivery webhook sends for fresh data (b35457f)
  • test scase in test_format_conversion_approval (3060a24)
  • tests (5d5347c)
  • tests (1b1ce8e)
  • tests (f70f684)
  • tests (c966e43)
  • try to pass delivery interval through docker-compose.override.yml for e2e tests (c830255)
  • types (d545f14)
  • typo in integration test (d09125e)
  • Unskip 3 integration tests and reduce mypy errors by 330 (#627) (37cc165)
  • Update DNS widget to use A record pointing to Approximated proxy IP (#636) (3291ae6)
  • Update tenant selector template to work with dictionary objects (#652) (aa612a3)
  • Use content-based hashing for schema sync to avoid metadata noise (#649) (5625955)
  • use correct field name inventory_metadata in IDs path (4e7d7a2)
  • Use SQLAlchemy event listener for statement_timeout with PgBouncer (#641) (bde8186)
  • wrap service account credentials with GoogleCredentialsClient (#727) (9d21709)

Documentation

  • clarify GAM setup with three clear paths and environment validation (#847) (6a2e951)
  • document PYTHONPATH requirement for Docker hot reload (#846) (03878f4)

Added

  • Changeset system for automated version management
  • CI workflows to enforce changeset requirements on PRs
  • Automated version bump PR creation when changesets are merged

0.1.0 - 2025-01-29

Initial release of the Prebid Sales Agent reference implementation.

Added

  • MCP server implementation with AdCP v2.3 support
  • A2A (Agent-to-Agent) protocol support
  • Multi-tenant architecture with PostgreSQL
  • Google Ad Manager (GAM) adapter
  • Mock ad server adapter for testing
  • Admin UI with Google OAuth authentication
  • Comprehensive testing backend with dry-run support
  • Real-time activity dashboard with SSE
  • Workflow management system
  • Creative management and approval workflows
  • Audit logging
  • Docker deployment support
  • Extensive documentation