Retrimite verificarea folosind e-mail nu userId, înainte X-forwarded-Host
SecurityService /register/resend-verification se așteaptă la e-mail în organism; nu userId (pe care răspunsul de eroare de autentificare nu îl include niciodată...
Add dao.repositories to JPA scan so EmailTemplateRepository is found
Same pattern as KamoInitializerService — explicit basePackages overrides default scanning and must include every package that has repositories.
Treceți corpul de eroare din amonte prin proxy de securitate în loc de mesaj generic
Din episoadele anterioare: mesaj de eroare de la Serviciul de Securitate. Acum transmite direct codul de stare şi corpul.
Align registration field names and response shape with frontend contract
Frontend sends nameFirst/nameLast but controller read firstName/lastName, causing 400 "First name is required". Success response now returns {status, userId, al...
Preveniți vârsta vecheReqType cache de la afișarea incorectă a verificării vârstei
- Traseu Org: reduce Redis TTL de la 24h la 5min și adaugă vârstaReqTypeMember să se oprească detectarea astfel încât câmpurile de securitate să rămână proaspet...
Add SecurityService and dao.repositories to EnableJpaRepositories scan
UserPhoneLookupRepository in recovery package was not picked up because EnableJpaRepositories only listed dao.repos and commerce. Added the SecurityService base...
Setează titlul filei browser-ului la "Registru - {org name} "
Name titlu la "Registrul - {org.title} " o dată încărcat org. Retragere statică în layout.tsx schimbat de la "Crea următorul App" la "Registru.".
Rezolvați erorile TS din pașii utilizați înainte de declarație și în stilul Capcha
Mişcaţi-vă! UtilizaţiMemos mai sus de utilizareEfecte care depinde de acestea; importa CSSVariables tip și să-l folosească pentru recuzita stil Capcha-widget.
Add dao.repositories to EnableJpaRepositories scan
EmailTemplateRepository lives under dao.repositories.email, not dao.repos, so it was not picked up as a Spring bean.
Adaugă DEFAULT fals la definiția e-mail verificat coloană
Hibernate's schema migrator generează ALTER Table fără un implicit, se încadrează pe tabele cu rândurile existente. coloanăDefiniție o forțează să include DEFAU...
Curățare corectă a ascultătorului Capcha și resetarea stării verificate la ieșirea pe treaptă
Resolve duplicate emailTemplateServiceClient bean conflict
**************** and **************** were identical @Components with the same default bean name, causing **************** at startup. Delete the duplicate in r...
Bump kamo-shared-library la 1.4.0
Docker Stage 1 construiește kamo-shared-library main (acum 1.4.0) și instalează el la local .m2; pompa de serviciu încă referindu-se la 1.0.0 care Maven nu a pu...
Aplică corectitudinea SP6 și stabilirea calității implementării
C1: utilizați NEXT PUBLIC H*** SITE KEY env var în loc de hardcoded placeholder C2: schimbare RegisterResponse.userId și toate params API de la număr la șir (Co...
Address 4 code-review findings in registration and login paths
- Hide raw exception message in /register 500 path; log instead - Fail-closed (503) on email-verified DB check failure in login - verifyEmailToken throws if use...
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 ...
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.
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.
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...
Backlink țintă la www.kamocrm.com (gazda canonică)
Componenta PoweredByKamo expediată spre apex https://kamocrm.com/ dar gazda canonică kamo-marketing este https://www.kamocrm.com/. Actualizarea tuturor celor tr...
Clean up legacy analytics deployment on each CI run
Delete old analytics deployment, service, and ingressroute that conflict with the kamo-analytics deployment managed by its own CI/CD pipeline.
Strip X-Frame-Options header in iframe-compatible middleware
Set X-Frame-Options to empty string to remove the SAMEORIGIN value that was being inherited, allowing CSP frame-ancestors to control iframe embedding instead.
Pictograma Analytics este poziţionată doar pe pictogramă şi ultimul în setul de pictograme
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.
