Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· kamo-shared-library
Aggiungi 7 diritti di accesso al modulo (ID 112-118)
ACCESS COMMERCE, VIEW CALENDAR, ACCESS CHAT, ACCESS MAIL, ACCESS VOIP, VIEW SUPPORT, VIEW ANALYTICS
· SecurityService
Pass human-readable expiry time to email verification template
Add humanizeMinutes() helper that formats minutes as days/hours/minutes (e.g. "1 day" for 1440 min). Pass as {{expiryText}} to match updated canonical template variable.
· kamo-shared-library
Migliorare il modello di verifica e-mail — URL fallback, testo di scadenza, soggetto
- Aggiungi il link di verifica del testo semplice qui sotto pulsante come copia-paste fallback - Cambiare la variabile di scadenza da {{expiryMinutes}} a {{expiryText}} per formato leggibile dall'uomo (ad esempio "1 giorno" invece di "1440 minuti") - Aggiornare soggetto a "Verificare l'email associata al tuo account {{orgName}}"
· kamo-internal
Serializzare l'HTML completo dell'email con il frame esterno sul modello salva
- serializzareFullEmailHtml avvolge i blocchi interni nella cornice esterna di marca (Testo logo, titolo/sottotitolo, area contenuti, logo piè di pagina + nome org) utilizzando URL assoluti in modo che i client di posta elettronica possono recuperare le immagini - Impostazioni della cornice esterna (opzione logo, titolo, sottotitolo) sono salvate per bodyBlocks.outerFrame e restaurato su carico modello - handleSave ora utilizza serializeFullEmailHtml così le email inviate corrispondono al anteprima del costruttore
· SecurityService
Add code-based email verification path to /verify-email endpoint
The endpoint now handles both token (link click) and userId+code (manual 6-digit entry). Token path unchanged; code path hashes the supplied code and matches against the active token for that userId.
· KlusterServices
Add weekly image prune and journal vacuum CronJob for k1m1
CronJob runs every Sunday 3am, privileged, pinned to k1m1. - crictl rmi --prune removes unused container images - nsenter journal vacuum enforces 500MB cap - CI/CD step added to deploy-services workflow
· KlusterServices
Add Docs deploy step to workflow
· kamo-register
Richiedere *** nella pagina di verifica prima di ogni tentativo di verifica/rimanda
*** viene resettato dopo ogni azione (successo o fallimento) in modo da un fresco risolvere è richiesto per ogni tentativo successivo.
· kamo-register
Rinominare /resend-verification pagina a /verification
· kamo-register
Aggiungi /resend-verification pagina per reindirizzare il login
Crea un percorso standalone /resend-verification che accetta ?email e ?userId query params, riutilizzando PostCompletionScreen per una coerente verifica e-mail UX. Rende RegisterResponse.alias facoltativo quindi il pagina funziona senza registrazione alias disponibile.
· kamo-register
Riprogettare la schermata di verifica dell'e-mail + correggere l'errore di email del risend
- PostCompletionScreen: layout a pagina intera con sfondo org animato, carta di vetro morfismo, logo, caselle di codice visive a 6 cifre, successo / stati verificati - resendVerification: passa e-mail nel corpo della richiesta (il backend lo richiede)
· kamo-register
Abbinamento di avatar kamo-internal — 3 dimensioni, MinIO, passo di caricamento separato
La finestra di dialogo Crop ora produce tre blobs PNG (50/150/350px) tramite tela, identico AvatarManager di kamo-internal. Dopo la registrazione restituisce userId, i blobs E' stato arrestato. (nuovo punto finale non autorizzato protetto da e-mailVerified=false). avatarUrl non è più inviato nella registrazione Corpo JSON. L'errore di upload Avatar è non-grassal quindi la registrazione è ancora completa.
· SecurityService
Add register-photo endpoint for unauthenticated post-registration avatar upload
POST **************** accepts userId + file/fileSm/fileMd/fileLg without a session. Guards: user must be unverified and have no avatar yet, preventing abuse against existing accounts. Stores files to MinIO with the same path structure and sized variants as the authenticated /avatars/photo endpoint.
· kamo-login
Sostituisci l'errore EMAIL NOT VERIFIED con una ricca scheda di verifica
Quando il login fallisce con EMAIL NOT VERIFIED la carta di accesso è ora sostituita da una schermo lucido "Check your inbox": busta animata SVG con patta di apertura e scintille galleggianti, display e-mail mascherato, pulsante di e-mail con un 30-secondo SVG conto alla rovescia anello, successo/error/rate-limit avvisi di feedback, e un "torno a Accedi al link. Tutte le transizioni utilizzano AnimatePresence con scala+fade. - app/api/login/route.ts: passare tutti i campi di errore backend (non solo messaggio) userId raggiunge il client Un nuovo proxy per il SecurityService E' il momento giusto. - app/page.tsx: EmailVerify Componente della carta, e-mailVerifyState / rendLoading / rendCooldown / risendStatus stato, rendVerification callback, 30-secondo cooldown useEffect, EMAIL NOT VERIFIED rilevamento in esecuzioneLogin
· kamo-register
Estendere il caricamento di foto per supportare i formati AVIF e SVG
Aggiunge immagine/avif e immagine/svg+xml all'elenco di accettazione dell'ingresso del file e convalida regex. Aggiorna l'etichetta di suggerimento per elencare tutti i sei formati. kamo-internal già accetta immagine/* in modo da nessun cambiamento necessario lì.
· kamo-register
Aggiungi reag-easy-crop photo editor per la fase di upload di registrazione
Specchi il PhotoCropDialog di AvatarManager di kamo-internal: - finestra di dialogo raccolto si apre immediatamente dopo la selezione del file - padella trascinando, zoom tramite scorrimento o cursore (1-5×) - guida a sovrapposizione circolare schiacciata mostra l'area ritagliata - la tela produce un 400×400 PNG immagazzinato come base64 avatarUrl - il pulsante di ri-crop sull'anteprima consente all'utente di regolare dopo il salvataggio
· kamo-register
Aggiungi /api/geoip route e wire country auto-detection
Proxies client IP to SecurityService GeoLite2 lookup, quindi imposta il paese rilevato in FormMyCountry automaticamente sul carico di pagina.
· SecurityService
Add GET /api/security/geoip/me for client IP country lookup
Reads real client IP from X-Forwarded-For / X-Real-IP headers, does a GeoLite2 lookup, and returns { country_code, country_name }. Used by kamo-register's country auto-detection step.
· kamo-register
Sostituire h*** con inline kamo-capcha-widget nella fase di finitura
· kamo-register
Aggiungi /api/capcha/challenge percorso proxy
· kamo-register
Aggiungere il fornitore kamo-capcha-widget, rimuovere i pacchetti h***
· kamo-register
SP6 registro wizard refactor — diviso PersonalInfo, aggiungere reale registrazione API
- Sostituire FormPersonalInfo con FormName (campi di nome) e FormAvatar (generatore di Avatar con modalità di generazione/upload/skip per 13+) - Eliminare FormRecoveryEnforcement (campi di recupero rimossi dal flusso) - Refactor FormPassportID al layout dual-field: alias sempre mostrato, e-mail solo per 13+; callbacks sostituire finestra globale - Aggiungi il registroApi.ts con digitato ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** - Aggiungi PostCompletionScreen per la voce del codice di verifica e-mail e reindirizza SIGNED IN - Refactor RegisterFlow: dinamico elenco passo basato su dovrebbeIncludeAgeCheck ed isUser13Plus, sostituire maniglia***Submit stub con vera chiamata API, rendere PostCompletionScreen sul successo
· InitializerService
SP5 migrate KamoCRM agereq to ALL_WORK_ELIGIBLE
Add KamoCRMAgeReqUpdateRunner (order 10) — conditional idempotent UPDATE on startup; WHERE clause checks old value so re-runs are no-ops. Errors are swallowed so startup is not blocked. Update DataLoader to seed ALL_WORK_ELIGIBLE on fresh installs.
· SecurityService
Implement SP4 email verification and registration wiring
- Delete legacy email/VerificationEmail.java (hardcoded SMTP stub) - Add **************** (mirrors recovery package pattern) - Add **************** — token generation/SHA-256 hashing, send/verify/resend flows backed by **************** - Add **************** — alias+email uniqueness checks, User creation, triggers verification email on register - SecurityController: wire RegistrationService into /register endpoint, add EMAIL_NOT_VERIFIED (403) gate on login, add POST /verify-email and POST /register/resend-verification endpoints - Bump kamo-shared-library to 1.4.0
· kamo-shared-library
Aggiungi e-mailVerificazione Token entità + repo + User.alias/emailVerified + UserRepo querys; urto 1.4.0 (SP4)
· InitializerService
Add SP4 email_verification_tokens DDL + User alias/email_verified columns
· kamo-marketing
Aggiungi disclaimer del marchio al testo legale footer
· kamo-internal
Aggiungi pagine delle impostazioni dell'account per domande di telefono + sicurezza (SP3)
Addirittura... Servizio di sicurezza /api/account/*. Syncs nav in tutte le 3 posizioni.
· kamo-login
Filo reale API chiama in /recuperare pagina (SP3)
Sostituisce tutte le stube falseSubmit() con recuperoApi chiamate. Aggiunge SMS OTP verifica fase, ingresso di e-mail di seme, passo di nuova password e atterraggio di token Via ?token= Param URL.
· kamo-login
Aggiungi /api/recover proxy + recoveryApi client (SP3)

Il tuo universo ti sta aspettando.
Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.
Gratis per sempre — nessuna carta di credito richiesta