Changelog

All updates, new features and fixes shipped to the Kiwi platform.

100 entries
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
hide internal fields from community post form for non-adminsf518740
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
Stripe Test Mode toggle in admin dashboard7203e03
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
update devlog7c4fc67
S3 sync status indicator with 3-state cloud icons04bbdfd
update devlog96089be
auto-sync all media to S3 with cloud status indicator202d407
add S3 storage (Infomaniak Swiss Backup) + legal terms modal6df4740
update devloga6363d0
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
admin icon picker per module + fix Sheets sidebar icon6831e69
add Documents & Spreadsheets to site, admin, and modulesd471ef4
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