변경 로그
무슨 일이야?
플랫폼에 대한 모든 개선 사항, 그것이 선적.
· 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
Watermark modifier (behind / 위 content)에 레이어 위치 옵션을 추가하십시오
- WatermarkModifier는 'layer' 필드를 얻습니다. 'behind' | 'above' (기본값에서 'behind') - ModifierLayer는 이제 'pass' prop ('below' | 'above')를 취합니다. - 아래 패스: 레이어 = 'behind'로 페이지 번호, 라벨 및 워터 마크 렌더링 - 위의 패스 : 레이어 = 'above'와 워터 마크 만 렌더링 - PdfCanvas는 FieldOverlay/Annotation의 앞에 2개의 ModifierLayer 패스를 만듭니다 레이어와 한 후 — 그래서 워터 마크는 뒤에 앉아 또는 모든 배치 내용의 상단 - Toolbox WatermarkSettings: 단단한 색깔 스위치의 위 삽입된 내용의 위 세그먼트를 두는 toggle “Behind Content/Over Content”
· kamo-internal
Watermark modifier를 esign 툴박스에 추가
- WatermarkModifier 유형 : 로고타입 (전체/간단한), startPage, endPage, 교체 (-180-180), 크기 (10-90% 페이지 폭), 불투명 (2-60%), 단단한색 toggle, 색상 (헥스) - 로고, −45° 교체, 50% 크기, 15% 불투명에 과태 - ModifierLayer: WatermarkOverlay는 org 테마 로고를 렌더링 + 페이지에 회전. 솔리드 컬러가 활성화되면 인라인 SVG 필터 (feColorMatrix)는 알파 채널을 보존하면서 모든 픽셀의 색상을 교체합니다. 캔버스 또는 CORS 문제없이 깨끗한 실루엣 채우기 - Toolbox: WatermarkSettings 패널과 - 로고 유형 선택기 (실제 로고를 보여주는 시청각 타일) - 페이지 범위 입력 - 회전, 크기 및 불투명 슬라이더 - 단단한 색깔 toggle - Quick-set 색상 사전 설정 (Primary, Secondary, Black, White) CSS vars에서 읽기 - ModernColorPicker는 단단한 형태가 활동할 때 주문 색깔을 위해 착색합니다 - modifier 메뉴가 Watermark 옵션 추가; 카드 목록은 opacity 아이콘 + 요약을 보여줍니다
· kamo-internal
LM/RM 교체를 가진 가득 차있는 8 위치 격자에 상표 변조기
- LabelModifier.position는 이제 ModifierPosition8 (페이지 번호로 8 위치 그리드)를 사용합니다. - LM (중간): 각 선은 쓰기 형태를 가진 수직 알약으로 렌더링했습니다: 수직 경사 + 자전합니다 (180deg) - 원본은 CCW (바닥에 정상)를 읽습니다; 선 더미는 1 페이지 가장자리에 닫힙니다, 선 3는 최대 inward입니다 - RM (중간 권리): 각 선은 쓰기 형태를 이용합니다: 수직 rl (추가 교체 없음) - 원본은 CW (최고에 밑바닥); 행 반전 이렇게 선 1는 오른쪽 가장자리에, 선 옵니다 - TM / BMW는 라벨 (표준 수평 알약, 중심)에서 사용할 수 있습니다. - Toolbox에서 PositionGrid4 제거; LM/RM이 선택될 때 표시된 hint를 가진 Labels 사용 PositionGrid8 - ModifierPosition4 유형 제거 (더 이상 필요 없음)
· kamo-internal
Tools/Modifiers 탭을 라이브 캔버스 오버레이로 할당합니다
- Split Toolbox는 도구 및 Modifiers 탭으로 사이드바를 왼쪽 - Modifiers 탭: 분할 목록 + 설정 패널 (옵션 B) - Page Numbers modifier: start/end 페이지, 8 위치 그리드 (TL/TM/TR/LM/RM/BL/BM/BR), 형식 사전 설정 + 사용자 정의 ({n}/{total} 토큰) - 라벨 조절기 : 시작 / 종료 페이지, 4-콘서트 그리드, 최대 3 stacked text line - 지원되는 각 유형의 다중 인스턴스 - 카드 쇼 유형 아이콘 + 요약 (범위, 위치, 미리보기 텍스트) - 선택된 카드는 1 차적인 색깔에 강조합니다; 더 낮은 패널에 있는 조정 짐 - ModifierLayer 구성품: 라이브 캔버스 오버레이는 정의된 범위 내에서 per-page, pointer-events: none, z-index 아래 field/annotations - modifiers[]로 확장 된 DesignData - save/load/version/undo-redo를 통해 지속됩니다
· kamo-marketing
/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
Thumbnails 단계 추가하여 진행 표시를 업로드하고, generating thumbnails WS 단계를 추적
· SecurityService
Granular WS 진행으로 템플릿 업로드시 동기화 per-page thumbnail 발생
- pom.xml에 PDFBox 의존성 추가 - 변환 된 PDF를 저장 한 후, PDFRenderer를 통해 모든 페이지를 렌더링하고 {id} thumb p{n}.png로 업로드하십시오. - "Generated thumbnail N of M" 라벨이있는 페이지 (72-95% 범위) 당 WS 진행 이벤트를 생성하는 출판물 - 방을 만들기 위해 모든 이전 단계 비율을 재연 : 다운로드 0-10, 준비 10-15, 변환 15-55, 확인 55-63, 저장 63-72, thumbnails 72-95, 완성 95-100
· SecurityService
더 보기 *************** 페이지 당 PNG thumbnails를 봉사하는 엔드 포인트
· DaemonService
Generate per-page thumbnails for all PDF pages, store as {id}_thumb_p{n}.png
· kamo-shared-library
ThumbPageCount 필드 및 findNeedingPageThumbnails 쿼리에 대한 페이지 thumbnail 지원
· 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
E-signature 템플릿 편집기를 디자인 캔버스, Signers 및 버전으로 추가하십시오
탭 인터페이스(Settings & Signers)로 /doc/sign/edit 페이지를 다시 작성합니다. 디자인), 드래그 가능 필드 오버레이가있는 PDF.js 캔버스, 주석 도구, signer 관리, 페이지 thumbnail 사이드바, 버전 역사, 및 undo/redo. 지원하다 Zustand 상점, ESigService에 API 프록시 경로, 그리고 13 새로운 구성 요소.
· 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
E-signature 템플릿 entities, enums 및 저장소 추가
E-signature 템플릿 디자인 시스템의 새로운 JPA entities: ESignTemplate, ESignTemplateSigner, ESignTemplateDesignVersion 및 ETemplateFieldLink 지원 enums와 봄 자료 저장소로.
· kamo-marketing
Redact K8s secret name in changelog display, 대체 ***
· kamo-marketing
실제 합계, 무한 스크롤, 정확한 필터 카운트에 대한 서버 측 통계
Stats bar and filter pill counts now come from /api/changelog/public/statss. (실제 DB 집계, 로드 페이지 수). 교체된 짐 더 단추 IntersectionObserver 무한 스크롤을 사용하여 600px 전에 트리거합니다. 이름 *.
· SecurityService
/api/changelog/public/stats endpoint 를 입력하고 프로젝트로 계산합니다
· kamo-shared-library
Add findByProjectIn stats endpoint에 대한 CommitLogRepository에 쿼리
· SecurityService
Changelog endpoint에 webhook secret validation 추가
Defense-in-depth: validates *** 헤더에 APIService Gateway validation 외에도 SecurityService 측.
· 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
모든 23 Forgejo repos와 changelog 공개 프로젝트를 구성

당신의 우주는 기다리고 있습니다.
몇 분 안에 무료로 시작하세요. 준비가 되면 언제든지 제품을 추가할 수 있습니다.
영원히 무료 - 신용 카드 필요 없음