Force-dynamic on changelog API routes to prevent stale date caching
Next.js was statically caching these GET route handlers at build time, freezing new Date() to the build date so today's changelog count never updated.
Switch preview-banner-text to inline flow so changelog link sits on the same line
Show today's changelog count in preview banner with link to /changelog
Handle applicablePlanIds and applicableBillingCycles as string arrays
These fields are typed as string[] but had .split(",") calls on them, causing TypeScript build failures.
Add static fallback for offer page when subscription API unavailable
The **************** table doesn't exist in production yet, so the API returns an error. Fall back to hardcoded promotion and plan data so the offer page works ...
Update ApiPromotion type to match new List<String> backend response
applicablePlanIds and applicableBillingCycles are now arrays, not JSON strings.
Server-side stats for real totals, infinite scroll, accurate filter counts
Stats bar and filter pill counts now come from /api/changelog/public/stats (real DB aggregates, not loaded-page counts). Replaced Load More button with Intersec...
Force changelog page to render dynamically, not statically at build time
Add case-insensitive text replacements for changelog display
Replaces internal tool names with public-facing names (Docs->Docs, Meet->Meet, Capcha->Capcha, Avatar Creator->Avatar Creator, etc.) in titles and descriptions ...
Add Live Change Log page with timeline UI, filters, and stats
Server-side fetches changelog from SecurityService, client component provides project/type filtering, date grouping, expandable descriptions, and paginated load...
Make hexagon icon borders thicker and visible
Replace invisible CSS border (clipped by clip-path) with a ::before pseudo-element border that extends 3px outside the hexagon shape.
Auto-flatten 3D scroll elements when user stops scrolling
Adds scroll-idle detection so perspective-rotated elements animate to flat after 300ms of no scrolling, instead of staying tilted. Once flat, they stay flat unt...
Redesign demo page with webinar scheduling integration
Replaces the placeholder demo form with a three-phase booking flow: 1. Lead capture form (creates lead with KamoCRM Platform market) 2. Webinar scheduling (join...
Update footer social links with real URLs and correct icons
Replace GitHub with Instagram, Twitter icon with X brand icon, add LinkedIn. All external links open in new tab with noopener noreferrer. Update Organization JS...
Add programmatic OG image generation for all routes
Uses Next.js opengraph-image.tsx convention with Satori/Resvg rendering pipeline. Each route gets a branded 1200x630 image with Inter font, dark background, gra...
Match integrations banner scroll speed to built-with banner
Increased duration from 30s to 56s so both marquees scroll at ~88px/s regardless of item count.
Add 9 e-commerce platform logos to integrations banner
Added BigCommerce, WooCommerce, Magento, Squarespace, PrestaShop, Wix, OpenCart, Ecwid, and Shift4Shop to the "Integrates With" marquee, interleaved with existi...
Standardize brand naming across site — Kamo → KamoCRM / KamoCRM Inc.
Legal pages (terms, privacy, GDPR, footer copyrights) now use "KamoCRM Inc." for the corporate entity. Product/brand references across marketing copy, metadata,...
Reduce hero section padding on mobile so headline is fully visible
Tightened pt and mb spacing at base breakpoint so "Unify Your Clients," is no longer pushed off-screen on portrait phones where the fixed banner and nav consume...
Make preview banner fixed to viewport and reduce hero text size on mobile
Banner is now position:fixed so it stays visible while scrolling, with body padding injected dynamically to prevent content overlap. Hero headline reduced from ...
Make preview banner responsive with dynamic height and raise chat z-index
Banner now measures its own height via CSS variable so nav/content adapt automatically when text wraps on small screens. Chat widget z-index raised above the ba...
Comprehensive pricing integration audit — make all pages API-driven
Calculator page: - Split into server component + CalculatorClient - All plan prices, addon prices, bundle prices now from API - Promo code validation against li...
Remove all 14-day trial references from pricing and offer pages
Trial removed from Starter and Business plans. Free plan serves as the try-before-you-buy experience. Updated CTA buttons ("Get Started"), FAQ, footer text, off...
Convert /pricing page from hardcoded data to live API-driven catalog
- Split pricing page into server component (data fetching) and client component (interactive UI with animations, toggles, FAQ) - Add pricing-catalog.ts utilit...
Hide 30% promo banner on calculator, show dynamically when discount code applied
Mobile chat is minimized by default, opens fullscreen with no in-between
On mobile (<640px): always starts minimized regardless of first visit. Tapping the tab opens fullscreen. Minimize returns to tab. No 70vh intermediate state — j...
Raise z-index above nav, add mobile bottom sheet, update welcome message
- Bumps widget z-index to 10002 (nav is 10001) so maximized mode isn't hidden - Mobile: renders as a 70vh bottom sheet with drag indicator and rounded top cor...
Remove unreachable minimized state check to resolve TypeScript narrowing error
Wrap PublicChatWidget in client component to resolve ssr:false in Server Component error
Next.js 16 disallows dynamic() with ssr:false in Server Components. Adds PublicChatLoader as a client component wrapper.
Set PUBLIC_CHAT_API_KEY and API_SERVICE_URL in K8s configmap
Configures the public chat API key and internal API service URL for the chat widget to communicate with backend services in production.
Add hybrid popup chat widget with AI Chat and Live Support modes
Adds a production-quality chat widget that auto-opens for new visitors with two modes: AI Chat (REST-based with RAG integration) and Live Support (WebSocket rea...
Default contact form to Unspecified topic and link footer email icon to contact page
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.