Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· 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 (за / над контентом)
WatermarkModifier получает «слойное» поле: «за» | «выше» (по умолчанию — «за»). - ModifierLayer теперь принимает "пропускной" реквизит (ниже "выше"): - ниже прохода: отображает номера страниц, ярлыки и водяные знаки со слоем = "за" - над проходом: отображает только водяные знаки со слоем = 'выше' - PdfCanvas передает два прохода ModifierLayer - один перед FieldOverlay/Annotation Слой и один после - так водяные знаки могут сидеть либо позади, либо поверх всего размещенного контента. - Toolbox WatermarkSettings: сегментированный переключатель «За контентом / над контентом», вставленный над переключателем Solid Color
· kamo-internal
Добавить модификатор Watermark в набор инструментов
- Тип WatermarkModifier: logoType (полный/простой), startPage, endPage, ротация (-180-180), размер (10-90% ширины страницы), непрозрачность (2-60%), solidColor toggle, цвет (hex) - Дефолты до полного логотипа, -45° вращения, 50% размера, 15% непрозрачности - ModifierLayer: WatermarkOverlay отображает логотип темы организации с центром + повернутым на странице. Когда включен SolidColor, встроенный фильтр SVG (feColorMatrix) заменяет цвет каждого пикселя, сохраняя при этом альфа-канал - дает чистое силуэтное заполнение без холста или проблем с CORS. - Toolbox: панель WatermarkSettings - селектор типа логотипа (визуальные плитки, показывающие фактические логотипы организации) - Вводы диапазона страниц - Поворот, размер и непрозрачность ползунок - Твердое цветовое переключение - Быстро заданные цветовые пресеты (первичные, вторичные, черные, белые) читать из CSS vars ModernColorPicker для пользовательского цвета, когда твердый режим активен - Добавить в меню модификатора опцию Watermark; список карт показывает значок непрозрачности + резюме
· kamo-internal
Расширить модификатор этикетки до полной 8-позиционной сетки с вращением LM/RM
- LabelModifier.position теперь использует ModifierPosition8 (та же 8-позиционная сетка, что и номера страниц) - LM (Middle Left): каждая строка отображается как вертикальная таблетка с режимом записи: вертикально-rl + ротация (180deg) - текст читает CCW (снизу вверх); строки стекаются слева направо, поэтому строка 1 ближе всего к краю страницы, линия 3 больше всего внутрь - RM (Middle Right): каждая строка использует режим записи: вертикальный-rl (без дополнительного вращения) - текст читает CW (сверху вниз); обратная строка, поэтому строка 1 находится на правом краю, линии идут внутрь TM/BM теперь доступен на этикетках (стандартная горизонтальная таблетка, центрированная) - Removed PositionGrid4 from Toolbox; Ярлыки используют PositionGrid8 с подсказкой, показанной при выборе LM/RM Удаленный модификатор 4 типа (больше не требуется)
· kamo-internal
Добавьте вкладки Tools/Modifiers для подписи Toolbox с наложениями живого холста
- Сплит Toolbox левая боковая панель в Tools и Modifiers вкладки - Вкладка Модификаторов: раздельный список + панель настроек (вариант B) - Модификатор номеров страниц: старт/конец страницы, 8-позиционная сетка (TL/TM/TR/LM/RM/BL/BM/BR), предустановки формата + пользовательские ({n}/{total} токены) - Модификатор этикетки: начальная/конечная страница, 4-угловая сетка, до 3 сложенных текстовых строк - Поддерживается несколько экземпляров каждого типа - Карты показывают значок типа + резюме (диапазон, положение, текст предварительного просмотра) - Выбранные карточки в основном цвете; настройки загрузки в нижней панели - Компонент ModifierLayer: наложения живого холста, отображаемые на странице в определенном диапазоне, указатели-события: нет, z-индекс ниже полей/аннотаций - DesignData extended with modifiers[] - persisted through save/load/version/undo-redo
· kamo-marketing
Показать сегодняшнее количество changelog в баннере предварительного просмотра со ссылкой на /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 для загрузки индикатора прогресса, трек генерации thumbnails этап WS
· SecurityService
Синхронная генерация миниатюр на странице во время загрузки шаблона с гранулированным прогрессом WS
Добавить зависимость от PDFBox в pom.xml После хранения преобразованного PDF, отобразите все страницы через PDFRenderer и загрузите каждую как {id} thumb p{n}.png - Опубликовать Generation thumbnails WS progress event per page (диапазон 72-95%) с надписью "Generated thumbnail N of M" - Пересчитайте все предыдущие проценты этапов, чтобы освободить место: загрузка 0-10, подготовка 10-15, преобразование 15-55, проверка 55-63, хранение 63-72, миниатюры 72-95, завершение 95-100
· SecurityService
Добавить GET **************************** конечная точка для обслуживания миниатюр PNG на странице
· DaemonService
Generate per-page thumbnails for all PDF pages, store as {id}_thumb_p{n}.png
· kamo-shared-library
Добавить поле thumbPageCount и найтиNeedingPageThumbnails запрос для поддержки миниатюр на странице
· 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
Добавьте редактор шаблонов электронной подписи с холстом дизайна, подписчиками и версиями
Полное переписывание страницы /doc/sign/edit с помощью интерфейса с вкладками (Настройки и подписчики, Дизайн), PDF.js холст с перетаскивающимся наложением поля, инструменты аннотации, подписывающий Управление, боковая панель миниатюр страницы, история версий и undo/redo. Включает Zustand хранит, API прокси-маршруты в ESigService и 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
Добавить шаблоны электронной подписи, перечни и репозитории
Новые объекты JPA для системы проектирования шаблонов электронной подписи: ESignTemplate ESignTemplateSigner, ESignTemplateDesignVersion и ESignTemplateFieldLink с поддержкой перечней и репозиториев Spring Data.
· kamo-marketing
Секретные имена Redact K8 в дисплее changelog заменяются на ***
· kamo-marketing
Статистика на стороне сервера для реальных сумм, бесконечной прокрутки, точных подсчетов фильтров
Статистика и количество фильтрующих таблеток теперь поступают из /api/changelog/public/stats (реальные агрегаты DB, а не количество загруженных страниц). Заменить кнопку Load More с прокруткой IntersectionObserver, которая запускает 600px перед снизу.
· SecurityService
Добавить конечную точку /api/changelog/public/stats для совокупных показателей по типам и проектам
· kamo-shared-library
Добавить findByProjectIn запрос в CommitLogRepository для конечной точки статистики
· SecurityService
Добавить валидацию Webhook Secret для changelog endpoint
Оборона в глубину: проверяет *** заголовок на Сторона SecurityService в дополнение к проверке шлюза 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
Настройка общественных проектов Changelog со всеми 23 репо Forgejo

Ваша вселенная ждет.
Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.
Бесплатно навсегда — не требуется кредитная карта