Aller au contenu principal

Changelog

Historique des versions

Toutes les nouveautés, améliorations et corrections de la plateforme OrbiAds.

Philosophie

Nos principes de développement

Ce qui guide nos décisions de release, semaine après semaine.

Stabilité avant features

Une feature qui déstabilise l'existant n'est pas une feature — c'est une dette. On préfère livrer moins et tenir les promesses déjà faites.

API-first, agent-compatible

Chaque opération GAM doit être accessible via MCP, CLI et API REST. L'interface dashboard est une couche de confort, pas le point d'entrée principal.

Audit qualité avant chaque merge

Chaque release passe par un audit automatisé (Jules AI) qui analyse le diff, identifie les régressions potentielles et rend un verdict PASS / FAIL. On ne merge pas sur un FAIL.

v1.8.4 · Avril 2026 Dernière version

Audit ligne-à-ligne — 188 findings traités

Audit exhaustif du code authentifié (auth, billing, pipeline, reporting, frontend, MCP) — 188 findings analysés, 187 corrigés (1 reporté). Sécurité durcie, robustesse pipeline, dette technique purgée.

Six agents en parallèle ont relu ligne-à-ligne ~50 000 lignes de code (backend Python + frontend SvelteKit + serveur MCP). Verdict initial : 40 P0 bloquants, 92 P1 dégradations UX, 56 P2 dette. Quatorze sprints de correction plus tard, le verdict global passe de RED à GREEN sur les 6 zones.

  • Correction Auth: OAuth state TTL=10min + expiresAt explicite (anti-replay)
  • Correction Auth: refresh_token GAM chiffré KMS (device flow CLI plus en clair)
  • Correction Auth: élévation de privilèges via auto-heal canWrite supprimée → re-OAuth requis
  • Correction Auth: verify_id_token + KMS DEK zero-fill (event loop déblqué + secret wipe)
  • Correction Billing: webhook Stripe atomic claim+grant + grant_locks defense-in-depth
  • Correction Billing: restitute() lock idempotent (plus de double-restitution sur crash)
  • Correction Billing: PII masking customer_id/email dans tous les logs Stripe
  • MCP 13+ tools deduct_or_refund uniforme (creatives, line_items, orders, placements...)
  • MCP Confirmation tokens SHA256 + idempotency layer 1h sur create_order/advertiser
  • MCP PQL LIMIT 200 enforce sur run_pql_query + 4 sites reporting inline
  • MCP Proxy MCP: guards URL-encoding %2e%2e/%5c + cap path 256ch
  • Correction Pipeline: worker drain au shutdown Cloud Run (jobs en vol préservés)
  • Correction Pipeline: recover_campaign via worker (plus de timeout 5min sur rollback)
  • Correction Pipeline: write-ahead manifest + full_rollback try/except + LI mapping persistant
  • Correction Pipeline: bulk_action numChanges partial → BULK_ACTION_PARTIAL error
  • Correction Pipeline: GAM quota soft-batch (10 tokens, TTL 1s) — économie 10× transactions Firestore
  • Correction Reporting: helper _post_report_payload partagé (4 callers, 400 GAM surface)
  • Correction Reporting: gam_retry whitelist 5xx + max_attempts=4 + jitter
  • Correction Reporting: 11 metrics revenue Decimal (précision)
  • Correction Frontend: workflow legacy workflowStore décommissionné
  • Correction Frontend: ErrorBoundary reset au changement de route + beforeNavigate type guard
  • Correction Frontend: archive modal natif <dialog> (focus trap natif + Escape)
  • Correction Frontend: setStatus optimistic update + revert on error
  • Correction Frontend: AssetGrid archived overlay (.opacity-50 + badge)
  • Correction Frontend: 9 catch {} silencieux /reporting → toastStore.error + per-section banners
  • Correction Frontend: billing polling visibilitychange (scale-to-zero respect)
  • Correction Frontend: 8 confirm/alert natifs migrés vers ConfirmationDialog/toastStore
  • Infrastructure Helpers partagés: core/date_utils, core/log_redaction, services/billing_query_service, services/deployment_query_service
  • Infrastructure +27 tests anti-régression (catalogue, DimensionValue, retry, parse_iso, _post_report_payload)
  • Infrastructure Code mort purgé: line_item_service shim, segmented route, 5 imports morts
  • Infrastructure Backend warning guard CI: zero warning summary (Pydantic 2.12 false-positive supprimé)

