Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· APIService
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. Adds esig.service.url config property with the correct K8s internal service URL as default.
· kamo-internal
Adicionar a opção de posição da camada ao modificador Watermark (atrás / acima do conteúdo)
- WatermarkModifier ganha um campo de 'camada': 'atrás' (por omissão para 'atrás') - ModifierLayer agora leva um 'pass' prop ('abaixo'': - abaixo passe: renderiza números de página, rótulos e marcas d'água com camada='atrás' - acima da passagem: só dá marcas d'água com camada='acima' - PdfCanvas renderiza dois ModifierLayer passes - um antes FieldOverlay/Annotação Camada e uma depois — para que as marcas de água possam sentar-se atrás ou em cima de todo o conteúdo colocado - Caixa de Ferramentas WatermarkSettings: segmentado para alternar "Conteúdo atrás /Conteúdo acima" inserido acima do interruptor Solid Color
· kamo-internal
Adicionar modificador de marca de água à caixa de ferramentas de esign
- Marca d'águaTipo de modificador: logoType (full/simples), startPage, endPage, rotation (−180–180), tamanho (10–90% da largura da página), opacidade (2–60%), cor sólida, cor (hex) - Padrão para logotipo completo, −45° rotação, 50% de tamanho, 15% opacidade - ModificadorLayer: WatermarkOverlay renderiza o logotipo do tema org centrado + girado na página. Quando solidColor está habilitada, um filtro SVG em linha (feColorMatrix) substitui cada cor de pixel enquanto preserva o canal alfa — dá um preenchimento de silhueta limpo sem preocupações de tela ou CORS - Caixa de ferramentas: WatermarkSettings painel com - Selector de tipo logótipo (telhas visuais que mostram os logótipos de org) - Entradas de gama de páginas - Rotação, tamanho e opacidade deslizantes - Alternar cor sólida - Predefinições de cor rápidas (Primário, Secundário, Preto, Branco) lidas de vars CSS - ModernColorPicker para cores personalizadas quando o modo sólido está ativo - Adicionar menu modificador ganha opção Watermark; lista de cartões mostra ícone de opacidade + resumo
· kamo-internal
Estenda o modificador de etiqueta para uma grade completa de 8 posições com rotação LM/RM
- LabelModifier.position agora usa ModifierPosition8 (mesma grade de 8 posições como Números de Página) - LM (Médio-Esquerdo): cada linha renderizada como uma pílula vertical com modo de escrita: vertical-rl + rotação(180deg) — texto lê CCW (baixo-para-top); linhas empilhar esquerda-para-direita assim linha 1 é mais próxima da borda da página, linha 3 é mais para dentro - RM (Middle Right): cada linha usa modo de escrita: vertical-rl (sem rotação extra) - texto lê CW (top-to-bottom); linha-reverso assim que a linha 1 está na borda direita, linhas vêm para dentro - TM/BM agora disponível em Etiquetas (pílula horizontal padrão, centrada) - Removido PositionGrid4 da Caixa de Ferramentas; Etiquetas usam PositionGrid8 com uma dica mostrada quando LM/RM está selecionado - Modificador RemovidoPosição4 tipo (já não é necessário)
· kamo-internal
Adicionar abas Ferramentas/Modificadores para assinar a Caixa de Ferramentas com sobreposições de tela ao vivo
- Dividir a barra lateral esquerda da caixa de ferramentas nas abas Ferramentas e Modificadores - Guia de modificadores: lista dividida + painel de configurações (Opção B) - Modificador de números de página: página inicial/fim, grade de 8 posições (TL/TM/TR/LM/RM/BL/BM/BR), predefinições de formato + tokens personalizados ({n}/{total}) - Modificador de etiquetas: página inicial/final, grade de 4 cantos, até 3 linhas de texto empilhadas - Várias instâncias de cada tipo suportadas - Cartas mostram tipo ícone + resumo (intervalo, posição, texto de antevisão) - Destaques de cartões selecionados na cor primária; configurações carregar no painel inferior - ModifierLayer component: live canvas overlays renderizados por página dentro do intervalo definido, ponteiro-eventos: nenhum, índice z abaixo campos/anotações - DesignData estendido com modificadores[] - persistiu através de save/load/version/undo-redo
· kamo-marketing
Mostrar a contagem do changelog de hoje no banner de antevisão com link para / changelog
· kamo-internal
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; offset 28px from right to account for scrollbar gutter - Rewrite ThumbnailCanvas placeholder logic: containers now render at US Letter aspect ratio before any image loads, then animate to the true aspect ratio once the thumbnail resolves; paddingTop is applied imperatively via a ref to bypass MUI's spacing system - Aspect ratio transitions smoothly with a spring curve when rotation changes (portrait ↔ landscape morph) - Spinner fades/shrinks out and thumbnail fades/scales in with a polished keyframe sequence on load
· kamo-internal
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 selects the page AND scrolls to it in the main canvas - Selected page in the main canvas gets a 2.2s pulsing theme-colored glow: three-layer box-shadow (solid ring + spread + ambient) breathing from dim to bright - Selected thumbnail in the sidebar gets a matching but proportionally smaller glow - When a page is selected via the main canvas, the thumbnail sidebar auto-scrolls the corresponding thumbnail into view (scrollIntoView nearest) - Replaced the broken useVisiblePage stub (always returned 0) with real selectedPageIndex prop - Page container converted from plain <div> to MUI Box to support sx/@keyframes - Unselected pages gain a subtle hover shadow for discoverability
· kamo-internal
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 maintains a consistent right-edge gap regardless of scrollbar visibility - Properties panel slides up (spring easing, 380ms) on open and slides down (ease-in, 240ms) on close using MUI Slide with cubic-bezier(0.34,1.56,0.64,1) - Switching between fields triggers a subtle fade+translate keyframe (220ms) via React key on the inner content wrapper, keeping the outer container mounted - Panel gains a soft top shadow (0 -8px 32px) to lift it visually off the canvas
· kamo-internal
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, Identity Fields, and Input Fields are disabled (grayed out with lock icon) until a signer is selected; Annotation Tools remain always available - Settings & Signers tab fully redesigned: two-column full-height layout — left panel (380px) for template name, scope selector, and association type; right panel (flex) for the scrollable signers list with sticky header, empty state, and add-another footer
· kamo-internal
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 assigned signer's color. Resize handles are now 4 corner-only circular dots instead of 8 directional handles.
· DocsService
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 endpoints: - Folders: GET/POST list+create, PATCH rename, DELETE, POST move-doc - Config: GET assoc-config, GET doc-types - Documents: GET download, DELETE delete, GET metadata, POST list - Updates: PATCH update/description, filename, hidden, access-level, doc-type, folder - Trash: PATCH trash/restore - History: GET history/changes, GET history/downloads - Templates: POST templates/list, PATCH templates/{id}/status, GET templates/{id}/converted-pdf, GET templates/{id}/thumbnail/{page}
· ConversionService
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 application.yml - Add OTKPreAuthFilter + KSessionService for OTK-based auth - Add ImagingUploadController at /api/conversion/imaging: - POST /upload — regular document upload - POST /templates/upload — full synchronous pipeline (upload → Docs convert → thumbnail generation → NATS WebSocket progress events) - Fix thumbnail object naming to use originalDat.getId() consistently with DaemonService and the download endpoint
· ConversionService
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 thumbnail generation logic in ConversionService; callers store the ZIPed results themselves.
· kamo-internal
Adicionar passo de miniaturas para carregar indicador de progresso, track generating thumbnails WS stage
· SecurityService
Geração de miniaturas sincronizadas por página durante o upload do modelo com progresso granular WS
- Adicionar dependência PDFBox para pom.xml - Depois de armazenar PDF convertido, renderizar todas as páginas via PDFRenderer e enviar cada como {id} thumb p{n}.png - Publique evento de progresso WS gerating thumbnails por página (variação de 72-95%) com a etiqueta "Generation thumbnail N of M" - Redimensionar todas as percentagens do estágio anterior para dar espaço: baixar 0-10, preparar 10-15, converter 15-55, verificar 55-63, armazenar 63-72, miniaturas 72-95, finalizar 95-100
· SecurityService
Adicionar GET **************************** Endpoint para servir as miniaturas de PNG por página
· DaemonService
Generate per-page thumbnails for all PDF pages, store as {id}_thumb_p{n}.png
· kamo-shared-library
Adicionar o polegarPageCount field and findNeedingPageThumbnails query for per-page thumbnail support
· ESigService
Add template init endpoint to find-or-create templates by imgId
The create page uploads to the imaging system and redirects with imgId. The edit page now calls POST /api/esig/templates/init with the imgId to find an existing template or create a new one in DRAFT status.
· kamo-internal
Adicionar editor de modelo de assinatura eletrônica com tela de design, sinalizadores e versão
Reescrita completa da página /doc/sign/edit com interface de tabulação (Configurações & Signers, Design), PDF.js canvas com sobreposição de campo arrastável, ferramentas de anotação, signater gestão, barra lateral de miniaturas de página, histórico de versões e desfazer/refazer. Inclui Lojas Zustand, rotas proxy API para ESigService e 13 novos componentes.
· ESigService
Initial ESigService Spring Boot project for e-signature template management
New microservice with REST API for e-signature template CRUD, signer management, design version snapshots, and field link tracking. Includes OTK auth filter, Forgejo CI/CD pipeline, and K8s deployment manifests.
· kamo-shared-library
Adicionar entidades de modelo de assinatura eletrónica, enums e repositórios
Novas entidades JPA para o sistema de projeto de modelo de assinatura eletrónica: ESignTemplate, ESignTemplateSigner, ESignTemplateDesignVersion e ESignTemplateFieldLink Com apoio a enums e repositórios de dados da Primavera.
· kamo-marketing
Redact K8s nomes secretos na exibição changelog, substituir por ***
· kamo-marketing
Estatísticas do lado do servidor para totais reais, rolos infinitos, contagens precisas de filtros
Barra de estatísticas e contagem de comprimidos de filtro agora vêm de /api/changelog/public/stats (agregados DB reais, não contagens de páginas carregadas). Botão Carregar Mais Substituido com o pergaminho infinito IntersectionObserver que desencadeia 600px antes do No fundo.
· SecurityService
Adicionar /api/changelog/public/stats endpoint para contagem de agregados por tipo e projeto
· kamo-shared-library
Adicionar pesquisaByProjectIn query to CommitLogRepository for stats endpoint
· SecurityService
Adicionar validação secreta do webhook ao endpoint do changelog
Defesa em profundidade: valida o cabeçalho *** no SegurançaService lado além de validação de gateway APIService.
· APIService
Expose changelog webhook through APIService with secret key auth
Adds POST /api/changelog/webhook route that validates *** header before forwarding to SecurityService. Secret configured via CHANGELOG_WEBHOOK_SECRET env var / K8s secret.
· SecurityService
Configurar projetos públicos changelog com todos os 23 repos Forgejo

Seu universo está esperando.
Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.
Gratuito para sempre — não é necessário cartão de crédito