Aggiungere entità di recupero + repos; urto a 1.3.0 (SP3)
Aggiunge PasswordResetToken, SmsOtp, RecoverySession, AccountVerificationCode entità JPA con corrispondenti repository per il flusso di recupero SP3.
Aggiungi SecurityQuestionCatalog enum + sq1/2/3 + seedPhraseHash all'utente (SP3)
Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner
Anteprima del percorso attraverso il backend di Browser-rendered modal (parte di SP2)
Il EmailTemplateBrowser ora possiede l'anteprima modale direttamente, quindi il Manager non ha più bisogno di intercettare richieste di anteprima a livello di r...
Wire EmailTemplateEdit to real API
Idrata da templateApi.get, salva tramite templateApi.update. Categoria dropdown è API-driven con la garanzia di creazione di categoria in linea. Variabili picke...
Wire EmailTemplateBrowser a API reale + aggiungere la scheda Default di sistema
Sostituisce ~140 linee di dati mock con le chiamate templateApi.list(). Condizione quinta scheda 'System Defaults' appare solo per gli amministratori e i render...
Aggiungi EmailTemplatePreview modal
Si apre su Anteprima azione riga. Backend-rendered tramite templateApi.preview(); risultato visualizzato in un iframe sabbiato per isolamento stile. Corrisponde...
Eliminare inutilizzato EmailGeneralManager.tsx (~560 righe di codice morto)
Il componente non è mai stato importato da nessuna parte. I suoi occhiali (bunce handling, annullare l'iscrizione, il tracciamento delle consegne, il default da...
Aggiungi templateApi + categoriaApi + variabiliContraccia i moduli client
E' una specie di... endpoints con helper TypeScript digitati. variabiliContratti specchi SP1 TemplateKeys Javadoc così il raccoglitore variabile dell'editor mos...
Wire EmailTemplateSeedClient into ****************
Thin RestTemplate client that POSTs to EmailService's **************** after an org + owner TeamMember are persisted. Retries twice with backoff; failure throws...
Add EmailTemplateCategoryController REST endpoints
**************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Sessio...
Add EmailTemplateController REST endpoints + DTOs
Exposes /api/email/templates/* CRUD + preview + duplicate + reset-to-default + service-to-service /send + /seed-org/{orgId}. Top-level orgs (no parent) addition...
Add InternalAuthFilter for service-to-service endpoints
Validates X-Internal-Auth header on /api/email/templates/send and /api/email/templates/seed-org/* paths. Other paths bypass this filter (user session auth handl...
Aggiungi EmailTemplateCategoryService — CRUD per le categorie org-scope
Caso-insensibile nome unicità per org applicato a livello di servizio (scelga l'indice unico parziale nel DB). Cancellazione nulls categoria id sui modelli inte...
Add EmailTemplateService — CRUD + send + seed + reset-to-default
Core orchestrator for transactional email. sendToUser resolves the template, renders subject/body, picks the org's primary domain from Organization.domains, and...
Aggiungi NoReplySenderService per 'NoReply@{domain}' dall'indirizzo
Singola fonte di verità per e-mail transazionale da indirizzi. Accetta un stringa di dominio, abbassare-normalizza, restituisce "NoReply@θdomain>". I chiamanti ...
Aggiungi TemplateRenderer per la sostituzione {{var}}
Render basato su regex senza stato. I vars mancanti sostituiscono la stringa vuota e emettere un registro WARN con templateKey + orgId per attribuzione. Nessuna...
Append Z to dateCommitted so JS parses it as UTC
LocalDateTime.toString() produces no timezone designator, causing JavaScript's new Date() to treat the UTC value as local time and display timestamps 7-8 hours ...
Add EmailTemplateSeedRunner for SYSTEM + per-org seeding
Runs at @Order(20) on KamoInitializerService startup. Loads canonical templates from kamo-shared-library resources; upserts SYSTEM rows (no clobber); backfills ...
Convert PT midnight cutoff to UTC for today-count query
Commits are stored in UTC but the cutoff was a naive LocalDateTime in PT, causing yesterday-evening PT commits (00:00–06:59 UTC) to be counted as today.
Add partial unique indexes + CHECK constraints for email_templates
Hibernate ddl-auto can't generate partial unique indexes or computed-CHECK constraints. This commit adds them via the existing idempotent DDL runner pattern aft...
Bump kamo-shared-library versione a 1.2.0 per SP1 aggiunte
Aggiunge EmailTemplate, EmailTemplateCategory, TemplateStatus, TemplateKeys, CanonicalTemplate, CanonicalTemplateLoader e risorse HTML canoniche.
Aggiungi CanonicalTemplateLoader + CanonicalTemplate record
Legge i tre modelli REQUIRED (WELCOME, PASSWORD RESET, EMAIL VERIFICAZIONE) dalle risorse dei percorsi di classe E' il momento giusto. Consumato da KamoInitiali...
Aggiungi HTML canonica + JSON per WELCOME, PASSWORD RESET, EMAIL VERIFICATION
Contenuto fondamentale per le righe SYSTEM. Caricato su KamoInitializerService avvio da CanonicalTemplateLoader e UPSERTed in email templates. Parte della SP1.
Rinominare mailboxId→id e providerStatus→status nella risposta della mailbox
Allineare i nomi dei campi con le aspettative di frontend per gli elenchi delle caselle di posta dei membri.
Aggiungere EmailTemplate entità + repository
Memorizza una riga SYSTEM per template key (org id NULL, is system TRUE) plus un clone per org per template key. Riferimento morbido org id/category id. DB... t...
Aggiungi EmailTemplateCategory entità + repository
Le categorie Org-scoped per i modelli di posta elettronica. Soft BIGINT org id (no FK) corrisponde a modelli esistenti. L'unicità del nome Case-insensibile per-...
Aggiungi TemplateStatus enum + TemplateKeys costanti per modelli transazionali
Dichiara il ciclo di vita REQUIRED/CUSTOM/ARCHIVED e i tre chiavi di modello richieste (WELCOME, PASSWORD RESET, EMAIL VERIFICATION). Contratti variabili per og...
Seed KamoCRM with ALL_WORK_ELIGIBLE on fresh installs
The createOrg() helper applies this single argument to both ageReqTypeMember and ageReqTypeTeamMember; consistent with platform convention. Pairs with KamoCRMAg...
Tighten KamoCRMAgeReqUpdateRunner per review
- Restore Javadoc paragraph explaining @Order(10) rationale. - Test now references the UPDATE_SQL constant directly instead of duplicating the SQL string, so ...
Add one-time runner to migrate KamoCRM agereq to ALL_WORK_ELIGIBLE
Conditional idempotent UPDATE runs on service startup; WHERE clause checks the expected old value so re-runs are no-ops. Errors are logged and swallowed — start...
Sostituisci tutte le istanze logo CSS-filter con SVG bianco
Navigazione, SubNavigazione, Footer, SubFoooter e Preloader tutti utilizzati lo stesso filtro rotto luminosità-0 invert pattern. Sostituito con logo-full-white....
Utilizzare il logo SVG bianco nel piè di pagina invece del filtro CSS
Stessa correzione del nav — filtro CSS su img all'interno dello sfondo-filtro è inaffidabile su iOS Safari.
Protezione colore-schema con !importante contro il tema CSS override
DynamicMetaLoader può iniettare CSS remoto che vince la cascata. Aggiunta !importante assicura il colore-schema: il buio non può mai essere superato da fogli di...
Escludere i collegamenti footer e nav da TouchOptimized min-height
TouchOptimized stava impostando minHeight:44px su tutti gli elementi <a> più brevi 44px, compresi i collegamenti nav footer (~20px alto). Questo ha funzionato d...
Utilizzare il logo SVG bianco pre-rendered invece del filtro CSS
Il filtro CSS su img all'interno dello sfondo-filtro non è affidabile su iOS Safari. Generare logo-full-white.svg con tutti i file impostati su #ffffffff e cari...
Lock Tailwind variante modalità dark a base di classe, mai OS media query
Tailwind v4 defaults dark: utilità per rispondere a prefers-color-scheme (preferenze OS). L'override @variant garantisce il buio: le classi si attivano solo qua...
Utilizzare lo stile del filtro in linea sul link del logo per un rendering bianco affidabile
Le classi di filtro a vento su elementi img sono incoerenti tra i browser mobili. Lo stile inline sull'elemento di ancoraggio garantisce luminosità(0) invert(1)...
Force dark color-scheme in modo che il browser non applica mai la modalità di rendering della luce
Cambiare da 'solo luce' a 'dark' in globals.css, generareViewport, e il stile elemento html — questo impedisce al browser di rendere SVGs e UI nativo in modalit...
Evitare il logo da rendering dietro la riga nav su mobile
L'involucro div con il filtro CSS ha creato un nuovo contesto di impilamento in conflitto con lo sfondo-filtro dell'intestazione sui browser mobili, facendo dip...
Risolvere la barra di scorrimento e la clip mobile su JumpToBar e PreviewBanner
- Aggiungi overflowY: nascosto al contenitore interno JumpToBar per evitare la barra di scorrimento verticale - Consentire il contenuto di PreviewBanner per avv...
Sostituire spazio-y-4 con il gap flex in linea su liste di collegamento piè di pagina
Tailwind space-y-4 utilizza:where() (specificity 0) che corre con CSS carico su rinfresco duro causando spaziatura verticale inconsistente. In linea stili sono ...
Set Traefik externalTrafficPolicy=Local to preserve client IP
With the default "Cluster" policy, kube-proxy SNATs external traffic to the node IP before forwarding to Traefik. That caused Traefik to see the node IP as the ...
Aggiungi la richiesta mancanteIntegration i18n key in tutte le localitÃ
Il pulsante "Invia una richiesta" sotto il "Need a custom integration?" CTA Su /integrazioni stava tornando alla chiave cruda. perché la chiave non è stata defi...
Integrazione logo + accurato /integrazioni metadati
Le pagine di integrazione e hub ora visualizzano i loghi dei fornitori (riutilizzando l'esistente # I beni che la homepage # TechStackBanner utilizza già). Il l...
Espandere /integrazioni a tutti i fornitori di homepage-list
Allinea la pagina /integrazioni con le integrazioni effettive esposte da la homepage (TechStackBanner). Aggiunge 28 nuove pagine di integrazione che cosa il pro...
Aggiungi Home Mortgage Brokers industria pagina
Nuova pagina di soluzione del settore a /solutions/mortgage-brokers per ipoteca intermediari e promotori di prestiti. Segui l'onesta configurazione della piatta...
Come quello che vedi la spedizione?
Tutto questo arriva nel vostro spazio di lavoro da solo. Iniziare sul piano gratuito e leggere di nuovo questa pagina in un mese.