C'est la release qui ferme la dette accumulée pendant 18 mois de feature delivery. Pas de nouvelle feature visible — mais l'élévation de privilèges silencieuse via auto-heal, les 13+ MCP tools sans rollback de crédits, le webhook Stripe non-atomique, les tasks orphelines au shutdown Cloud Run, les 9 catch silencieux dans /reporting : tout est fermé. La prochaine itération produit redémarre sur des bases saines.

v1.8.0 · Mars 2026

Audit Reporting, Tracking natif & Contrôle pré-archivage

Audit complet du reporting (billing, marketing, docs), tracking tiers natif sur tous les types de créatifs GAM, contrôle de sécurité avant archivage, et 6 nouveaux outils MCP.

Un audit fonctionnel du reporting a révélé des incohérences entre le billing affiché (FAQ, CLI) et la réalité backend. En parallèle, l'analyse du schéma SOAP GAM a montré que les champs de tracking natifs (thirdPartyImpressionTrackingUrls, thirdPartyClickTrackingUrl, trackingUrls VAST) n'étaient pas exploités — on injectait tout dans le HTML. La v1.8 corrige ces deux axes et ajoute une couche d'audit/QA complète pour le tracking et l'archivage.

  • Correction FAQ billing corrigé : le reporting coûte 0.5 cr/exécution (pas "100% gratuit")
  • Correction Credits CLI alignés sur billing_guard pour les 27 commandes (lectures=0, écritures=0.5-5)
  • Correction export_report_csv facturé 0.5 cr (exécute un rapport complet GAM)
  • Fonctionnalité Skill 'report' créé — 9ème skill, i18n 4 langues
  • Fonctionnalité Pages vitrine : /reporting-gam (marketing), /docs/reporting (catalogue metrics/dimensions interactif), /network-audit
  • MCP Tracking natif GAM : thirdPartyImpressionTrackingUrls sur ImageCreative, Html5Creative, ThirdPartyCreative
  • MCP Tracking natif GAM : thirdPartyClickTrackingUrl sur Html5Creative
  • MCP Tracking natif GAM : trackingUrls VAST (map event→URLs) sur VideoRedirectCreative
  • MCP audit_creative_tracking : audit macros click, pixels impression, cachebuster, détection IAS/MOAT/DV/DCM (0.5 cr)
  • MCP audit_order_tracking : audit tracking par order — boucle LI × créatif avec rapport structuré (0.5 cr)
  • MCP validate_tag_snippet : validation de tags ad-server avant import (macros, cachebuster, SSL, vendors) — gratuit
  • MCP pre_archive_check : contrôle dépendances avant archivage (LI delivering, LICAs actives, placements) (0.5 cr)
  • MCP get_creative enrichi : retourne snippet, tracking URLs, creativeType, expandedSnippet, isSafeFrameCompatible
  • MCP update_creative enrichi : modification tracking URLs, snippet, expandedSnippet, trackingUrls VAST
  • Fonctionnalité Comparaisons vs : ligne 'Reporting automatisé' ajoutée dans les 3 pages vs
  • Fonctionnalité Landing page : pillar 'Reporting & Analytics' ajouté
  • Fonctionnalité Features page : bloc 'Reporting Engine' dédié + catégorie 'Forecast & Audit' séparée
  • Correction SOAP deprecation warning sur le reporting mixin (1x/tenant)
  • Correction FAQ GA4 : ajout prérequis scope OAuth analytics.readonly
  • Infrastructure 9 commandes CLI creatives (list, get, upload, create-third-party, create-video, audit-tracking, audit-order, validate-tag, pre-archive-check)

