Skip to content

Changelog

Όλες οι ενημερώσεις, οι νέες λειτουργίες και οι διορθώσεις της πλατφόρμας Kiwi.

2153 καταχωρήσεις
  • lot 3, le storyboard, tenu par la structure du brief et refuse en blocc78a6d7
  • les runs autonomes se limitent a des comptes choisis4b8b468
  • lot 2, l analyse, et le validateur qui refuse tout ce qui n a pas de source68b6314
  • lot 1, lire un site comme un humain le voit, et n en garder que ce qui a une source5f48763
  • les douze tables du generateur de videos, derivees d une seule specification5622181
  • la qualite de Wan, enfin regardee, elle tient, c est le temps qui coinceb28873f
  • les deux moteurs se melangent DANS une scene, pas seulement entre ellesaafd80b
  • VideoFlow rend une scene en 4 s la ou Wan en met 203dc7fe51
  • un jeton vide laissait un GPU ouvert sur Internet, en silence7cd3b98
  • les 271 select du produit avaient perdu leur chevron7a02288
  • les trois autres couloirs demandaient des cartes disparues, et l image se construit enfin9ee76b2
  • les cles VAPID sont posees en prod, le push bascule au prochain deploiementb9a0ea6
  • le pod n avait jamais tourne, et six choses l en empechaient2685540
  • des ecrans de demarrage iOS, au lieu d'un flash blanc9f93118
  • dire qu'on est hors ligne, au lieu de laisser chaque ecran echouer93e9ff7
  • un partage entrant perdait son contenu a la reconnexion015112e
  • le controle du manifeste lisait la source, donc il n'affirmait rien0803a94
  • la moitie SOURCE du gate, et les cinq fautes qu elle a trouveesc312c2d
  • filtrer les prospects par ville7505b7a
  • le marche d agents personnalises est supprime81b6456
  • les agents n ecrivent plus sur le forum de KIWI900fa73
  • une sauvegarde quotidienne, et elle contient enfin la facturation89b83f8
  • un envoi en masse porte sa desinscription20257a6
  • trois pannes silencieuses de plus, et l'env de Gaston est rendu2350705
  • trois tables fantomes de plus, et le cron qui en interrogeait une7430df4
  • deux mesures agents qui n avaient jamais rien mesureea79034
  • le modele global reprend la structure du gabarit85856f3
  • un modele pour un envoi a TOUS les comptescda057f
  • le modele produit devient un mail de reconquetef4bc486
  • le texte des bulles utilisateur s alignait a droite239a289
  • un point d attente au lieu de l ordre d execution1316ac9
  • le panneau du profil et l onglet d annoncesc1666f1
  • lier son compte kiwi, et recevoir le role de son plan9e8775e
  • un seul appel a Discord, et les releases par produit9d67f71
  • la regle text-white ne pouvait pas echouer en local01c765e
  • publier une note de version dans #announcementsf3a86df
  • GET /prospects servait les prospects de toutes les activites7126e74
  • 51 boites du navigateur remplacees par celles du produitb1630df
  • les boites de dialogue du produit, et le nom du business editable5305a5c
  • retirer le mode « toutes les activites » et ce qui le portaitcdacbc2
  • l'utilisateur cree, renomme et archive ses activites496c984
  • cloisonner les cinq derniers modules, les 13 tables y sonta0b7315
  • cloisonner Expensa, et la serie de numeros devient celle de l'activiteaa51497
  • cloisonner le CRM, prospects, pipeline et dealsbd22620
  • cloisonner les taches, et la recherche globale au passagee96e866
  • le business devient une identite ambiante, pas un argument de plus58a6d6c
  • le selecteur d'activite devient une identite, pas un filtre930ebce
  • resoudre le locataire cote serveur, et le prouver au lieu de le supposer3c9443a
  • rattacher les donnees existantes, et une serie de numeros par businesseee6fa2
  • tout compte a un business, et exactement un par defaut72f44d5
  • KIWI a son propre environnement, plus les tables de Gaston65d0d55
  • retirer trois symboles morts avant de rendre le business obligatoire5700a8a
  • la memoire semantique n'avait jamais rien ecrit, un caractere de trop96a9cb0
  • un seul point de depart pour une mission, et Sarah cesse d'etre sur fond blanc2440ce1
  • les vignettes n'étaient carrées nulle part, la classe ne compilait pas0e6edea
  • la panne du recall sémantique cesse d'être silencieuse et gratuite9233ddf
  • l'historique garde sa position, et les compteurs s'ouvrente0864cd
  • une liste de missions, et le document s'ouvre sur place085ec66
  • l'ordre d'exécution n'est plus affiché en JSON brut534491c
  • tous les avatars suivent le thème, pas seulement la liste73c24bf
  • les règles d'écriture passent en dernier, là où le modèle les lit42bc9dc
  • la colonne des agents rend sa place au contenu200bbc6
  • un seul bouton de création, et le modal ne scintille plus0d59f86
  • les actions passent à Node 24, avant le retrait du 23 septembre9503995
  • skills créables, skills des 24 agents, honnêteté des modèles MLa2014b3
  • mesurer la sélection d'actions contre ce qui s'est passé79e036a
  • un chiffre sorti d'une règle ne s'affiche plus comme une prédictionf73b092
  • 149 skills sur 24 agents, et de quoi les payer7f16315
  • des skills écrits par le compte, pas seulement par le code5218a2b
  • Profil, une route disait « enregistré » sans rien écrire22454ce
  • Sheets, une analyse ratée était facturéed6e9d39
  • Documents, le gestionnaire part, l'éditeur reste49fc284
  • le Calendar avait 7 actions pour 14 routes83ca47f
  • le Communication Hub avait 13 actions pour 34 routesd964a7e
  • le Sales Accelerator appelait son propre serveur en HTTP47efc29
  • le Project Manager avait 41 routes et 6 actionsc18d579
  • le Time Tracker avait trois actions pour six vues2d17db7
  • rien ne comparait le code aux modèlesc003058
  • the client portal the share link had been promisingbdf411e
  • the six actions go through the service, like the screen5f8b244
  • a subtask route that always refused, and a share link with no pagec2036fb
  • the request body was the write, and it owned the row977a5c8
  • a column the board could not accept, and two tiles pinned to zero501ffb9
  • a model that never existed, and the columns behind it0d80075
  • brief for the PostForMe investigation11984ca
  • answer the question that was asked9357e87
  • the bubble shows one answer, not the model workinga03b01f
  • the first real chat turn named a status that does not exist8c3396c
  • marketing, the module is not the folder that carries its name725bc64
  • marketing, 25 actions, and an action that always failedcefe427
  • SEO absorbed whole, no editor, and two answers that were not answers5ab4592
  • SEO, 28 actions, and two answers that were not answersa44d795
  • community leaves the programme, it is KIWI's own forum0395f77
  • landing pages, the manager absorbed, the builder keptecfe320
  • the accent is a fill, not an ink, three labels measured under AAca502c5
  • landing pages, the manager, and publishing as an act7e58634
  • the gate depends on every category being a switchable slugcdb8ac9
  • an agent respects the module switch, and a fake owner column goes15724e5
  • Campaigns absorbed, and an INT owner column in a UUID applicationd46496e
  • Campaigns as actions, and a campaign that goes to its own audience2a234ce
  • Expensa absorbed, and the prompt window is the programme's real ceilingc487e79
  • Expensa as actions, and one answer to what an invoice owes0ec967f
  • the CRM is absorbed, and what its repair found1480be1
  • the CRM as actions, and eight of its ten could never have workedd401d4b
  • the media library is absorbed; chat attachments live in the libraryacdc3e1
  • the media library as actions, one service behind routes and executors2f98f40
  • four small modules absorbed, one service per module, cap at 100de17a14
  • the business blog is an agent's to draft, write, publish and prune8de6190
  • the booking page is an agent's to configure and to cancel from6f32db4
  • every line of the Loyalty screen is an action, and the agent can finally find a cardbb9e317
  • every line of the Notifications screen is an action, on one reading of the tablecd1cbb7
  • record the Workforce centralisation programme and what its foundations guaranteeb37786b
  • My Business is a panel of Workforce, and Sophia runs itd64f5a8
  • the workflow palette reads the action registry, and every action names its module688670b
  • twelve hand-written module lists, one test that compares themf4da802
  • a card the model is told to emit must render, and a rendered card must be emitted by someone7cea07d
  • the floating chat shows what the agent did, through one badge for all three surfaces117f769
  • the action budget is per domain, and the page decides on an ambiguous message7725aab
  • an opacity suffix on a token already near the floorcc56486
  • the contrast residue was one number, not six screens0136a6a
  • explain the contrast residue CLAUDE.md called unexplainedce7709e
  • the Draft badge measured 1.47:1, and three map buttons had no named52071e
  • the free-tier watermark came off with a right-click3bbd775
  • delete the Instagram growth subsystem, 0 rows, ever7e6cc11
  • an empty form was one click away from erasing your guidelines3ec4952
  • the analytics tab said 0/3 to someone with 2 accounts1276808
  • the one honest analytics source answered 500, always62e3106
  • stop shipping social account tokens to the browser3e51c75
  • a campaign mission now fills the calendar with drafts2cdbbea
  • drop the last two explanatory lines on Mission control198ef6f
  • the attention chip lands where its count lives, Workflow in violete646d84
  • assigned missions move into a modal74e169e
  • a table instead of a record, and a screen without the lecture91615cb
  • lead with the next step, the deliverable, and notifications that land45b3add
  • no focus ring around the editing surface5f0d4dd
  • paginate with ProseMirror decorations, not inline styles7ef7f38
  • translate the pod modal, the starting notice and the activity log6acf9f5
  • a restart on another build is a deploy, not a loop804b8d3
  • render agent documents, open the deliverable, dedicated composerd876af0
  • wrap long mission text instead of overflowing the panel79b462c
  • start the mission before opening its details5b3e6d5
  • list next actions as full-width rows74306a4
  • restructure the Run my business layout7fff2ac
  • edit shared company profile from My Business98332cb
  • keep activity summary visible before optional setupc7b0134
  • separate business planning and workflow from dashboard overview203fdb2
  • organize business profile into readable responsive sections49f5c49
  • record production verification and usable landing editordc9dffb
  • distinguish fresh collection from applicable market evidence0a3a9d6
  • connect company profiles, market evidence and executable growth missions2d33ce9
  • record production validation and activation follow-upb05b04b
  • refresh mission details until the result is readyce85d9f
  • preserve provisioned pods and track mission execution reliably6e8899a
  • deliver guided Workforce outcomes and reliable activation1384ae3
  • la cle partenaire Aukimi ne quitte plus le serveur56d3343
  • un correctif du deploiement doit declencher un deploiemente1dc13f
  • le deploiement backend ne recharge plus kiwi-ai, et la fenetre respireb613e8b
  • l'auto-test en compte trois, pas deux9e29a17
  • un uptime court n'est pas une boucle, le watchdog le confirme2b23eaa
  • un watchdog de vie, parce que 38 morts sont passees inapercuesbdfd4b5
  • la cause etait un plafond de tas pose par la plateforme, pas par V8cb5c2c0
  • le plafond de tas passe par NODE_OPTIONS, seul mecanisme qui marche53ac5b3
  • borner le tas de V8, qui vise une memoire que le node n'a pas292e354
  • le node est a 1 Go, la boucle OOM est arretee, et le vrai mecanisme8715727
  • un garde-fou memoire pose sous le socle est pire que pas de garde-fou4d47a36
  • le garde-fou memoire etait sous le socle et bouclait1ef5f5e
  • « Coming Soon » etait un mensonge produit par un catch44a391a
  • le PWA ne concerne que l'application, plus le site vitrinedd2fbf8
  • une encre de theme sur un fond fixe est invisible dans l'un des deuxf762501
  • le chat agents est prouve en prod, la relance de devis reste inexercee694b6ff
  • du texte invisible en theme clair, et l'audit cesse de noter des ecrans morts694c7e4
  • le health check de deploiement laisse 2 min, pas 30 s1a78a9f
  • deux memoires ecrites puis jetees, et le controle de schema apprend a lire les ENUM6be07be
  • une adresse .app.kiwi est reservee aux clients payants4a840ce
  • Hostpoint bloque une IP apres ~800 requetes en 15 s, et ce que Search Console en dit72e7a2a
  • la liste de cartes GPU vit dans le code, plus dans un .env qui survit aux correctifs61a7ea6
  • la relance des devis sous contrat serveur, et la delegation livre sans rejouera889c64
  • la VM se ferme avant de servir, et le chemin de l'embedder est reparec5cc331
  • chat_messages.taskKey migree, et le controle de schema cesse d'etre aveuglef0768dd
  • les trois services passent sous Kiwi/, la CI suit43703ae
  • colonne pleine hauteur, code qui revient a la ligne, en-tete degrossi4cc2ade
  • la carte « Valeur generee (30 j) » sur l'atterrissagecacd2c7
  • la valeur generee par les agents remonte a la surface0f3ee4c
  • kit de deploiement du VPS Sandra-KIWI dedie2c56d2e
  • suggestions dans neuf modules de plus, et choix des declencheursf5c46c8
  • les declencheurs autonomes s'allument un par un3adea97
  • la CI ne gate aucun deploy, la gate reelle est locale7ef9338
  • le bouton reduire du chat flottant a un nom accessible22134dd
  • les 11 agents sans cartes de demarrage en ont desormais62e2326
  • les deux actions commentaires Instagram sont supprimeesb7a0fd3
  • des suggestions ancrees dans la page dans le chat flottant915c23e
  • le contexte d'ecran pese enfin dans la selection d'outilsb910d45
  • la carte passe en glassmorphismf25ea92
  • refonte des pages publiques et harmonisation du dashboardf022c91
  • rendus video durables, livraison sociale isolee, SEO des landings5a8285e
  • une conversation « modifiee » qui n'a pas ete enregistree ne le dit plusbc388e9
  • un seul titre par module, porte par l'en-tete8d083ac
  • le quota de stockage est pre-calcule avant de lancer un rendu996038d
  • le second vers du titre passe au violet, et les portraits suivent le theme8e7a50f
  • la section Aukimi revient, en 30 langues cette fois787b17c
  • vibe_stories.isEvergreen etait declaree sans migration390c7bf
  • 45 blocs de migration vivaient derriere la garde de semis, morts depuis des mois80f7f6c
  • les cases a cocher et les barres de defilement imbriquees ignoraient le theme claird353195
  • la liste redevient la vue d'entree, le kanban ne s'impose plus5740ab2
  • le CRM occupe toute la largeur, pipeline comprisee1a18c
  • Échap était mort dans tout le dashboard, avalé par des modales fermées9c9a64a
  • deux sous-traitants jamais déclarés, et la bande venait du gabarit5116182
  • le logo blanc sur fond crème, sur sept écrans4aa9f42
  • la bande sombre en haut de chaque page, et le flash à chaque chargement0405409
  • la liste du changelog, refaite au lieu d'être rapiécéeacab9c8
  • quatre questions sourcées dans le code, et un dégradé qui n'en était pas un88c0867
  • les onze clés du changelog dans les vingt-huit locales07ddf20
  • un pluriel que j'avais cassé, et les pastilles ramenées près de leur datebba1882
  • la barre de défilement ne suivait pas le thème, et cinq pages reviennent au vert9ea3a04
  • l'aplat noir du bloc « Our Mission » devient une carte de verrecc420ff
  • un spread dans le mauvais ordre effaçait les cinq filtres traduits2859053
  • les titres d'affichage reprennent le vert de la marque1710f1d
  • un bouton « Postuler » qui ne faisait rien, et la pastille retirée18e598c
  • la page affichait des agents que la base ferme, et sa teinte s'arrêtait au hérosb36d897
  • dix-neuf portraits déclarés en .png, présents en .webp seulement0693a8e
  • les émoji cachés dans les dictionnaires deviennent des icônesa8e7566
  • un dictionnaire de locales qui n'est que de l'anglais35a729c
  • les 77 libellés traduits dans les 28 locales3fe16b4
  • 77 libellés anglais en dur sortent du code26f084f
  • les icônes de statut et de priorité passent à Phosphor9fa9704
  • les quinze derniers écrans, auth, paiement, onboarding2ebf3c2
  • la carte d'entreprise, et quatorze survols que le verre avait tuésdac2458
  • parallaxe sur toute la page, verre allégé, et la visionneuse enfin au-dessus683f0da
  • parallaxe vertical sur la photo, et les rangées de modules en verre6b8a60a
  • /partners existe enfin, nouvelle photo de fond, pied de page en verreac10620
  • blog d'entreprise, signature, fidélité, et un essai sur /loginb63f11b
  • les quatre écrans créateurs, et le verre sur les pages de contenua4aa9b9
  • dix pages de contenu rejoignent le fond et les teintes53fdc3f
  • l'accent n'était pas lisible sur son propre voile005ee14
  • les étiquettes d'état ne basculaient pas avec le thèmeb297349
  • la pilule d'appel à l'action existait en six copiesb9692b6
  • le CTA parlait un troisième dialecte de bouton7c42e7f
  • le verre sur les 129 cartes que la mesure autorise4dd3cc2
  • l'aplat qui masquait le fond fixe sur quinze pagesfff4763
  • le verre dépoli, et la mesure qui dit où il a le droit d'aller5fff9ec
  • les douze routes SEO rejoignent le fond et les teintesd6aaea7
  • pages publiques et données vers 30 langues431cbdd
  • Remplacer L() par t() - Unsubscribe.jsx + Lot E (4 pages tools)e372db4
  • 657 chaînes d'anglais en dur sortent du code vers l'i18n31088ea
  • la photo de fond devient une vraie image de header8717cac
  • la rampe claire était cinq fois plus plate que la sombre1b38713
  • la surface des cartes était invisible, seul leur cadre les tenaite43a200
  • une couleur d'accent par page, sans toucher une seule classe2a94801
  • « Our Mission » en ton sur ton, et une pastille illisible en thème clair838c433
  • des cadres dans des cadres deviennent une pagee77f800
  • 10,3 Mo de PNG deviennent 1,2 Mo de WebP, et un fond par thème3e1d17c
  • Phosphor à la place des émojis, et une bande de verre au lieu d'un aplat8517ad6
  • 160 px de vide entre la démonstration et le roster d'agents9eb4902
  • quatre boîtes identiques deviennent une page, et un halo qui respiree40f85c
  • les dix dernières copies du fond de page, et six écouteurs de défilement en trop36a2ae0
  • un seul fond de page, l'échelle éditoriale, et une grille qui ne suppose plusecb5d22
  • deux pages publiques qui plantaient, et un CTA qui annonçait gratuit ce qui est payantce00082
  • thème clair/sombre, Cal Sans, et un fond de page qui peint enfinc362326
  • une seule famille de surfaces, et une contrainte qui sautefafd3dc
  • rendre le flaky diagnosticable au lieu de le deviner6756e50
  • couverture des missions, du scheduler et du statut e-mailb705a19
  • un fond neutre, la hiérarchie revient au module74f39b2
  • connexion Google et Gmail sans attente artificielle, session par cookie7e06d68
  • ce qui demande une attention, mis en avant4b402b8
  • centre de missions et supervision minimale1c63352
  • missions durables côté serveurf57a6cf
  • un élément ne se pose pas sur le fond exact de son parent1d53e94
  • des surfaces légèrement dégradées, posées comme un rôle nomméa2ca33c
  • panneau découpé, hiérarchie inversée, densitéc5d2edc
  • le menu contextuel restait ouvert par-dessus la confirmation66d28ed
  • du vert sur du vert, et une carte qui réservait du videf49512b
  • prérendre les 30 locales, plus seulement l'anglais06c4419
  • trois limites déclarées que personne ne lisaitaf163ff
  • le canonical des articles contredisait le sitemap1919b3a
  • le sitemap qui mentait, et l'étape argent qu'on ne mesurait pas0f472de
  • 1537 des 1590 URL du sitemap se déclaraient duplicatas de l'accueil53fb2b8
  • mesurer l'étape argent, qui ne l'était pas du tout77c6b1f
  • les tuiles du Project Manager étaient posées sur leur propre couleur6746efa
  • une panne muette, et une migration écrite qui n'est pas appliquéed951c37
  • comparer ce que les modèles promettent à ce que la base contientf54859e
  • 280 pannes serveur ne laissaient aucune traceeef8f06
  • douze écrans plantaient, un hook lisait un état déclaré plus basa43ac0e
  • recharger à la prise de contrôle du SW, pas après9802cfa
  • la porte qui interdit de rendre une panne en succès64ca177
  • un catch ne peut plus répondre 2xx sans raison déclarée8eef9f1
  • dix-huit pannes serveur rendues comme des succèsde6dad7
  • les deux angles morts de la porte d'API, et ce qu'ils cachaientb1d7103
  • l'atteignabilité remplace l'ombrage081db31
  • douze routes qu'Express n'atteignait jamais892633e
  • appariement en chemin complet, et un seul extracteurd8d42ed
  • cinq écrans appelaient des routes montées ailleurs, ou nulle partfb69b3f
  • les trois contraintes ajoutées aujourd'hui, et ce qu'elles ont attrapéa993756
  • quatre routes qu'Express n'atteignait jamais2c46688
  • le sélecteur de période des analytics ne servait à rien003c33c
  • encaisser n'a jamais compté dans le relevé des agents020219c
  • les compteurs d'actions agent étaient faux à deux endroits0b5f80a
  • les réglages des actions ventes partaient dans le videc9ad588
  • huit paramètres promis au modèle, et jamais lusbd6373a
  • les totaux des listes de devis et de factures étaient concaténés6b828ee
  • ajouter un produit du catalogue faussait le montant du devis3173bee
  • le calendrier affichait « undefined 2026 » la moitié de l'année20ee1db
  • CLAUDE.md décrivait un service qui n'existe pas203e353
  • treize appels vers des routes qui n'existent pas, et la porte qui les voit502cc8f
  • reliquats morts, deux erreurs avalées, et la règle qui voit la zone morteb88b8cb
  • des chiffres inventés, présentés comme des mesures0cfe3d7
  • un dossier qui n'en était pas un, un destinataire ignoré1be087a
  • les créneaux d'une landing page étaient lus dans le fuseau du serveurb63d657
  • Outlook créait un événement unique là où Google créait une série1e0390d
  • quatre filtres de liste qui ne filtraient rien7a8c41e
  • trois endpoints qui échouaient ou mentaient en silencefdb2e90
  • eslint, et la porte est fermée en CI475a86f
  • three more crashes on the error path, and switch cases that leak07e2334
  • a geocoder that always failed, a catch that crashed, 1811 lines of dead codec6b35fd
  • put the last disable directive where the rule actually fires5f99a7c
  • 505 errors to zero, and six real bugs were hiding in themfa7495e
  • 15 MB of public files nothing referenced7b58ced
  • every modal in the product now traps focus, 55 to zeroc970953
  • a modal I "fixed" crashed on render, and CI caught what I did not5be307e
  • the same shape on the server, a query inside a loop over rowsa97db97
  • the last two screens that opened one request per rowce7906e
  • the lead list opened a thousand requests to draw itselfc005182
  • 55 modals to 689f491c
  • 55 modals to 11, and four bugs in the tool that found them3b9a3ef
  • eleven more panels, and the codemod bug that was wasting themd78f9d3
  • the modal gate counted files, not modals, 55 to 265df16b6
  • twelve more modals reachable from a keyboard, 43 to 31b11e675
  • twelve modals a keyboard user could not escapec9d2349
  • the untranslated screens are in French, 159 missing keys to 3e084e9d
  • thirteen keys were rendering as themselves on screen93affc8
  • the list endpoint returned the whole table, every load99e1102
  • an event asked for at 14:00 was created at 16:0096aef32
  • four invoice statuses the database cannot store6a19736
  • one quote-creation path, and quotes now have an expiry date867da08
  • three of six recurrences did the wrong thing, one of them daily16487fd
  • one creation path, called by the form and by the agente55cf20
  • a period that was declared, asked for, and never applied0eccae4
  • parameters the actions promised and no code ever read17f7e48
  • prospects the agent created were invisible in the CRMcf0a805
  • the agent billed in the wrong currency, with no VAT, under a number that now collides71b862e
  • document numbers belong to the issuer, not to the platformf7f82a6
  • emailing an invoice returned 500, and payments closed on the wrong number2496afe
  • seal the activity ledger, so tampering leaves a marke8d00fb
  • the receipt, what your agents did, and what it was worth0a36c6d
  • the tool selector forgot the subject the moment you said "vas-y"ecee42e
  • agents could not see most of the actions they are entitled to93aee69
  • load what production loads, 68 route modules, at import79354cd
  • import the migration entrypoint, which nothing diddd3bd23
  • restore the function boundary, prod has been 502 since 21:45f6e7ab5
  • remove every trace of the departed inference provider2562b6c
  • the safety dashboard was reading a table nothing writes3561feb
  • quotes were emailed to clients with a total of zero4f66ca9
  • archive the PDF for hand-made quotes too, and keep it currentd5aa200
  • the quote PDF is a document, not a download36d2d25
  • a correction becomes a rule, and memory reaches the prompt20a75aa
  • show what the agent is doing while it does itacd8cfc
  • read the attachment, not just the ones that happen to be plain texta22ea87
  • an execution loop, the agent now sees what its actions did011a717
  • the quote/invoice number on a chat card now opens Expensa4a17acf
  • a drafted email had no card, so no copy and no send buttonc7dc05b
  • the compact action list shipped the signatures without the manual, and create_document threw its content away76180c6
  • hard spend guards, a daily GPU budget and a maximum runtimeaac5835
  • escalate GPUs on capacity failure, and make the knowledge base actually reach the model4ab442d
  • walk the whole FK graph instead of fixing one level per round trip6706aac
  • stop guessing which tables reference an agent, ask the schema16b62b3
  • deleting an agent 500'd on a foreign key the handler never clearedbdcdf27
  • deleting an agent 404'd because this one route read :id differently7493e5c
  • no agent has been told which actions exist since Xpander was removed15f4266
  • the per-message context built fifteen fields and the model read two00e4376
  • the idle sweep was killing the pod while it was still booting6b19272
  • Sophia invented create_pdf_devis because she was never allowed to make a quote57032c1
  • the business lane asked for three GPUs that do not exist, so the pod could never be recreated8c11051
  • the pod could no longer be woken, a tier gate and a deadlock, both mine1f6d283
  • 115 columns down to 8, this time derived from the model and proven by a requestfc20ad9
  • restore the bare findByPk, naming `subscription` 401'd every request643cf00
  • every locale URL was a soft 404 the moment the stale prerender went away88929d3
  • the focus ring was four times the floor, clipped at the edges, and invisible in the light editors71ec48b
  • the audit's 45 confirmed holes, and the metering that was never enforced7002c43
  • remove Claude from KIWI2b2c402
  • delete the Education modulea1418ef
  • stop marking the default, and defer the repeated affordanceec47e89
  • a third shorter, nothing removed5b37c9c
  • Todo is half done, not untouched78d50df
  • 720 MB of resident set, and why repairing a dead loader broke prodba23383
  • the nine broken journeys, and the invariants that make them findablee481448
  • measure what is open, and 60 disclosures that cannot be openeddcea57f
  • --expand-all, because a collapsed panel is never measured70ea05b
  • the module the design pass had queued, plus what a closed panel hides97423ca
  • 16 more, and the codemod finally stopped guessing at scope409f472
  • focus visibility and accessible names, with the measurement traps7f7a008
  • the app removed every focus ring and never put one backf7da17d
  • repair JSX the last commit broke, and stop the audit scoring a dead page9ca37bb
  • 60 controls announced only as "button" or "edit text"0bbff79
  • restore two entries a regex swallowed, and add the modal lessonseea2ee9
  • 12 more paid off, and the hook was stealing focus on every render605714f
  • the categorical palette question, answered666309f
  • the gate can see raw state hues now, and the islands are declarede67f628
  • the modal a11y gap, and the two codemod traps it exposed10380e8
  • the hook that does all of this was written, then never adoptedc4cce96
  • the audit flags, and --expect as the habit worth keeping6781f1b
  • drop a comment describing a fix that is no longer there6cecb0b
  • the light editors were never rendered, and one finding was mine9b2b3d2
  • record the mobile audit and the flex-1 min-width trapaae90e4
  • nothing had ever been measured below 1440pxd08457b
  • a duplicate key deletes half a colour role, and green tests can hide it042b6ef
  • audit the 40 public pages for the first time, and fix what it foundcd6eda5
  • a duplicate key had deleted half the danger and warning palette90b9a78
  • the audit tool can report zero because it never arrived44565d9
  • the conflict warnings were amber, not warning3cf7e51
  • dismissing the suggested-times panel was saving the event207ba53
  • record the French-accent rule and the subprocessor rewriteeaffb7c
  • the subprocessor table listed a company we stopped using and hid nine we dob8e2aa1
  • the French was written without accents, 729 strings, 13 files277f154
  • correct what actually leaves for Sandra, and where the fix has to happen90ccbde
  • SANDRA_ENABLED is true in prod, the warning was not followed515d88a
  • define the 57 Calendar keys, baseline 219 → 1608fa32f5
  • define the 87 auth-page keys that rendered as raw identifiers3fe364d
  • last two services, no hand-written .d.ts remains beside a .js5fc9449
  • todoService, 26 promised response shapes the code never guaranteedad789ce
  • apiRateLimiterService, and three real defects its .d.ts was hiding28c8bfd
  • make two service boundaries verified instead of declared9ce256e
  • encode the rules the build cannot check, 50 tests to 2185702d77
  • audit where user data actually goes, because the RGPD page is wrong22c6dd7
  • the workflow editor's unreadable labels, and !bg- defeating disabled146ea5e
  • AgentDashboardbb8475a
  • the history, coach and small panels, module done5c10034
  • the Blog and Social tabs63eabcb
  • the Reply tab90c96c7
  • TemplateLibrary, the Compose screen now reads one languaged2d782e
  • the prospects panel and the variable pickera6467b3
  • the Compose card followed no language at all6328b2a
  • fail the build on shade steps that do not existbe85d69
  • the tail of the surface sweep, and five classes that drew nothing06ffda8
  • 36 white labels on solid accent fills, and the shared componentse86854e
  • give the light theme its own measured roles634398f
  • 110 interactive gradients were flattened into invisible buttons8f93a0e
  • Education and Communication Hub onto the semantic rolesc26f8e7
  • CRM pipeline onto the semantic roles098e9ac
  • Workforce onto the semantic roles29b747e
  • one source for the config maps, and brands that are brands againcaa96cb
  • record what the UI passes established, and what they broke348af80
  • public and auth pages onto the semantic roles32ddb9b
  • remaining modules onto the semantic rolesbad2b0d
  • LandingPages onto the semantic roles008d566
  • Sales Accelerator onto the semantic roles39f9e6d
  • shared components onto the semantic rolesaf195bb
  • three measured defects in the token and Button layer9496afa
  • measure the interface instead of eyeballing it8c57e26
  • sync() aborted on the first table, so half the schema never existed9c661ac
  • parse windowMs, and key signed-in traffic by session not IP9189f89
  • one icon set, migrate lucide-react to Phosphor, drop the depb79a22a
  • elevation does not stack, and one corner language31629b7
  • the four state accents were declared but unusedc23b5ea
  • flatten the chrome, cards, buttons, fields, type scale1dc8ed1
  • one request per config, not four, and clear the caches on logout3a8b85b
  • stop every local build from calling the production APIb5e0d92
  • apply the semantic palette across the app24ad2c3
  • semantic palette, and delete the override layerb20c65c
  • stop calling a React hook from a service class03fbcd1
  • surface the real defects, parse Tailwind CSS, drop dead noise41465c8
  • make the lint run mean something, 8086 errors down to 816de47787
  • fold the workflow editor's greens onto the brand rampd0505e6
  • 21 ReferenceErrors that react/prop-types had been hidinga0a1ccd
  • drop the 'feeds' OAuth scope, it broke Instagram connect53f2997
  • fold 37 off-brand greens onto the single brand ramp53e08cc
  • align the client with the real v1 spec + wire Instagram placement90fbb93
  • diagnose TOKEN_REVOKED at the source + lock the logic with a test4573509
  • clean logout + redirect on a genuinely revoked session8c505b2
  • purge stale host-only kiwi_sess cookie on login/logoutff9800c
  • Merge branch 'design/color-unification'49f8ada
  • unify accent to brand green, repoint primary/secondary palettesd2857c9
  • stop caching sw.js immutable, THIS is why updates never shippedd1ea133
  • unify Education accents to green (pilot)f2badbf
  • autoUpdate, new deploys apply on next load, no stale cache3c05adb
  • scope the pod-warming overlay to the chat workspace5d2a47a
  • sync CLAUDE.md with Xpander removal (self-hosted only, no fallback)93b964d
  • minimalist module page headers (passe 3)7cc1128
  • minimalist dashboard chassis, strip noise, tighten density607e355
  • Merge branch 'refactor/remove-xpander'9d94e6c
  • drop Xpander from .env.example + self-hosted runbookbaa9e45
  • gut + rename XpanderService → SelfHostedInferenceServiced209548
  • delete dead Xpander-only services + wiring8fcd106
  • route the last live Xpander calls to self-hosted94b6bbd
  • route to code lane when RunPod-managed (auto-provision gate)036c0a3
  • finish code-pod lane wiring for prodb1bb0ef
  • gitignore Python __pycache__/ bytecode4c919af
  • compact embedded todo header + chat fills PiP width41e3398
  • rich Workspace PiP, tabbed full Todo + inline agent chate683d4d
  • auto-deploy on push to main (fast EN prerender)6dc9a56
  • stop header rows collapsing in the floating panel2c142a3
  • keep Workspace PiP button always visible2274b7e
  • floating Workspace window (Document Picture-in-Picture)74c633d
  • make code_url optional, pod auto-provisions on first used3735b2
  • code lane self-provisions on first use, no POD_ID needed at bootcd0b829
  • code pod lane, full lifecycle management for Kai developer agentccea46f
  • workspace-file lenient parse + overflow + orange inline codeae4e25d
  • detect workspace-file blocks by content not className0cc568b
  • parse workspace-file blocks regardless of fence tag + friendly network error581e435
  • rewrite system prompt, tighter Claude Code interaction pattern1b00ea7
  • ask before showing code, not after (Claude Code pattern)5dcb8c8
  • remove false-positive hallucinated-action warningcc9ef22
  • inline code visible in agent messages (green on dark bg)38efa1f
  • cap workspace context + tighten token budget to prevent 400sfe4ff85
  • dynamic token budgeting for self-hosted conversation historyae913b6
  • agent-specific slash commandsafac36b
  • auto-delete stopped orphan pods in reapOrphans54e3ec4
  • skip Xpander action instructions on self-hosted path (token overflow)34d6bda
  • resolve live pod URL after ensureAwake + hide voice btn on agent pagef12acb7
  • use vLLM /health instead of /v1/models for readiness + pass conversation history7674ed3
  • persist pod endpoint to DB after recreate, restore on restartfb62ee2
  • remove Xpander completely, 100% self-hosted pod93b8c1a
  • route ALL traffic to self-hosted pod, drop Xpander as primaryf165f3d
  • handle lazy (content:null) snapshot files in the edit carda1dcfb9
  • set-code-env workflow, wire Kai to a self-hosted code pod06c4538
  • name the code-lane model (Qwen3-Coder-30B-A3B-AWQ)1b5cbf2
  • sync .htaccess CSP header with index.html (unblocks Monaco + TradingView)a3016a3
  • unblock Monaco, allow jsdelivr in CSP + lazy-load the editorc798fd1
  • Monaco editor, real VS Code tokenizer, minimap, find, go-to-linea94e28a
  • real syntax highlighting via react-simple-code-editor + hljs lexerbdb219d
  • visible editor (drop broken highlight overlay) + hide bottom bar when loaded2ad3b5c
  • visible highlighted text, full file tree, header project switchera4c6b2f
  • syntax-highlight theme + 90vw/90vh modal + header IDE buttoned06de5
  • preflight dist-consistency check before shipping1034474
  • fullscreen Workspace IDE (file tree + tabs + editor + save)9c2f7c0
  • slimmer agents sidebar + collapse to avatars-onlya15e028
  • port Gaston's code-quality harness, static checks on workspace editsf9abe8d
  • use AlertModal instead of native alert() for workspace messagesa3bd92a
  • accurate File System Access unsupported message (Brave flag)3171b65
  • crash on Workforce page, 'language is not defined'70358fc
  • browser-API capability layer + wire the missing useful onesf56b7ca
  • local folder workspace via File System Access API87300a6
  • bounded agentic loop, planner, evaluator-optimizer, run tracing, MAX_STEPSb38de2a
  • document the Xpander+RunPod routing split, cost model & lever9bca631
  • idle-sweep uses boot time as floor, orphaned pods sleep after restartaf9ca33
  • adversarial hardening, SSRF, exfil, prompt-injection, kill-switche6912c6
  • harden the job queue, per-user concurrency cap + stuck-job backstop93c42ce
  • self-hosted voice box (TTS+STT+embeddings), kill the last OpenAI deps050b95f
  • self-hostable STT/logo/geo-LLM + data-egress doc (nLPD)27455a0
  • model-aware fal provider, Seedance 2.0 selectable (env-only switch)f18dff6
  • second routine nudge timed to trial expiry (north-star)c5774dc
  • contextual upgrade prompt (Phase 2)62133f4
  • guarantee a routine falls out of onboarding + instant-proof enable (north-star)b355e10
  • instrument the monetization funnel (Phase 1)a21747a
  • reliability batch 2, honest sends, validated stages, wider PII guard, conditional mediaa69a34d
  • per-tier monthly cap on AI video generationc0023a4
  • set-image-env, wire prod to the self-hosted SDXL image pod (token via dispatch input)780b444
  • default to SDXL (ungated), FLUX.1-schnell is gated on HF (needs a token)5e0c310
  • self-hosted image pod (Flux.1-schnell), new 'image' lane, OpenAI fallback19c3910
  • reliability batch 1, refunds, flat actions, streaming, data follow-up, honest failures9a7d3c3
  • also strip all SELF_HOSTED_VIDEO_* vars (retire the pod system when switching to fal)cbd0033
  • always notify (start + ready) + live spinner in Workforce for long jobsb783b61
  • video requests use generate_video (not image), kill fabricated imagese4c6c7a
  • follow-up turn after data actions so the agent actually ANSWERSa16dbc0
  • 7 more colour-grade looks (teal&orange, sunset, neon, moody, matte, airy, film)822c4cc
  • business-aware AI storyboards (full brand context + content type/platform/goal)639e1ad
  • handle multi_tool_use.parallel wrapper (parallel tool-calling artifact)4dd36fb
  • market report falls back to web search when Tensor has no datacb42335
  • set-fal workflow, activate fal.ai (FAL_KEY via dispatch input + VIDEO_USE_FAL)50fadcc
  • fal.ai Wan 2.2 provider (VIDEO_USE_FAL), same model, fast + pay-per-clip28e9483
  • lighter A14B frame counts (81/97/121) for bearable render times81c8974
  • delete gallery clips, right-click context menu + hover trashee87178
  • backfill agentTemplateId on legacy agent replies75b2f97
  • wire prod to the Wan 2.2 A14B pod (A100/H100 80GB, I2V model, staged CMD)8493da9
  • Wan 2.2 A14B (flagship), split T2V/I2V models, dual-guidance, staged deps96d61a7
  • persist agent replies + reliable chart klines proxycdd901d
  • render at Wan-native 720p (1280×704), big quality jump over 480pee9d009
  • stop scrollable panels flickering on hover (constant scrollbar gutter)33af534
  • wait for pod deps_ready before /generate (no more 503 on a cold/recreated pod)3b0c21d
  • merge project bar into the top toolbar (single row)72f1c65
  • saved projects (new / save / reopen / delete)a35fded
  • After-Effects-style timeline editor (trim, drag-reorder, transitions, delete)d8c9e1c
  • show which clip/step is rendering (scene N/total, stitching, post-prod)d764259
  • rebuild prod builder CMD from hardened server.py; token via dispatch input (not stored)d090896
  • retry model download through transient hf_transfer/httpx flakiness2b7568f
  • crypto→Nova routing, hide vendor tool names w/ playful status, Nova no-code rule, video modal player5b73966
  • full recreate-resilience, set IMAGE + builder CMD + idle 30m + new Wan pod6ded4ab
  • one-shot fix-video-env, point prod at the Wan 2.2 video pod + hard restart33566b6
  • async pod generation (job_id + /status) to beat the ~100s proxy timeouted53c00
  • switch model LTX-Video → Wan 2.2 TI2V-5B (self-hosted quality)a98fbf3
  • higher render resolution + quality prompt cues (LTX)fc7442f
  • allow generated videos in media-src (api.app.kiwi + S3)5f9ad45
  • persist video studio composer + restore last dashboard route on login350a70a
  • false 'scan failed' toast + wider sidebarb1803f1
  • generate text in the user's UI language + strip citation markersa30aff0
  • prospecting save no longer 400s on bad social handle + SW ignores cross-origin5369cb5
  • overwrite fields (not just empty) + clearer hint374c25e
  • input icon padding + robust AI website scan407eb15
  • multi-scene sequences (storyboard → montage)515407f
  • async generation job pipeline (foundation)e146d49
  • AI script tab (by-sentence, editable) + tabbed Prompt/Editing UI0c43777
  • 15 credits per generation2a49254
  • generate_video action, agents can create marketing videos4ea00ee
  • remove one-shot re-wire workflow (video env live on new pod)6663c4c
  • one-shot re-wire video pod envec18035
  • self-hosted generated music (MusicGen) + voice (Kokoro TTS)79f16ba
  • post-production suite, text, voice, music, grading, publish0dff9d9
  • full video-app layout (3 panels + filmstrip)96cfd96
  • follow brand DA palette (dark navy + emerald), drop grey4786587
  • AE-style viewer toolbar on the stage0ec0a6b
  • flat anthracite (After Effects) paletted57df9f
  • 1-click regenerate from a gallery clipa33fc16
  • two-column studio UI (composer + stage)7435e0d
  • remove one-shot video env fix/check workflows (done, env live)971d5b0
  • check via node+dotenv (what the app sees)14170e4
  • read process env via /proc19f996a
  • read-only check of running process video env8c87f74
  • one-shot fix, write video env to both files + hard restartf9684d9
  • remove one-shot video-env wiring workflow (done)a8e675a
  • one-shot workflow to wire SELF_HOSTED_VIDEO_* into prod .envbbaec00
  • media picker, brand-from-URL, gallery, branded end card8219736
  • inject brand colour palette into the generation prompt77428ed
  • centered marketing layout, templates + product image→video8f7b0b4
  • tighten gap between Workforce and Todo/Media (mb-3→mb-1)c357412
  • serve logo (public perms 700→644) + narrower rail, less paddingad0bd0f
  • untrack __pycache__ bytecode + gitignore it69dfb4c
  • pin Workforce/Todo/Media, fix media thumbnails, declutter todo1ff9bf7
  • add tiktoken/protobuf/blobfile for LTX T5 tokenizerdb64991
  • torch 2.5.1 base image (DTensor for transformers/accelerate)7a179d5
  • pin diffusers==0.32.1 (torch 2.4 compat) + /debug route1a07088
  • lazy-import torch/diffusers so uvicorn boots instantly08ad7a4
  • persist generated clips to Media Library + S3f735397
  • reap orphan duplicate pods in idleSweep (cost leak)8ddb652
  • self-hosted LTX-Video pod image + server contract6af305a
  • freemium KIWI watermark + sleep-managed video pod lane73ba62b
  • AI Video Studio format/duration/brand-style options174ca16
  • media by URL + engagement analytics (likes/comments/views + top posts)f9aee05
  • twitter→x normalize, post-results polling cron, readable connect errorsf7f14b6
  • publish to /social-posts with snake_case social_accountsaf97b27
  • send X connection_type oauth2 (omitting it 500s)c2a29bd
  • back to Instagram Business Login (modern non-deprecated scopes)f91f1f8
  • Instagram via Facebook Login per PostForMe docsb53967e
  • brand-colour platform icons via exact hex430870f
  • deauthorize + data-deletion callbacks for App Review346bc35
  • close the OAuth popup by polling it (window.opener is severed)a084b74
  • default Instagram to direct Instagram Business Logine552918
  • published posts are light-green + not draggablea8fb35c
  • Instagram connect via Facebook Login (per PostForMe guide)0697a03
  • surface professional-account requirement before connecting390452a
  • drop redirect_url_override so OAuth uses PostForMe's callback41e7632
  • default Instagram connect to Login-with-Facebookda01f30
  • ↑/↓ recall of previously sent messages (shell-style)f0bcc5b
  • Instagram/LinkedIn connect + s3:// image resolutione1a806b
  • darker light stop on gradient (#141a26 → #101420)f1da585
  • restore <select> chevron (gradient no longer clobbers it) + Accounts bar in Comptes tab9b2cd05
  • verify PostForMe Standard-Webhooks HMAC signature + darker input gradienta52c0ee
  • snake_case PostForMe fields + normalize account list + popup UX9e0c724
  • tighter padding, bluer bg gradient, 6px radiusb643c74
  • unify blues, cyan/sky/indigo → blue scale (201 across 53 files)5b69dae
  • frontend deploy is manual-only (local npm run deploy)f50ba20
  • key on real client IP (leftmost XFF), not proxy hop92f9123
  • invert the gradient (dark top → light bottom)65bd45a
  • skip futile canonical-repair on no-canonical pages8b22cef
  • EN-only routine deploy + full (all-locales) periodic0475b53
  • local build+deploy script (npm run deploy)65f8433
  • subtle gradient fill, 4px radius, 1px blue-gray bordera823652
  • centered 'Connect an account' CTA when none connected661cdb5
  • re-enable the floating agent bubble on the Marketing module63d8083
  • hide unconnected platforms + flat darker inputs app-wided08e26a
  • never force-redirect to /login on 40174be0f2
  • stream tarball to Hostpoint instead of per-file rsync123d1d9
  • dark solid track + lighter slider, no transparencye804748
  • redirect to login ONLY on confirmed session revocation (not any 401)becf7a9
  • stop rate-limiting /auth/refresh, it was killing sessionscd79b0c
  • rate limiter only counts failed attempts (stop spurious lockouts)2ee9cee
  • remove auto-redirect-to-login on 401 (was expiring sessions / breaking login)ef73a07
  • auto-redirect to /login when the session expires4d17a38
  • double login rate limit (15 -> 30 attempts / 15 min)ee77100
  • guidelines settings modal that steers the content/social agents52437b5
  • Nova chart from action result, post delete, clipboard image paste0834678
  • connected-only accounts, hide unconfigured platforms, agent bubble + remove dead configc64ad70
  • Free tier limit was hardcoded to 500 MB, should be 100 MBc6cd488
  • CSP for charts, stray scrollbar, update banner, toolbar modal, voice gating + chat tweaksd5814db
  • rebuild as a focused social media manager + remove dead codebf068b7
  • trading copilot (real levels, price alerts, Tensor report) + per-agent chat historyb3c1409
  • draw support/resistance levels + tighter prompt; Home polish7d6cd69
  • fix Aukimi claim + use real aukimi.com screenshotca6349a
  • agent-drafted social posts render as interactive cardsa53f669
  • merge Marketing+Social Growth, full-width Home sections, dev-crash fixf957ef3
  • crash on Home when rendering Nova (unmapped 'education' category)e406f7e
  • kill stray horizontal-scroll on public pages (single styled scrollbar)a89b2af
  • propagate Nova (crypto-educator) to all 28 non-core locales71647a8
  • Nova on agents page + Home highlights (Aukimi, crypto, social)e5a85c7
  • rich cards, choices/form/chart/steps/tradingview, real-time page loop, voice, Marketing Studio, UI polish947c221
  • reinforcement loop, auto-dedup, Firecrawl, Nova, Tensor data, voice gateda079a2
  • narrower panel + tighter paddingd96216a
  • table card auto-detects the list payload under ANY key8a2428a
  • interactive table cards for list-action results676dc5d
  • chat scroll-to-latest on switch, multilingual enum params, quote status, note button4d30608
  • pod-local + multi-DC business option (unblock EU-CZ-1 capacity)753bbd3
  • agent workspace actively wakes the pod (was deadlocked)90028b6
  • live wake-up progress with playful staged messagese50aa93
  • sleep-managed vision pod (2-lane PodLifecycleService)b031eba
  • self-hosted vision path for the 2 remaining Claude callscb7eebb
  • app-wide "AI warming up" indicatoree95eb6
  • --enforce-eager for faster pod cold bootcb03ef4
  • migrate all text generation off Claude → self-hosted pod3fd5c17
  • self-hosted generation foundation + presence warming02c55e4
  • complete the artifact + structured-param sweep347da40
  • surface artifacts + fix invoice items (like the quote)b877241
  • make Isabella populate the quote items array72275d5
  • Isabella actually creates the quote + drops a PDF carded04697
  • unify the Todo modal to one glassmorphic DA4cd6789
  • multiple user-created todo lists (Perso, Projet X, …)51a8f8a
  • actually send the personalized first email6ce7705
  • in-app north-star nudge, one-click enable first routine694d509
  • slash commands in the Workforce chat input0fde4fe
  • regenerate response actiond1cb91f
  • copy-message actiondcb5d82
  • contact/prospect + quote/invoice cards3414e3d
  • copy button on code blocksd773cfb
  • event/meeting card with Add-to-calendar (.ics)f2731aa
  • editable email card before send08c9045
  • inline PDF preview in file cardse68b56d
  • paginated email cards + ticket reference cardseded08d
  • robust clipboard-image paste (items + files)c617c22
  • in-chat email/file cards + image previews (send from chat)16e2cb1
  • syntax highlighting for code in agent chatcd5c5fa
  • control-room UI under Sophia's Routines9535146
  • control-room API, status, suppression list, add/remove05f8eea
  • production-grade autonomous outreach with send-boundary guardrails55ccf07
  • autonomous prospecting routine (draft-first) + reply guardc755288
  • isolate localStorage per route so root pages render in EN93c5ea8
  • outcome-led base SEO in index.html (title, OG, JSON-LD, noscript)ed89832
  • outcome-led framing on PWA manifest, industries & compare pages0a50293
  • propagate outcome-led framing to secondary pages (30 locales)8516f2e
  • aria-label on 37 icon-only close buttonsdd19a69
  • harden Microsoft webhook + PostForMe webhook authc2167af
  • social-account IDOR + Instagram image path traversalfbab15f
  • cover useUserTier (paywall gating) + onActivateKey a11yf411114
  • cover geo helpers + i18n hook (+ DRY the coord helpers)e070528
  • index vibe_scheduled_posts for the social-publisher cron68303fc
  • VibeMarketing mass-assignment + contact-form rate limit965abe1
  • defuse SVG stored-XSS on all serve paths + stop token log leak5b53e4b
  • remove orphan components/dashboard/i18n.json (no importers)a1bff74
  • lazy-locale, timetracker + components (56/56 complete)6e978cb
  • lazy-locale, Logs + 7 auth pagesc54860d
  • lazy-locale, edu, clientfinder, Campaigns, VibeMarketing0dbfe93
  • lazy-locale, calendar + profile (manual, biggest custom)793dfbd
  • lazy-locale batch 3, Expensa, sales, community-publica04db63
  • lazy-locale batch 2, nodes, Workforce, messages, auth (+2)1979acc
  • lazy-load non-primary locales across 37 modules (codemod)f672dbf
  • post author controls hidden, CSS typo, input hardeningc812476
  • free-busy always empty, getEvent missing, Swiss tz default1c83509
  • localize hardcoded French, batch 3 (core done)3a70356
  • localize hardcoded French, batch 2 (4 components)280441a
  • localize hardcoded French, batch 1 (3 components)c8f1e6c
  • stop realtime socket churn + pivot columns past Z + guardsd1489e3
  • bound WS write access + input caps + pagination clamp4b97a24
  • stop realtime socket churn + MarginPicker crash + hardeningb19b74a
  • bound WS write access + input caps + pagination clamp9ab77f6
  • by-prospect view showed no emails + stricter validation37e02f7
  • repair broken .filter(Boolean) in 23 error handlersc51caa1
  • unify coordinate order in Geographic Lead Discovery0ff68fa
  • eliminate vitest inter-test flakiness980c293
  • site-wide Organization/WebSite JSON-LD + multi-schema + breadcrumbs3c2f526
  • Sentry releases, source maps, user context206ab9a
  • upgrade modal + annual plan + trial-to-paid metricf7f2209
  • end-of-trial email sequence + dunning + upgrade prompts55f8882
  • long-tail sweep (labels, keyboard, spinners, Escape)5e2af20
  • modal focus-trap primitive + keyboard mega-menu (batch 3)8a5f82f
  • names, landmarks, skip link, focus management (batch 2)2ad8e48
  • fix contrast (gray-500/600 -> gray-400), toast live region, login focus ring34994e2
  • charge credits after validation + global out-of-credits UX6c2400a
  • credit-meter paid AI endpoints + LOW audit cleanupsc54468b
  • audit remediations (path traversal, cost gates, GDPR, PII)e821973
  • lazy-load CommunityPublic (was eager in the shared index chunk)7b0d704
  • lazy-load below-the-fold sections (LCP win)6946fbd
  • confirmation email on first routine activation2efd550
  • elevate the routine option in onboarding step 3f02ec38
  • D+1 welcome-back email + in-app (return-leak lever)d7bf41f
  • earlier multichannel routine nudge + first-routine empty state13b678b
  • propagate outcome-led positioning to Features/Pricing heroes + auth SEO255963e
  • reposition home SEO title/description to outcome-ledd81226c
  • reposition hero to outcome-led (run your business solo)345c43e
  • shorten feature CTA to "Learn more" + remove card header icons0a2f9ee
  • finish typing the hooks/ directory990520c
  • type the gating hooks (useUserTier, useEnabledModules)7babd1a
  • type the last two context providers (XP, BusinessFilter)9fb53ed
  • unit-test the routing decisione9156d4
  • streaming on the self-hosted lane444b9d7
  • reduce hero top padding on small screens (pt-24 sm:pt-32)f97bd1f
  • calendar legibility + AgentDashboard toggle polish566e734
  • responsive audit fixes across site + appd0157c5
  • Complete Toolkit section on 3 columns (was 2)1cc2c0a
  • declutter hero, drop cost breakdown list + tighten subtitle93a4a60
  • show the full agent roster on /agents (was hardcoded to 11)7b12217
  • hard paywall for free tier by default (KIWI-enforced)b21f8b0
  • reusable AgentAvatar with initials placeholder (no broken images)3fe4874
  • route free-tier real-time chat to self-hosted pod9f61bcc
  • "Update available" banner on new deploy4ebdd59
  • add Kai (developer) to the site agent rosters383b378
  • Sophia illustration no longer clipped (page overflow-x-hidden clipped the bleed)6ae75c0
  • finish team-realign sweep (Modules + Features), drop "not a maze of bots"606f6e8
  • realign site to Sophia-leads-a-team (all agents re-enabled), 30 locales6aa7ecd
  • stop cropping Sophia illustration feet (bigger, lower, square bottom)da5fdb4
  • strip leaked Xpander tool-call JSON + steer to KIWI actions6b84626
  • early-adopter social-proof line in the herofac5bbd
  • XPANDER_SHARED_AGENT_ID, bind all agents to one shared Xpander boteebbe92
  • bigger rounded Sophia illustration + clickable agent cardsea5920e
  • add self-hosted inference + Sandra follow-upse6f1f47
  • decouple Xpander bot id from KIWI conversation key4d5936c
  • give Kai a distinct xpanderId so his chat is separate from Sophiacc2fe3b
  • provider-agnostic TTS + graceful degradation85dc544
  • enlarge + reposition Sophia illustration beside the chat demobc928be
  • Sophia illustration in the AIAssistantFocus section + optimized assetscf6b4ff
  • Merge branch 'feat/self-hosted-inference'8ba5045
  • route ALL autonomous agent paths self-hosted (not just routines)5c500c0
  • Merge pull request #2 from nammuSeb/feat/self-hosted-inference068782d
  • idle auto-sleep for the self-hosted business pod (15 min)97945d7
  • self-hosted env vars + provisioning runbook (Qwen2.5-32B-Instruct-AWQ)4366277
  • Sandra semantic-recall client + wire AgentMemoryService (off by default)d51f1c8
  • add code-specialized agent (Kai) routed to the self-hosted code pod81da24e
  • InferenceProvider foundation, self-hosted routing (off by default)e589c0b
  • Sprint 2, plug the funnel leaks1ff69d0
  • Sprint 1, instant 'aha' + funnel instrumentation3403ecc
  • blue-gray dark gradient on the initial load screen (design system)bdff122
  • Merge branch 'feat/app-improvements'0473984
  • correct AgentContext import casing in Contexts.jsx4a90002
  • Merge pull request #1 from nammuSeb/feat/app-improvements5483a98
  • translate site chrome, Navbar, Footer + 2 home sections + credit modal to 30 locales182c852
  • homepage in 30 locales, 8 markets transcreatedfb0ea3b
  • market-adapt Features + Pricing for 8 deep markets3e0f9a8
  • lazy-load public pages, index chunk 4.2MB → 612KB2f6be35
  • migrate utils + design-system to TypeScript35733ca
  • migrate all 7 context providers to .tsxa3ea1cc
  • TypeScript foundation, typed api layer + eslint + CI gate0965bbd
  • translate 22 public marketing pages to 30 locales + prerender helmet-repair passcbad8cb
  • installable PWA with offline, web-push and app badgingd46398c
  • drive activation toward the first Sophia routine2ebebf2
  • add Vitest + React Testing Library + Playwright + CI9a30acc
  • user account + agent response language across 30 localesbb1159f
  • restore per-page meta, downgrade react-helmet-async to 1.3.0 + prerender helmet flush215b216
  • 30-locale routing, hreflang/sitemap/prerender + restyled language picker0e9cf6b
  • add Vietnamese (vi) support to all 30 i18n.json filesf361ece
  • integrate 29 languages + create LanguageSelector component800d343
  • kill anthracite everywhere (blue-gray dark palette) + hero on 2 lines8de791b
  • finish em-dash purge (public/blog/css) + blue-gray auth pages37c62ff
  • remove all em-dashes + refresh stale SEO positioning8275584
  • blue-gray palette (no anthracite) on referral card + checklist426c248
  • surface referral card on the dashboard home5550feb
  • carry referral code through Google OAuth signup93c729d
  • stamp lastSeenAt on activity (missed in 2e009f42)74f99ea
  • welcome prompt is advisory-only, never executes actionsd8c4cec
  • unify start story, trial-forward + Premium=workspace (Sophia-only)cc7bbfa
  • grant 14-day trial to Google-OAuth signups2fd4a39
  • unify dashboard palette with the site, anthracite → gray31e73d4
  • sync backend package-lock with @sentry/node (npm ci was failing)90eeb7b
  • align navbar + footer color with the marketing pages8528703
  • align marketing with the real app (Sophia-only + core modules)9c5a178
  • cover money/data/auth critical paths (was zero coverage)14223bc
  • deliverability, text parts, broadcast stream, suppression, no fake-sentda9f37f
  • e-signature emails were never sent (wrong env var)6803e8a
  • named sub-processors, retention periods, real cookie policy page2e84853
  • retention purge crons + mask emails in logs0083bfd
  • error boundaries, cookie consent, i18n on conversion surfaces, error toasts39d78c5
  • real account erasure, data export, idempotency+uniqueness2760eca
  • OAuth refresh + reconnect prompts + fetch timeouts + error sanitize6ebbecd
  • block sends to unresolved pseudonyms (email-to-nowhere)7b067e1
  • show combined turn cost (chat + actions), no surprise -2ddc2dbc
  • parallelize agent context, kill list N+1s, deanonymize live stream8f6f29b
  • add missing indexes on hot-path scans (perf audit)307b8bc
  • destructive deletes require approval (agent-flow audit)ea753b0
  • stop double-execution of routines and duplicate emails (cron audit)053bb5a
  • close IDOR + secrets-leak + unguarded-AI holes (audit)725a5b3
  • close remaining subscription gaps (G6/G7/G8)7fdafbf
  • close 5 subscription gaps found in the audit798597d
  • Premium-only, free tier gets the lock, not the toggle39a96be
  • timeout never covers a loaded app + self-healing sessionf2f2d73
  • accept the app's 'aukimi-authed' ack, no more false disconnect overlayfb8982c
  • hide the floating agent bubble on the Aukimi module2fa0b11
  • free tier gets a restricted suite instead of a hard paywall1c2c7b2
  • Premium upgrade wall with real suite screenshots6b42b5f
  • design-system sweep, opaque anthracite, no glass, no rainbowec303c0
  • one-click background jobs for Sophia, the employee who works unprompted3785fc9
  • Sophia-only storefront, honest single-employee pitch1c4fe89
  • record post-deploy smoke-test results in TODO6f9dab8
  • first Sophia task in 2 interactions (was ~10)d18caa2
  • reposition, 'Your AI employees, and the office they work in'1d46bb9
  • real gating, API middleware + route guards (was cosmetic)3bd8066
  • complete PII pseudonymization at the Xpander boundary, credits framed as hours of work087aa11
  • explicit fetch credentials everywhere, LinkedIn cleanup, AI email tools wiredd2b8e0e
  • refocus on core modules, close agent gaps, finalize Messages528297a
  • migrate all react-icons/fa to @phosphor-icons/react82fe1df
  • multi-signer e-signature + AI rewrite credit/rate limitingfa33693
  • remove JWT query tokens on file routes, enforce CSP, bump nodemailerb7f7630
  • mock PlanLimitsService so plan gate doesn't 403 chat testseba54b6
  • sync CLAUDE.md with project scan 2026-07-16d128696
  • add FR/EN keys for e-signature UI (view/certificate/resend/declined)d13ee0e
  • restore invoice/quote PDF generation, pin pdfmake to 0.2.x639089f
  • Merge feat/esignature-hardening: trustworthy e-signature (audit, certificate PDF, decline, branded emails)f1ea165
  • harden e-signature, trustworthy, opposable signatures8dbb1c9
  • Merge security/cookie-only-auth: httpOnly cookie-only session authf29cb8e
  • cookie-only (httpOnly) session auth, remove JWT from localStorage979458f
  • stop stale cookie from resolving requests to the wrong user5131729
  • close remaining hyperlink-injection gaps in transactional emailsa689613
  • escape user input in all transactional email HTML templatese47a7f4
  • sanitize name fields against hyperlink injection in emails84737d6
  • escape form data in owner email + rate-limit public A/B tracking3947680
  • final cross-origin sweep, 5 remaining authless callsf0ca85e
  • add Bearer header to 58 authenticated raw fetch() calls (cross-origin sweep)cf8d689
  • send Bearer header on all authenticated AuthContext fetchesac336a0
  • cross-origin auth headers, Google-login bounce, off-brand load screenbc80d21
  • add unsubscribe link/header (compliance) + fail loud on missing email key12600cc
  • send Authorization header on all email API calls2cf9aed
  • blog/social history save used non-existent model fields8fc4329
  • per-country localization, VAT fallback, default currency, money formatting, e-invoicing warningc43a344
  • fix misleading PLACEHOLDER comment on quote-send route76ec3c6
  • set Todo + Media apart as modal utilities, not modules29f7213
  • add Time Tracker and Todo to sidebar essentials1692aa2
  • add Media, Documents, Sheets to sidebar essentials25e4566
  • remove AI Team Leaderboard tabf180476
  • remove Advanced Analytics + External Integrations tabscfe68c1
  • move Time Tracker/Todo/Media/Documents/Sheets to a new Workspace group4d839b7
  • free-plan banner in sidebar + remove Add Agent entirely68c18be
  • cap older history messages in LLM context639108d
  • send only message-relevant tool defs per call78856a5
  • upgrade listen control to a mini audio player9e981b9
  • chat input exactly 44px to match send/mic/stop buttonsdcf547e
  • vertically center chat input text so it aligns with mic/send buttonsb7e8a5e
  • full agent module is Premium-only; Free = Sophia + upgrade message6348bc7
  • gate workflow_execution behind auto-trigger switch702aa2b
  • surface Lead Generator in sidebar essentialsaf3cce0
  • actionable empty state in Project Managerb422057
  • create-first-quote CTA in empty quotes table6ca6715
  • empty-state nudge when connected with no eventsa21117e
  • stop connect-modal fatigue + CRM CTA on empty by-prospect5d49c69
  • guarantee credits exist before the first agent message8118442
  • progressive disclosure in Add Prospect modal (quick-add)3c20b19
  • friendlier first-run for the leads module57468e6
  • tailored "first move" recommendations on step 393062c7
  • connect-to-unlock empty state when not connected5c8b5fb
  • progressive-disclosure sidebar (essentials vs all tools)1b3a5b9
  • zero-setup cold-start for the AI assistantc7800c7
  • harden agent actions, landing-page XSS, auth & webhooksb508833
  • branded header in agent-only experiencefa40c1f
  • brand the login screen per white-label domain1bbff10
  • white-label agent-only SSO via partner auth codes1b2e988
  • remove agent search bar, align message input with buttons58271e2
  • preserve agentOnlyMode through email/password login4b71fe7
  • Switzerland localization + Swiss QR-bill invoices880130e
  • geo-aware locale context + GDPR-harden shared memory427b5c1
  • lift maintenance mode, restore dashboard + login020f692
  • hardcoded maintenance page for app/login area53c5b7e
  • CSV/XLSX client import with column mapping03931c8
  • extract Invoices modals into modals/ folderb69b27b
  • single source for currency format + status colors1dce1a0
  • remove dead AIOwnershipDashboard (retired Spotlight)47e762e
  • remove references to retired spotlight modulea36ed2f
  • surface real migration failures instead of silent warnsd8b8179
  • replace native alert() with toast notificationsc94f77f
  • remove unused creative studio modules5da1d83
  • add/rename/duplicate/delete templates in User Mailer9a8be76
  • add "Kiwi Rebuild" announcement templatef950691
  • pause notice modal, agents paused until June 201ab8322
  • kiwi-green radio accent in PDF export instead of OS bluec4017e4
  • light-gray row hover on quotes/invoices tables7be6224
  • full-width agent message bubbles + clearer tab hovere1efc1e
  • match agent chat bubbles to workspace stylece416e1
  • neutral-gray scrollbars instead of blue14a62fd
  • anthracite paper background instead of navyee7b969
  • stop full-grid re-render on hover1634b70
  • correct page-break math, top margin was double-countedfbf3af9
  • request same-origin proxy URL in image editord36ad95
  • same-origin image-edit proxy + populate Google Meet linkd532fae
  • opaque anthracite surfaces, kill glass/navy, fix dropdown opacity + z-index9c141dd
  • crash in grid view, define bg + drop orphan setMoveTargetFilesc705924
  • anthracite+green design-system refresh + plan-limit UX + new module panelsf458bc0
  • tier-based plan limits + document/email-template modelse0fec6b
  • gate newsletter postmark-webhook + extract shared auth helper7630520
  • app-wide security hardening across backend, frontend, kiwi-ai3315b9d
  • close the "first action" gap, 26 onboarded, 0 activated2eb63ad
  • hide AI assistant hero when no agents enabled (+ prerender fix)8fe4758
  • 18 integration tests for Sales Accelerator critical paths2fc5547
  • no white-on-green CTAs + hide agents section/page when none enableded26fa6
  • add 5 bonus agents (17 → 22)9b4f4e8
  • pre-seed all 17 agent templates at startupa8fe265
  • add POST /_diag/migrate to force-create tablesa7d6429
  • MySQL index length on VARCHAR(255) UNIQUE7bc1d62
  • Phase 4, email alerts, anomaly scan, daily recap9288ebb
  • Phase 2, stats + invocations browse endpointse00aa00
  • Phase 1, guard wrapper, kill-switch, agent capsaf75f33
  • replace 5 mechanical LLM triggers with deterministic handlers5f0147f
  • cut Xpander+Perplexity costs, consolidate drip cron7be7fb1
  • consolidate 7 every-minute crons into one 5min scheduler0a886c4
  • disable ProactiveAgentService cron to cut Xpander costs702e8fe
  • draft, The Freelancer's Guide to Building an AI Sales Team (Without Hiring)0e36ca9
  • enrich /my-posts with scheduledAt via raw SQLde6a8f3
  • draft, 7 Mistakes You're Making with Your Sales Outreachcaf58bb
  • draft, The Freelancer's Guide to Building an AI Sales Teamdfbb83f
  • draft, Stop Wasting Time on App-Switching (unified freelance workflow)10822db
  • unbreak /blog/official, /feed.xml, BlogTab, remove scheduledAt from Sequelize model304c3af
  • scheduled publishing for blog articles62be2fb
  • draft, The Authenticity Rebellion (imperfect design in an AI-saturated world)cbffcba
  • The Death of SEO, Why Social Discovery is the New Search Engine for Freelancers in 20262c5c7cf
  • revert vendor chunk split, broke React/recharts interopfa46e64
  • drop vendor-charts/motion/icons/stripe/date chunksff0c502
  • lazy-load dashboard + auth routes, split vendors722c6d2
  • IndexNow protocol, instant Bing/Yandex/Naver recrawlf8210be
  • add HSTS, Permissions-Policy, CSP report-onlyaa7b22c
  • og:image cut from 1097 KB → 60 KB (1200×630 JPG)5e2b0a1
  • remove unverified aggregateRating from JSON-LD1042512
  • /modules no longer 403s, redirects to /features5a89d5a
  • sitemap bilingual URLs now match Apache trailing-slash form048f40c
  • make api sitemap.xml resilient to per-section failures340af93
  • align canonical + sitemap with Apache trailing-slash behaviorbc86005
  • add workflow_dispatch trigger to deploy-backendc63657d
  • own table community_chat_messages, stop colliding with agent chat_messages46eb2ba
  • heal camelCase columns on chat_* tablesf21cc07
  • temporary /diag/schema endpointe9170d7
  • append backend detail field to thrown error message0c0af56
  • unblock startup when sequelize.sync hits a legacy FK mismatch798112f
  • surface SQL error code + message on history 5006bfb4ec
  • drop moderatedAt model field, schema-compatible removala275e46
  • resilient ban check + better diagnostic on send failure7037537
  • mention notifications + full moderation systema89529c
  • @mentions autocomplete + scroll-up history pagination25d2dc6
  • per-message upvote next to the timestamp6f15bf3
  • resilient channel list when new tables are missing18e8be5
  • bigger centered underline tabs for Posts/Chat02c429b
  • Posts/Chat as a top-level segmented tab4ca5f24
  • emoji reactions, message edit, unread badgesa60c037
  • Discord-style real-time chat with WebSocketa56912c
  • banking details in profile for invoice payment block77a9a7a
  • Revert "style(theme): retune dark surface palette to softer near-black + navy"4d53638
  • retune dark surface palette to softer near-black + navy88c6089
  • force outlined nodes via .node-sidebar parent + !important05352b0
  • outlined dark Node Properties itemscb87f01
  • outlined dark buttons with 2px colored border46c7930
  • revive Workflow Builder, bridge it to the agent system99a93e6
  • hide entirely when user has <2 businesses1d8885e
  • rewrite documentation site with full module catalog3adc8a8
  • hide floating agent chat on agent dashboard route941676d
  • agent-first home, /dashboard now lands on AgentDashboardfc2d9f2
  • kanban view on the new navy paletteb3d3448
  • brand green = #36fdab + cool navy surfaces (no anthracite)1970d4e
  • align tailwind dark + green palettes with the new chrome9e1e9e2
  • fix the 10 failures that broke the run-tests CI815c6ee
  • rename WealthForge-backend/SCRIPTS → scripts (case-sensitive Linux)0183dd4
  • tame the green, neutral tabs + flat primary CTAe2e6c4f
  • darker blue-tinted palette + Geist body + Button text contrast5f2d369
  • /my/settings was being matched by /:username/settings (404)62ef849
  • full anthracite palette migration3665a70
  • module template, SectionCard, StatTile, PageHeader, EmptyStatea56795a
  • visual sweep, AIOwnership, ProspectCenter, sales generators, brand panel97e02be
  • residual drift audit, orphan hexes + glass-card overlays2a5c162
  • NewPostModal accent, emerald → green (case-fix)97a12cd
  • MediaLibrary palette + global radius softening871e54e
  • module pass batch, ClientFinder, Aukimi, Loyalty07c8081
  • comm-hub finish + landing-pages module pass7145d7c
  • module pass, modals on shared surface, tabular numbersc8fdb47
  • module pass, header chrome, badges, mono cleanupdbf6036
  • module pass, kill HUD font, modal on shared surfacec5161df
  • module pass, modals on shared surface, mono → tabular3574a11
  • module pass, sober chrome, keep categorical hues7a9015f
  • global chrome, modals, XP bar, toasts, onboardingf5c1f1e
  • global layout chrome, palette unification pass82b3ac9
  • darker palette + global visual normalization layerfabaeff
  • unify palette to cool dark navy + kill teal/broken greensfef47d9
  • flat minimalist UI, phase 2 (top 4 modules)1e8125f
  • flat minimalist UI, phase 1 (primitives)0178d99
  • kill 2-second marketing-site flash after logine4c24af
  • per-user transformation history + booking 500 fixb790ab0
  • wrong service method name + saved-searches route ordere9b9a76
  • SEO meta, version history, visit analytics, AI rewriter, custom HTML, lead magnet7b2e46c
  • subscriber segments + drip campaigns with cron processor1d726b8
  • send-time AI + AI generator + click heatmap analytics81e91d9
  • approval queue + voice mode (STT/TTS)06eb940
  • expense AI categorize + VAT detect + cashflow + receipt OCR + recurring cron62b52ca
  • risk detector, burndown, client portal, Gantt + auto-linkd26de2e
  • pomodoro hook + idle detector hookad583da
  • categorize + timesheet + calendar sync + leak detectordc611d8
  • time-blocking auto-generator + smart rescheduledd56045
  • pre-meeting briefs + AI scheduling assistantd1e086b
  • meeting templates with auto-created notes doc72bfd0f
  • email snooze with cron, scheduled send already shippedd58a6b8
  • voice-to-email draft (Whisper + Claude polish)3f8fb1c
  • 30 email templates across 6 categories + apply endpoint983aecd
  • real stage automation rules, todos, webhooks, notesa297169
  • /health endpoint, conversion rates + cycle + AI insighta749d5c
  • weighted forecast, probability × value bucketed by month1f13530
  • unified deal timeline endpoint4e38daa
  • deal templates + apply endpointcc20a56
  • voice memo → transcribed CRM note + auto todos9325984
  • stalled deals list + AI suggested next actions4de6df5
  • win/loss analyzer, patterns from closed deals7638854
  • AI reply classifier (interested / not_now / objection / …)cc316ca
  • AI-generated personalized openers from prospect signalsa5ceb8f
  • competitor weekly digest, AI summary of what's working7cc43fb
  • brand voice training, paste samples, all generators adopt it752b948
  • pre-publish engagement predictorb93f951
  • AI content calendar generatorec3b4de
  • /hooks/rewrite endpoint (missed in last commit)de94615
  • hook library + AI rewriter3ac8e28
  • drag a todo onto Calendar to schedule itf28c42f
  • global quick-capture (Cmd+Shift+K) for fast triage336203f
  • pomodoro 25-min focus timer per task9c01a84
  • AI breakdown + AI prioritize via Claudee0b715f
  • checklist templates, onboarding / launch / month-end / hire / review618dcd4
  • browser image annotator, arrows, rectangles, text, freehandcaa3dcf
  • AI auto-tagging for images via Claude visionc44348e
  • file version history, snapshot, list, restoreb986e50
  • atomic bulk endpoints + bulk tag action5215c6e
  • explicit share-link endpoints2c1478a
  • server-side Yjs CRDT mirror, phase 1 of true CRDT migration2565c01
  • cell-level AI actions, summarize, forecast, clean, anomaliesc9f2ce2
  • live-updating charts + area + donut chart typesa69a7c5
  • conditional formatting, color scale, data bar, duplicates8cd0926
  • 4 new templates + auto-fill from profileee1cbe2
  • exclude yjsState BLOB from list endpoints189bed6
  • e-signature flow, request, public sign page, owner notificationd739199
  • /slash AI commands, rewrite, summarize, translate2c03728
  • templates auto-fill from profile + NDA/Quote/Invoiceac2e5e7
  • server-side Yjs persistence, survives all-peer disconnecta179be8
  • finalize dashboard, Tailwind safelist, soft retry, empty weekdeded3b
  • finalize module, startup env check + mobile headerc330cc3
  • finalize module, i18n credit packs, toasts, env checkab8e7ee
  • finalize module, toasts, success feedback, GEO API, env checka34e97f
  • finalize module, i18n, agent actions, rate limit, error toasts79a1bbb
  • use leftIcon JSX instead of icon component prop5d9e401
  • nest BlogManager under LandingPages module13d1927
  • wire i18n on Editor + Stats + Performancefefe9e4
  • add PATCH /agents/:id for generic agent updates4d1b558
  • add real expense tracker, model, CRUD routes, tab UIc517688
  • mobile responsive + recurring tasksbdad0e1
  • redirect to dashboard immediately after login4b8e32a
  • persist billing rates/currency/enabled server-side1d51271
  • drag-to-create on MonthView + MS secondary calendar fix01940cc
  • mobile responsive 4-panel + drafts folder icon2a168a6
  • CSV import, saved searches, fix favorite route, responsivefc5f2e8
  • register PipelineStageRule in Associations.jse3049ed
  • persist + execute stage automation rules + mobile responsivec1ddcd1
  • remove orphaned SalesPsychology hub1a20826
  • sequence cron, agent actions, DB-backed templates, header i18nceee3bf
  • surface social-connect errors via toastd60cae4
  • retry, vibe detection, i18n on hub4642823
  • stop dropping completedAt + parentTodoId on every boot32b4041
  • recurrence UI, subtasks, due-date notifications, model sync8441980
  • skeleton + fade-in for thumbnails instead of broken-image altbe9d898
  • broken thumbnails, wrong URL prefix and frontend mismatchd3f582f
  • expiresAt + Postmark share email + generic PUT for tagsdb20e0a
  • version history + drop legacy /share endpoint33ce6a5
  • real version history with throttled snapshots + restore309fb64
  • fix mobile LCP with AVIF hero + preload + fetchPriorityb0411c2
  • enable react-hooks rulesfe44d00
  • floor RATE_LIMIT_MAX_REQUESTS at 1000 / 15min5964812
  • move 'if (error)' early return below all hooks (React error #300)d67e437
  • hard-reload after skip/finish instead of soft navigatecf9d09a
  • skip onboarding redirect on stripped fallback userd46943b
  • stop redirect flicker between /onboarding and /dashboardd969328
  • resume at saved step + add skip buttonfb989d5
  • persist Koofie analyses + show full score breakdown78b4e28
  • request limit=100 so newer articles aren't dropped0aaf714
  • add "60 Days With 7 AI Agents" honest debrief8fd2909
  • expose run_koofie_audit action to seo-specialist0b7b8d5
  • integrate Koofie analyzer as a new SEO tabae5b046
  • move social-proof badges to bottom-center of the pagea9abe68
  • allow raws.dev in img-src so the badge renders6844fc0
  • resize Raws.dev badge to 44px to match Product Hunt height3c57da4
  • add Raws.dev badge alongside Product Hunt in hero1192d79
  • add "Why charging by the hour is killing your freelance business"aa61a82
  • refresh all 17 agent avatar images6b20554
  • revert DirectorySlash Off, broke prerendered routes (403)8272c4f
  • redirect trailing slashes even on prerendered directories0d36998
  • add "Unsexy math of going solo" articled0ee762
  • use raw SQL to dodge model/local-DB drift88c996f
  • seeder for "7 questions" article into prod blog_postsad47ccd
  • add "7 questions every solo founder should ask themselves"f0e2a9e
  • paginate inside tall blocks (lists span page break)745ddc9
  • hero count uses app-active agents, not site-visible0f8eba0
  • rephrase CTA title to "The future of work is independent"4f81ea1
  • hero count uses /config/agents (site-enabled agents)57ba98e
  • fetch agent count from backend templates API882a221
  • stop clipping descenders in hero gradient titlef3e62a4
  • clean hero line break, drive agent count from templates meta79c8001
  • Google sign-in, forced onboarding, sharper home herocfec9fd
  • make blog articles + other content routes crawlable (404 → 200)9ebcd0c
  • add Aukimi tools featured image, update postdd5c906
  • 2-row layout, brand on top, 5 equal link columns belowc4eaf0e
  • add Partners column with Aukimi link74691cc
  • click-to-scroll-bottom + consecutive page-break empty gapsc49fc83
  • redesigned list view, featured hero + grid + search3e6692c
  • resolve s3:// featured images through the public media proxy83a959f
  • persist outbound article in DB, remove static JSON duplicate00fb052
  • new article, "Outbound works in 2026"7279d2b
  • honor explicit PageBreak nodes in paginator5623c08
  • finalize ultrareview TODO, 5 remaining findings5b09ca5
  • rate-limit public POST, fix tz date-edge bug, catch UCErrab25917
  • remove Telegram community link92f1b2d
  • dashboard config + bookings list + prospect cancel + T-24h reminderd35a1d7
  • public Calendly-style scheduling on /book/:usernamef5ea29e
  • LanguageContext must not use react-router hooksb4fafba
  • translate CommunityPublic list + post pages to FR3cc57b0
  • Phase 1, /fr/ URL routing, hreflang, bilingual sitemap084fb62
  • TDZ crash, move pagination effect after useEditor339174c
  • real content pagination, blocks restart at top of next pagef290db2
  • Google-Docs-style page stack, visible gap between pages725e38d
  • visible A4 paper with format + orientation controlsaf11076
  • resolve s3:// URLs through authenticated /media/files proxy21346a9
  • provision Aukimi partner user on signupfac9c45
  • add Telegram community link7401c34
  • Sophia now sees your todos + handle expired Google tokensfb0364c
  • end-of-feed marker on dashboard2d1f486
  • infinite-scroll wipe + polish public community cards20d21a2
  • keep public cards opaque, roll back over-transparent lookfa02e7d
  • softer card transparency + more natural comment toneeeeb08e
  • hot/new/top filters, richer seed, public detail fix, free-tools bga6cc1af
  • seed script, 5 fake users + 5 public postsd0fae20
  • isPublic dropped by api service + new notification style851005c
  • unify public page background, Community + Directory match Home93dcee6
  • EditPostModal content spilled out of panel background3661a79
  • add Community to Creators popup menub0cedeb
  • opt-in public posts + /community page on marketing site1978994
  • perf + UX sprint, N+1 fix, solution preview, shortcuts, infinite scroll009a23e
  • restore-version uses kiwi modal instead of window.confirm91834da
  • blank editor after reopen, retry setContent against Yjs racec8de45e
  • stub /versions endpoint to silence 404s on every doc open33c4095
  • GSC "Product snippets" issue, swap Product for SoftwareApplication303585c
  • lazy-load chat history, initial 3 msgs, scroll-up for more4d8889f
  • "+" icon on add-lead button now white on green8b9eb2f
  • color popups clipped by toolbar, use portal + fixed position5ebd592
  • stale CSS chunk recovery + graceful project 40418a744c
  • richer layouts, feature highlight, process arrows, pricing ribbona199fbc
  • 500, replace nested include with separate map-section queryb8c39dc
  • auto-select title text on renamec6fbc04
  • map view + cross-page anchor fallbacka876828
  • harden delete against silent no-opsfbea073
  • pricing-card contrast on bold + glassmorphism themese5ac828
  • robust stale-chunk recovery after deployd069e1d
  • debounce search, real export, lead score, saved searches06f24a2
  • allow OpenStreetMap tiles and Leaflet marker icons01ef581
  • drop redundant success alert on project deletebd3fe31
  • add IMAP/SMTP provider for non-Gmail/Microsoft mailboxes48e158d
  • resolve inline cid: email images via backend proxy13fe5ae
  • block remote email images with show/hide toggle6009e71
  • actual delete + free-tier 100/batch & 100/month caps56fb433
  • Stripe Connect payment sections (Option B)b1eeb61
  • 4 incremental wins from the audit2d68b1f
  • collapse editor header from 4 rows to 229cc76a
  • whitelist api.producthunt.com in img-src so the badge loads51f118e
  • add Product Hunt featured badge below hero CTAsaab452b
  • featured hero, stats banner, products preview, URL sync816eb07
  • OWASP audit batch, IDOR, auth, crypto, config hardeningf31551c
  • invalidate all existing sessions on password resete582b94
  • enrich SEO content, FAQ schema, internal linkingc7e342d
  • add Meta tags & SERP preview generator2342374
  • add Free Tools link to Support menu (EN+FR)54503a8
  • hub + 5 SEO-optimized tools (hourly rate, invoice, QR, UTM, word counter)5314385
  • Imprint, 3 industry pages, 3 comparison pages (EN+FR)b7178a6
  • polish AI Assistant focus, Sophia avatar, no blobs, no dotsd2bf7ed
  • AI Assistant focus section with animated chat demo4168f51
  • new blog post, 'Why traditional SEO is dying and Geographic AI Discovery is the new freelance goldmine'5090033
  • document delete, confirmation + optimistic removal + toast feedbacke43208d
  • hoist editorRef + use refs in drop handler to avoid TDZ0a70304
  • normalize country field to ISO 3166-1 alpha-2 for Google Ads2c2d33c
  • Customer Match export, options dropdown (hashed vs plain, verified filter)4db969b
  • bump build heap to 6GB, prerender was hitting OOM3a3f9a5
  • desktop file drop + contrast fix on Sheets/Documents list rowsf0d7a37
  • drag-and-drop always active, auto-switches to manual sort on dropbfcb9c8
  • drag-and-drop reorder for Sheets + Documents dashboards09a52ba
  • richer share UX, tabs + link role + public/restricted toggledcd9268
  • merge Sheets share buttons, icon opens the full modalb9e8413
  • re-enable live cursors via custom CollaborationCursorExt7671b24
  • disable CollaborationCursor, crashes editor mount in v3692fb7c
  • guard editor.view in spellcheck effects46a6421
  • SEO / GEO / internal-linking overhaul5308ca0
  • guard editor.view access in SuggestionMode command + effects459ac4f
  • Documents editor crash + Tiptap v3 compat033ef1b
  • ShareResourceModal, portal to body + safe backdrop close0099f85
  • hoist useDocumentRealtime + userColor above useEditor277ad6d
  • Documents Yjs CRDT co-editing + suggestion mode + sharea3b02fc
  • Sheets comments, pivot tables, realtime co-editing + shareec33271
  • resource sharing with Postmark invites (documents + spreadsheets)4bc4813
  • ProspectActivity associations + kiwi-ai feedback blending21b2c0f
  • persistent circuit breaker + action feedback loop + SSE fixe56fb79
  • read modules from correct key in config response5190535
  • rich Welcome email, personal tone, screenshots, Aukimi section, Community CTA737d118
  • use outbound stream for user mailer, add Postmark error logging9afc830
  • save/load email templates in User Mailer8ea424e
  • remove agent count from Welcome template, add Community Hub link5b79bec
  • Welcome email template dynamically shows only active modules8fc1a2e
  • replace VibeMarketing with Campaigns in Welcome email template389b494
  • improve Welcome email template, add Aukimi details, Community Hub, all modules8a3518e
  • Aukimi API URL default to aukimi.com (not app.aukimi.com)d712c3a
  • auto-provision aukimi accounts via partner API on auth-token requesta334e5f
  • apply fontFamily and secondaryColor to quotes/invoices PDFs7fa92ec
  • bulk Accept button now also converts quotes to invoices313ce8e
  • invoice number generation must be globally unique, not per-user06c066f
  • more bottom margin on floating bulk actions barb1ecc1c
  • wider bulk actions floating bar in Expensa (600px)a56e5e8
  • make bulk actions bar fixed floating at bottom of screen in Expensa822f7a5
  • remove sticky from bulk actions bar in Expensabd79001
  • make bulk actions bar sticky in Expensa quotes tableae33a7e
  • expose detailed error message on quote-to-invoice conversion failure43ba9c6
  • invoice number generation, use max existing number instead of count728d10f
  • auto-convert quote to invoice when status set to Accepted1759711
  • add migration to update quotes.status ENUM with 'Sent' valueeb585a5
  • Expensa, fix silent error in convertQuoteToInvoice, remove Invoiced from dropdown8ba8a7d
  • Expensa, add Sent/Expired statuses, fix invoice list stale closure5c11d9c
  • quote-to-invoice conversion, accept Pending status, add success feedback + tab switche7629c4
  • ProactiveAgentService class closing brace was misplaceda4aee85
  • ProactiveAgentService, autonomous agent actionsd1df48e
  • add missing ChartBar import52b45b5
  • custom domain serving, middleware for verified domains013f25d
  • .app.kiwi label bigger (text-sm)ccb68e4
  • domain settings layout, stacked vertically, clean inputs49fd6c6
  • complete settings panel redesign, clean accordion layoutf88b0f3
  • disable floating chat on landing page editor + add bottom padding to settings163d22d
  • bigger custom CSS + head code editors with syntax coloring82761ce
  • simplify landing page editor header, remove business button, cleaner status6640230
  • landing page settings, slide-out sidebar with accordion sections1b31dad
  • SEO button in landing page editor was always switching to editor1e798e8
  • mobile responsive, AgentDashboard + Marketing TweetDeck984b83d
  • Landing Pages, 12 new featuresa478986
  • Sales Accelerator, 9 new features1a6d3e1
  • Lead Generator improvements, distance, scoring, dedup, enrichment30ae08b
  • Aukimi fullscreen, 20px header bar with minimize buttonf129dc8
  • Aukimi fullscreen z-index 100 to cover all UI elements0d90a2b
  • Aukimi fullscreen, minimal header, max space for iframe6138e42
  • email invalid_grant triggers orange reconnect banner0f92291
  • send/stop button aligned with input, PAGE_SIZE 10, remove debug logs7179261
  • orange reconnect email banner on token expiration0417498
  • Documents light mode, black text on white backgroundf1a10cd
  • align send button vertically with inputfa8def7
  • unified background color #0f1219, dark navy flat1418c71
  • signup + login page, anthracite gradient with subtle glow4bf888f
  • disable floating chat on marketing page (Lucas embedded)b517c32
  • delete scheduled post route + agent column overflow + post endpoint5bca390
  • Bluesky connect modal + LinkedIn/Instagram platform_data fix355e756
  • PostForMe auth, pass platform-specific data (connection_type)48212a2
  • darker background gradientb7ea189
  • background gradient matching header bar navy tones8fa72c6
  • darker background gradientada7235
  • replace grid background with anthracite-blue gradient9cea8e7
  • Google Ads conversion tracking on signup9d9ad58
  • PostForMe API base URL missing /v1 prefix303bfff
  • bigger connect account buttons with platform names66ea4a5
  • embedded Lucas agent + PostForMe in Marketing TweetDeck994aabb
  • PostForMe integration in Marketing TweetDeck7693152
  • Marketing module rewrite, TweetDeck-style columnse941604
  • Xpander streaming, custom functions, and knowledge basesd155d0c
  • migrate Xpander from webhook to proper API (v1/agents/invoke)67cd3f7
  • detect hallucinated actions, warn user when agent lies122117b
  • agents must not claim success without action blockseaedfa7
  • copy button in agent console modalc9466fe
  • Xpander timeout 30s→60s for complex requests (web search)c2a29b3
  • agent console modal, click 'thinking' to see live SSE eventsf1f683a
  • calendar timeout, rate limiter too slow + short timeout95ddd6c
  • add console logs for chat scroll loading1625019
  • create_meeting_link, translate_text, shorten_url actions95efbf8
  • 6 new agent actions, profile, pipeline, dashboard, export3298d40
  • update_business_profile agent action6184b8c
  • agents must ACT immediately, not describe plans017e477
  • auto-switch agent window on handoff delegation6b4fd76
  • automatic agent handoff when out of expertise0b0e6a5
  • notification when agent responds (visible outside Workforce)6f3a618
  • auto-extract directives from user correctionsf7343b7
  • search messages in chat history66494ec
  • infinite scroll chat history (WhatsApp-style)06023fb
  • drag & drop files into agent chat3dd120e
  • chat bubbles, dark navy/slate tones matching sidebarba845d8
  • Agent.findOne missing userId, chat history not loadinga932908
  • chat bubbles, anthracite gradient with subtle bordere3af2ca
  • SSE stream hangs when sendMessage errors or Xpander timeouts0992169
  • label_email, handle custom labels like 'Urgent'133a8e3
  • add social/integration TODOs to CLAUDE.md2752a74
  • social listening cron + comment reply actions3f7f990
  • agent memory loss and off-track behavior65188dc
  • stop button to cancel agent response mid-streamb10fa3b
  • highlight color picker, bigger swatches, cleaner gridbdf8c16
  • inject user directives into system prompt for strict enforcemente8f98d4
  • add missing useMemo import in AgentDashboard502a69b
  • paste images from clipboard into agent chat65f91f4
  • @mention agent delegation in chat78f1752
  • add detailed error logging for sendMessage Validation errore9abf20
  • keyword-based agent routing fallback when ML service is downec2655f
  • use findOrCreate for Agent to prevent race condition3bc0acb
  • manual email recipients for campaignsae9d1bf
  • allow resending campaigns already sentbe110f5
  • include newsletter subscribers in campaign recipientse4eefb4
  • campaign send, better error handling + show actual error messagedfc0972
  • multi-series charts in Sheets + agent memory edit/search/dedup3d11146
  • agents can update documents and spreadsheetsa54632d
  • Activity Feed shows auto-triggered agent messages with date accordion02be492
  • notification type ENUM + email label mapping937e06f
  • RGPD, anonymize PII on ALL Xpander callsf2f0b87
  • add search_leads permission to executive-assistant610e6b0
  • remove orphaned debug line causing SyntaxError crashfff0f1c
  • dashboard/projects 500 + cleanup debug logs3e84d60
  • agents show green dot when active (was gray = looked offline)58ed4a3
  • 4 SQL column mismatches in AgentActionServicec8a01a8
  • create_task uses 'text' column instead of non-existent 'description'bffa75f
  • add 'automation', 'action', 'response' to ChatMessage messageType ENUM811eb71
  • filter disabled agents from /workforce/agents endpoint92dfbe4
  • route-agent missing Content-Type header66cd6af
  • test email also wraps with Kiwi template42f9ee9
  • newsletter template wrapping moved to backend (no more double template)7ead5c7
  • personalization tokens, handle HTML-encoded braces + clean empty names780061c
  • newsletter delete, fix broken headers ref + use window.confirm2bc229e
  • newsletter double template, save raw content, wrap on send/preview0e8323a
  • purchase-credits returns session.url for frontend redirectdbe7506
  • credit purchase error response, include debug messageee4024e
  • use Kiwi AlertModal instead of browser alert() for cancel feedback55d4e90
  • add cancel subscription success/error feedbackd217848
  • cancel subscription keeps active until period ende662edb
  • subscription status shows Premium correctly + remove Free label from sidebar5205995
  • handle Stripe current_period_end as number or Datec974059
  • always return debug error in verify-session (temporary)3ea581b
  • verify-session, include error details in response for debugging5f7192c
  • add debug log to verify-session entry point6a4e890
  • requireStripe middleware, proper error handling for asyncdcd1fbc
  • don't cache Stripe test client, add verify-session logging9669942
  • verify-session fallback to DB if Stripe call fails63e7256
  • webhook handler returns 500 on failure instead of swallowing errorsda41563
  • webhook accepts both live and test Stripe secretsb44d524
  • strip JSON double-quotes from SiteConfig Stripe values2ccaf27
  • t is not defined in PipelineKanban sub-components9a53346
  • Aukimi auth, retry harder, send to both origins37209ba
  • Aukimi iframe loads only after auth token is ready22ff82f
  • cross-origin iframe reload error in AukimiSuite5d3c815
  • Aukimi partner ID 1 → 2711053a
  • increase spreadsheet rows from 20 to 100+ (200 max)f42fff2
  • agentActions.js syntax error from sed corruption7e7c57f
  • add missing api import in AukimiSuite09b9907
  • AUKIMI_PARTNER_ID crash + missing screenshot placeholderse9ed9a6
  • marketing module improvements, personalization, A/B testing, bounces, recommendations9753f5f
  • connect AI agents to Documents & Spreadsheets modulesdde0de9
  • server-side PDF export for invoices & quotes (Expensa)79ee0a7
  • document headers/footers with page numbersd6d70d6
  • page margins in Documents editor620e9f5
  • persist light/dark mode preference in Documents & Sheets2cc8e8b
  • newsletter logo 200px174bc2c
  • sync Postmark suppressions bidirectionally062e0f9
  • newsletter logo 420px widthcf436e1
  • remove unsubscribe text from newsletter template (handled by Postmark)eb73554
  • newsletter header logo 320px width8f50598
  • improve newsletter template + add /unsubscribe page30df23b
  • remove broken headers references from sed migration73d8d9a
  • increase DB connection pool from 5 to 20 for production scale0e0683e
  • subscription billing security + grace period + renewal creditscbad859
  • revert auth to localStorage authToken + global fetch interceptor6b01f69
  • restore Bearer auth fallback for all fetch callsb2d141a
  • server crash, AuditService methods outside class + bad import30ad01d
  • remove duplicate AuditLog model causing server crash0acbb3a
  • S3 encryption at rest + audit log systemece298e
  • S3 versioning + automated daily backup scriptcef2939
  • increase free storage limit from 100MB to 500MB23e394b
  • CSRF protection, magic byte validation, error sanitizationd1de3ed
  • migrate auth from localStorage to httpOnly cookies64f6d2a
  • fix critical vulnerabilitiesd7fbe36
  • active sheet tab, border-bottom onlyfd3e646
  • green border on active sheet tabe1d036c
  • rename and delete sheet tabs in Spreadsheetsb90d6c4
  • reduce document auto-save debounce to 300ms91d5e8b
  • document auto-save stale closure + faster save (800ms)9e8fc71
  • extract document object from API response on create03973ac
  • mount BusinessBlogRoutes on /businesses prefix instead of /45ae411
  • add *.google.ch to CSP (Swiss Google domain for ads)d733188
  • TOS modal button, light green bg with black text621110c
  • propagate tosAcceptedAt to frontend user context522773c
  • update CSP to allow S3 storage and Google Ads domainsaf386d6
  • S3 sync status indicator with 3-state cloud icons04bbdfd
  • auto-sync all media to S3 with cloud status indicator202d407
  • add S3 storage (Infomaniak Swiss Backup) + legal terms modal6df4740
  • add 4 new landing page templates (Portfolio, Fitness, Real Estate, Online Course)e9aa1eb
  • Landing Pages, aggregate stats, SEO score panel590eb32
  • Landing Pages, show error feedback for all failed operations7211d65
  • add Documents, Spreadsheets to navbar dropdown + Landing Pages to screenshots649e1d0
  • add Landing Pages to Home page features9d8834d
  • remove "Included in free version" badges from Home and Modules2d24751
  • Sheets, insert/delete row/col shifts ALL formats correctly3ab240e
  • Document & Sheet sharing, public links with share tokens4c44530
  • Sheets, formula fill with relative/absolute references ($)33f963c
  • Sheets, IMAGE formula, HYPERLINK, insert image buttonf559bfd
  • Sheets, table formatting (borders, alternating colors)5c31a41
  • Sheets, drag & drop cells to move content (Google Docs style)6fae4cb
  • Sheets, 25+ new formulas (lookup, text, math, stats, date, info)3f02ee1
  • Sheets, row/column header context menus (Google Docs style)6334cb7
  • Sheets, row insert shifts formats, undo/redo stale closurefd94a07
  • Project Manager, double-click to rename project4a32565
  • Project Manager, null guard on updateMetrics0aa99cf
  • Project Manager, task update 400, profile 404, status chipse8431ba
  • PDFExporter, add t() prop with fallback, pass from ProjectDetailef2b638
  • GanttChart, add t() prop with fallback to prevent crashe026f36
  • Workforce, remove live badge + capabilities count, green send button7b92b28
  • Workforce, Power Mode toggle, fix French credit errore8603ff
  • Landing Pages, publish/schedule loading states + timezone5942c91
  • Landing Pages, honeypot anti-spam, HTML cache, SEO improvementsbf69efd
  • Landing Pages, bilingual error message for terms of use09f9bb4
  • SEO module, error UI, URL parse safety, search debounce831e065
  • Project Manager, i18n for Gantt filters, PDF export, empty states3334f27
  • Sales Accelerator, remove alerts, fix navigation redirects88589d4
  • CRM pipeline, i18n automation rules, pass t() to Kanbanbcad2e9
  • CRM, replace all alert() with toast notifications, fix bugs915e468
  • Sheets, memoize cells, formula cache, dynamic row rendering3e5003b
  • Sheets, bugs, toasts, confirmations, 15+ new formulas6509d2f
  • focus mode uses portal to body instead of fixed positioning117391d
  • focus mode, full opaque background, Escape/Cmd+Shift+F, z-index78b2008
  • spell checker, 5 languages, DB dictionary, grammar colorsd507bd3
  • spell checker, personal dictionary, bilingual, grammar, cache935b8a5
  • self-hosted spell checker, zero external API, RGPD compliant2718b45
  • spell checker position mapping, build proper text↔PM offset map732b229
  • add api.languagetool.org to CSP connect-src for spell checker9a21442
  • move spell state declarations before useEffect that references themf91d213
  • spell checker uses overlay instead of DOM mutation3a2894c
  • inline spell check, click red underlined words for suggestions4aef6a9
  • spell check, send full sentence to LanguageTool via POSTd1367f7
  • integrated spell check suggestions in Documents context menu92cdcc9
  • Shift+right-click bypasses custom menu for spell check suggestions0cca009
  • enable native spell checking in Documents and Sheetsae1583a
  • context menus, viewport clamping + cut/copy/paste/undo/redo2ac1b14
  • kanban status drag & drop persistence + mode memory28d91b5
  • add missing useCallback import in TimeTracker.jsx523787c
  • add empty states and loading spinners to all TimeTracker views3581593
  • TimeTracker, configurable daily goal, fix sync, cleanupdd1152c
  • 3 TimeTracker bugs, time display, kanban persist, today's focus62334bb
  • remove manual Save buttons from Documents and Sheetsafc3d3e
  • Assignment to constant variable in Modules.jsxdf751b9
  • validate timestamps before sending to Google Calendar API977257c
  • add calendar update logging to diagnose Invalid start time26fe0ef
  • calendar "Invalid start time" + timezone + conflict text75c9af5
  • calendar event save bug + add event color picker18b14f6
  • initialize screenshot gallery with existing default images4e9f8f6
  • auto-save screenshots on every change (no manual save button)57a3af2
  • screenshots, drag & drop, lightbox, multi-format social, ZIP, compression52cc902
  • screenshot cards with full controls on all images3fa019e
  • screenshot cards with visible controls and reorderd6939f5
  • replace add-image dropdown with centered modal22dbc34
  • persist social media screenshots + add image popover (upload/paste/URL)97f5f16
  • support multiple screenshots per module62e55cf
  • social media images, 6px border, preserve logo aspect ratioa1faec7
  • dark theme for all email templates and prelaunch page17a5183
  • newsletter stats counting active subscribers from wrong endpoint4a4e5fd
  • prelaunch confirmation email template6fae1ba
  • send prelaunch confirmation email via Postmark, fix stat card colorsdef80a3
  • use Button component from design system in prelaunch page63ba930
  • simplify prelaunch signup page, remove module-specific featuresf130346
  • translate Postmark email templates (FR/EN) and surface send errors5912b85
  • resolve i18n key resolution for all auth pages4be91c4
  • fallback to /api/stats for agent roster when /api/agents/stats failse81372f
  • add cdn.jsdelivr.net to CSP for Three.js font resolver8e228d5
  • add blob: to CSP script-src for Three.js web workersff06d3f
  • downgrade react-three to React 18-compatible versions + add .npmrc9b0dcdd
  • add missing icon imports and fix extension conflicts in Documentsad11262
  • replace non-existent SpellCheck icon with ListChecksaeb8a13
  • add 7 new Document editor features (highlight colors, line spacing, indent, sub/sup, emoji, focus mode, spell check)6334839
  • improve text color icon visibility in dark mode1ee63b4
  • add missing TextAa import in Documentsd5f5eb6
  • change text color icon to TextAa with dynamic color indicator9eafd84
  • improve cell selection visibility in Sheets light mode3a32c7c
  • improve document card info visibility + fix dark mode background colorba99c3c
  • add undo/redo toolbar buttons to Sheets16b3dd3
  • delete VectorEditor, add features to Documents, MediaLibrary, Calendar, ProjectManager & CommandPalette4088a65
  • add missing XP tables to auto-migrate + fix tiptap duplicate extensions83c64ee
  • add custom context menu to Documents editorb656f4f
  • prevent Sheets context menu from overflowing viewport7be93e0
  • fix context menus + draggable charts + major feature additionsaa7b215
  • center changelog timeline bar + change Documents import icon2641307
  • add sort/filter, conditional formatting, charts & import to Sheets46ed3b0
  • add find/replace, templates, table of contents & word goal to Documentsf9b3aa2
  • back button returns to correct module when opening docs/sheets from Media96914fe
  • add freeze, merge, number format, auto-fill & shortcuts to Sheetsfdef4f3
  • add font size, text color, import & shortcuts to Documents editorbe01520
  • add multi-format export to Documents and Sheets56e164f
  • add Google Fonts selector to Documents editorb537804
  • ColorPickerBtn light mode support in Sheets7b7175c
  • add light mode toggle + column/row resize to Sheets & Documents editorsb4529ff
  • darken column/row headers to distinguish from cell content areaa2d0f74
  • add column/row selection and cell color styling to Sheetsac5c8fc
  • improve formula eval robustness, add word boundary to SUM regex, direct numeric return, error loggingd90c368
  • add thumbnails/previews for documents & spreadsheets in Media Libraryf2aeea0
  • sync documents & spreadsheets to Media Library146aac5
  • merge Media Library header into single toolbar row to save vertical spacee22903e
  • reduce sort select height and improve icon visibility in Documents & Sheetsfcdf0e6
  • unify Sheets header with Documents, add list view, portal context menu, sort & relative time858c854
  • return 410 for unknown subdomains instead of passing to API (was causing 5xx)698c7e8
  • 410 for /search + /lander with params, 301 /privacy → /privacy-policy, /education/blog → /blog6ce4dd9
  • 301 redirect spam query params (?beerus=) to clean URL23edc43
  • redirect www.app.kiwi → app.kiwi + force HTTPS (301)3ae19c4
  • return 410 Gone for legacy APK store URLs, block in robots.txtdb95358
  • SEO, canonical via useLocation, .htaccess 404 for unknown routes, prerender /directory8bca851
  • add agent mappings for media, documents, sheets, blog, clients modules8bdaa98
  • Documents context menu z-index + deferred listener to prevent instant close3a9404d
  • Documents context menu, use portal + prevent click-throughfb69dd8
  • improve Documents module, sort, grid/list views, paper editor, keyboard shortcuts90e8f65
  • add column/row hover highlight + cell range selection in Sheets347a5e1
  • add print with settings modal to Documents & Sheets + sync to Media Library3345c00
  • sync Documents & Sheets to Media Library3393e38
  • improve editor toolbars + add right-click context menus to Sheets & Documents8ec756f
  • embed PDF preview directly in modal via blob URL + redesign preview header42afabf
  • add thumbnails/previews for PDFs, Documents, and Sheets84d65cd
  • replace PDF/Office iframe with open-in-new-tab preview card6566eea
  • add preview modal, context menu, create doc/sheet to Media Librarycd02d52
  • remove storage usage pill from Media Library header5d5a6fc
  • improve Sheets, fix cell input bug, add 25+ formulas, help panel605783b
  • add Sheets spreadsheet module with formula support20f43e0
  • add Documents module with Tiptap WYSIWYG editor9733afb
  • use 4:3 aspect ratio with min-height for grid file cards95b7d27
  • make share email input full width on its own row0de2460
  • remove JWT auth requirement for serving uploaded files and thumbnails22dcdec
  • append JWT token to media file URLs for authenticated accessbf0a802
  • store full API path for thumbnail URLs1cf5c1e
  • strip /api/v1 prefix from media file URLs55b8a03
  • prefix media file URLs with API_BASE_URL for productionf01411f
  • make Media Library full width layoutfcc8af9
  • redesign Media Library with Drive-like UX improvementsdeefcac
  • add media_files migration for new columns and update badge color156ec96
  • add Media Library page with Drive-like file management, sharing & preview41d9591
  • add reactions, @mentions, channel sidebar & notification improvements to Community (frontend)6667e4f
  • add reactions, @mentions, channel sidebar & notification improvements to Community7a0b70b
  • add financial dashboard to Expensa with P&L, cash flow, aging & forecasting962d484
  • add advanced reporting view to Time Tracker with billing, PDF export & peak hours995be46
  • upgrade Calendar module with conflict detection, keyboard shortcuts, time indicator, drag-to-create & scheduling assistanta425452
  • upgrade SEO Dashboard with competitor comparison, recommendations & keyword badges89cfcba
  • upgrade Automation/Nodes module with 5 new node types, 8 Kiwi-connected templates & backend execution3194dae
  • add Media Manager modal accessible from dashboard sidebar214a43d
  • add team, video, map to landing_page_sections type ENUMfbc3df4
  • resolve React error #31 on /blog by using dangerouslySetInnerHTML for JSON-LD schema4e717c4
  • redesign changelog page with vertical timeline grouped by date9328d39
  • button text contrast computed against gradient midpoint, not just primaryColorce6060f
  • scheduled publishing, newsletter section, business blog, WYSIWYG editor, image optimization, Lighthouse prep, testscb1e348
  • exit-intent popups, social proof, blog gen, clone, sitemap, RSSd56523b
  • add team/video/map landing page sections + business performance analyticsa14ed36
  • improve landing page animations + migrate react-icons/fa to Phosphor14a76dc
  • standardize email FROM address to use EMAIL_FROM env var1f56cd5
  • add og:image dimensions to SEO component + update sitemapea4548e
  • dynamic canonical URLs + noindex for dashboard pages73162d2
  • make landing pages full width + improve image preview in editorb00812c
  • add Pexels domains to CSP for landing page images28ac23e
  • add subPageId to LandingPageSection Sequelize model61e62d9
  • center landing pages on all themes + enforce 2-font limit6bffab7
  • inject graphic design theory principles into landing page AI prompt58c7982
  • randomize product count (2-4) instead of always generating 5eacc5f3
  • increase landing page variety to 12600 unique combinationsd936b84
  • massively increase landing page visual variety432cbc2
  • add Stripe Customer Portal configuration ID support3c6dc79
  • prevent server crash when STRIPE_SECRET_KEY is missinga07cb4e
  • multi-page site navigation showing same content on all pagesd5d691f
  • complete Stripe subscription safety net53396b1
  • parallaxBg using DALL-E prompt text instead of image URL9cd317d
  • landing page list fallback when Business table missing + multi-page fixes80c1c6b
  • hero contrast, multi-page nav on subdomains, business name sync84b6164
  • enforce text contrast with inline styles on all landing page elements30727d1
  • rewrite all /uploads/ paths in preview including CSS url() backgroundsfcd3267
  • prevent duplicate landing pages per user/business46551dc
  • enforce contrast on card text via CSS contrast guard6a4b4c6
  • remove subPageId from LandingPageSection model to prevent Unknown column error137b569
  • add focal point selector to image uploads for landing pages29ebf9d
  • add object-cover to landing page images to prevent deformation474f5bc
  • add isVisible to raw SQL fallback + make renderer filter defensive059e370
  • add safe fallbacks for subPageId column in public landing page routesca0be7b
  • refactor logs page into date-based accordion groupsf7e30a3
  • handle missing subPageId column in subdomain resolver + add multi-page supportc892069
  • handle missing subPageId column in landing_page_sections gracefullyc30b167
  • remove sanitizeJsonFields that corrupted landing page JSON responsescddbd46
  • handle missing landing_sub_pages table gracefully + add error logging2e3e4cf
  • add Quote section + hero background image/video optionsedb0c65
  • add multi-page landing page support5ecb091
  • remove breadcrumb from landing pages, fix CTA contrast, sanitize JSON fields8af4c4d
  • remove breadcrumb from landing pages + fix CTA button contrasta97417a
  • add missing landing page editors (carousel, tabs, process) + submissions API8b8acdb
  • add 9 landing page improvements (ARIA, CLS, carousel, tabs, breadcrumbs, blog JSON-LD, responsive pricing)0111a2d
  • cap border-radius to 16px max on inputs/buttons/forms, add WCAG contrast guardd40692f
  • landing page improvements, footer variants, content dark mode, testimonials scroll, image optimizations6b52860
  • enforce consistent border-radius via CSS variables for all elements62c4e64
  • adapt form styles to designSystem (border-radius, input radius)7b7f55f
  • contrast pass with inline styles, centered orphan cards, remove gradient linecb22f64
  • increase hero video/image overlay minimum to 0.5 for better contrastd8d0a4c
  • hide foreground hero image when video/image background is present0146a03
  • validate section types & add businessId migration for quotes/invoices204525e
  • diversify navbar layouts and hover effects on landing pages9146bfe
  • contrast pass, icons, step circles, stats, video overlay, spacing2776ccb
  • link quotes & invoices to selected business in Expensafccded3
  • 3-color brand rule, hide video on mobile, cascade delete business27e4775
  • integrate Pexels API for stock photos & video hero backgroundsc98e53d
  • add 5 contact form layouts (split, banner, minimal, card-accent, centered)880f473
  • restore sticky nav by using overflow-x:clip instead of hidden7c30e1e
  • horizontal scrollbar, mobile nav dark theme, and responsive spacinge16529e
  • CTA buttons now use business primaryColor instead of generic blackde2ce82
  • dark theme navbar scrolled state now uses dark background0a9d7eb
  • make dark theme navbar fully opaque to prevent content bleed-throughf5c14c7
  • add list view mode and sort options to business directorya5433f3
  • dark theme navbar visibility + timeline colors + force dark on all sectionsff6ad25
  • comprehensive dark theme fixes for landing pages (bold + glassmorphism)11059f4
  • comprehensive SEO optimization for landing pages (72→~90/100)c3b44c9
  • directory logo on dark kiwi background (#0f1d2a)74eaecf
  • cinematic image prompts + directory logo background46833c6
  • dark mode coherence across all landing page sections4bf52b7
  • industry-weighted layout system with 7 profiles and new variants32025d6
  • force random layout/style diversity on landing page sectionsb1b10d9
  • 3 landing page issues, cropped button text, logo color, logo quality8072ced
  • show business name next to logo in landing page nav and footere3a1e14
  • add layout variants for features (5) and pricing (3) sections24857b5
  • add countdown, process, services to landing_page_sections ENUM3efc410
  • major landing page design overhaul, 8 UI/UX improvements4aa7120
  • show business logo with primaryColor in navbar selector + fix directory broken logosfa58f7f
  • clear stale business filter when selected business no longer existsfafcca2
  • replace native confirm() with modal in SEO CompetitorsTab443feeb
  • hide credit warning when balance > 860e50d0
  • business filter system, backend routes now handle businessId param5aab6e3
  • CTA buttons now link to actual sections instead of nowhere (#)2532140
  • switch image generation from DALL-E 3 to gpt-image-10ae4606
  • enhanced landing pages, DALL-E per section, countdown timer, Google Fonts, animations, multi-step forms, video hero, parallax09f4e5c
  • deep theme personalization, Claude generates customCss + designSystem2abc25a
  • visually distinct landing page themes with aggressive CSS overridesf2bdf22
  • preview images, rewrite relative URLs to absolute + allow API in frame-srcd92ec7b
  • preview images, use request origin for base href instead of missing env var55c67fe
  • landing page preview images + transparent logos + logs date parsingf43ec99
  • credits wiped on level-up + CSP blocking DALL-E imagesc01865d
  • group /logs page entries by date with visual separators37a2d1b
  • exclude public/uploads from rsync --delete in deploye7966f3
  • landing page images not showing, 3 fixes0c1e963
  • inject business logo into landing page settings0fb027a
  • remove headline/description text from DALL-E image prompts5a38c9c
  • add business filter system across dashboard modules345ac85
  • landing page sections empty content + stuck generation auto-cleanupbb1e105
  • editorial calendar status 'scheduled' → 'pending' (match ENUM)8a72713
  • show map tiles when no prospects, replace full overlay with small badge2f56ae4
  • keep conversion-optimized section order, vary only visual design08956e0
  • unique landing page designs per business via designSystem + random seedsad1c786
  • ban download/guide/ebook CTAs from generated landing pages3b9210b
  • upgrade DALL-E image quality to HDd0f6270
  • enforce NO text in all DALL-E generated images7ab0a34
  • increase FAQ category menu size from sm to md9dfe25f
  • campaign editor uses business branding for emailsbd17102
  • campaign email templates use business brand instead of Kiwi branding6ea5485
  • add Aukimi partnership section to About Us page4879209
  • rename BlogPost to BusinessBlogPost to resolve table name collision + redesign Marketplaceded78a0
  • redesign Discover Creators page with i18n, hide when module disabledc824bdd
  • add landing page themes, blog system, auto-répondeur, WhatsApp widget, QR code & analytics86867c7
  • 6-theme system for landing pages + AI theme selectionda78184
  • in-app notification when new form submission arrivesfe04590
  • no fake phone/email in landing pages, filter '#' social links25aaf9d
  • pricing grid supports up to 4 columns on one row8c252f4
  • use fav.svg as default favicon for landing pagesb0104d7
  • revert Profile.jsx language destructure, local state was correctbc0aa7b
  • add missing language destructure in Profile.jsx3beafe0
  • brand identity editor, social links, DALL-E logo gen, business testsfa9a860
  • add missing DB migrations for todos.businessId/projectId and businesses.language6291af7
  • add todo filters by business/project + FR/EN i18n for remaining dashboard modules0969193
  • use brand logo as favicon on landing pages, fallback to kiwi logobe7bec3
  • dynamically load chosen Google Font for landing pagesba16b09
  • landing pages generated in user's language (FR/EN)b48f936
  • major landing page generation improvements840943c
  • landing pages use business brand identity (colors, font)c73852f
  • anchor nav links + add contact form + vary landing page designsd6f130e
  • disable all links and buttons in landing page preview mode4cafb0b
  • strengthen DALL-E prompts to never include text in generated imagesa38c52a
  • add public business directory page (/directory)987bbcb
  • comprehensive SEO optimization for landing pagesfd77b7a
  • translate hardcoded French strings to English in landing pages i18n5883506
  • improved landing page generation with full business context272099b
  • generate DALL-E images for landing pages + enriched business settings04c3e43
  • landing page navbar, short labels, brand name, CSP frame-src890e73d
  • allow Tailwind CDN and Phosphor icons in CSP for landing page previewfc9068b
  • add allow-same-origin to landing page preview iframe sandbox1f222bd
  • remove UUID id from campaign creation (column is INT autoIncrement)b2796f6
  • lowercase "nammu" brand name everywhere (footer, legal pages, i18n)9c1a314
  • correct AB view column name (testId not abTestId) + non-blocking cleanupd5c7de8
  • use correct column name landingPageId in AB test cleanup on page deletec4453a4
  • delete AB tests before landing page to avoid FK constraint errorb4c83b9
  • AI costs dashboard, track & display real costs per provider/model47fbc14
  • improve agent feedback, comment prompt on dislike + memory on all feedback7fe7f9d
  • search_leads agent action, use correct Prospect column namesfc7ee4f
  • add FR/EN i18n to SEO dashboard (all tabs, GSC connect, site selector)550c41a
  • add FR/EN i18n to LandingPages, SectionEditors & A/B Testsa65d26d
  • add FR/EN i18n to all dashboard modules539fb49
  • add FR/EN i18n to 8 dashboard modules6c89e07
  • move language toggle from sidebar to top bar in dashboard914f948
  • add useLanguage hook to Sidebar component (language not defined crash)e111b14
  • show language toggle when user is authenticated3ff8726
  • add backend agent visibility config endpoint and app-side filtering35fb4be
  • add FR/EN i18n to AgentsSection on Home page5e771bd
  • add FR/EN i18n to auth flow pages39bc15d
  • add FR/EN i18n to Education and Partners pagesc9314c3
  • add FR/EN i18n to NotFound and Documentation pages6b18a10
  • align all free plan defaults to 30 credits/monthb0e8f0f
  • bump premium plan from 350 to 500 AI credits/month8c505ff
  • add FR/EN language toggle and wire all Home page text to i18n3d80fc5
  • unify button styles across public site to match app design systeme33bd66
  • implement growth loop system (referrals, milestones, free plan bump)ad1b1b0
  • pass missing t prop to HeroSection in Home (production crash)dd1c239
  • add missing useLanguage hook in Home component (site crash)5b18162
  • add FR/EN i18n to Navbar, Footer, Home, Features & Pricingd414288
  • add FR/EN i18n to auth, legal, modules, and agents pages7c3164b
  • wire up i18n translations for FAQ, Support & Contact pages480080b
  • add prerendering for 41 public pages + fix blog clean URLs6a5f1f3
  • fill all time slots in traffic endpoint with zerosa08f55a
  • use aspect-ratio instead of fixed height on SVG charts28614d7
  • traffic chart with period selector (24h, 7d, 30d, 6m, 1y)36d4ff0
  • interactive traffic chart with tooltips, stats & heatmap bar9af0cdf
  • rewrite MiniLineChart with proper viewBox proportions673d41e
  • parse SQL string values to numbers in visitor traffic chart7842983
  • show fallback message when visitor analytics data is unavailable0d24163
  • align visitor analytics field names with backend response3d1e506
  • remove duplicate Newsletter import crashing serverb438c85
  • auto-subscribe invite users to newsletter distribution list9bf06b5
  • auto-create newsletter distribution list per invite codeec76113
  • add auto-migration for invite_codes table and referralCode columnf8e0a65
  • add beta invite code system for gated registrationbdda540
  • stop wiping level-up credits for free userseefc926
  • filter dashboard cards and sections by enabled modulesae3f366
  • hide email connection banner when Messages module is disabled1518a89
  • pass enabledModules prop to Sidebar component (was ReferenceError)df8cf12
  • module toggle actually works, fix double API prefix + filter everywhere20d0c7c
  • add public loyalty program page at /loyalty/:programIde3387c3
  • Loyalty crash (missing X import) + Todos 500 (wrong table name)8bb28f3
  • Loyalty IconButton icons not rendering, use icon prop instead of childrena99409b
  • hide A/B testing when no landing pages, improve empty state CTA1219f76
  • campaign subscribers now pulled from user's CRM prospects + landing page submissionsa6cd713
  • PM improvements, drag & drop kanban, bulk actions, analytics, checklists, auto-progress, workload viewf87f252
  • complete Project Manager frontend, search, sort, comments, tags, templates, archive, todo linking75b5347
  • project manager, archive, duplicate, templates, comments, todo linking8c25feb
  • remove duplicate New Project button, rename header button47226a8
  • show project cards grid instead of empty placeholderabacb2a
  • translate Project Manager to English + fix add button style2104b4e
  • sanitize empty string budget/progress in project create/update2bbb870
  • use fixed positioning for quote status dropdown9c0c125
  • use fixed positioning for invoice status dropdown17bdbe2
  • invoice status dropdown clipped by overflow-hidden on table wrapper2affa3e
  • add all 6 invoice statuses to dropdown (Sent, Partially Paid, Cancelled)384c4b6
  • sanitize empty string vatRate before DB save5ab589f
  • add missing brand/billing columns migration for users tablecab57fe
  • clickable status dropdown on invoice table rows595df38
  • invoice payment tracking, partial payments, history, progress barf1ad5de
  • remove success alerts, add clickable status on quotes, fix GROUP BY SQL error4e6b52b
  • redesign invoice modal + add convert-to-invoice button on quotes0be7213
  • redesign Expensa UI, tighter, narrower, more professionala787f6f
  • quote/invoice status ENUM mismatch + quantity integer + remove tips9112a6c
  • remove redundant quick actions from SEO dashboard6998f42
  • SEO audit history, click to view past audit details, per-URL sparklines6c9ee07
  • dashboard 500 errors + calendar polling after logout723b4cf
  • GDPR-safe PII anonymization for Xpander AI calls31a330f
  • increase rate limits across all limiters4f9447d
  • add Nammu + Geneva Switzerland to footer IDE/TVA line6b9048c
  • easier level curve, free account cap at level 3, click-to-view XP info1bb3575
  • prevent duplicate prospects by emailebc1a8d
  • prospect detail UI, match app design system44cee9e
  • prospect creation 500, sanitize empty string integer fields6c3f63d
  • agent chat input alignment + green send button0541eec
  • green Add button + green Add prospect button, remove star icond0b0180
  • purple XP theme + floating buttons opacity 20%8736802
  • add XP awards across 17 route files for gamificationdb287a6
  • gamification XP system with levels, credit rewards, and sidebar bare4f0add
  • set floating buttons to 10% opacity, 100% on hover6e0f2bb
  • remove bottom spacer + fix agent bubble opacity (framer-motion override)ce0012e
  • make floating agent bubble invisible until hover + remove footer4edbe82
  • convert TodoList to draggable floating panel that persists across views086859e
  • make calendar fit available height instead of overflowing5ff0e8b
  • disable Spotlight module, hide from sidebar menu, redirect route to dashboard9f9391c
  • onTodoClick crash in navbar + white calendar picker icons on dark themef55e82c
  • remove inline gradient overrides from Expensa buttons, use standard Button variants9deb167
  • add discrete shortcut icons in top navbar (notes, todo, timer, aukimi)38b3d46
  • make top navbar more narrow (py-2 → py-1)a6b4a5f
  • add bottom spacer so floating buttons don't overlap page content6b73cb1
  • position Quick Notes icon above agent chat buttonabf5b6d
  • move Quick Notes icon to right side, next to agent chat button without overlap3ab8300
  • move Todo shortcut from sidebar bottom to Tools menu group04d8126
  • remove unique constraint on xpanderId, should be unique per (userId, xpanderId)9242aef
  • add wss://api.app.kiwi to CSP connect-src for WebSocket connectionsfc98407
  • sidebar category labels (Main, Business, Tools, User) in greendc83736
  • increase global rate limit from 50 to 500 req/15min, app fires ~10 requests on page load4f2df28
  • remove fake notification dots from sidebar, only show badge with real unread counte684c89
  • price input/currency select alignment, wider input, no left rounding on selectda0f593
  • agent vacation/pause mode, block triggers, scheduled tasks, and chat when paused220601e
  • align price input and currency select on products taba6f86a1
  • credit warning chip links to /profile?tab=subscription instead of 404b84f7f6
  • migrate auth to httpOnly cookies + tighten CSP + move sensitive data to sessionStoragef320dfb
  • resolve 5 beta test bugs (tabs, routes, content bank, timer UX)3916828
  • correct UserCredit import path (user_credit.js, not UserCredit.js)15c74c3
  • add IDE/TVA number to footerf3f4cc7
  • include subscription info in /users/profile response88c0b17
  • email dates showing 1970 + raw HTML body in message detailc7ee9c8
  • remove all Nylas references, rename to email provider08059bd
  • subscription tab blank (#7) + sidebar highlight (#10)0fb3c13
  • resolve 8 beta bugs + rename Communication Hub to Messages14519ad
  • resolve blank Subscription tab caused by error/loading race conditions207cb98
  • resolve 3 CRM prospect bugs (validation, creation, kanban add button)03ac14f
  • add missing currency column to Invoice model (fixes Expensa Analytics 500 error)da0ae69
  • automated email triage cron for Sophia executive assistant30818fc
  • inject real calendar availability into Response Generator + anti-AI-slop prompt5c5ec3d
  • switch Response Generator from Claude to OpenAI GPT-4oac63b11
  • use claude-3-haiku model (account lacks Sonnet access)8274417
  • use claude-3-5-sonnet-20241022 model ID (previous ID returned 404)3ebb875
  • update Claude model ID + clean up Response Generator UIbf7af9e
  • Sales Accelerator Response Generator no longer requires client selection18e309e
  • add empty state overlay on map when no prospects (#15)7f3854d
  • address beta bug report, 10 fixes8db4b2e
  • correct subscription link to /dashboard/profile?tab=subscription3cd60b0
  • make credit badge clickable → links to subscription page887c15f
  • add script to reset all subscriptions to Free plan2af06f7
  • correct stale credit balance for free plan usersb4196a3
  • Free plan always shows 10 credits, ignore stale DB value40036fc
  • clean up Workforce - remove unused tabs and fix node connections8616d2a
  • remove ML Insights tab and delete MLInsightsPanel.jsxca437cf
  • tone down Workforce button when active + remove Usage tab117b92f
  • move Workforce AI to fixed prominent button at top of sidebarf3ec462
  • search multiple .env paths and strip \r before dotenv parse257e8ce
  • use mysql2 directly in migration to avoid import chain issues56c86c1
  • move migration script to backend root for correct ES module resolutionaba4ca6
  • add migration script for missing users table columns78cd8b5
  • expose error message on prospecting-data 500 for debuggingce12a19
  • kanban weekly agenda for social post scheduling with drag & drop0858fed
  • marketing icon to megaphone + convert post panel from slide-over to centered modalae14730
  • add composite agent actions for social posts with images and blog articles2ed4979
  • integrate Post for Me API for social media publishing2142b92
  • social media marketing page + pain points section + content ideation agent actionsf76fd36
  • update marketing pages with correct plan limits (storage + price)c01c7e6
  • add verify-session endpoint to sync Stripe subscription without webhook08f0a63
  • redesign subscription success page with Kiwi branding + fix billing date1a0f016
  • only show credits for Premium subscribers, not Free plan with active statuse191930
  • make Subscribe button larger and more prominentb5aa65c
  • hide credits tab and balance when user has no active subscription226e81c
  • replace deprecated stripe.redirectToCheckout with window.location.hrefb76e1e1
  • verify email page, use correct logo path (/kiwi.png) and fix bg-dark-* classes680d81e
  • email templates, smaller centered logo (80px), update year to 2026912ba88
  • prevent double-hashing password on reset (User model hook already hashes)ce52e1c
  • remove default browser outline on focused inputs9821922
  • use default Postmark 'outbound' stream instead of non-existent 'kiwi'686dac2
  • fix 15 vulnerabilities from pre-launch audit6466f08
  • use RGB for business card PDF colors (CMYK values kept as reference)cdf1753
  • print-ready business card PDF export (CMYK, 3mm bleed, crop marks)8b8aa91
  • redesign Productivity Stats with KPI cards, daily chart, priority barsf455deb
  • add 2px margin between timeline task rowsfe83a9c
  • redesign Timeline view with day grid, task breakdown, and week chartbbc582c
  • wire Kanban edit button + add delete confirmation modal7330883
  • redesign Kanban board with refined cards and columnse3bf498
  • redesign TasksView with refined UXb12e27f
  • rewrite PiP hook, stable draw loop, proper user gesture flowf432936
  • position timer bar to the left of the agent bubble89e87ca
  • unified toast chip notifications + fix timer bar overlap15af68d
  • Picture-in-Picture for Pomodoro timer on tab switche0959ad
  • auto-start timer when selecting break from suggestion banner21b5ddf
  • use dynamic plan limits in subscription/credits UI1dd7f06
  • CGU checkbox on landing page publish + configurable plan limits0b734cb
  • timer Start button contrast + switch checkmark leak209c956
  • time tracker UI/UX issues8b909c1
  • improve Brand Identity panel + remove unused theme switcheraf7ff43
  • AI website scanner for auto-filling prospecting profilec25856e
  • derive SERVER_BASE_URL from API_BASE_URL when not configured62241ef
  • auto-retry lazy imports on stale chunk errors after deployd1b36ab
  • integrate Domain SEO Analysis, LinkedIn Data, SEO Content Analysis APIsc2d5c4e
  • CSP blocking Stripe.js and inline scripts in production817cad8
  • upgrade @vitejs/plugin-react to v5 for vite 7 compatibility25e3c48
  • allow Aukimi iframe in CSP + fix QuickNote sidebar overlap08a6e06
  • integrate 5 RapidAPI services, ZeroBounce, ExchangeRate, VAT, Hunter.io, Google Trendsf08eae5
  • upgrade vulnerable dependencies, 0 audit vulnerabilities4f2f07b
  • comprehensive security hardening across backend and frontendef112af
  • add TypeScript declarations for context providers, services, and domain typese30ac45
  • add Aukimi API env vars to .env.example9571902
  • add Aukimi Partner API v2 integration for agent creative suite access7558e30
  • add storage usage indicator in dashboard sidebareb056e4
  • replace violet with green in Home pricing cards for readability9ea8ad9
  • improve pricing card credits/storage box contrasta792e27
  • update public site with all 15 modules, free trial, and new pricing54aff0e
  • remove h-full from TodoPreview so it adapts to content sizecb04789
  • 4 major improvements, onboarding, trial, analytics, query optimization7fc90e2
  • create dist/index.html fallback during deploy for NGINX try_files3739f33
  • serve branded HTML error page for browser requests on server errors3345a93
  • move AB test routes before /:id param route in LandingPageRoutesc3ee0a4
  • add missing auth middleware to landing page A/B test routes02f160a
  • add GEO, A/B testing, marketing ROI + branded 404 page363d347
  • rewrite Marketing module from scratch6b334fe
  • rename Vibe Marketing → Marketing, rewrite hubbfb43e9
  • move bookingLimiter declaration before first usage07c188d
  • harmonize card backgrounds across Lead Generator module98f816a
  • rewrite ClientFinder to match dashboard design systema6ef6fa
  • re-enable Lead Generator module with mapd2c5001
  • landing page improvements - media quota, AVIF compression, SEO, form fix3d527b0
  • show landing page views & leads stats on dashboard8b0c4f0
  • serve landing page images publicly without autheb2ac6f
  • remove padding from nav linkse31d2cd
  • more padding on CTA button, line-height fix032569b
  • increase CTA button padding904c580
  • increase navbar horizontal paddingd4edb0d
  • use 'Get in touch' for CTA nav button labela45ae6d
  • use 'Contact' label for CTA nav link, remove text truncationd2bd824
  • improve landing page navbar - limit links, truncate labels, polish styling333a97a
  • trigger frontend redeploy with api.app.kiwi URLbc21940
  • add workflow_dispatch trigger to frontend deploy54f9318
  • read VITE_API_BASE_URL from secrets instead of vars34cce9c
  • add api.app.kiwi as backend API domain1c9b36e
  • Revert "fix: switch landing pages from subdomain URLs to path-based URLs"7733720
  • switch landing pages from subdomain URLs to path-based URLse2b07b7
  • prevent Workforce page from scrolling past dashboard header0a25e0f
  • TDZ error - move menuItems declaration before useEffect that references it2997b04
  • enhanced invoice PDF (PAID watermark, send modal, batch download)c6e19ca
  • add missing DB migrations for deactivatedAt, recurring, recurringInterval89e92eb
  • send invoice button on invoice rows + send modal state72e87e0
  • add invoice action icons (send, archive, print)b09e382
  • invoice send via email endpoint + billing service method7c79fdb
  • onboarding checklist on dashboard overview2abdc51
  • advanced search filters for CRM prospects5c45d4a
  • workflow templates modal (5 pre-built automation workflows)f0529f3
  • quick notes scratchpad + agent pinning enhancements18346be
  • profile preferences panel (theme, notifications, default view)0084c97
  • task dependency visualization (blocked by, blocks, chain-link badges)ea3843c
  • campaign performance dashboard (metrics, health score, A/B test indicators)71ab21d
  • email templates for Communication Hub (6 built-in + save custom)aaa5163
  • email templates for Communication Hubd4ebce6
  • task dependencies in Project Manager5b6074e
  • campaign performance analytics endpoint6a0208b
  • agent favorites/pinning + recently used section in Workforce sidebarfe2b3dc
  • pipeline deal value forecast bar with weighted funnel visualization9dacfcc
  • weekly summary widget with week-over-week trend comparisonc85746f
  • CRM activity timeline with date grouping + log activity formcd20d3e
  • Expensa billing analytics (revenue chart, top clients, outstanding/paid)66ea0d7
  • landing page template gallery, notification center paneldc8e9fa
  • SEO sparklines, calendar quick-add, kanban board, pomodoro mode2d2d8bc
  • lead scoring rings, bulk actions bar, pipeline stage automation09e7722
  • recurring invoices + bulk lead actions0ce1821
  • workflow test execution UI, health endpoints, community stats bar, overview alerts6e9fb8c
  • add .idea/ to gitignore and remove from trackingf4e6dc3
  • enriched overview KPIs, workflow execution engine, profile danger zone, spotlight contextdbcd100
  • keyboard shortcuts, enriched stats, campaigns/landing pages agent contextc8c44a3
  • recent activity feed, projects widget, loyalty/vibe agent integration4e3a19a
  • timer analytics from backend, billing widget on overview, automation agent context5f9f8a8
  • sales email sending + campaign audience segmentation6da016c
  • notification bell, project deadlines, timer analyticse3be298
  • global Command Palette (Cmd+K) with search + navigation5ffcbe8
  • billing agent event triggers + overdue/expiring cronb182ce5
  • pipeline deal values, bulk actions, enhanced Kanban52194f6
  • enhanced Overview dashboard with agent activity feed + automations widget69d8b47
  • add booking ENUM migration for landing_page_sections5e31edf
  • AI landing page generation with brand context (10 credits)ca4b647
  • company info modal before landing page creation1097722
  • use company name for landing page subdomains, not page title57e5709
  • auto-assign subdomains to landing pages + backfill endpoint15f59e9
  • use subdomain/custom domain URLs in landing page list view33a4e71
  • add icon picker modal for landing page features + favicon icon mode2bb0a9f
  • remove CSP header on landing page HTML responses88bc3e8
  • handle non-array form field options in LandingPageRenderer3dd5a77
  • remove duplicate DomainService import + deploy LandingPage model with domain columns628b710
  • switch landing page subdomains to *.app.kiwi + auto-assign from company namea0c3268
  • add missing DomainService and customDomainResolver files3824782
  • add kiwi-bdd to customDomainResolver internal hosts20061c2
  • add kiwi-bdd host to CORS allowlistcc842b5
  • route landing page leads to CRM + email notification334d902
  • prevent image editor modal from closing on crop drag releasef2ef49e
  • add ImageUploadEditor component with crop and image adjustments4571036
  • add mobile bottom navigation bar to dashboard671cce8
  • LinkedIn status check reading wrong response key + button styleba3b117
  • pre-fill campaign editor with company brand data37e763e
  • change Schedule button to amber warning style65c747e
  • dark text in email preview, gray icon in calendar error state7bc6063
  • return OAuth URL directly from /nylas/auth endpoint38fd7a6
  • remove all remaining Nylas branding from frontend8ed10b9
  • use TEXT for token columns to avoid MySQL row size limit98e0f66
  • add temporary endpoint to check users table columns4a67e22
  • add DB migration for Nylas→email column rename (fixes production 500 on login)e92f964
  • implement scheduled email send with cron0ef22c6
  • remove all Nylas branding from frontend UIa9ca5b1
  • rename frontend nylas* files to generic names8ed4fc6
  • replace Nylas with direct Google + Microsoft APIs for email/calendarbaf5626
  • complete Vibe Marketing module, fix bugs, wire UI, add campaigns, PDF export, hashtags, competitors05a968c
  • migrate Vibe Marketing module from Lucide to Phosphor icons, unify designa3fbd0b
  • implement Vibe Marketing module, 29 backend endpoints + frontend routeb1cc112
  • replace remaining blue buttons with green primary variant across 4 files24dd329
  • change CommunicationHub settings button from blue to green primary variant36550df
  • migrate remaining raw buttons to Button component, improve sidebar scrollbar + nav hover4745cad
  • subtle scrollbar + sober sidebar hover, remove flashy green scrollbar, no hover bg on nav linksc69108a
  • harmonize UI, semi-transparent icon squares + ButtonGroup migration across 44 filesc4d0a0f
  • sales view, fix button contrast, remove AI-Powered badge, stop forcing icon colorsce1a786
  • harmonize icon sizing and contrast across Button/IconButton/ButtonGroup90d7c9c
  • polish Button design system, subtle gradients, shadows, active statese083508
  • design system, Button, IconButton, ButtonGroup components + migrate 139 filesc69054e
  • landing page templates visual upgrade, styled preview cards, template variety, decorative renderer polish81d0463
  • replace all window.confirm/alert with AlertModal component (12 occurrences across 13 files)6f75395
  • rich landing page templates, 6 starter templates with pre-filled content, colors, and realistic demo datad1fffe5
  • Landing Page round 11, hero/testimonials bg styles, stats prefix, FAQ animation, content split layout6307e6c
  • Landing Page round 10, hero split layout, pricing toggle, feature links, gallery lightbox, logos subtitle, footer textdbf40b4
  • Landing Page Round 9, divider section, custom labels, hero trust line, blockquotes5d6b43d
  • Landing Page Round 8, subtitles, features bg style, fonts, preview refresh579ec8d
  • Landing Page Builder round 7, gallery section, head code, FAQ subtitlese4961c1
  • Landing Page Builder round 6, CTA styles, testimonial layouts, content imagesf7135e4
  • Landing Page Builder round 5, mobile nav, sidebar previews, badges, countersa42d493
  • Landing Page improvements, new sections, video, SEO, UX polish512c182
  • improve text contrast, labels, titles, placeholders more readable0b4e0fd
  • improve dashboard contrast, lighter cards, visible borders, subtler scanlines5b7543f
  • server crash, remove dead route code from Deal.js + fix TemplateVote associationsa051da9
  • more double-prefix API bugs + useBrandData auth + cron counter274f126
  • remove double /api/v1/ prefix in API calls + fix public page URLs79e3d3d
  • Landing Page Builder improvements, DnD, nav, presets, shortcutsb36c562
  • fix+feat: Landing Page Builder, critical fix + 9 improvements1fbe3d4
  • improve Landing Page Builder, 10 enhancements756a870
  • redesign Landing Page Builder, live preview, auto-save, improved renderer5a04a24
  • add Content Studio, Email Campaigns, and Landing Page Builder89c91a2
  • redesign Overview dashboard, 6 stat cards, meetings widget, bug fixes1f990a4
  • 6 bugs in Sales Accelerator module6a4129f
  • handle PageSpeed API 429 quota exceeded with user-friendly error8ecea5d
  • 6 beta test bugs, template vars, debug UI, i18n, naming, tooltips8ae98cb
  • server crash, missing PublicProfile model in ContactRoutes26e3c45
  • CORS blocked in production, skip HTTPS redirect on OPTIONS preflight69dd6fd
  • remove 60+ debug console.logs, fix MicroAfterEffects crash buga2324b0
  • remove debug logs, add missing /timer/today-stats endpoint3d607f7
  • implement missing features across 5 modules1b00fc3
  • second-pass audit, hardcoded paths, wrong token key, SPA navigation5b6d41f
  • audit and fix 15 issues across all 13 dashboard modules4cec326
  • wire credit deduction on agent chat/actions + webhook idempotencec980ec8
  • SEO improvements, robots meta, broken og:images, trailing slash, security headers9fddad6
  • add dynamic SEO meta tags to all public pages2a4e9d3
  • add robots.txt, fix og:image, update sitemap for GSC crawl issuesdb12554
  • remove add-agent button, category chips, fix timestamps304dc54
  • remove 11 unused database columnsd02ad1d
  • add missing recurrence columns to todos auto-migration9430fb9
  • remove Media Library module + transparent blur Task Manager25a21bd
  • hide floating chat on Aukimi Suite page2df5617
  • remove debug logs from AukimiSuited6cfe98
  • add Aukimi env vars to frontend deploy workflowc1d706f
  • add console.log to Aukimi postMessage flowdf7dbcb
  • retry postMessage auth to Aukimi iframe4f4559e
  • show Aukimi iframe even if auth guard fails9a229b9
  • embed Aukimi as single iframe instead of tool grid7e090e3
  • embed Aukimi tools in iframe with postMessage auth70787b5
  • calendar mega-upgrade, 15 features across 6 phases51961ef
  • add 6 AI capability domains + 522 Workforce integration testsd28c522
  • clean Communication Hub dead code + fix calendar 1-day offset1ad6f0e
  • temporarily remove Google OAuth buttons from login/signup2195e33
  • add Google OAuth sign-in + fix Nylas client ID mismatch152c67c
  • add 11 email intelligence agent actions (search, draft, reply, label, archive)169c6d8
  • add 12 new agent actions (prospects, billing, projects, timer)f945a19
  • analytics timeline 500 (Date object not string) + TodoList leads URL38d0712
  • add focus mode toggle for Workforce, hides sidebar and panels37505f4
  • URL detection + Perplexity enrichment in agent chat86c2319
  • map missing floating chat routes (aukimi, notifications) + add MLService train/status methodsc2aca2f
  • connect timer to agents, upgrade prompts for agency/marketing/PR/SEO workflows6e6f194
  • agent autonomy, billing/todo/community events, ML context, floating chat automationcdd6162
  • knowledge base RAG, analytics dashboard, NL automation, marketplace, team collaboration95075b9
  • agent memory, workflows, advanced ML, real-time WebSocket, external integrations8d2c717
  • add Workforce integration tests (90 tests) and TypeScript type declarations01ed525
  • double /api/v1/ on stream URL, wrong token key, stale event in routing debouncecec63cc
  • add explicit Chat tab button in agent dashboard navigationc18be80
  • add agent intelligence layer, activity feed, ML routing, crawler diff, agent-initiated actionsab133e2
  • implement agent autonomy system, delegation, scheduling, crawlers, ML service1c6f4b8
  • standardize card styling across dashboard and fix logout on refresh9833c65
  • align dashboard pages to tactical theme and clean up UI397ee07
  • remove debug console.logs leaking tokens and credentialsa780995
  • prevent logout on server errors during session restore342389d
  • remove Stripe key console.logs and hardcoded localhost URLsca09850
  • add missing DB tables migration, .htaccess cache headers, and webmanifest91b433a
  • correct VITE_API_URL → VITE_API_BASE_URL and add time_sessions migration6c1452a
  • unify UI/UX across all 12 dashboard modulese294755
  • apply tactical MGS styling to all 14 dashboard modules076989c
  • add darker, compact MGS-style tactical theme to dashboard70f3102
  • resolve all case-sensitive import mismatches for Linux CI8228db0
  • case-sensitive import KanbanView -> Kanbanview6fd1b2d
  • case-sensitive import SmartFloatingChatWithContextce237a5
  • trigger frontend deploy with corrected API URLd8892fe
  • use npm install instead of npm ci for CI compatibility8607b16
  • regenerate package-lock.json to fix npm ci sync63718ed
  • update API URL from kiwi-backend to kiwi-bdd7fa1069
  • simplify backend deploy workflow (checkout + rsync)d3f9cc4
  • trigger both deploy workflowsf90d2b2
  • Add READMEd41849c
  • add full backend + frontend codebaseed6407f