Replace native WebSocket with STOMP/SockJS in LiveSupportPanel
- Add @stomp/stompjs and sockjs-client packages - Connect to media.{domain}/ws/public-chat via SockJS+STOMP instead of raw WebSocket to api.{domain} which was...
Add /contact-confirmed page with animated hero, timeline, and CTAs
Replace inline success message on contact form with a dedicated premium confirmation page: animated SVG checkmark with particle burst, 'What Happens Next' 3-ste...
Correct MEDIASERVICE_URL port from 443 to 80 for contact form
ClusterIP service only exposes port 80; using 443 with http caused a ConnectTimeoutError on every contact form submission.
Add API modification callout to kamo-api-reference page
Shown only on /kamo-api-reference, prompts users to submit API change requests via /requests or reach out via /contact.
Stabilize countdown width to prevent banner text wobble
Fixed-width monospace container with tabular-nums prevents layout shifts as countdown digits change every 50ms.
Replace static launch date with live countdown to 2PM PST Apr 20 2026
Ticks every second showing Xd XXh XXm XXs; falls back to static date until client hydrates, shows "Now" when target is reached.
Move featureRequests i18n keys into correct home namespace
Keys were accidentally placed in about namespace; section was showing raw key strings instead of translated text.
Add /requests direct nav links, homepage section, and plan feature comparison row
- Header: Requests added as top-level direct link between Pricing and Company - Footer: Requests added to Product column for direct visibility - Pricing page: c...
Replace all CSS-filter logo instances with white SVG
Navigation, SubNavigation, Footer, SubFooter, and Preloader all used the same broken filter brightness-0 invert pattern. Replaced with logo-full-white.svg acros...
Use white SVG logo in footer instead of CSS filter
Same fix as the nav — CSS filter on img inside backdrop-filter is unreliable on iOS Safari.
Guard color-scheme with !important against theme CSS override
DynamicMetaLoader can inject remote CSS that wins the cascade. Adding !important ensures color-scheme: dark can never be overridden by theme stylesheets.
Exclude footer and nav links from TouchOptimized min-height enforcement
TouchOptimized was setting minHeight:44px on all <a> elements shorter than 44px, including footer nav links (~20px tall). This ran during hydration on hard refr...
Use pre-rendered white SVG logo instead of CSS filter
CSS filter on img inside backdrop-filter is unreliable on iOS Safari. Generate logo-full-white.svg with all fills set to #ffffff and load it directly — no filte...
Lock Tailwind dark mode variant to class-based, never OS media query
Tailwind v4 defaults dark: utilities to respond to prefers-color-scheme (OS preference). The @variant override ensures dark: classes only activate when a .dark ...
Use inline filter style on logo link for reliable white rendering
Tailwind filter classes on img elements are inconsistent across mobile browsers. Inline style on the anchor element guarantees brightness(0) invert(1) applies e...
Force dark color-scheme so browser never applies light mode rendering
Changing from 'light only' to 'dark' in globals.css, generateViewport, and the html element style — this stops the browser from rendering SVGs and native UI in ...
Prevent logo from rendering behind nav row on mobile
The div wrapper with CSS filter created a new stacking context that conflicted with the header's backdrop-filter on mobile browsers, causing the logo to paint b...
Resolve scrollbar and mobile clipping on JumpToBar and PreviewBanner
- Add overflowY: hidden to JumpToBar inner container to prevent vertical scrollbar - Allow PreviewBanner content to wrap on mobile so text isn't clipped on port...
Replace space-y-4 with inline flex gap on footer link lists
Tailwind space-y-4 uses :where() (specificity 0) which races with CSS loading on hard refresh causing inconsistent vertical spacing. Inline styles are embedded ...
Add missing requestIntegration i18n key across all locales
The "Submit a request" button under the "Need a custom integration?" CTA on /integrations was falling back to the raw key **************** because the key wasn'...
Integration logos + accurate /integrations metadata
Integration pages and hub now display vendor logos (reusing the existing **************** assets that the homepage TechStackBanner already uses). Removed stale ...
Expand /integrations to all homepage-listed providers
Aligns the /integrations page with the actual integrations exposed by the homepage (TechStackBanner). Adds 28 new integration pages matching what the product ac...
Add Home Mortgage Brokers industry page
New industry solution page at /solutions/mortgage-brokers for mortgage brokerages and loan originators. Follows the honest platform framing: core CRM + comms + ...
Honest marketing — align pages to actual platform capabilities
Full review of marketing pages against actual KamoCRM product capabilities. Removed fabricated claims about features not built today, and repositioned industry-...
Add 92 SEO pages — industries, integrations, glossary
Implements Tier 1 of the SEO content expansion plan: three new content subsystems with a total of 92 new crawlable URLs plus 3 hub pages. 1. /solutions — 36 in...
Allow pipeline to proceed when k2m1 is intentionally down
Add continue-on-error to k2m1 deploy jobs and an if condition on translate_and_rebuild so it runs as long as k1m1 deployed successfully, regardless of k2m1 stat...
Trigger fresh run to activate deploy-first workflow
Previous run (3445, commit f93a173) completed on the old workflow before commit 4123431 could cancel-and-requeue it. Pushing an empty commit to exercise the new...
Deploy-first, translate-after, re-deploy-if-changed
Reworks the CI/CD flow so the initial deploy is no longer blocked by translation time. The pipeline now: 1. build_initial — builds and pushes image ta...
Add /alternatives hub + 9 competitor comparison pages for SEO
Adds a full competitor comparison suite targeting "X alternative" search queries. Each page includes deep narrative (2500+ words), 20-25 row feature matrix, pri...
Load analytics by default and include www subdomain in allowed domains
- Track all visitors by default since analytics is cookieless/GDPR-friendly - Only disable if user explicitly denies analytics in cookie preferences - Add www.k...
Replace Google Analytics with analytics, add event tracking across site
- Remove Google Analytics (gtag.js) from layout - Add analyticsAnalytics component: consent-aware script loading via cookie preferences, data-do-not-track, do...
Add legal fine print to footer across all locales
Adds protective legal disclaimers to the bottom of every page covering platform liability, AI/eSignature disclaimers, translation authority, terms agreement, an...
Integrate Google Analytics (G-W9K0Z7FYRV) via Next.js Script component
Fix translations — manual overrides + full delta retranslation
Manual overrides for nav/UI terms both engines consistently fail on: - nav.home, nav.company, nav.roadmap, nav.changeLog, nav.legal, nav.login, nav.documentat...
Reset translation hash — LibreTranslate OOMKill fixed, retry translations
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.