C'est la première release où le LLM peut autonomement diagnostiquer un problème de tracking (macros manquantes, cachebuster absent, vendor non détecté), le corriger via update_creative, et re-vérifier — le tout dans une seule conversation. Le contrôle pré-archivage empêche les erreurs irréversibles.

v1.7.x · Mars 2026

Reporting Hub, Pagination & Résilience

Hub de reporting avancé, pagination sur tous les outils de liste, opérations batch résilientes et configuration réseau.

La question revenait en boucle dans les retours bêta : "Comment je consolide mes performances GAM sans quitter l'interface ?" Le Reporting Hub répond à ça directement. En parallèle, on a traité une dette technique sur la pagination — certains réseaux GAM dépassent les 500 line items, et les outils de liste retournaient des résultats tronqués sans avertir. Le paramètre fail_fast sur les batch operations répond lui à un besoin réel d'équipes qui veulent des déploiements partiels sans avoir à tout rollback.

  • Fonctionnalité Reporting Hub : tableaux de bord consolidés avec filtres avancés et export
  • Fonctionnalité Settings réseau : configuration des paramètres GAM depuis le dashboard
  • MCP 173 outils MCP exposés (+5 depuis v1.6)
  • MCP Pagination offset/limit sur tous les outils de liste (placements, line items, creatives…)
  • MCP Paramètre fail_fast sur les opérations batch (déploiement partiel possible)
  • MCP Quota store : suivi et déduction automatique des crédits par opération
  • Correction Inventory Builder refactorisé : panneaux modulaires, validation compagnon
  • Fonctionnalité OrbiAds CLI v1.0 : déployez campagnes, inventaire et rapports GAM depuis le terminal (pipx install orbiads-cli)
  • Correction Copywriting vitrine amélioré (hero, footer, use cases) — 4 langues

C'est aussi la release où la CLI OrbiAds v1.0 sort officiellement. Deux ans à construire une infrastructure MCP, et finalement les premiers retours concrets nous ont montré qu'une partie des utilisateurs voulait juste un terminal et un cron job.

v1.6.x · Février 2026

MCP Server, Inventory Explorer & Reporting

Le serveur MCP OrbiAds est en production. Connectez Claude, Cursor ou Windsurf directement à votre réseau Google Ad Manager.

Le passage de prototype à production MCP a été le tournant de ce cycle. Pendant des mois, l'infrastructure SOAP était là mais le point d'entrée IA restait expérimental. Mettre le serveur MCP en production sur orbiads.com/mcp, avec une authentification OAuth2 propre et sans clé API à gérer, a changé la nature du produit. L'Inventory Explorer est né d'un constat simple : avant de déployer quoi que ce soit, les équipes AdOps ont besoin de comprendre ce qu'elles ont déjà dans GAM. La cartographie de l'inventaire était une étape manquante.

  • Fonctionnalité Wizard /deploy : consolidation des panneaux Display, HTML5, Tag tiers et Native Classique
  • Correction Validation inline et états vides clarifiés sur les uploads créatifs spécialisés
  • Correction Couverture Playwright étendue aux panneaux créatifs spécialisés du workflow /deploy
  • MCP Serveur MCP StreamableHTTP disponible sur https://orbiads.com/mcp
  • MCP 168 outils GAM : ad units, orders, line items, creatives, inventory, reporting…
  • MCP Authentification OAuth2 sécurisée — aucune clé API à gérer
  • Fonctionnalité Inventory Explorer : exploration interactive de l'inventaire GAM (ad units, placements, key-values)
  • Fonctionnalité Inventory Blueprint Builder : modélisation de l'architecture publicitaire
  • Fonctionnalité Inventory Understanding : analyse et scoring automatique de l'inventaire
  • Fonctionnalité Reporting Dashboard : visualisation des performances GAM
  • Infrastructure Architecture SOAP refactorisée en package modulaire (mixin pattern)
  • Correction Compatibilité GAM API v202502+ : suppression des services dépréciés (CreativeAssetService, RateCardService)

La refacto SOAP vers un package modulaire (pattern mixin) n'est pas visible pour les utilisateurs, mais elle a réduit le temps moyen de diagnostic d'un bug GAM de 45 minutes à moins de 10. C'est le genre de travail invisible qui change la vélocité long terme.

