Adaugă entități de recuperare + repo; cucui la 1.3.0 (SP3)
Adaugă ParolaResetToken, SmsOtp, Sesiune de recuperare, Codul de verificare a contului Entitățile JPA cu depozite corespunzătoare pentru fluxul de recuperare SP...
Adaugă întrebare de securitateCatalog enum + mp1/2/3 + semințePhraseHash la Utilizator (SP3)
Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner
Previzualizarea traseului prin modul de predare a backendului Browser (parte din SP2)
EmailTemplateBrowser deține acum modul Preview direct, astfel încât Managerul nu mai trebuie să intercepteze cererile de previzualizare la nivel de rând și redi...
Wire EmailTemplateEdit to real API
Hidrate din șablonApi.get, salvează prin șablonApi.actualizare. Categorie Dropdown este condus de API cu inline categorie-creare de costuri. Variabile Alegeți c...
Wire EmailTemplateBrowser to real API + add System Implicits tab
Înlocuiește ~140 linii de date simulate cu șablonApi.list() apeluri. Condiționat fila a cincea "System Implicits" apare numai pentru administratori de top-org ș...
Adaugă e-mailTemplatePreview modal
Se deschide pe rand de actiune Preview. Previzualizare rezultat afişat într-un iframe cu nisip pentru izolare stil. Se potriveşte Traseul exact de cod care trim...
Ștergeți e-mailGeneralManager.tsx (~560 linii de cod mort)
Componenta nu a fost importată nicăieri. Cârligele sale (manipularea sa, dezabonare, livrare de urmărire, implicit din email) nu a avut suport și au fost pur co...
Adaugă șablonApi + categorieApi + module client contracte variabile
Wraps SP1's /api/email/templels/* and *************** criteriile de evaluare cu ajutorul tipScript. contracte variabile oglinzi SP1 ȘablonKeys Javadoc astfel în...
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...
Add EmailTemplateCategoryService — CRUD for org-scoped categories
Case-insensitive name uniqueness per org enforced at service layer (matches the partial unique index in the DB). Deletion nulls category_id on affected template...
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...
Adăugare fără răspunsSenderService pentru 'NoReply@{domeniu}' from-adresă
O singură sursă de adevăr pentru e-mail tranzacţional de la adrese. Acceptă domeniu șir, minuscule-normalizează, întoarce "NoReply@<domain>." Apelantii trebuie ...
Adaugă expeditor cu șablon pentru substituția {var}}
Regex fără stat. Vars lipsă substituie șir gol și emite un jurnal WARN cu șablonKey + orgId pentru atribuire. Nicio scăpare HTML în v1 Parte din SP1.
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 versiune la 1.2.0 pentru suplimentele SP1
Adaugă e-mailTemplate, E-mailTemplateCategory, TemplateStatus, TemplateKeys, Template canonic, Template canonicLoader, și resurse HTML canonice.
Adaugă înregistrare canonicăTemplatăLoader + Templier canonic
Citește cele trei șabloane solicitate (BINE, PASSWORD RESET, EMAIL VERIFICARE) din resurse de clasă la Nu-ţi face griji. Consumat de KamoInitializerService for ...
Adaugă HTML canonic + JSON pentru Welcome, PASSWORD RESET, EMAIL VERIFICARE
Conținutul sursei adevărului pentru rândurile de sistem. Încărcat la KamoInitializerService Startup by CanonicalTemplateLoader and UPSERTED into email templels....
Redenumește căsuța poștalăId→id și furnizorulStatus→status în răspunsul listei de căsuțe poștale
Aliniază numele de câmp cu așteptările frontend pentru listarea căsuțelor poștale membre.
Adaugă entitate e-mailTemplate + depozit
Stochează un rând de sistem pe șablon cheie (org id NULL, is system TRUE) plus o clonă per org per șablon cheie. Soft-reference org id/category id. DB- marca te...
Adaugă entitate din categoria EmailTemplate + depozit
Categorii telescopice pentru șabloane de e-mail. BIGINT moale org id (fără FK) se potriveşte cu modelele existente. Denumirea insensibilă a cazului unicitatea p...
Adaugă șablonStatus enum + ȘablonChei constante pentru șabloane tranzacționale
Declară stările de viaţă cerute/CUSTOM/ARHIVED şi cele trei tastele de șablon necesare (BUN VENIT, PASSWORD RESET, EMAIL VERIFICARE). Contracte variabile pentru...
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...
Se înlocuiesc toate cazurile de logo CSS-filtru cu SVG alb
Navigație, SubNavigație, Footer, SubFooter și Preloader toate utilizate acelaşi model inversat de filtru spart. Înlocuit cu logo-ul complet alb.svg peste bord.
Utilizați logo-ul SVG alb în subsol în loc de filtru CSS
Acelaşi fix ca şi filtrul CSS pe img interior-filtru fundal este nesigur pe iOS Safari.
Sistem de culoare de pază cu !important împotriva CSS tema suprascrie
DynamicMetaLoader poate injecta de la distanță CSS care câștigă cascada. Adăugarea !important asigură sistemul de culori: întunericul nu poate fi niciodată supr...
Excludeți legăturile de bază și de navigare de la tactilOptimized min-înălțime de aplicare
TouchOptimized a fost setarea minHeight:44px pe toate elementele <a> mai scurt decât 44px, inclusiv link-uri de la sol nav (~20px inaltime). Acest lucru a fugit...
Utilizați logo-ul SVG alb pre-referent în locul filtrului CSS
Filtru CSS pe img interior fundal-filtru este nesigur pe iOS Safari. Generează logo-ul complet-alb.svg cu toate umplerile setate la #ffffff și încărcați-l direc...
Blochează varianta modulului închis în timp închis la interogarea pe bază de clasă, fără interogare media OS
Tailwind v4 implicits dark: utilităţi pentru a răspunde la favorite-color-sistem (preferinţă OS). @varianta suprascrie asigură întuneric: clasele activează doar...
Utilizați stilul de filtrare Inline pe link-ul logo pentru redare alb de încredere
Clasele de filtre de pe elementele img sunt inconsecvente pe browserele mobile. Stilul Inline pe elementul ancoră garantează luminozitatea (0) inversat (1) se a...
Forțează sistemul de culoare închisă astfel încât browserul să nu aplice niciodată redarea modului de lumină
Schimbarea de la "doar lumina" la "întuneric" în globals.css, generaViewport, și html element stil în modul lumina, care a fost cauza logo-ul să apară negru pe...
Prevenirea logo-ul de redare în spatele rândului nav pe mobil
Ambalajul cu filtru CSS a creat un nou context de stivuire care a intrat în conflict cu filtrul de fundal al antetului pe browserele mobile, ceea ce face ca log...
Rezolvați bara de defilare și clipping mobil pe JumpToBar și PreviewBanner
- Adăugați deversareY: ascuns la SariToBar container interior pentru a preveni bara de defilare verticală - Permite PreviewConținutul Banner să înfășureze pe mo...
Înlocuiţi spaţiul-y-4 cu decalajul flex de linie pe listele de legături footer
Spațiu-y-4 utilizează:unde (specificitatea 0) care concurează cu CSS încărcare pe reîmprospătare dură care cauzează o distanță verticală inconsecventă. Inline s...
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 ...
Adaugă cerere lipsă Integrare i18n cheie în toate localităţile
Butonul "Trimite o cerere" de la "Ai nevoie de o integrare personalizată?" CTA Pe /integratii a fost în scădere înapoi la cheia brut *************** Pentru că c...
Sigle de integrare + metadate exacte /integrații
Pagini de integrare și hub afișează acum logo-urile vânzătorilor (refolosind logo-urile existente Avem nevoie de ajutor. TechStackBanner folosește deja). Limba ...
Extinde/integrarea la toți furnizorii listați pe prima pagină
Aliniază pagina /integrații cu integrările reale expuse de pagina principală (TechStackBanner). Adaugă 28 de pagini noi de integrare potrivite ce produs oferă d...
Adaugă acasă Pagina industriei Ipotecar Brokers
Pagina nouă de soluţie pentru industrie la /soluţii/credite ipotecare brokeri și inițiatori de credite. Urmează încadrarea corectă a platformei: core CRM + comm...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
