kolombeContact

Changelog

Ce qu'on livre,
version par version.

Le repo Kolombe est public — chaque release du site, du back-office et de la plateforme PoC est tracée ici. Transparence totale sur ce qui bouge.

  1. v0.3.1

    Identité expert + assets premium

    Refresh complet de l'identité de marque post-v0.3.0 sur deux axes : lexique (« senior » → « expert(e/s) ») et assets premium (bannières LinkedIn, OG images, carrés sociaux, cartes de visite). Outillage screenshots via Chrome headless. Suppression du legacy.

    Modifié

    • Lexique « senior » → « expert(e/s) » partout (ADR-016) — sweep complet (site copy, OG images, identité, design system HTML, offre, docs, root, mémoires Claude non-archive). Le mot « senior » connote « poste de dev avec X années » plutôt que qualité d'agence — « expert(e) » qualifie la marque sans ambiguïté hiérarchique. Opposition à junior caché préservée.
    • INVARIANT 2 CLAUDE.md : reformulé « Toujours expert, jamais junior caché » + vocabulaire imposé pointant vers ADR-016.
    • Sous-tagline : « Sur-mesure, expert, facturé au quart d'heure. » (était : « Sur-mesure, senior, … »).
    • base.css : h1-h4 { color: inherit } (était : var(--color-fg)) — permet aux contextes sombres (ink, forest) d'hériter de cream sans override individuel.

    Ajouté

    • Bannières LinkedIn refondues (identite/design-system/social-assets.html) — deux variantes :
      • Éditoriale : ink + dot grid + filet vertical forest + eyebrow + tagline + sub + signature URL
      • Mark watermark : silhouette K XL (#8AC0A1 opacity 13%) + tagline centrée + 4 canaux mono
      • Zone bas-gauche préservée pour photo de profil (152 px ⌀) + nom + headline
      • Accents forest #4A8A64 (vif, identique site, ~4.9:1 sur ink WCAG AA) sur logo + wordmark + eyebrow + em + URL
    • Cartes de visite — 3 variantes premium (identite/design-system/business-card.html) :
      • A · Sobre éditorial : recto ivoire + watermark K forest discret · verso ink + watermark K forest clair
      • B · Accent forêt : recto forest + watermark K ivoire · verso ivoire + filet vertical forest
      • C · Ink premium (nouvelle) : recto ink avec mark + wordmark + accents forest clair + watermark K XL · verso forest avec eyebrow + tagline + watermark K ivoire
      • Ratio mark/wordmark aligné sur le site (mark 5.5mm, gap 2mm)
    • Marks colorables via SVG inline (<symbol> + <use>) — permet une couleur via fill: currentColor ou fill: var(--banner-accent) sans dépendre de mask: url() (échouait en file:// par CORS).
    • OG images digitales (identite/design-system/assets/og/og-ink.png + og-ivory.png) — 2400×1260 @2x retina, rendus directement depuis le HTML.
    • Carrés sociaux (identite/design-system/assets/social/square-ink.png + square-ivory.png) — 2160×2160 @2x.
    • outils/screenshot-assets.mjs — script Node + Puppeteer-core qui screenshot les frames HTML via le Chrome système (pas de download Chromium). Source de vérité = HTML, sortie = PNG. Fidélité 100% (Geist rendu nativement par le browser).
    • ADR-016 lexique expert vs senior — trace la décision lexicale, le rationale, et la convention (féminin « experte » pour agence, masculin « experts » pour profils).

    Supprimé

    • Scripts Python obsolètes : outils/banner-linkedin.py et outils/business-card.py (réimplémentaient les designs en Python — divergeaient des HTML après chaque modif, lourd à maintenir). Remplacés par le screenshot HTML.
    • Anciens PNG/SVG LinkedIn : kolombe-linkedin-entreprise{,-dark,-light}.{png,svg} + kolombe-linkedin-perso.{png,svg} (designs antérieurs au lexique expert, layouts obsolètes).
    • Anciens SVG cartes de visite : card-{A,B,C}-{recto,verso}{,-print}.svg (générés par le script Python supprimé).
    • Serial top-left bannières : retiré pour épurer la composition.

    Refonte complète du site sur la base d'un audit benchmark vs Linear / Vercel / Stripe / Plain. Le site bascule du registre « landing freelance soigné » à agence ultra premium. 14 items livrés (P0 × 7 + P1 × 5 + P2 × 7).

    Ajouté

    Pages

    • /poc — deep dive de la plateforme PoC : 4 piliers, process h+0 → h+48, 4 exemples de PoC, garanties, FAQ
    • /missions-types — 4 cas anonymisés (MVP SaaS, refonte outil interne, agent IA triage support, audit + cadrage), avec fourchette d'heures et tarif estimatif
    • /changelog — historique versionné public, parsé depuis CHANGELOG.md au build via marked
    • /notes — section écrits courts : 3 premiers posts (quart d'heure, livrer en 48 h, pair programming Claude). Parsing markdown custom + frontmatter
    • OG images dynamiques par page (template Next.js convention opengraph-image.tsx, force-static) : home + 7 routes majeures

    Composants & sections home

    • Hero refondu : 2 colonnes desktop, mockup React/SVG d'un sous-domaine PoC acme.kolombe.com avec auth Google/Microsoft, indicateur « Live · Déployé en 47 min »
    • 4 stats premium en font-mono sous le hero : 24h / 48h / ¼h / NDA
    • Bande social proof neutre (12 ans, Claude Opus, Cursor Pro, TS, CF, Scaleway)
    • Section PoC différenciante centrale : 4 piliers + terminal mockup live kolombe poc create acme --auth=google-workspace
    • Section Stack & outils : 8 logos clés (TS, Next.js, Tailwind, Postgres, Anthropic Claude, Cloudflare, Scaleway, GitHub), greyscale → couleur on hover
    • Bloc « Garanties & cadre juridique » sur /tarifs (6 items B2B : IP cédée, NDA, contrat-cadre, RGPD, paiement, pénalités)

    Mode sombre

    • Tokens dark complets (paper, ink, fg, forest, line, shadcn)
    • Toggle clair/sombre dans le header (icone lune/soleil)
    • Script anti-FOUC inline en <head> (data-theme avant hydration)
    • Persistance localStorage + fallback prefers-color-scheme
    • Multi-tab sync via storage events

    Command-K palette

    • Cmdk + dialog modale avec backdrop blur
    • Raccourci ⌘K (Mac) / Ctrl+K (autres)
    • Fuzzy search pages + actions (contact, email, GitHub, LinkedIn, toggle theme)
    • Hint kbd dans le header desktop

    Micro-interactions signature

    • ScrambleText sur eyebrow hero (effet decryption Vercel / Defacto)
    • HoverTilt 3D subtil sur cards services (pattern Linear / Stripe)
    • ParallaxLayer sur dot-grid hero (depth subtle au scroll)
    • Timeline scroll-fill sur /methode : ligne forest scaleY animée via framer-motion useScroll

    Footer

    • Status badge « Opérationnel » (pastille verte pulsante, lien GitHub)
    • Nav enrichie : Missions types, PoC, Notes, Changelog, GitHub

    Modifié

    • Étape « Cadrage » dans /methode renommée en « Cadrage + PoC » avec mention sous-domaine et auth adaptative (cohérence avec ADR-011)
    • Mentions légales : SIRET 789 201 910 00021 + siège 68 route de Genas, 69680 Chassieu (LCEN art. 6-III)
    • Politique de confidentialité : ajout sous-traitant Resend, vouvoiement complet (« Tes droits » → « Vos droits »)
    • Tone agence experte : retrait du wording « opérateur unique », vouvoiement strict partout
    • Réseau d'experts partenaire : mention discrète sur /a-propos (« jamais de junior caché »)
    • PricingCard : factorisée en composant partagé (home + tarifs)
    • Header / footer : nav enrichie avec /poc, /missions-types, /changelog, /notes, /github

    Corrigé

    • Vouvoiement résiduel sur /tarifs (« Je te renvoie » → « Nous vous renvoyons »)
    • Wording « opérateur » dans FAQ tarifs et hero proof points

    Conformité audit benchmark

    Gap audit Statut
    Zéro visuel hero ✅ Mockup React/SVG sous-domaine PoC
    Zéro preuve sociale ✅ Bande stack proof + missions types + stack logos
    Différenciant PoC absent ✅ Section centrale home + page dédiée /poc
    Pas de mémorabilité ✅ Scramble, hover-tilt, parallaxe, dark mode
    Pas de changelog public ✅ /changelog parsé au build
    Pas de réassurance B2B ✅ 6 garanties juridiques /tarifs + footer status
    Pas de mode sombre ✅ Toggle + tokens dark complets
    Pas de Command-K ✅ Cmdk ⌘+K palette
    OG statique unique ✅ OG dynamique par page (next/og)

    Stack

    • Ajout déps : marked (parser CHANGELOG + notes), cmdk (palette ⌘K)
  2. v0.2.1

    Formulaire contact opérationnel

    Premier endpoint serveur de Kolombe : le formulaire contact écrit dans une boîte mail réelle au lieu d'ouvrir un client mail.

    Ajouté

    • Pages Function /api/contact (apps/site/functions/api/contact.js)
      • POST JSON validé (longueur, format email, sujet whitelisté)
      • Honeypot anti-spam (champ caché, silently ok si rempli)
      • Envoi via Resend API depuis [email protected]
      • Vers [email protected] (alias de [email protected] dans GWS)
      • Reply-To = email du visiteur (réponse directe sans copy-paste)
      • HTML escape XSS sur tous les champs
      • HTML email premium (table layout, Geist-like style, branding vert forêt)
    • Resend setup kolombe.com
      • Domain vérifié (DKIM root + SPF MX/TXT sur send.kolombe.com)
      • API key stockée hors-repo (~/.config/jacquet-deploy/resend-kolombe.env chmod 600)
      • RESEND_API_KEY secret CF Pages env (production + preview)
    • Alias [email protected] dans Google Workspace ([email protected] user alias)

    Modifié

    • contact-form.tsx : fetch POST /api/contact au lieu de mailto:
      • State machine idle / submitting / success / error
      • Bouton disabled pendant l'envoi, copy spécifique pour chaque état
      • Honeypot field hidden
      • copy/contact.ts : ajout submitting / errorTitle / errorDescription
    • CI/CD CF Pages
      • workingDirectory: apps/site dans wrangler-action (preview + prod)
      • pages deploy out détecte automatiquement functions/ sibling
      • Artifact prod inclut apps/site/out ET apps/site/functions
      • Script copy-functions supprimé (plus nécessaire)

    Corrigé

    • Function .ts.js : CF Pages en mode Direct Upload ne transpile pas TypeScript, seul le mode Git-managed le fait. Réécriture en JS pur (types étaient compile-only).
    • From send.kolombe.comkolombe.com : DKIM signé sur root domain, le from doit utiliser root (send.kolombe.com = return-path SPF uniquement).
    • Routing bounce → alias : la première tentative routait vers [email protected] qui n'existait pas (groupe Google Workspace ensuite créé mais rejetait les posts externes). Résolu en passant à un alias utilisateur.
  3. v0.2.0

    Premium site live, agence kolombe.com

    Cette version consolide :

    1. l'architecture premium (CI/CD, tooling pnpm+turbo+biome, docs ADR/SPECS/OPS, scaffold apps/site Next.js 15) initialement actée le 2026-05-24
    2. la refonte design Linear-grade du site (vouvoiement, positionnement agence, fix contraste, refonte tokens)
    3. l'intégration du logo final (mark abstrait + horizontal généré via fontTools Geist) + favicons + OG image
    4. la mise en ligne sur kolombe.com via Cloudflare Pages (DNS migré OVH → CF, MX Google préservés, redirect kolombe.fr → kolombe.com)
    5. la refonte du brand book + templates (NDA, devis, facture, proposition, slide-deck) avec nouveau logo et vouvoiement

    Highlights :

    • Tagline actée G4 « Vos sujets IT, traités à la demande. » + sous-tagline « Sur-mesure, expert, facturé au quart d'heure. »
    • Site UI/UX Linear-grade : utilities Tailwind 4 propres, animations framer-motion scroll-in, FAQ accordion natif, hover micro-interactions
    • Logo final : plume géométrique abstraite (3 paths) + variants forest / ink / ivory + horizontal Geist SemiBold + favicon rounded + 33 PNG exports
    • Positionnement agence experte (retrait « opérateur unique », autorisation sous-traitance freelances experts équivalents avec marge transparente)
    • INVARIANT 2 CLAUDE.md assoupli en conséquence
    • Custom domain kolombe.com + www.kolombe.com + redirect kolombe.fr
  4. v0.2.0-archi-premium

    Architecture premium (notes historiques)

    Sprint long : élévation du repo au niveau « premium robuste scalable », inspiré flavie + lazare.

    Ajouté

    Design system Claude Design (identite/design-system/)

    • 13 livrables HTML autonomes :
      • brand-book.html (10 sections : logo, couleurs, typo, voice/tone, etc.)
      • email-signature.html (3 variantes copy-paste)
      • devis.html, facture.html, proposition.html (PDF A4 portrait/paysage, marges @page)
      • note-de-cadrage.html, nda.html, rapport-audit.html
      • slide-deck.html (pitch 10 slides 1920×1080)
      • business-card.html (85×55mm + specs impression)
      • social-assets.html (LinkedIn 1584×396 + OG 1200×630 + carrés 1080)
      • favicon.html (aperçus 16px → 512px)
      • index.html (hub de navigation)
    • base.css (Geist CDN + reset + utilitaires pour HTML standalone, séparé de tokens.css pour permettre au futur apps/site/ d'utiliser geist/font à la place)
    • components.css, doc-styles.css, deck-stage.js
    • 4 SVG logo V1 (placeholders Claude Design) dans assets/logo/

    Tooling racine (monorepo)

    • package.json racine (pnpm 10 + turbo + biome + lefthook + commitlint + markdownlint + cspell + typescript)
    • pnpm-workspace.yaml (apps/* + packages/*)
    • biome.json (lint + format unifié, ADR-008)
    • tsconfig.base.json (strict mode complet)
    • turbo.json (cache tasks build/dev/test/lint/typecheck)
    • lefthook.yml (pre-commit biome+md+spell, commit-msg commitlint, pre-push gitleaks)
    • commitlint.config.cjs (Conventional Commits + scopes Kolombe)
    • .editorconfig, .markdownlint-cli2.jsonc, cspell.json
    • Makefile (entry points canoniques : install, dev, lint, fmt, typecheck, test, ci-local, deploy-landing, clean)

    CI/CD GitHub Actions

    • .github/workflows/ci.yml (lint + typecheck + build + test + gitleaks)
    • .github/workflows/deploy-landing.yml (preview Cloudflare Pages, push main + paths)
    • .github/workflows/deploy-prod.yml (tag v*.*.* → prod, avec pause-guard + changelog-guard + smoke test)
    • .github/workflows/stale.yml (cron daily, ferme issues/PRs inactives)
    • .github/dependabot.yml (npm + github-actions weekly, groupé)
    • .github/CODEOWNERS (zones sensibles marquées)
    • .github/PULL_REQUEST_TEMPLATE.md (checklist par domaine : identité, site, offre, ops, clients, mémoire Claude)
    • .github/ISSUE_TEMPLATE/{bug,feature,task}.md + config.yml
    • scripts/ci-local.sh (mirror CI en local)
    • scripts/deploy-landing.sh (deploy manuel en cas de panne CI)

    Documentation (docs/)

    • docs/README.md (index)
    • docs/ARCHITECTURE.md (vue d'ensemble du repo, topologie, stack, principes)
    • docs/GLOSSARY.md (termes Kolombe : régie, quart d'heure, mark, wordmark, ADR, preflight, …)
    • docs/ADR/ : pattern Michael Nygard FR + 10 ADRs formalisant les décisions actées
      • ADR-001 : pivot SaaS → Agence
      • ADR-002 : iconographie abstraite (pas oiseau figuratif)
      • ADR-003 : IA = enabler caché
      • ADR-004 : tagline « Vos sujets IT, traités à la demande »
      • ADR-005 : typographie Geist + Geist Mono
      • ADR-006 : palette Encre & papier + vert forêt
      • ADR-007 : monorepo pnpm + Turborepo
      • ADR-008 : Biome au lieu de ESLint + Prettier
      • ADR-009 : tag-driven deploy prod
      • ADR-010 : Cloudflare Pages pour hosting
    • docs/SPECS/ : template-mission, template-feature-site, site-web.md (spec V1 du site)
    • docs/OPS/ : 6 runbooks (deploy-site, dns-kolombe-com, onboarding-client, cloture-mission, incident-rgpd, cost-awareness)

    Documents racine

    • ENGINEERING.md (référence technique : workflow Git, CI/CD, deploy, tests, qualité, sécurité, observabilité, coûts)
    • CONTRIBUTING.md (workflow contribution + checklist PR par domaine + remèdes erreurs courantes)
    • CHANGELOG.md (ce fichier)

    Modifié

    • CLAUDE.md : raffinement (preflight design system, preflight site web avec geist via pkg, "Premier read" pointe BRAND-FINAL au lieu de BRAND)
    • README.md : statut → Phase 2 (identité visuelle livrée), pointer le repo GitHub
    • ROADMAP.md : Phase 1 cochée (sprint 2026-05-24), Phase 2-3-4 en cours / à venir
    • .gitignore : ajouts (.tsbuildinfo, .pnpm-store, lefthook-local.yml)
    • identite/design-system/README.md : adapté après suppression doublon tokens.css (chemin ../tokens.css)
    • MEMORY.md (Claude memory index) : ajout project_kolombe_brand_phase1

    Supprimé

    • identite/design-system/tokens.css (doublon) — remplacé par <link href="../tokens.css"> dans les 13 HTML
    • ops/process/ (dossier vide) — runbooks process désormais dans docs/OPS/
  5. v0.1.0

    Init agence Kolombe

    Premier sprint long. Pivot acté, fondations posées, identité Phase 1 actée.

    Ajouté

    • Pivot : Kolombe devient une agence IT augmentée à l'IA. SaaS d'avril 2026 archivé (ADR-001).
    • Repo GitHub : ancien addock/kolombe (SaaS) renommé en addock/kolombe-saas-archive + archivé read-only. Nouveau addock/kolombe créé pour l'agence (privé, page blanche).
    • Structure repo : clients/, identite/, offre/, ops/, outils/, recherche/, site-web/ (remplacé par apps/site/ en v0.2), templates/.
    • Documents fondateurs :
      • offre/MANIFESTO.md (positioning, promesse, valeurs, anti-positioning)
      • offre/PACKS.md (pricing 100€/h, packs 10/30/60h, engagements Light/Full, modalités, juridique)
      • identite/BRAND.md (historique, options ouvertes — devient référence pré-Phase-1)
      • identite/BRAND-FINAL.md (actée Phase 1 — concept, positioning, tagline, typo, palette, logo brief, règles d'application)
      • identite/tokens.css (design tokens en variables CSS)
      • identite/LOGO-BRIEF.md (brief Recraft/Midjourney avec prompts testables)
      • ROADMAP.md (9 phases séquencées)
      • CLAUDE.md (guide d'or pour les sessions Claude Code)
    • Mission Okeenea : clients/okeenea/ pré-cadrage (Sylvain Rebotton, visio cadrage 27/05 9h)
    • Outil transcription : outils/transcribe.py (Deepgram FR + diarisation)
    • Templates juridiques (drafts) :
      • ops/templates/NDA-bilateral.md (accord confidentialité 1 page, droit FR)
      • ops/templates/devis.md (template régie quart d'heure, dispense TVA micro-entreprise)
      • ops/templates/contrat-prestation.md (contrat-cadre régie >30h, relecture juriste recommandée)

    Décisions actées (cf ADRs en [0.2.0])

    • Pivot SaaS → Agence (Scénario A : pivot net)
    • Iconographie abstraite (pas de colombe figurative)
    • IA = enabler caché (pas claim principal)
    • Tagline : « Vos sujets IT, traités à la demande. » / « Sur-mesure, expert, facturé au quart d'heure. »
    • Typographie : Geist + Geist Mono (Mono réservée chiffres/code)
    • Palette : Encre & papier (#FAFAF7 / #1A1A18) + accent vert forêt #2D5A40

Une question sur une release ? Un retour ? Un sujet IT en tête ?