Nenda kwenye maudhui
KAMOUniverse

Mabadiliko

Nini kipya.

Kila kuboresha jukwaa, kama ni meli.

  1. · 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.

  2. · kamo-internal

    Add layer position option to Watermark modifier (behind / above content)

    - WatermarkModifier gains a 'layer' field: 'behind' | 'above' (defaults to 'behind') - ModifierLayer now takes a 'pass' prop ('below' | 'above'): - below pass: renders page numbers, labels, and watermarks with layer='behind' - above pass: renders only watermarks with layer='above' - PdfCanvas renders two ModifierLayer passes — one before FieldOverlay/AnnotationLayer and one after — so watermarks can sit either behind or on top of all placed content - Toolbox WatermarkSettings: segmented toggle "Behind Content / Above Content" inserted above the Solid Color switch

  3. · kamo-internal

    Add Watermark modifier to esign toolbox

    - WatermarkModifier type: logoType (full/simple), startPage, endPage, rotation (−180–180), size (10–90% of page width), opacity (2–60%), solidColor toggle, color (hex) - Defaults to full logo, −45° rotation, 50% size, 15% opacity - ModifierLayer: WatermarkOverlay renders the org theme logo centered + rotated on the page. When solidColor is enabled, an inline SVG filter (feColorMatrix) replaces every pixel's colour while preserving the alpha channel — gives a clean silhouette fill without canvas or CORS concerns - Toolbox: WatermarkSettings panel with - Logo type selector (visual tiles showing actual org logos) - Page range inputs - Rotation, size, and opacity sliders - Solid Color toggle - Quick-set colour presets (Primary, Secondary, Black, White) read from CSS vars - ModernColorPicker for custom colour when solid mode is active - Add modifier menu gains Watermark option; card list shows opacity icon + summary

  4. · kamo-internal

    Extend Label modifier to full 8-position grid with LM/RM rotation

    - LabelModifier.position now uses ModifierPosition8 (same 8-position grid as Page Numbers) - LM (Middle Left): each line rendered as a vertical pill with writing-mode: vertical-rl + rotate(180deg) — text reads CCW (bottom-to-top); lines stack left-to-right so line 1 is closest to page edge, line 3 is most inward - RM (Middle Right): each line uses writing-mode: vertical-rl (no extra rotation) — text reads CW (top-to-bottom); row-reverse so line 1 is at the right edge, lines come inward - TM/BM now available on Labels (standard horizontal pill, centred) - Removed PositionGrid4 from Toolbox; Labels use PositionGrid8 with a hint shown when LM/RM is selected - Removed ModifierPosition4 type (no longer needed)

  5. · kamo-internal

    Add Tools/Modifiers tabs to esign Toolbox with live canvas overlays

    - Split Toolbox left sidebar into Tools and Modifiers tabs - Modifiers tab: split list + settings panel (Option B) - Page Numbers modifier: start/end page, 8-position grid (TL/TM/TR/LM/RM/BL/BM/BR), format presets + custom ({n}/{total} tokens) - Label modifier: start/end page, 4-corner grid, up to 3 stacked text lines - Multiple instances of each type supported - Cards show type icon + summary (range, position, preview text) - Selected card highlights in primary colour; settings load in lower panel - ModifierLayer component: live canvas overlays rendered per-page within the defined range, pointer-events: none, z-index below fields/annotations - DesignData extended with modifiers[] — persisted through save/load/version/undo-redo

  6. · kamo-marketing

    Show today's changelog count in preview banner with link to /changelog

  7. · 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

  8. · 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

  9. · 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

  10. · 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

  11. · 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.

  12. · 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}

  13. · 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

  14. · 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.

  15. · kamo-internal

    Add Thumbnails step to upload progress indicator, track generating_thumbnails WS stage

  16. · SecurityService

    Synchronous per-page thumbnail generation during template upload with granular WS progress

    - Add PDFBox dependency to pom.xml - After storing converted PDF, render all pages via PDFRenderer and upload each as {id}_thumb_p{n}.png - Publish generating_thumbnails WS progress event per page (72-95% range) with "Generated thumbnail N of M" label - Rescale all previous stage percentages to make room: downloading 0-10, preparing 10-15, converting 15-55, verifying 55-63, storing 63-72, thumbnails 72-95, finalizing 95-100

  17. · SecurityService

    Add GET **************** endpoint to serve per-page PNG thumbnails

  18. · DaemonService

    Generate per-page thumbnails for all PDF pages, store as {id}_thumb_p{n}.png

  19. · kamo-shared-library

    Add thumbPageCount field and findNeedingPageThumbnails query for per-page thumbnail support

  20. · 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.

  21. · kamo-internal

    Add e-signature template editor with design canvas, signers, and versioning

    Complete rewrite of /doc/sign/edit page with tabbed interface (Settings & Signers, Design), PDF.js canvas with draggable field overlay, annotation tools, signer management, page thumbnail sidebar, version history, and undo/redo. Includes Zustand stores, API proxy routes to ESigService, and 13 new components.

  22. · 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.

  23. · kamo-shared-library

    Add e-signature template entities, enums, and repositories

    New JPA entities for the e-signature template design system: ESignTemplate, ESignTemplateSigner, ESignTemplateDesignVersion, and ESignTemplateFieldLink with supporting enums and Spring Data repositories.

  24. · kamo-marketing

    Redact K8s secret names in changelog display, replace with ***

  25. · kamo-marketing

    Server-side stats for real totals, infinite scroll, accurate filter counts

    Stats bar and filter pill counts now come from /api/changelog/public/stats (real DB aggregates, not loaded-page counts). Replaced Load More button with IntersectionObserver infinite scroll that triggers 600px before the bottom.

  26. · SecurityService

    Add /api/changelog/public/stats endpoint for aggregate counts by type and project

  27. · kamo-shared-library

    Add findByProjectIn query to CommitLogRepository for stats endpoint

  28. · SecurityService

    Add webhook secret validation to changelog endpoint

    Defense-in-depth: validates *** header on the SecurityService side in addition to APIService gateway validation.

  29. · 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.

  30. · SecurityService

    Configure changelog public projects with all 23 Forgejo repos

Ulimwengu wako unasubiri.

Kuanza bure katika dakika. Ongeza bidhaa wakati wowote wewe ni tayari - hakuna uhamiaji, hakuna logins mpya.

Bure milele - hakuna kadi ya mkopo inahitajika