v1.3.x · Janvier 2026

Déploiement Campagnes & Pipeline

Déploiement end-to-end de campagnes natives GAM depuis un ZIP créatif.

Avant cette release, déployer une campagne native dans GAM impliquait de jongler entre une dizaine d'écrans : créer l'ordre, les line items, uploader les assets, configurer le ciblage, associer les créatifs. Chaque étape était manuelle, chaque erreur nécessitait un rollback partiel. Le pipeline v1.3 automatise l'intégralité de cette séquence depuis un ZIP créatif. Le suivi en temps réel via SSE permet de voir chaque étape s'exécuter — pas juste un spinner qui tourne.

  • Fonctionnalité Upload ZIP créatif et extraction automatique des assets natifs
  • Fonctionnalité Configuration ciblage : annonceur, ordre, ad units, key-values
  • Fonctionnalité Déploiement 1-clic : création automatique des line items et créatifs dans GAM
  • Fonctionnalité Suivi en temps réel via SSE (Server-Sent Events)
  • Fonctionnalité Rapport de campagne post-déploiement
  • Infrastructure Pipeline in-process avec FastAPI BackgroundTasks

La décision d'utiliser FastAPI BackgroundTasks plutôt qu'un orchestrateur externe (Celery, Cloud Tasks) s'est avérée juste pour la taille actuelle du produit. Moins de moving parts, moins de surface d'attaque, latence réduite. On réévaluera si les volumes l'exigent.

v1.0.x · Décembre 2025

Lancement OrbiAds

Première version publique d'OrbiAds avec authentification GAM et connexion OAuth2.

La v1.0 répond à une question précise : peut-on connecter un agent IA à Google Ad Manager de façon sécurisée, sans exposer de clés de service, sans infrastructure à maintenir côté utilisateur ? L'authentification OAuth2 "on behalf of user" avec stockage des refresh tokens dans Cloud KMS était le pré-requis non négociable. Sans ça, tout le reste n'est que démonstration. L'onboarding en 2 étapes (connexion compte + réseau GAM) reflète cette priorité : réduire le chemin vers la première opération réelle.

  • Fonctionnalité Authentification Firebase + OAuth2 Google Ad Manager
  • Fonctionnalité Connexion sécurisée au réseau GAM (GCP KMS + Secret Manager)
  • Fonctionnalité Dashboard utilisateur avec gestion des campagnes
  • Fonctionnalité Onboarding guidé en 2 étapes
  • Infrastructure Déploiement Cloud Run avec scale-to-zero (europe-west1)
  • Infrastructure CI/CD Cloud Build + Artifact Registry

Scale-to-zero sur Cloud Run dès le premier déploiement — pas parce que c'est la solution la plus simple, mais parce que payer pour des instances idle quand le produit est en phase de validation n'a aucun sens. Cette contrainte nous a forcés à bien architecturer les connexions dès le début.

Ce qui vient ensuite

Sur la roadmap

Ce qu'on explore et construit. Pas d'ETA — on préfère livrer bien que vite.

Skills marketplace En développement

Un répertoire de Skills AdOps prêts à l'emploi — ciblage saisonnier, rotation créatifs, gestion de fréquence — partageables entre équipes sans avoir à recoder les règles métier.

Webhooks & event streaming Planifié

Permettre aux systèmes externes (CRM, DMP, outils BI) de réagir aux événements GAM en temps réel via webhooks configurables depuis le dashboard.

Multi-réseau GAM Planifié

Gérer plusieurs réseaux Google Ad Manager depuis un seul compte OrbiAds — utile pour les agences et les groupes média qui opèrent plusieurs entités.

Audit trail complet À explorer

Log immuable de toutes les opérations exécutées via MCP ou CLI — qui a fait quoi, quand, avec quel résultat. Indispensable pour les équipes avec des contraintes de compliance.

La roadmap est publique mais non contractuelle. Les priorités évoluent avec les retours utilisateurs.

Vous avez une suggestion ou signalez un bug ?

Contactez-nous