Skip to content

Changelog

Alle Updates, neuen Funktionen und Korrekturen, die auf der KIWI-Plattform ausgeliefert wurden.

3023 Einträge
  • remaining work in progress at push time63442d4
  • the t() reachability check reads 30 lines of a component's parametersf5bf0de
  • the component catalogue has ten backgrounds since the SVG backgrounds2ea382d
  • work in progress from the studio session, SVG backgrounds and their timing, vector timing, component style and identity, storyboard and product film updates, with their testsd4fc370
  • favourites on top, newest first, drag-and-drop to reorder, star only on hover699ca2e
  • a green dot on the agent's avatar for unread replies, counted by the server per business94d8d65
  • a scheduled task runs in its own business; the night brief reads invoices again2b01877
  • approvals, missions, tasks, notifications and delegations belong to a business14b29d1
  • the page's agent at work in the hero, and a team strip that stays on topic5b3e21b
  • the chat history belongs to a business; switching business switches the conversation908bec0
  • what a turn created is listed on top of its results, and opens in place38c3ba7
  • fifteen skills from marketingskills, second passdd0fbc2
  • conversion review, benefit copy for the modules, two more signup buttons, Aukimi after the FAQde7e820
  • a quote the agent creates comes back with its PDF, ready to attach0e5cf3b
  • an answer that lists attachments nobody created is correctede0191be
  • an agent at work in the hero, and the home page A/B goes live8b657b1
  • three claude-skills procedures failed on the pod; first call first, title fixed505756e
  • a tutorial clip keeps its final hold on ffmpeg 7eafd620
  • work in progress from the studio session, vector illustrations and their motion in product films, vector content planning, component plan and storyboard updates, review script, with their tests58d94d9
  • translate the social module, agenda and brief strings into 28 languagesa1f5a9c
  • dead routes and files out, real-only listening, campaigns per business3dc8cad
  • bench cases x2-* for the 23 skills taken from claude-skills6ad880c
  • Isabella, Yara, Rohan, Natalia and Hugo take claude-skills methods16b345b
  • the post editor says what each network accepts, picks the account, and shows what happened4d64736
  • Nathan, Sarah, Sophia, Naomi, Diego and Adrian take claude-skills methods3cc89a7
  • Mateo, Cassandra, Jian, Kai and Sarah take claude-skills methodse869d05
  • scheduled social posts show in the agenda and the morning brief37da39d
  • the social agents can plan around the calendar and reach their own actions501da76
  • a post the user cancels does not go out, and none goes out twicec4c22aa
  • portrait brand screens follow the 0.98 reading width of e174c7eaf104963d
  • work in progress from the studio session, scene templates, camera, focus card context teste174c7e
  • border-spacing-x/y is a Tailwind utility, not a border coloura5ddbb6
  • brand kits are read per business since 98d27db4360be26f
  • restore CRLF line endings that 0326bbeba flipped in bulkdc685f4
  • work in progress from the studio session, focus cards (context, pose, veil), focal depth feather and timing, DOM group hosts in the worker, portrait brand screens, font loading, with their tests6a69cab
  • five new skill procedures failed on the prod pod; rule first, call nameda9c07e4
  • agent status is kept per account, not per agenta48d958
  • no needless delegation, and the screen shows the delegate at work9fcec89
  • a delegated agent continues after its actions, like the chatafc0ba8
  • Kai takes Gaston's coding loop and Qwen3-Coder-30Bb8095a4
  • the October announcement shows the product, four screens3e73550
  • each announcement carries the recipient's own referral code and link32e66d0
  • editable Gantt, weekly timesheet, time & billing panel, task timers0326bbe
  • one table of time, project tasks join the Time Tracker, invoiceablee9bdb35
  • bench cases for the new skills; Ludovic's prompts start with their title3cbcc43
  • sales and customer agents take cold-email, pricing, churn methodsc5718ba
  • Aria, Lucas, Camille and Lena take marketingskills methods1ec4b0d
  • Manon edits, writes welcome sequences, and names more AI tellsdd457c2
  • Ludovic plans along dependencies, reuses past projects, checks workloada25a7bd
  • recapture every product screen, Marcus is Ludovicd19c414
  • a dead session leads to the login page every time, not only the first1e24ce4
  • Marcus is Ludovic in the last comments, tests and agent docsaf4e096
  • remaining work in progress, landing variants, articles, blog seed script, package.json309339a
  • translations from the background translation script (new and changed keys)77167f3
  • work in progress from the parallel session, agent renaming, templates and prompts, agent pages and docs56b97a9
  • work in progress from the studio session, reading timing, annotation timing and contrast, device composition, group wipe, font loading in the worker, blur geometry, with their testsc248bff
  • the bridge call now carries who asked (by: 'email'), the attachment test expected the old 3-argument call2529094
  • a green unread badge on agents that replied, a browser notice when the tab is hidden, bigger avatars5cdd377
  • Kai fixes a failing test on the user's computer, 8 of 8, tests green on diska4d4fd7
  • a short dashboard, decisions, the Watch journal, three numbers that mean something, today's tasks884830b
  • signup funnel, one-screen signup, paid-weighted bandit, demo video3f10c72
  • no hard-coded fallback text in the linked-tab bannere704be5
  • the browser itself becomes a computer for the agents, no installfb3b8c0
  • tabs filled with KIWI data, invoices, quotes, expenses, pipelinec32f2ab
  • a watch can be deleted again, and its buttons say what happeneda287f4e
  • Kai on the bridge, a guessed path finds the real file, a file shown unread is read, one computer is always the one9302e44
  • blurred glass bands on landing pages, like the home page74d8568
  • @mention someone in a comment and they are notifiedb62ef3c
  • the computer is a location of the media library, copy both waysa3625e2
  • no icon beside the landing section titles81faf24
  • tabs carry a stable id; merge and undo follow the tab, not its position435a57d
  • the daily journal, who writes it, its guards, when it runs, and the time-zone trapfd408b3
  • the Watch page, today's journal in a card that opens in full, readable watches9685513
  • a daily watch journal written by Hugo replaces the per-crawl notifications62978fe
  • the agent inserts, deletes, sorts and renames, with the screen's codee3ea4c8
  • the home page joins the landing A/B46f02dc
  • see live what the agents do on your computers, and stop them2815f24
  • drop spreadsheets.yjsState8a5542e
  • share, comments and history open in the editor; read-only verified; review fixesb54a689
  • landing SEO, share images, page-to-account flowf1467fe
  • landing pages convert better and rank better8630ad7
  • Yara end to end, no payment on another client's invoice, no expense twice, and the model knows what its earlier actions didcbe947f
  • agents read images and scanned PDFs from the computeree97c48
  • undo takes back only your own step; the new texts in 30 languages77c6e9e
  • the library no longer loads every workbook to show twenty cells7a6fdac
  • a supplier invoice dropped in the watched folder becomes an invoice to payc1d0685
  • the export carries the month's expenses, receipts and a CSV summaryd877bad
  • 0.4.0, manage the computer from KIWI, and the bridge updates itself2f9a8ca
  • Diego end to end, the quote finds the prospect just created, no invented quote card42c8e38
  • an e-mail invitee can list collaborators; failures are 500 and loggedc81b49d
  • fifteen smaller defects of the editor55669db
  • inserting, deleting, sorting and renaming carry the formulas along53dc952
  • formats, comments and rules belong to their tabe267d88
  • open screens merge each other's saves instead of colliding41a8a56
  • the directory, one query for both readers, the way out, the limits, and the dead /p/ links3595914
  • "Find businesses" in the Network tool, a link button on the public directory, policy §5.4 p716f8678
  • a directory to find KIWI businesses and link with a note56c0fa7
  • agents attach files to emails, from the media library or from the computered10757
  • two editors, the agent and the share link stop overwriting each otheraf543aa
  • KIWI invoices and quotes saved as PDF on the machine, on demand and every month5bd48fc
  • Manon, writes before asking, invents no fact, reads a link before describing it2060582
  • search inside files, text, PDF, Word, Excel, PowerPointb2ce2a9
  • 0.3.0 reads Word, Excel, PowerPoint and PDF on the machine, and the agent sees what it read6f01129
  • the grid draws only the rows on screen, an edit no longer takes seconds75e4c4a
  • Aria end to end, what the reply says now matches what was saveda045bdb
  • landing line captures are hand-picked7651075
  • landing captures match their line, buttons keep their label, Phosphor iconsb3c968f
  • Aria, an invented business id is replaced, a short how-to gets steps before questionsab84e71
  • photograph a receipt, morning summary, overdue invoice alerts, offline lists0e15d2f
  • a busy pod is a retry, not a task failure, no scheduled task had succeeded since 2026-10-05ab2ddbe
  • Sophia, replay on the prod pod, free plan writes instead of delegating, Turkish stays Turkish3c56b78
  • recapture brand, clients, workforce and hero5bcad3d
  • a recurring task comes back in the list, with its list, business and category345f2f4
  • kiwi-studio skill for agentscf53018
  • editor workspace, mix timeline, cue audition, waveforms, scene motion review, edit historyb0e37f9
  • film mix, sound effects, transitions, product films and reading/timing rules in the composer98d27db
  • translations for shared projects and the studio workspace (all languages)86f0e61
  • "Our partners" block on public pages, co-marketing with both sides' consent94b28dd
  • partners block, consent, where it renders, and the blog that was empty on custom domains36efd12
  • Partners section in the Network tool, and policy §5.4 p613cdfef
  • landing pages show the app, agent conversations, module screens, alternating rows7798168
  • offer notifications where they help, 0 push subscriptions in prodb3b0666
  • read a dropped receipt after answering, and say when the model is down05cf8de
  • the desktop-sorting question from Seb's 2026-10-08 screenshotc686145
  • meeting times follow the interface language, not the browser'sa9a1b25
  • the reply language is the last line the model reads, and an offline computer is named as the blocker99216bd
  • approve from the notification, PDFs and a watched folder for the bridge, share a quotef8f46bb
  • how meetings between linked businesses work, and their traps17283ee
  • Meetings section in the Network tool, and the privacy policy says what crosses7444ac7
  • meetings between linked businesses, free slots on both sides, one click to confirmf70de31
  • Sophia's third pass, seven cases from the 2026-10-07 Turkish conversation, and history in the bench394e373
  • answers general questions, never delivers an article as an email, knows the blog publishes to WordPressf7da08f
  • starter missions speak the account's language and deliver the saved document, not the model's promise91604d0
  • a failed or cut-off turn is no longer silent, to the user or to the model6b1511b
  • a chat wake waits 30 s for the lane lock instead of failing at onceb985b54
  • Brave gets its own install help instead of Chrome'sf7f3e84
  • the account menu opens on the credit balance, in green94f6c80
  • install page, one big button, one line of help60d2ade
  • "Install the app" in the account menu, with a page that explains ita36a029
  • automatic A/B on every landing page, written variants, Thompson bandit, nightly loser archive24df572
  • an accepted quote creates a Pending invoice, not a draft3d3beb1
  • landing pages no longer follow the agent site flag; internal links; mail claims follow prod2d547b1
  • landing pages, price on free pages, colour, internal links, richer SEO; IMAP folders and true mail claimsec05239
  • a field too long answers 400 naming it, not 500fbdb0ce
  • film recipes, a number makes the film different, inside the brand charter35063be
  • the header calendar showed 'nothing coming up' on a full agendaefa57f0
  • the glowing halos of the living background are 1.8 times larger30fb09a
  • the orange warnings of a rendered film sit in a closed accordiond2b294f
  • the screen label never sits on the capture, and the browser bar is thin54d7adb
  • Merge remote-tracking branch 'origin/main'6c7553a
  • translations of the new and modified keys (automatic pass, 28 languages)a5ad3bd
  • served by app.kiwi itself, `npx https://app.kiwi/downloads/kiwi-bridge-<version>-<hash>.tgz`, no npm registryf116b87
  • privacy §5.4 on questions and shared projects; CLAUDE.md4ec11f9
  • a shared project shows up for its member, without a delete button6f15c79
  • shared projects, a project opened to a linked businessa28205b
  • ask the network, linked businesses and theirs recommend themselves or one they know9193980
  • publish as @nammu/kiwi-bridge, the bare name belongs to someone else's package; dependencies frozen5a5efd4
  • overdue alerts reach every account, not the platform's ten oldest tasksa29443a
  • agent actions check the plan and the project's owner096b8a0
  • a scheduled campaign is sent once, a failed one comes back to its owner; drips stop at an unsubscribedae6d35
  • the app icon counts what waits for you, the header shows the computer, offline messages go out later, two shortcutse7038e8
  • landing pages and their A/B in the frontend CLAUDE.md7bbf5bb
  • a follow-up sequence, a public project page and a meeting invite wait for approval28d9cbf
  • trust set aside, credits documented, privacy §5.4 on gifts2342148
  • shared resources are credits, gifts between linked businesses and a monthly network bonusf98551f
  • an accepted quote wins its CRM deal; sent invoices show what the client did65ec77e
  • delete the old module sheet and its 21 562 strings50ffe37
  • 52 landing pages, every module, every agent, twelve features7d7acdd
  • Kai gets the local actions, run the tests, read a repository on the user's computer6ae1e85
  • KIWI's agents work on the user's computer, kiwi-bridge, 7 local actions, approval shown in full45c2647
  • every landing page gets a static route, prerender and sitemap entry5206f9c
  • the install banner shows on desktop again, Chrome after an uninstall, Safari on Mac04a4c4c
  • Aria's four film skills, kiwi-studio listed, purpose screencast7346100
  • screencast tutorial pipeline wired end to end (run phase, genre, agent entry)0052242
  • the tutorial script from what the user said5216193
  • tutorialFrame, a tutorial step in a browser frame on a gradient background276f9c2
  • the editing plan and the clip of a tutorial step79d72e8
  • what happens on screen over time, scrolls, typing, page changes, dead timec657d12
  • speech track and silences from a user video, transcription by Scribe7bfa939
  • a fake screen recording with exact ground truthbd2f30a
  • cards and comment scenes pass the on-screen word cap; no time in a checklist unless the source has it2ec33d1
  • kiwi-studio dev skill and three film skills for Ariad95b2a1
  • manifesto look, comment-to-get call to action, project stickerscf8371d
  • the cards template (progress, checklist, skeleton-to-filled comparison)af71cf3
  • chapter pills and status badges for the explainer look991d582
  • captions bring in the active word blurred and pale (explainer theme)2b31c6a
  • wake the sleeping video pod and wait for it before the first Wan plan23c6c92
  • the explainer genre and visual themes (cream, serif, one accent per section)5dadbf1
  • explainer title, italic and gradient emphasis words, serif and mono fonts2b61bc0
  • two new scene transitions, iris and lift38a3caa
  • landing page template, first two pages in French and English8794328
  • screencast tutorial pipeline wired end to end (run phase, genre, agent entry)cb92196
  • the tutorial script from what the user saidc367f70
  • tutorialFrame, a tutorial step in a browser frame on a gradient background76bbdd8
  • privacy policy §5.5 on sent documents, and layer 1 in CLAUDE.md436095b
  • send quotes from the screen, a Received tab, invoices to pay, and the public document page536cbeb
  • quotes and invoices travel between cells, and answer backe873f49
  • desktop app closer to native, title bar, "Open with KIWI", file sharing, web+kiwi:// linksf87cb87
  • the editing plan and the clip of a tutorial step95b5ae4
  • what happens on screen over time, scrolls, typing, page changes, dead time855c688
  • speech track and silences from a user video, transcription by Scribe32b3d2c
  • a fake screen recording with exact ground truth925b72f
  • cards and comment scenes pass the on-screen word cap; no time in a checklist unless the source has it07ff948
  • kiwi-studio dev skill and three film skills for Ariaa94d474
  • privacy policy §5.4 and the network section of CLAUDE.md347e9d3
  • the Network tab, links, benchmarks, common memory; recipes in each agent's skillsc1e4e02
  • common memory, facts a cell chooses to give its networkace6f1e
  • manifesto look, comment-to-get call to action, project stickers6aa6bb6
  • the cards template (progress, checklist, skeleton-to-filled comparison)2b8f4eb
  • chapter pills and status badges for the explainer look59aede6
  • benchmarks, payment delay, quote acceptance, deal win rate and cycle1f310e5
  • captions bring in the active word blurred and pale (explainer theme)5c461f9
  • cells link to each other, by personal code or a completed referral0c6f5bb
  • inter-cell network, name it cellule, add the network boost layer8a5637a
  • note the inter-pod network idea (quotes and invoices first), not started7e20852
  • wake the sleeping video pod and wait for it before the first Wan plan3c8356b
  • the explainer genre and visual themes (cream, serif, one accent per section)dba67e8
  • explainer title, italic and gradient emphasis words, serif and mono fonts890e5f7
  • two new scene transitions, iris and lift6df144a
  • a cited zone of a still capture stays sharp, the rest of the capture is blurredc998f41
  • motion blur, shot by shot, only where a media moves fast and no text does08995d9
  • the filmed cursor leaves a short accent trail when it moves0c29cc9
  • the card is found among non-decor layers (blur plate shares its source)8747e68
  • in 9:16 a landscape screen gets its own capture, blurred, as backgroundc9b5849
  • the click ring test follows the new ring (size set by camera zoom)83cabfc
  • clicks and typing get real VFX in the filmed tour0285f75
  • the closing button has volume, not a flat fill3e23a7c
  • the 01/02/03 step numbers also sit huge and faded behind each card210a599
  • track the Codex config (.codex hooks, .agents skills)34d0e9e
  • the announcement says the site and app come in 30+ languagesa3e6385
  • one frame of slack between a caption's end and the scene's durationee735dc
  • the brand's REAL second colour, not the accent shifted by a hue70fa9d1
  • an animated counter always ends inside its scene0c08b3a
  • Arabic retranslated from en.json, 99.7 % of the app and the public site6995759
  • narration 'full', every explanatory scene gets its voice47d33dd
  • Japanese retranslated from en.json, 99.7 % of the app and the public site8d8524e
  • a scene's text must say what its screen shows, swap to a matching unused screen, else warn74fad86
  • an idle video pod running an old bundle is restarted, the worker reports its bundle800a687
  • a status poll is not activity, the idle sweep can stop the video pod again30a7445
  • a raw newline in a model reply no longer fails the same batch forever7efa891
  • Finnish says "4" languages for the spell checker, as content-facts requires54015ad
  • Romanian retranslated from en.json, 99.6 % of the app and the public siteb77049d
  • Danish retranslated from en.json, 99.4 % of the app and the public sited7a1571
  • Greek retranslated from en.json, 99.5 % of the app and the public site9494557
  • Afrikaans retranslated from en.json, 99.6 % of the app and the public site776813e
  • Czech retranslated from en.json, 99.5 % of the app and the public site68f56f5
  • Hungarian retranslated from en.json, 99.6 % of the app and the public site6c2ca81
  • Finnish retranslated from en.json, 99.6 % of the app and the public siteddb92a9
  • Gujarati retranslated from en.json, 99.6 % of the app and the public site39a4586
  • Bengali retranslated from en.json, 99.7 % of the app and the public site00f4a06
  • Indonesian retranslated from en.json, 99.3 % of the app and the public site6ce0786
  • Norwegian retranslated from en.json, 99.5 % of the app and the public site4aa15cd
  • Thai retranslated from en.json, 99.5 % of the app and the public site5ed7aca
  • Ukrainian retranslated from en.json, 99.6 % of the app and the public site122b050
  • Vietnamese retranslated from en.json, 99.5 % of the app and the public site549671e
  • Swedish retranslated from en.json, 99.5 % of the app and the public site503d754
  • chart labels keep no lost comma after translation; the outro URL stays above the platform UIfc18fe5
  • Polish retranslated from en.json, 99.6 % of the app and the public site7eb7f6d
  • Dutch retranslated from en.json, 99.4 % of the app and the public site2f72086
  • Turkish retranslated from en.json, 99.6 % of the app and the public site907dd4a
  • Korean retranslated from en.json, 99.7 % of the app and the public site6bc9539
  • Chinese retranslated from en.json, 99.7 % of the app and the public site5191139
  • pt and it, the Google preview labels and the footer credit, translated by hand99c10a5
  • Portuguese retranslated from en.json, 99.5 % of the app and the public siteebf9943
  • a film never ends on a hard cut, closing fade to black or white, with fallbacks2452316
  • a screen video with an action frame fills the 9:16 frame; chart labels lose the lost spacecce6645
  • a text never sits on the captions band, QC rule text_over_captions, templates fit the free zoneb6082ff
  • Italian retranslated from en.json, 99.4 % of the app and the public sitef8ee546
  • the reframe asset role exists in the database, old image analyses count as imagesff32542
  • a square window card takes the usable width and sits in the platform's safe zone7c02126
  • a 9:16 film shows a square window of each landscape screen, cut on its useful zoned750fa2
  • a square window on a still screenshot's useful zone (POST /reframe)7a6fb55
  • the outro's final veil is denser in 9:16, the plate stops competing with the button0e826e8
  • a landscape screen in a 9:16 frame gets the brand's living background and stays above the captions352a04c
  • a 9:16 film shows the phone version of the site's sections, captured on demand9d24a60
  • capture the site's sections in a phone viewport (mobileSections, mobileOnly)0ec5930
  • the fresh-film bench takes --platform (instagram-reel…): 9:16, 1080p, the platform's safe zonef3e3f9c
  • a title over a product shot is carried by a horizontal scrimbdafd99
  • size scenes with a reserve for the probed voice duration5f0007f
  • ScanningService keeps its original CRLF line endings06cf3c1
  • Overpass declared as a processor; stale OpenAI warning and URL removed83830b3
  • OpenStreetMap discovery, coordinates, scan route and its refunds8b1bb9b
  • scan_prospects reads OpenStreetMap results, caps the radius, needs a place65d147f
  • the scan form speaks OpenStreetMap, real sectors, real radii, a place is required15f12cb
  • the API boots again, the dead AI prospect generator and checker.js are removedd487183
  • discovery on OpenStreetMap, geo LLM validators removed, NOT DEPLOYABLE YET104a0c7
  • machine translations of the new and changed English keys, 28 languages70d0c94
  • announcements write the Premium price Stripe bills, not a typed one8a11a3e
  • the Premium price follows Stripe everywhere on the site50d13f0
  • the Premium price, large, on a button under "What it replaces"b8cdd8d
  • Sophia's face in the how-it-works tutorial4387c85
  • the tools are KIWI's; only the mailbox and calendar are connected79712c7
  • a three-step tutorial right under the hero, linking to the guidee0dc8b3
  • choosing a section scrolls back to its title, smoothlyf86f8ba
  • the documentation in French, translated from the new English4b11fd2
  • the documentation reads like an article, and links the kiwi Discord server515a284
  • agent portraits, product screenshots, and a "What is KIWI?" that starts simplec9f0a0e
  • a logo in settings must not break every screen, 64 KB cap, /businesses/mine without settings417a202
  • saving a logo on a business answered 500 (found by running it)fb1bb4b
  • quotes and invoices carry the active business's brande0f4ff1
  • the site says what the module does, and the dead code is gone690f85a
  • the brand panel no longer loses edits or fails in silence1433ef1
  • a new landing page starts from the business's declared brand8d1829d
  • readers and writers use the same brand, the active business's5c0eacd
  • every brand write goes through one validator4e1115c
  • /docs explains what KIWI is, and every English sentence matches the codef2c6959
  • two checks the clean worktree caught322b4d7
  • the grid calculates with the new engine; the old regex engine is gone8d6e7f3
  • formula engine, part 2, functions, dependency graph, cycles, incremental recalculation03915f5
  • formula engine, part 1, tokenizer, parser and values (no eval, case kept)411f4e7
  • the agent's spreadsheet actions say what they did, and no longer leave the library staleabf87f0
  • import and export stop corrupting data (CSV encodings and separators, real XLSX, formula injection)d437ec4
  • spreadsheets belong to an activity, links are opt-in, and a cell cannot run script0ecacfd
  • a workbook is no longer lost to a 100 KB limit, a closing tab, or a silent overwrite309ab2b
  • the live snapshot is handed out as copies, never by reference85da2fd
  • the zone-reads booking test mocks the new section lookupccf66e6
  • import KIWI_PAGES_DOMAIN at the top of the routes file (no-use-before-define)5ffec4d
  • the editor stops losing keystrokes, hiding errors and hiding two section types49fa83e
  • editing a published page no longer changes it for visitors until you publish the changes89cb64d
  • the A/B service test expects the significance block7d5a4c2
  • A/B tests are served for real, by the server, from a cookie0bd2d92
  • invented testimonials, numbers, logos and prices cannot go live as if reala79aa6f
  • remove 14 routes nothing called, and the webhook that never firedfda2765
  • the section executors read params.content where the contract test looks for it6bc2313
  • AI generation no longer destroys the page it replaces, and every copy obeys the plan5e71edf
  • the paying address is as fresh as /p/<slug>, and the page HTML is parsed, not filtered6a35fda
  • a form submission now reaches the CRM, and a robot leaves nothing3526ccd
  • the public CRM page no longer promises custom stages or an owner filtera49a9f5
  • a note is saved on the row the screen readse71dbc8
  • never add two currencies, totals are listed per currency383b496
  • keep the one stage rule that acts, drop the two that did not49d82d1
  • compress JSON responses, leave the SSE streams alonebf9c3f1
  • machine translations of the CRM keys into the 28 other languages1de581f
  • the forecast keeps an overdue deal, a refused stage rule goes back, the reasons and steps are named00d07b1
  • a next step on any date, the deal's fields and several contacts per company, and a Kanban that keeps up69c0dc6
  • seven more defects, the import behind another module's gate, products on a lead, a search that emptied the Kanban84cc29b
  • drop the scope exemption of a route that no longer existscf7ae00
  • the tasks of a won deal name the client, not the word "client"fc635be
  • remove what no screen calls and what did nothing when clickedcdefab7
  • a won deal is announced, a lost deal is not a win, and the pipeline has one table9bf01d1
  • seven things the CRM screens could not do, edit a record, move a stage from the list, keep a notef66de01
  • an action that needs a mailbox or calendar is refused at execution, and send_sales_email needs a mailbox (C)6893ed3
  • publish a post on WordPress, Ghost, Dev.to or Hashnode, and export the blog as HTML3a248a8
  • every account has its business blog, agents write there and can schedule a post, and none writes on the profile blogdffa373
  • publishing by parameter needs highWhen9333e3a
  • the font menus are readable and the editor toolbar is compactfe4f77a
  • publishing waits for approval, no business id is asked of a one-business account, and only the last message has live buttonsa4624f5
  • the agent bench gets five trap cases per agent and checks for scope, date, empty promises and language (A)8196e74
  • move senderProfile below the imports (lint), ui-audit --host390a7a5
  • translate memory scope strings08bf453
  • bookings see busy time from every calendar mailbox (L4)ef06697
  • a guard against line-ending flips, and the editing helper that avoids them (L3)d8cebe6
  • agent memory follows the selected business (L2)a6eb116
  • the other prompt paths describe the selected business, not the account profile (L1)996eaa5
  • an agent works for the SELECTED business, not for the account's profile6520012
  • Stop now releases a paused task, so the floating timer can be dismissed42f835c
  • translate the delegate chip hint into the 29 other languagesd6750d4
  • the "Delegate to agent" chip opens the delegate's chat9b2feaf
  • translate the floating timer's open label into the 29 other languages684a8aa
  • the floating timer opens the Time Tracker in one click784ee95
  • translate the module picker into the 29 other languagesde0fe03
  • the header module picker is a custom menu with title, function and search7c4e7a2
  • translate signature, all-mailboxes and calendar mailbox strings into the 29 other languagesbc6ec8b
  • choose the mailbox that carries the agenda, and merge several agendas (L7)f25bdc0
  • IMAP connections are reused per mailbox (L6)58132f3
  • real-time push per mailbox, behind an explicit switch (L5)e9dc527
  • "All mailboxes" read view (L4)63c6551
  • unread count per mailbox (L3)4e25f14
  • a signature per mailbox (L2)241b4a9
  • versioned encryption keys for mailbox secrets, with a re-encryption script (L1)c8a9c0b
  • translate Send from and the Aukimi result into the 29 other languages02d3200
  • snoozes remember their mailbox (accountId)fa79167
  • bookings, sales availability and time-tracker sync use the OAuth mailbox6142379
  • every new signup exists on Aukimi again, Free ones without any tool2d8ca07
  • translate the mailbox strings into the 29 other languages81b9951
  • mailbox picker, mailbox list in the profile, IMAP test button (M5)e610ce5
  • background jobs and agents follow the mailbox (M3, M4)57011be
  • define accountOf before getUserProvider (lint)3c5b5bd
  • mailbox routes, list, test, add, remove, per-request mailbox (M2)bbb5fb1
  • several mailboxes per account, table, service, per-mailbox provider (M1)ac98945
  • translate the moderation queue and follow strings into the 29 other languages4b0f09b
  • follow a post, get told of new comments8c66dcd
  • moderation queue after reports; posts are published at onceb46b8ef
  • translate the forum ban strings into the 29 other languages7ff3bb6
  • forum bans that are stored and enforced053a81c
  • translate the Add time window into the 29 other languages746550b
  • forgotten timers are closed, one open session per account3634b24
  • "Add time" window and POST /timer/sessions/manual8038e34
  • the scoped-reports test mocks the billing settings the timesheet now readsc01a8e2
  • one billing calculation, stamped when a session closes03bd582
  • sessions carry their task's business, reports stay inside it51991c2
  • a task's time is the sum of its sessions, everywheree62b99d
  • the site-reader worker mock knows wake()aaf1433
  • the video pod wake-up is announced, not mistaken for a slow capturebac7155
  • type-check and the module-declarations test follow the moved module table and numeric durations42bf215
  • categories exist, moderation works, posts are rate-limited and pinnable7e65a06
  • a calendar or plan becomes a spreadsheet with a clickable preview in the chatb84f1b4
  • a quick-link select to every module, centred in the app headerbb0af5e
  • agents read the images sent in the chat, through the vision podd8db13c
  • reliable timer, honest timesheet, safer CSV, one calendar event per session00a8727
  • the total no longer reads 5.5e+25hce3103e
  • landing-page bookings get the same guarantees as the personal page5c58a2d
  • the host is told, the CRM learns the client, cancel notifies the other side, and a meeting can be rescheduledf3a68b4
  • reliable availability, one booking per slot, and a booking address you can choose and copy4eadb75
  • a booking now reaches the owner's calendar, with its Meet/Teams linkcbf9791
  • HeaderCalendar writes its i18n keys in full80c3835
  • full-page calendar with a compact header, and a quick calendar in the app header5ae1560
  • the mailbox fills its whole area, with room inside and no wrapped buttons390e4c0
  • the next emails load, snippets are readable, Smart Triage has its column3ede57d
  • the mailbox state comes from the server, not from a browser flag46bc532
  • the discord_links table is created even when the foreign key cannot be883eaf1
  • redo the voice of one scene1aa537d
  • choose which formats to render32f4a05
  • every step log has its Stop button (script, shots, voice, compose, render)21b8e6c
  • elapsed time on every running step, in the log and in the chat2f6d928
  • a running film step can be stopped from its own log and from the chatc3e6fb6
  • the module tabs stay usable while an agent is getting readyfa897d5
  • a social draft card ignores an image the model invented50d4b7b
  • Yes/No buttons follow the language of the reply, and the video-project card shows a user sentence34e938d
  • the video studio section names SaaS tooc161379
  • the video studio section is no longer about 'your own website' only0ef3b4d
  • the site no longer promises a 14-day trial, Free is Sophia + 30 creditsb2d136d
  • no more 14-day Premium trial on signup, a new account is Free (Sophia only)1d57e86
  • the navbar and footer load the active language, not only en and fr2cc0911
  • every legacy Hindi translation retranslated from en.json54f495e
  • Arabic and Hindi reach 99.7 % of the app and the public site83e6571
  • Spanish and German complete (100 %)939b840
  • Japanese reaches 99.7 % of the app and the public sited1e3197
  • every legacy Russian translation retranslated from en.json89a2ccc
  • Russian reaches 99.7 % of the app and the public sitebb1ac2e
  • the idle sweep runs every 2 min, and its cron and its GPU meter read one value536e987
  • a resumed agent pod gets 6 min before it is recreated, and the chat wakes it as soon as you start typing2b9a1b1
  • she reads a file linked from the media library, says what she cannot do, switches the interface language, and asks one question on an empty profile09e7ed8
  • page capture twice as fast on the pod, and a stopped video pod is restarted on new code instead of recreated07741aa
  • no invented figures card, no invented recipient, and a workflow draft says it has no stepsfaae9a2
  • a method question only reads, Nova never quotes a market number she did not read, and project risk has an overview4bec1c8
  • an instruction about how to answer is followed, not turned into an invented actionec88a83
  • a neighbouring question is answered, not handed over, and a delegation reply no longer shows twicef87de0a
  • advice is written, not bought with three paid actions, and he can finally set a follow-up taske4c1300
  • she answers the author of a pasted message, never speaks for acts the user did not do, translates, and reads a link first6db6f14
  • no invented actions, the user's language, scheduled posts counted, AI visibility found, and a paid post asks first9f19f97
  • the agents one by one, Sophia first, what the bench found and what serves every agent4ea16df
  • every agent knows today's date, mail actions are not offered without a mailbox, and Sophia's real requests are on the bench510973f
  • the video pod rents the cheapest 48 GB GPU anywhere in the world, and the legal texts say so5626b97
  • the free plan gets one AI video a month, with the KIWI watermark89ebe4a
  • she knows what is connected, keeps no empty promise, knows KIWI, reads Excel and PowerPoint, and keeps email idsc4e0ac9
  • the monthly film cap applies to every chat action that renders, and silent fallbacks now say what they did87c85ed
  • the chapter title stays above the platform's interface93efef9
  • confetti now accelerate as they fall24f751b
  • an opened draft can finally be launched, and a prepared film keeps the address to filmb1e319c
  • a spoken target in a still capture is lit by a dark veil, like in guided tours71964f2
  • the custom agent marketplace is gone, web search runs on Exa with its key in prod447ce88
  • one set of easing curves, and a test that refuses an unknown oneae0716e
  • the scene check warns when too many foreground blocks move togetherec3a8da
  • agent routing reads French, by whole words, the best match winning779f8fa
  • the scene check reads the platform's safe zone over time4e456f9
  • a false success is redone, live text hides variables, choices can be several, and YouTube, X and websites are film platformsfe44bc1
  • web search runs on Exa, social listening and translation finally return something, and every agent chat keeps its scrollfbb2d37
  • the focus veil of guided tours is tested and no longer sticks after an off-screen navigation30c8d5b
  • no orphan action, a draft never lost to one field, buttons for any choice, and every chat survives a page change14b6d05
  • no variable in a reply, a button to say yes, a draft never refused for one field, and no success claimed for nothing98b755b
  • a film is asked for by platform, with each platform's frame and safe zone1513ced
  • a video request finally serves the video-project actions, and a web address serves the site readerabcc825
  • an agent asks for missing information instead of failing43f1d1f
  • the agent chat keeps its scroll when you switch tabs, Discord-style30b58ce
  • recapture of the 21 product screens, light and dark, in English8afcc80
  • captures in English, document and spreadsheet opened, versioned URLs, audit of masking overrides3a56d90
  • a video brief accepts the language as an agent writes it5ee4c51
  • Recent Leads truncates long names, agent sidebar clicks no longer land on Mission Controle01dfcd
  • sitemap.xml becomes an index with one sitemap per languaged24f17b
  • document the automatic translation of new or changed keys692cc5f
  • new or changed en.json keys are translated into the other 29 languages by a hook85d256b
  • split 238k chars of always-loaded notes into per-area files4a0c0ad
  • retranslate the whole interface from Englisha8c54a5
  • a fully refunded Stripe credit pack loses its credits toob1bb14c
  • a fully refunded Polar credit pack loses its credits, and the success page shows the amount69bdb3c
  • credit packs can be paid with Polar, and bigger provider logos93c34ea
  • a turn survives a tab or page change, the approval card speaks plainly, and a video is a project first413b212
  • the Premium webhook ignores orders of other products38ac304
  • a video project saves itself as you type, and Aria can prepare one filled in without launching it3eca1b5
  • what the user sees is read in their zone, not the server's UTC clock1565254
  • timeBlock lays the day out in the account zone, not the server's36739eb
  • every account gets its zone from the browser, and calendar slots read office hours in itb23bbc8
  • one morning brief, the server reads mail, calendar, overdue invoices and quotes; Sophia only sorts; each line has its buttondc917a3
  • Welcome, Re-engage and Win-back go out in each member's language00f239d
  • sent, opened and clicked per User Mailer email, and one preview text instead of two376f282
  • every mail KIWI sends its members comes out of the one charter template5c78285
  • ride the pod wakes users already paid for, and tell users their work is prepared overnight and sent at their hour4ddad2d
  • an announcement never goes twice to the same member, and the single mail carries its unsubscribe4e3a47e
  • the update announcement now presents video and social posts, in all 11 languages83fbc2f
  • newsletter and User Mailer follow the charter, live preview, test to me, preview text, rates per campaign282c49a
  • "Lend my session to KIWI", for Chromium and Firefox, ready to publish5e32c78
  • lend your browser session to film your own app, and the access is asked again when a signed-in film films again562721d
  • a product photo can come alive, Wan starts from the image and only adds the motion266e59c
  • the community write actions are gone, and the film from the chat is describede252645
  • an agent no longer receives another agent's conversationc342520
  • a priority written "High" or "urgent" no longer loses the task848deb6
  • find, stop, translate, reformat and re-score a film from the chatfb4f218
  • change a film from the chat, see where it is, approve it with its price, publish it511e998
  • Aria makes a film from the chat, with the media dropped in it, and the film comes back in the conversationbf8f122
  • a social post asked in the chat is a draft, and can carry the user's own imagesd30cc94
  • the Video tab gets a left margin inside Workforce, like the other modules585acef
  • the trimmer's player stays a reasonable size and its sliders sit under their labels9b826a2
  • add your own media to a film, and choose the part of a video, start, end, peak moment68d7bf3
  • your own media in a project, and the part of a video the generator must use, with its peak momentd77c5b4
  • the generator uses the animated components, a title, a counter, a feature grid, or an animated background under a card874085b
  • the pod films animated components (React + Framer Motion, 21st.dev style) frame by framed088dce
  • clicking a notification without a link opens itcf33470
  • the creation form takes a login for an app behind a sign-in; a resume without it refuses to film the login page4232b51
  • retranslate the whole interface from English1cc65e8
  • film a client's app behind a login, the pod signs in with a login and password held in memory only9717e2b
  • one translation file per language9c81143
  • the run accepts `notify`, every generate and render from the studio answered 422af9563d
  • stop English copies from shadowing every translation57bd797
  • drop the English en/fr copies from 79 .extra.json files800f304
  • translate About Us to Hungarian (104 keys)c0d8464
  • translate About Us to Hindi (104 keys)f92d0a4
  • translate About Us to Gujarati (104 keys)1f32444
  • translate About Us to Finnish (104 keys)b5ba41b
  • zoom-through transition and floating screen captures (code landed in other sessions' i18n commits)d9e333e
  • translate About Us to Greek (104 keys)4ba5041
  • translate About Us to Danish (104 keys)e6c366b
  • translate About Us to Czech (104 keys)f19af09
  • translate About Us to Bengali (104 keys)a4be8e9
  • translate About Us to Arabic (104 keys)81b56d9
  • translate About Us to Afrikaans (104 keys)7d2aff0
  • fill all 30 languages in .extra.json fallbacksb66ae47
  • fill all 30 languages across entire frontendd95aade
  • words that arrive one by one and a wipe exit, drawn by the renderer; a sound on moving transitions; the critic sees flat transitions and stacked titles3239ca3
  • stop the global partner hook from stealing Google's OAuth code7f7c326
  • ensure DE and NO have all required translationsb15a37a
  • add remaining 16 languages (AF/AR/BN/CS/DA/EL/FI/GU/HI/HU/ID/JA/KO/TH/VI/ZH)5d79540
  • translate PL/RO/RU/SV/TR/UK (6 langs × 64 texts = 384)2483cc2
  • translate 64 Portuguese textsae4c04c
  • translate 64 Dutch texts82b2e28
  • translate 64 Spanish texts (About Us page)03c2dd9
  • translate 64 Italian texts (About Us page)51ea42b
  • translate 132 missing German texts (FAQ + privacy policy)abeb242
  • out of the corporate slideshow, moving backgrounds, word-by-word titles, transitions that carry the image, Wan under key cardscff0730
  • an email when the film is ready (or could not be finished)2203815
  • a minimal creation form15aa11b
  • the next action is violet, one button per film tells you where to click569e6be
  • 10 px between the module tabs' separator and the module content3fe1549
  • the composition fields line up66882a5
  • no horizontal scrollbar in an agent's Video tab, and room on the right9e32869
  • as many scenes as the length needs, and a short version of 15-30 s00e61bd
  • the storyboard editor shows the range the storyboard was written forcd86183
  • deleting a project answers at once, its files go in the backgroundfa29bf6
  • a shot keeps its genre's length, no 10 s scenes, no slideshow, no twice the same shotaeb3e51
  • no more « Worker unreachable » while the video pod sleeps, and a quieter screen4cf51d1
  • delete a video project, for good, files included, refused while a film runs6146942
  • full-screen text breathes, 84 % of the safe area, 12 % width margin6682b70
  • a finished project reads « Ready », not the GPU engine's sentence39c08e9
  • install Chromium for the four studio capture tests94cbeda
  • the 22 red tests of the redesign, six real defects, the rest stale rules3a640eb
  • a test workflow runs when its own file changese1e638b
  • the screens stop re-filtering the roster the server already filterede38e647
  • the film starts where the music arrives, not on its quiet swellabf7648
  • a stats number never runs off the frame7493ed0
  • the time given back to a film goes to the footage, not to the cardsc1449f9
  • the major-update announcement, in the language of each member3fb803f
  • the daily GPU budget lets a running job finish instead of cutting it1880586
  • install the video worker dependencies and ffmpeg for the backend suiteba86cf6
  • interface footage is framed on the action, not the whole screen26033ff
  • the epic opening hits and leaves (1.8 s), and new rules reach cached films7218e09
  • the job log names the failing tests and the files that fail to load3b12304
  • a film lasts the length that was asked for64ac57a
  • a page <title> is never shown as on-screen text0b3da7b
  • the end card no longer freezes, and the motion check sees a held valuef967175
  • the music lifts between voice lines and starts at t=056bf80b
  • a deploy no longer cuts a film, the runner puts its runs back in the queue on stopb31baf3
  • never sort whole compositions or runs, MySQL runs out of sort memory896880c
  • the studio says whether a film can start now, and where it stands in the queue1025eb2
  • the video studio runs on gaston-sandra, tunnel, secrets, deploy, rollback8d8dd00
  • declare Polar as a subprocessor, it collects Premium payments since 2026-10-01c5dcbfa
  • fail when the studio-runner stops beating, films would wait in the queue silently03e44fc
  • the video studio is processed on our Hetzner server in Germanyce532f0
  • deploy the studio-runner after the API, same commit, and check both carry the same pod bundle6c7fbfc
  • the tunnel command lives in a script, YAML folding was splitting itbef3daf
  • runs can execute on another server, the API enqueues, studio-runner.js executes28839f8
  • profile tabs really wrap, the global segment rule made them a one-row grid6fd606e
  • the capture may take 15 min, the interactive tour no longer fits in 8b344db1
  • header menus above sticky bars, profile tabs wrap, provider logos on pay buttonse76a8ed
  • the tall-page scan test now uses a tall paged69036d
  • the interface redesign in progress, with the studio quality work from the parallel sessioncf953e5
  • two buttons, pay with Stripe or with Polar1f35d2b
  • Kiwi Premium can be paid with Polar, next to Stripeba0ff21
  • 'no music' is a decision even on a new project4c0178c
  • the English voice follows the genre of the filmd1430f2
  • a film without music no longer ships silently99ee97e
  • the brand's own fonts are rendered, from the site's files54e0d97
  • the brand logo is found, and shown the way the page shows it3db4c2f
  • movement first, a still image is never a shot when a video or the filmed tour exists12d651e
  • the family kit, headline and 3D device (corporate), impact and HUD (epic), cinema bands6930297
  • a living background instead of flat colour cards00b0b44
  • corporate and epic families, a planned transition sequence, a drawn rhythm, a perpetual-motion check6624c7c
  • a partial vision answer is completed, then reported as partial, no longer thrown awayb129b7e
  • a card stays above the subtitles; a still longer than 3 s breathes past the upscale guard09d05cc
  • English by default, "dynamic" read from the prompt, videos named as videos to the model653b6e5
  • size a narrated scene past its outgoing transition, the render refused itef90d3a
  • an empty 404 from the RunPod proxy also means the pod is not up yetb13775b
  • line-by-line text drops duplicate subtitles; a figure the page does not carry is refused6ae06f0
  • repair a mis-cited proof, drop an invented one, the analysis no longer dies on either724f049
  • serve the agents' 9B in bf16 on 48 GB cards, FP8 never started on the lane's Ampere GPUs76ddd97
  • wait through the proxy's 502/503/504 while a recreated pod loads its model1cac470
  • long worker calls run as jobs, the RunPod proxy cuts any response at ~100 sd7e5a5e
  • the failing-run generator yields, as the lint gate requiresca89b74
  • the pod's code ships with every backend deploy8b88209
  • prompt → film from Marketing, KIWI capture with the user's session, readable failures4a8e14a
  • ignore stale agent detail responsesfeef7e8
  • serialize pod wakes and prevent orphan GPUs65de599
  • show selected agent while pod warms5e95572
  • restore render audio readiness guard78941c6
  • ship studio production workflowde1c219
  • center dashboard navigation menud635c65
  • bound response memory and retain body timeouts23c4039
  • reserve memory for video Studio backend and record real benchmark77641a5
  • check visible shot fidelity against generation requestse5366fe
  • preserve video duration and prevent uncertain resubmissionsf69a2ce
  • retain jobs through transient polling failures1369e57
  • ship editable previews, durable runs and web storyboards701bd7c
  • preserve model precision when switching Wan pipelinese49d47e
  • restore managed RunPod generation and montage runtime3949456
  • expose documentation in public navigationf6e0c87
  • restrict free accounts to Sophia3ef1799
  • keep quote and invoice amounts visible on mobile0f1d696
  • remove nested search input borderad17e65
  • gate autonomous events before context loadingb931002
  • --ipv4, Chromium résout localhost en 127.0.0.19d95487
  • une action optionnelle dont l'élément manque ne coûte rien au film943a946
  • une photo remplit le cadre dans un genre sans appareile284611
  • la densité de texte ne compte pas les étapes du lettre par lettre11c3acd
  • l'image de partage d'un site (og:image) n'est jamais le fond d'un texte67e9608
  • trois défauts trouvés en rendant les films témoins dans trois genres21c7960
  • un film déjà rendu peut réécrire son storyboard (changer de genre, de public)32a4912
  • lot I, deux voix, signature sonore de marque sur le logo de fin9a2e22a
  • lot J, capture tablette, popups fermés, défilement avec inertie26d1d15
  • lot F, résolution de sortie, cadence, ultra-large 21:9, zone Reels, durées 45 s / 90 s / 2 min5a80ff7
  • lot G, règles de marque : vocabulaire, prononciation, voix et musique de marque, logo en intro, filigrane61600be
  • lot H, chapitre numéroté, avant / après, QR code de fin, néon3e9a570
  • lot E, public cible, suggestions de montage, version localisée6683370
  • lot C, punch, secousse, speed ramp, jump cut, écran partagé, énergie et lettres, pour le trailer et la pub seulemente99afa3
  • lot B, une capture qui ne remplit pas le cadre se montre dans un navigateur ou un téléphoneb37c11e
  • lot A, annotations selon le genre (cadre, cercle, flèche et étiquette) et mots clés à l'accent714f7ec
  • lot D, marque tierce, page privée, rapport de droits, sujet grave, pas de transition lente en trailerea48e2a
  • l'empreinte d'une composition porte toute la direction, pas le seul genrebf940ba
  • le ton sobre ne se devine plus sur le texte du site78e812a
  • lot R4, durées 6/15/30/60 s, versions muette et sans logo1bc83a7
  • lot R3, le vocabulaire que le genre ouvre : noir, cercle, pixels, glitch, surlignage, mots tapésf115cfe
  • lot R2, les garde-fous : données masquées, logo jamais en fond, sous-titre sans redite, carte de fin lisible, phrases à relire92b6e5b
  • lot R1, le moteur de réalisation (genre × style), qui décide ET contraint5b978aa
  • l'horloge de la page tient sur une page lourde, pas de bannière de cookies, contraste d'un texte qui sorte8bf92f
  • lot FX, halo de lumière, poussière et lueur de titre, réglés par le stylea638496
  • lot T, le texte entre, glisse, et sort en fondub5953b1
  • lot V, le temps de la page suit le film, et 0,5× à 1,5× pour toutes les vidéos796d45e
  • robertsspaceindustries.com, une page lourde se capture, et un film de texte se pose sur les images du produitd8bad06
  • BiblioDIP refait, la même page ne revient plus, l'adresse se lit, le voile ne grise plus l'écran65f5d60
  • lots 3 à 5, des écrans plus grands, une fin toujours, une musique qui variec5125ab
  • lots 1 et 2, le tri de l'information, et un texte qu'on lit en français223ab5e
  • un défilement raté ne tue plus le worker ni la captureebaf871
  • vidéo de présentation de la plateforme sous le héros1690513
  • i18n 29 locales, documentation restructurée, OG images, studio vidéobf10aa9
  • frontières de domaine, permissions resserrées, délégation arbitrée + section Discord accueil3ed324c
  • lots D et E, le produit filmé en action, et un clic pour tout le filmba3da01
  • lot C, la relecture visuelle, un appel par film, testée contre la vraie lane visionfa72ab2
  • lot B, les règles de la Library, contrôlées sur chaque film30ab588
  • lot F, présentation ou tutoriel, zone ou contrôle, et des transitions qui ne sautent plus27bda6b
  • lot A, la bonne version d'un écran, choisie seulecc495de
  • le temps de voir, la présentation sans gros plans, la licence d'une voix à sa synthèsed3f3d56
  • un écran fourni remplit le cadre, et la caméra ne le coupe pluseeb95f0
  • lot 4, deux durées, et la version courte d'un projet sans recapturee3ac903
  • lot 3, le film rendu est relu, et ce qui se corrige seul est corrigé8d14013
  • medias fournis d'abord, textes qui tiennent, voix et scenes reprises57402ea
  • lot 2, cache de scene dans le worker ; rendu parallele mesure et ecarte049c398
  • lot 1, textes courts des l'ecriture, reecrits plutot que coupesda4d1f0
  • jamais l'enveloppe de la page comme plan, jamais deux fois le meme plan014beb2
  • une requete coupee ne fait plus tomber le film ; delai de rendu configurableeebebba
  • deux versions du film, site (accueil) et diffusion (YouTube, Product Hunt, Peerlist), et motion design83e7673
  • un site se montre, le motion design ponctue, il ne remplace pasd8aadf6
  • film de l'application v7, agents, studio video, publication programmee, CRM, Expensa, tous les modulesd29df0b
  • le film d'un compte social, suite fixe, voix du profil, 20 a 40 sf23eca4
  • motion design (graphic, chart, post, profile) et profil X comme source2c89551
  • une video ne se fige jamais dans sa scene1b8fd59
  • transitions dans le sens du geste, grain commun, flou de mouvementfc287a0
  • typographie cinetique, table des mouvements, textes sur le tempo, carte de fin animeef9394ef
  • les bruitages suivent le type de video, et 7 dB plus bas2c3d7bf
  • aucune mention legale ni fiche technique en voix off, meme reformuleed3bce4e
  • sur une boutique, la fiche technique n'est pas un argument ; une scene finale ne se reduit pas a un motc60e38d
  • une correction des regles du storyboard regenere le script, au lieu de resservir l'ancien6b9b7d7
  • studio-url-to-film --resume repart de l'analyse sur un projet deja renduc47f3f2
  • la voix dit une description, les chiffres et avis s'affichent ; aucune citation coupee au milieua890798
  • le film montre les medias du produit, pas la page ni ses mentions legales6336518
  • generer une video depuis une URL sans interface, et tester sans le podc77a1c1
  • le style produit enchaine en fondu avec halo, le film s'ouvre et se ferme en fondu8b262a3
  • une URL de boutique donne les medias et la marque du PRODUIT, dans la langue de la page448c2d6
  • le storyboard tient avec le modele 9B, schema impose, reparation, voix et musique par defaut1aa9768
  • lint, CATALOGUE_ORDER defini avant buildCatalogue6daed98
  • une video depuis une URL, le modele voyait le menu du site, pas le produit74d425a
  • le quota de stockage lit le niveau d'abonnement reel, les clients Premium etaient a 100 Mo100247c
  • film promo, un titre de scene reste lisible 1,5 a 2 s une fois ecrit418cff0
  • film promo, la mise au point ne sert qu'aux gestes, jamais aux titres35ea0cd
  • film promo, pause de capture 60 ms apres le clic, pas 220 : la roue de chargement de l'ecran suivant se voyait77ab496
  • film promo, l'attente du chargement apres un clic ne se filme plus26fe6c8
  • film promo, la coupe suit la fin du geste, un rechargement ne se filme pas7eb3157
  • mise au point, coupes sur la musique, navigation dans l'app, sous-titres, preuve chiffree7f71ee4
  • le film promo suit la Library, grille unique, typographie cinetique, trois temps par scenee0db316
  • une camera dans la page enregistree, valeur de plan, point focal uniquea0ca33f
  • une transition « bloom » (fondu avec halo) et deux bruitages sans tonalite8116df3
  • enregistrer une navigation dans l'APP, et le film promo KIWI en trois formatsf946678
  • le prompt de l'utilisateur part structure vers Wan, avec le negatif officiel1670807
  • extraire les chaines en dur du frontend vers t(), 1876 a 453432f9b
  • une poussee est une ARRIVEE (90 % du cadre), et les bruitages suivent la voix9028885
  • eteindre un module rend ses pages injoignables, pas seulement cacheesd5d7706
  • une capture au format du cadre le REMPLIT, une capture d application y etait illisible0236d5d
  • un bouton de langue dans la barre haute, a cote du themeeecfc56
  • la musique passait 12,7 dB AU-DESSUS de la voix, le lit est calcule, plus unitaire1cf630a
  • l'avatar de la carte d'accueil du chat avait une hauteur de ZEROe801dea
  • le bloc Discord ecrivait text-white, et la palette le bannit9053cf8
  • H4, trois styles depuis une URL : produit, dynamique, cinema3856c73
  • deux images du site etaient posees en double avec l'accueilc169e38
  • H3, le sound design : dix bruitages synthetises, un plan pur, un bus hors du duck801c9b1
  • deux images et une couleur qui n'est pas du vertd02fc31
  • le second flash de chaque changement de page186bd83
  • la description de /about-us que je venais d ecrire depassait de 21 caracteres7f75db7
  • un SVG en image sociale, et cinq pages qui ne disaient pas ce qu'elles sont3e23d44
  • H2, trois looks mesures, une duree par transition, whip et flash307f54b
  • la vraie photo des bureaux, et un bloc Discord aux couleurs de Discord621adfc
  • la page annoncait encore un lancement, et n'avait aucune image87b3985
  • "Not Just a Fan" publié sur le blog officielafd1e85
  • cinq largeurs de conteneur sur une page, ramenees a unebc29344
  • la page suit enfin la meme grammaire que /pricing et l'accueileb9626a
  • le formulaire de contact ne fonctionnait pas, et le support passe sur Discord35606a2
  • une grille de portraits, et une fiche complete au clica5716fd
  • H1, la grammaire de camera par plan8a2d562
  • H0, Aukimi second temoin, la planche en script, et les sections retrouveesea251ec
  • Q8, Wan : export ffmpeg bt709, 40 pas par defaut, controle sur trois images et sur le fichier remonteb465efd
  • Q5, 60 images par seconde, l interpolation Wan mesuree et laissee en option8eda9e1
  • Q4, la remontée d'un plan par le petit côté, captures d'éléments à dpr 4, héros mobile à dpr 3f52c5e8
  • M4, la typographie mesurée, les voiles de lumière, le contraste lu sur l'image rendueced706b
  • M3, les sous-titres mot à mot, sans bande, dans l'encre du fond38c25f9
  • cinq textes sous le seuil, dix liens qui menaient au formulaire de connexion1a1ce70
  • M2, une idée par écran, la caméra sur l'élément, et deux trous du moteur098943c
  • « 24/7 » et « jour et nuit » disparaissent des trois dernieres pagesf3fe16f
  • « pendant que vous dormez » est faux, et la page ne nommait qu'un agent sur 2430f0394
  • quatre temoignages inventes, et le studio video + le multi-activite sur les pages qui manquaientdd3210a
  • M1, la porte de contrôle avant le rendu, et trois corrections que la planche montrait44a0fc9
  • « No Schrems II headaches » etait faux, et les deux differenciateurs manquaient6206289
  • les agents, le multi-activite, le studio video et le delai reelf61369f
  • six reponses fausses ou perimees, dont la voix qui n'etait declaree nulle partd9be8c9
  • la mise en page reprend le vocabulaire deja ecrit pour la section prix de l'accueilc1c35dc
  • un pod qui sert un autre modèle que la lane est recréé au réveilee1d130
  • Q3, le screencast reconstruit depuis des PNG sans perte, 60 i/s, desktop et mobileec57c02
  • l'essai etait annonce quatre fois, et trois lignes Premium disaient ce que dit le gratuitb623555
  • Qwen3.5-9B en FP8 sur le pod, le modèle devient du code, et plus d'adresse inventée67ee63a
  • les deux outils de mesure du referencement et du prix, et pourquoi pas des tests9ece300
  • un controle qui compare ce que Stripe facture a ce que le site annonceacaa357
  • 26 titres et descriptions perdaient leur fin en resultat de recherche95bae61
  • mesurer le declenchement contre de vrais messages, pas des phrases inventeesfb9f301
  • le banc de comparaison des modèles du pod, et sa première mesure3d14267
  • les trois chiffres invérifiables le sont maintenant, et ils etaient faux2cc566d
  • l'ecran de la base de connaissance sait livrer a tous les comptesa1b1621
  • un seul encodage pour le film, une coupe est une coupe, CRF 16, tags bt709 (Q2)92445fa
  • un document peut enfin etre livre a tous les comptesb2cb9f0
  • /docs n'avait aucune balise, et trois URL se disputaient un seul document63c6e69
  • le badge des avis Product Hunt, un survol plus discret, rotation a 3 sbafd843
  • fenêtre du pod à 32K, l'historique de conversation rendu aux agentsd5507ef
  • ce que la traînée longue du site affirmait, et ce qu'elle affirme maintenantf05409f
  • la page recrutait pour un lancement de beta vieux de treize moisf6facd4
  • trois pages presentaient des gens et des partenariats inventesbc95cef
  • « these are the ONLY action names that exist » etait faux, et bloquait 79 actions8947ce0
  • le format d'action etait decrit deux fois, et « rendre compte » n'avait aucun mot67253e2
  • 39 calculateurs de plus, et une seule declaration chacun7581949
  • l apercu de l editeur et les vignettes chargent la couche kiwi-videoflow avant le moteura9170d7
  • la couche kiwi-videoflow, easings reels, texte a 2x, encodeur, FBO 16 bits (Q1)8f9067d
  • le banc de qualite, mesurer les films avant de les ameliorer (Q0)8882cd4
  • une skill ne se declenchait que sur une chaine exacte, une fois sur huit1321aba
  • seize procedures distillees de la bibliotheque, livrees a dix agentsc77cca1
  • quatre chiffres mis en avant, dont un impossible et un contredit par la prod37e6c7f
  • une skill livree a tous les comptes evinçait celle que le compte avait ecrite8a41f82
  • « Learning curve < 1 hour » n'est mesurable par rienb927d20
  • les fichiers de police de Google en connect-src, pour les vignettes de l editeur3c205e3
  • loudness mesuree puis gain + limiteur ; le worker ferme ses Chromium, poliment puis de force9e77e91
  • trois affirmations que le code contredit, sur 30 localesab18f98
  • CLAUDE.md annoncait un referencement fige sur l'anglais, c'est faux depuis un mois3efa4ca
  • composer une scene ne sonde plus le reseau ; la voix par defaut d une langue est une voix native2808e16
  • vignettes dans la bande des scenes ; le client marketing ne garde que ses trois appelsb37eb3d
  • « Rejoignez 3,5M+ professionnels » etait une preuve sociale inventeec6bbf81
  • la troisieme section parlait d'un autre metier, elle parte3efad3
  • Lot 7c, régénérer un seul plan Wan, réutiliser un brand kit9025399
  • un visiteur anonyme se faisait deconnecter en ouvrant la page d'accueil416f279
  • Lot 7b, l'éditeur visuel d'une scène, dans le produit10a8137
  • les portraits de /agents etaient carres9fa2848
  • l'ecran montrait un autre agent que celui qu'on venait de cliquer74e0e3c
  • les cartes d'agents prennent un degrade anthracite, au lieu d'un aplat noirc3046c9
  • une grille 3x3 d'agents qui tourne, des separateurs verts, et l'ancre qui defile enfin9028768
  • Lot 7a, une scène éditée à la main, validée, versionnée, et qui survit133ec25
  • Lot 6d, la parole et la musique plus rapidesa6d5716
  • le studio video et le calendrier de publication se montrent, au lieu de se decrirec5217a6
  • ce que la nuit du 22 au 23 a etabli, et qui ne se relit pas dans le code7774804
  • le pays des pods, et deux descriptions qui vendent l'ancien produit0126ced
  • les 18 pages produit en francais, et 25 affirmations fausses corrigees avant de les traduired96185a
  • l'IA ne tourne pas ou la page disait qu'elle tournait25a3327
  • Lot 6c vérifié contre le compte ElevenLabs réel, voix, film, licencea338685
  • « 180+ actions » pour un agent qui en a 173, et trois ecrans qui n'existent pase207a40
  • deux produits qui n'existent pas, 150 liens morts, et le nombre d'outils Aukimicd973d8
  • le metier de l'agent etait tronque, et c'est lui l'argument9340a17
  • les 24 agents, une rangee qui defile, et le calendrier Marketing photographie597790e
  • ElevenLabs comme second fournisseur de voix off, derriere une interface07f056b
  • le plafond video garde les quatre etapes payantes, pas seulement le renduaba2cbf
  • le prix suit le volume, un forfait de 15 payait dix passages GPU055a1c6
  • l'echec d'une mission n'ecrivait rien, et l'ecran disait le contraire7bb69a2
  • une date porte son fuseau, un jour nu reste un jourd03742f
  • la generation video passe aux comptes payants, et le studio l applique5aa1bc9
  • relier les chiffres du site a leur source dans le code418ef90
  • ce qu'on recevait apres avoir clique454a5bd
  • le ROI multi-canal, la boite unifiee et la beta de 202513f0bd2
  • les ouvertures n etaient jamais comptees, les clics jamais tracesffcdd8d
  • une question, celle a laquelle les gens repondent800fe8e
  • dix affirmations publiques que le code contreditf5f4c9b
  • supprimer l'assistant en 5 etapes, que personne n'atteint5543604
  • de vraies miniatures, au lieu d une image de 2560 px retrecie06ff62c
  • la bibliothèque musicale vérifiée contre l'API, le calage en temps film682531e
  • les deux dernieres captures sont a jour, les vignettes a 384 pxf7c66c2
  • une section publication, et les deux demos remontent avant le catalogueef2c33c
  • le seul bouton allume etait celui qui saute l'etaped3880df
  • l oxydation remplace le violet pale, et les vignettes doublentf478788
  • « Connect Bluesky » passe par t(), la CI repasse au verteb0925a
  • le studio est photographie, et l accueil le montre39da99e
  • Revert "feat(onboarding): un compte neuf n'est plus vide"eefaecd
  • une section pour le studio video7be882a
  • la section Aukimi porte le logotype du partenairea25e34c
  • la palette d accent du sombre passe en vert, magenta, violet78c6c2a
  • Lot 6, voix off, sous-titres, musique calée sur le tempobdb948a
  • un compte neuf n'est plus vide2f6b2d6
  • le dashboard proposait quatre plateformes que le projet n avait pas0043dce
  • corriger ce que j avais affirme sans le verifier780963c
  • le module herite de marketing, sinon l ecran disparait531561f
  • le hero montre le produit et dit ce qu il faite8aa67e
  • plus aucune capture ne vend un ecran videfb90f08
  • le studio video a sa page publique et son entree Navbarb36a3c2
  • quatre des cinq ecrans vides ont de quoi etre photographies3d8c57b
  • enregistrer une publication en brouillon repondait 500853d1db
  • le studio video sort de Marketing et devient un module d Ariacd1862d
  • chaque page de module dit quel agent le pilotef4727a7
  • le site dit ce que le produit est devenu, un agent par metier27e31d5
  • l accueil et la bibliotheque servent la capture du theme6868b74
  • 36 captures du produit, en clair et en sombre58e3865
  • plus de barre de defilement en mode focus7b59b51
  • l'écran du studio vidéo remplace l'ancien VideoStudioa6e0f99
  • un jeu de demonstration local, pour photographier un produit vivant339d8ff
  • une page de module atteinte en direct s intitulait « Workspace »15336d6
  • Sophia ouvre la liste des agents93e77d2
  • les deux traits de la barre laterale passent en line-soft5d3ca08
  • Mission control ne s allume plus en meme temps que l agent ouvert201f1b2
  • passer d un agent a un module ne fait plus clignoter l ecran3fbba78
  • le composeur s ouvre sur deux lignes et demieaa676e3
  • le bandeau de l'agent disparait, ses actions montent dans la barre6a0780e
  • Lot 5, la file des plans Wan, avec un contrôle qualité mesuréec4c99d
  • une seule liste d'agents, la colonne de Workforce rejoint le menu6bd5c1a
  • le badge Product Hunt quitte le herod390072
  • on arrive sur la conversation, et la bascule ne scintille plus39f57ee
  • Lot 4, la composition sans Wan rend un film juste en 16:9 et 9:16c458eb3
  • chaque agent a sa table, le chat, ses modules, sa memoireee7f93e
  • le menu lateral liste des agents, pas des outilsd0a7ddc
  • le brief PostForMe ouvrait sur une phrase devenue fausse2636058
  • l erreur de connexion disait le message d une bibliotheque33a7237
  • « Publish Now » etait illisible, et la regle censee l'interdire etait aveugle7d9bd98
  • la ligne marquee publiee du 29 juillet n avait jamais quitte la maison12c8376
  • deux scripts pour voir l integration Post for Me, sans publier975847d
  • le rendu de post visait un chemin double, avec le corps d un autre endpoint7aa5fae
  • 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