Traseu toate apelurile esig API prin forwardToApi() pentru a remedia eșecurile de salvare
Toți cei 10 responsabili de traseul esig indicau către ESIG SERVICE URL care rezolvă unui proxy kamowsesig-service inexistent. Înlocuiți fiecare handler cu forw...
Replace upsertSigners with full delete+insert to handle frontend temp UUIDs
The frontend assigns temporary crypto.randomUUID() values to newly-added signers before any backend call. The previous upsert-by-uid logic would throw 404 for t...
Add /api/esig/** gateway routing to ESigService
Route all /api/esig/** requests through the existing API gateway to the dedicated ESigService (kamowsesig-service) instead of the non-existent proxy target. Add...
Adaugă opţiunea poziţiei pe strat la modificatorul de filigran (în spatele/ deasupra conţinutului)
- Modificator de semnal de apă câștigă un câmp 'strat': 'în spatele' 'în spate' 'în spate' (defaults to 'behind') - ModifierLayer ia acum un "pass" recuzită ('s...
Adaugă modificator de filigran în set de unelte esign
- Tipul modificatorului de filigran: logoType (complet/simplu), startPage, endPage, rotation (−180 - Implicit la logo-ul complet, −45° rotatie, 50% dimensiune, ...
Afișează numai un indiciu despre formatul numărului paginii atunci când este selectat personalizat
Extindeți modificatorul etichetei la grila completă de 8 poziții cu rotație LM/RM
- LabelModifier.position folosește acum ModifierPosition8 (aceeași grilă de 8 poziții ca Numere de Pagină) - LM (Middle Left): fiecare linie redată ca o pilulă ...
Adăugați instrumente/modificatoare tab-uri pentru a esigna Toolbox cu suprafeţe de pânză live
- Split Toolbox bara laterală stângă în Tools and Modificators tabs - Fila modificatoare: lista divizată + panoul setărilor (Opțiunea B) - Modificator de numere...
Comută previzualizare-banner-text la fluxul de linie, astfel încât link-ul Changelog stă pe aceeași linie
Poziţionarea corectă a unghiilor şi restabilirea rotaţiei transforma
Două microfoane în ThumbnailCanvas: 1. Înlocuit înălțime: \ element poziționat Padding-top) cu înălțimea de la lățimea stabilită explicit. Lățimea este acum...
Afișează numărătoarea jurnalului de astăzi în banner previzualizare cu link la /changelog
Fix floating zoom control visibility and polish thumbnail placeholders
- Move floating zoom controls outside the scroll container and use position:absolute so they remain visible at all times regardless of scroll position; offs...
Page selection with animated glow border synced between canvas and thumbnail sidebar
- DesignTab holds selectedPageIndex as the single source of truth - Clicking any page in the main canvas selects it (onPageSelect) - Clicking a thumbnail select...
Move scroll ownership from PdfCanvas to canvasContainerRef
PdfCanvas root Box previously had overflow-auto + h-full, making it its own scroll container. This meant: - scrollbarGutter: stable on canvasContainerRef had no...
Fit to Width calculates actual container width instead of resetting to zoom 1
Reads **************** (which accounts for the stable scrollbar gutter) and the page's natural width via **************** then computes fitZoom = (availableWidt...
Replace all hardcoded purple with var(--color-primary) on Settings & Signers page
Signers icon, icon background, count badge, Add Signer buttons, Add First Signer button, empty-state illustration tint, add-another hover, and the ALL_OF_TYPE s...
Auto-select first signer, fix zoom control scrollbar gap, animate properties panel
- Toolbox auto-selects the first signer's UID when signers go from 0→1 - Canvas container uses scrollbar-gutter: stable so the sticky zoom/undo control mainta...
Reorder tabs, gate field tools by signer, redesign Settings & Signers tab
- Design is now the first tab; Settings & Signers is second - Toolbox shows "Add Signer" CTA (navigates to Settings) when no signers exist - Signature Tools, Id...
Render field controls as actual-looking form elements with signer color tinting
Each field type now renders a visual representation of the real control (text input, checkbox, toggle, dropdown, radio group, date picker, etc.) tinted with the...
Remove fixed height and scroll bars from field properties panel
The panel had two vertical scrollbars: 1. DesignTab wrapper had height: 200 + overflowY: auto 2. FieldPropertiesPanel root had height: 200 + overflow: hidden, ...
Defer set Totalpages până după bucla dim PDF pentru a preveni saturarea lucrătorului PDF.js
Pe un PDF de 50 de pagini, asteptare set TotalPages înainte de getPage () dimension loop mounts Toate cele 50 de componente ThumbnailCanvas imediat. Fiecare sca...
Expand component scan and add full datasource/JPA/Redis/MinIO config
ConversionServiceApplication was only scanning com.kamo.ConversionService, missing all shared library beans (ImageService, MinIOStorageService, MemberRepository...
Add kamo-shared-library build stage to resolve missing dependency
The Dockerfile was trying to fetch kamo-shared-library from Maven Central, which doesn't exist there. Mirror the SecurityService pattern: clone the shared libra...
Migrați toate rutele de imagistică API de la SecurityService la TransformationService/DocsService
Încarcă rute acum apelați la serviciul de conversie direct prin CONVERSION SERVICE URL: - Post/api/imagine/upload → /api/conversion/imaging/upload - POST / api/...
Elimina ImagingController și fasole/imagine mutat la Transformareservice și DocsService
Încarcă criteriile de evaluare în direct în TransformationService la /api/conversion/imaging/*. Toate obiectivele de management și de descărcare trăiesc acum în...
Add imaging management endpoints — move all non-upload imaging from SecurityService
- Add 17 imaging DTOs to beans/imaging/ (folders, documents, templates, updates) - Add ImagingController at /api/docs/imaging with all management + download end...
Add imaging upload endpoints — move all upload logic from SecurityService
- Add JPA, Redis, NATS, kamo-shared-library, JJWT, commons-io, jackson-hibernate6 to pom.xml - Add datasource, Redis master/replica, NATS, MinIO config to appli...
Upgrade to Next.js 16.2.3, TypeScript 6.0.2, Node 24, React 19 types
- Pin lângă 16.2.3 și eslint-config-next pentru a se potrivi - upgrade typescript to exact 6.0.2, @types/node to ^24 - Înlocuiți mișcarea cadru cu mișcarea ^12 ...
Delegate thumbnail generation to ConversionService, remove PDFBox dependency
ThumbnailGenerationJob now POSTs the converted PDF to ConversionService **************** unzips the response, and stores each thumb_p{n}.png in MinIO. PDFBox re...
Generație de miniatură delegată la ConversieServicii, elimina dependența de PDFBox
generați șiStoreThumbnails POSTs acum PDF convertit la serviciul de conversie - Nu. Unzips răspunsul, stochează fiecare Degetul mare p {n}.png în MinIO, și publ...
Add ThumbnailService and POST **************** endpoint
Accepts a PDF file, renders each page at 150 DPI via PDFBox, packs per-page PNGs into a ZIP (thumb_p0.png, thumb_p1.png, …) and returns it. Centralises all thum...
Adaugă Degetele de sus pas pentru a încărca indicatorul de progres, cale generatoare thumbnails stadiul WS
Generație sincronă per pagină miniatură în timpul uploadului șablonului cu progres granular WS
- Adăugați dependență PDFBox la pom.xml - După stocarea PDF convertit, redați toate paginile prin PDFRenderer și încărcați fiecare ca {id} thumb p{n}.png - Even...
Preveniți stivuirea paginii, fixați tăieturi de miniatură, adăugați miniaturi server-side cu PDF.js Fallback
- Adăugaţi flexShrink: 0 la divs pagină în PdfCanvas astfel încât paginile nu comprima în coloana flex - Adăugaţi flexShrink: 0 la elementele miniatură în Pagin...
Adaugă GET - Nu. Obiectivul final pentru a servi unghiile PNG per pagină
Generate per-page thumbnails for all PDF pages, store as {id}_thumb_p{n}.png
Adaugă degetul marePageCount field and findNeedingPageThumbnails interogare pentru suport miniatură pe pagină
Redare PDF Eager, normalizare la scară naturală, nici un pergament orizontal
- PdfCanvas: înlocuiți IntersectionObserver cu randare dornic-toate-pagini. Abordarea bazată pe observator nu era de încredere atunci când începe fila de proiec...
Upgrade to Next.js 16.2.3, TypeScript 6.0.2, Node 24, React 19 types
- Next.js 16.2.3 cu Turbopack ca server implicit dev - TipScript 6.0.2 cu tinta syntaxaDoar si ES2022 - @types/react@^19 and @types/react-dom@^19 (react 19 type...
Elimina conflictul Child DOM în redarea miniatură PDF
Replace container.innerHTML + apendiceStencils cu un ref. Vechea abordare a fost curăţată prin reacţie Noduri DOM direct, cauzând reconcilierea Reaction pentru ...
Se manipulează planurile aplicabile și se aplicăBillingCycles ca și matrice de șir
Aceste câmpuri sunt tastate ca string[], dar au avut .split(,"") apeluri pe ele, cauzarea de eșecuri de construcție TypeScript.
Add CockroachDB transaction retry for template init endpoint
CockroachDB serializable isolation can trigger RETRY_SERIALIZABLE on the read-then-write pattern in initTemplate. Retries up to 3 times with backoff when detect...
Restaurează rute proxy la OTK auth, eliminați ajutor esigProxy neutilizate
OTK este mecanismul corect de autism a ocolit modelul de securitate stabilit. Toate rutele proxy esig folosesc acum generaOTK de la apiProxy.ts din nou.
Correct OTK Redis key format and add imaging template list endpoint
OTK keys use OTK<id> and ***<id> (no colon) matching the Next.js proxy. Added POST /api/esig/templates/list to query imaging templates via shared library ImgRep...
Utilizați antete de sesiune directă în loc de OTK pentru rutele proxy ESigService
Citește *** sesiune de la Redis în Next.js și pass orgId/memberId ca încredere antetele către ESigService prin intermediul K8s DNS interne. Elimină dependenţa O...
Replace OTK auth with trusted session headers for internal K8s calls
ESigService is internal — the Next.js backend reads the session from Redis and passes orgId/memberId/userId as X-Org-Id, X-Member-Id, X-User-Id headers. No OTK ...
Utilizați criteriul de evaluare init pentru a găsi sau crea șablon de imgId pe sarcina editor
Pagina de creare trece imgId în URL. Pagina de editare acum solicită init final pentru a găsi sau crea ESignTemplate, apoi utilizează UUID returnat pentru opera...
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.
