Changelog
What's new.
Every improvement to the platform, as it ships.
· kamo-shared-library
Add multi-language support with 26 languages, update CountryType with language mappings, replace BitcoinJ with web3j crypto
· kamo-register
Replace emoji icons with high-quality Material UI icons for avatar styles
· kamo-register
Age Check improvements and Passport ID enhancements
· kamo-register
Compact avatar creator with side-by-side gradients and age check improvements
· kamo-register
Innovative compact avatar creator with advanced color picker and eyedropper
· kamo-register
Enhanced avatar creator with comprehensive Avatar Creator options and fixed container sizing
· kamo-register
Age-based Personal Info page with avatar creator for under 13 and photo upload for 13+
· kamo-register
Add modern Avatar Creator avatar creator to Personal Info page with compact name fields
· kamo-register
Modernize Personal Info component and button styling
PERSONAL INFO MODERNIZATION: - Remove card wrapper for cleaner, integrated look - Update header to use var(--color-primary) from globals.css - Increase icon size to 36px for better visual hierarchy - Remove unnecessary Divider - Increase field spacing to 3 (from 2) for better breathing room - Add consistent 2px border width to all text fields - Add 'Optional' helper text to Middle Name field - Remove Card, CardContent, Divider from imports BUTTON STYLING: - Back button now uses var(--color-primary) color - Next/Finish buttons use var(--color-primary) background - Hover states use var(--color-primary-light) - Increased font weight to 600 for better readability - Professional hover effect on Back button - Consistent styling across all navigation buttons - CircularProgress on Finish button uses white color
· kamo-register
Dynamic Member Alias/E-Mail mode and UI improvements
HEADER UPDATES: - Change title from 'Create KamoCRM Passport' to 'Join {OrganizationName}' - Update sign-in text to 'Already have a {Organization Name} member?' - Fix sign-in link to swap register.* with login.* dynamically PASSPORT ID -> MEMBER ALIAS/EMAIL: - Ages 12 and under: 'Member Alias' with passport ID validation - Ages 13 and up: 'E-Mail' with email validation - Dynamic label: '{Organization Name} Member Alias' or '{Organization Name} E-Mail Address' - Email mode: validates email format, checks for @ symbol, domain, etc. - Member Alias mode: validates alphanumeric + hyphens, no consecutive hyphens - Show appropriate icons (EmailIcon vs BadgeIcon) - Display success chip when valid - Check uniqueness via different endpoints based on mode MY COUNTRY FIX: - Remove memoization that was blocking country selection - Simplify click handlers to always call handleInputChange - Users can now select any country (not stuck with detected) - Fix useEffect dependency to prevent infinite loops VALIDATION FIX: - Fix duplicate activeStep === 2 validation blocks - Password validation now correctly occurs on step 3 - Member Alias/Email validation on step 2 - Personal Info validation on step 4 - Proper error messages with dynamic field names
· kamo-register
Implement comprehensive country-based ATF verification and slide reordering
MAJOR CHANGES: - Rename FormWelcome to FormAgeCheck component - Reorder registration flow: MyCountry first (step 0), AgeCheck second (step 1) - Bump all other slides up by one position - Update step validation logic for new ordering ATF VERIFICATION: - Add isAlcohol, isTobacco, isFirearms flags to Organization interface - Check user country ATF categories against organization offerings - Redirect to sorry page if org has prohibited content for user's country - Use HIGHER age requirement between user country and org country - Generate dynamic ATF text (e.g., 'alcohol and tobacco' vs 'alcohol, tobacco, and firearms') COUNTRY-SPECIFIC FEATURES: - Update CountryType with legalAdultAge, legalAtfAge, legalAtfCategories - Support variable age requirements (18, 19, 20, 21 depending on country) - Display correct ATF products based on what's legal in both countries - Examples: US=21 for ATF, Japan=20 for alcohol/tobacco only, Kuwait=21 tobacco only USER COUNTRY TRACKING: - MyCountry component now sets userCountry field instead of country - AgeCheck receives userCountry as prop - Age verification uses max(userCountryAge, orgCountryAge) SORRY PAGE ENHANCEMENTS: - Add COUNTRYPROHIBITED reason type - Hide Go Back button for country prohibition cases - Show specific prohibited category (alcohol, tobacco, firearms) - Only allow Exit Website option for prohibited content UI IMPROVEMENTS: - Change 'and/or' to 'and' throughout ATF text - Rename all Welcome references to Age Check - Update step labels and navigation
· SecurityService
Return organization ATF fields in org/domain endpoint
- Return isAlcohol, isTobacco, isFirearms boolean flags - Enable frontend to check content against user country restrictions - Support dynamic ATF text generation based on org offerings
· kamo-shared-library
Add IS_ALCOHOL, IS_TOBACCO, IS_FIREARMS fields to Organization
- Add isAlcohol boolean field (nullable=false, default false) - Add isTobacco boolean field (nullable=false, default false) - Add isFirearms boolean field (nullable=false, default false) - Enable country-specific content restriction checking - Support ATF category verification during registration
· kamo-register
Implement country-specific legal ages and dynamic ATF text
- Update CountryType to include legalAdultAge, legalAtfAge, legalAtfCategories - Dynamically display age requirements based on country (18, 19, 21, etc.) - Generate ATF text based on what's legal (alcohol, tobacco, firearms combinations) - Use organization address fields from backend for legal ages - Fallback to CountryType lookup if address fields not provided - XXX_RATED page shows country-specific adult age - ATF_ONLY page shows country-specific ATF age and relevant products - Age validation uses country-specific thresholds - Support variations like 'alcohol and tobacco' for countries without firearms
· SecurityService
Include country legal ages in organization endpoint
- Return country date format and separator in org/domain endpoint - Include legalAdultAge, legalAtfAge, and legalAtfCategories - Enable frontend to dynamically display age requirements - Support country-specific age verification text
· kamo-shared-library
Add legal age fields and ATF categories to CountryType
- Add legalAdultAge field for adult content verification - Add legalAtfAge field for alcohol/tobacco/firearms age requirements - Add legalAtfCategories field to track what is legal per country - Update all 197 countries with appropriate values - Countries use appropriate ages (18-21) based on local laws - ATF categories reflect local regulations (some countries ban alcohol, guns, etc.) - Support country-specific age verification for registration
· kamo-register
Align XXX/ATF buttons left-right and add meaningful icons
- Change button layout from centered to space-between (left and right alignment) - Add ExitToApp icon to EXIT button (startIcon on left) - Add VerifiedUser icon to ENTER button (endIcon on right) - Icons emphasize the importance of the age verification choice - Apply to both XXX_RATED (18+) and ATF_ONLY (21+) pages
· kamo-register
Update sorry page buttons to Go Back and Exit Website
- Change Home button to Exit Website with error color styling - Implement window.close() functionality to close tab/window - Add fallback to redirect to about:blank if close is blocked by browser - Keep Go Back button with primary color - Improve button styling with consistent borders
· kamo-register
Add EXIT and ENTER buttons for XXX_RATED and ATF_ONLY age verification
- Remove birth date input forms for XXX_RATED and ATF_ONLY - Add EXIT button that redirects to sorry page - Add ENTER button with age confirmation (18 for XXX, 21 for ATF) - Style EXIT as outlined button and ENTER as contained button - Hide standard Next/Back navigation buttons for these special pages - Center buttons with proper spacing and styling - Update text to match requirements exactly
· kamo-register
Enhance age verification with modernized date inputs and comprehensive validation
- Add polished, card-based date input UI with visual feedback - Implement comprehensive date validation (valid ranges, actual calendar dates, not future) - Show real-time validation status with icons and color-coded borders - Display clear, detailed error messages for invalid dates - Add success feedback showing calculated age when date is valid - Improve UX with proper field ordering based on country format - Add validation before proceeding to next step - Handle KIDS_ONLY age selection with validation - Integrate age verification flow with main registration form
· kamo-register
Implement comprehensive age verification system with country-specific date formats
- Add WORLD_WIDE_BAN to AgeReqType enum - Update CountryType with date format and separator properties - Create /sorry page for age restriction redirects - Completely rewrite FormWelcome with dynamic age verification - Add special welcome pages for XXX_RATED and ATF_ONLY - Implement age validation for all AgeReqType cases - Move age field from PersonalInfo to Welcome component - Add birth date support for accurate age calculation - Support country-specific date input formats (MDY/DMY/YMD)
· SecurityService
Add registration and org domain endpoints for age verification
· kamo-shared-library
Add date format and separator fields to CountryType enum
· APIService
Add domain-agnostic IngressRoute for api subdomain
· kamo-register
Add domain-agnostic IngressRoute for register subdomain
· kamo-internal
Add domain-agnostic IngressRoute for internal subdomain
· kamo-login
Add domain-agnostic IngressRoute for automatic SSL and routing
- Added k8s/ingressroute.yaml with HostRegexp pattern for login subdomain - Updated CI/CD to deploy IngressRoute automatically - Enables Cloudflare-like automatic SSL certificate generation - Works with any domain pointed at the cluster (kamocrm.com, baddi3.com, etc.) - Added k8s/README.md documenting the configuration
· InitializerService
Update timezone field to use TimezoneType enum - Changed User.timezone from String to TimezoneType enum - Updated .gitignore to exclude m2-repository cache - Supports timezone hierarchy: Member > User > Organization
· kamo-shared-library
Add comprehensive data storage imaging system with timezone support - Added TimezoneType enum with UTC offset fields and conversion methods - Added timezone fields to Organization (required, defaults to PACIFIC), User (nullable), and Member (nullable) - Updated EmbRecordState to use LocalDateTime for UTC date/time storage - Created 16 new entity classes for imaging system (Img, ImgFolder, ImgDat, etc.) - Created 5 new enum types (ImageAssocType, ImageMimeType, ImageSetType, etc.) - Created 10 ne...
· kamo-internal
Add themed colors and background logo to calendar page

Your universe is waiting.
Start free in minutes. Add products whenever you are ready — no migration, no new logins.
Free forever — no credit card required