Add member access level and owner status endpoints
Add GET and PATCH **************** endpoints for reading and updating access levels with full permission enforcement. Update organization creation to use create...
Use createOrganizationOwner for admin members, rename INTERNAL to TEAM_MEMBER
Update owner creation to use new createOrganizationOwner method which handles admin role assignment and PRIVILEGED access level automatically. Replace all Image...
Add member access level system with owner promotion and security controls
Rename CLIENT→MEMBER and INTERNAL→TEAM_MEMBER in ImageAccessLevelType with {var} placeholders for org-specific labels. Move securityLevel from TeamMember to Mem...
Proper image-to-PDF conversion with sizing, centering, and multi-page TIFF
- Images scaled to fill page (max width or height) maintaining aspect ratio - Images centered on the page - Multi-page TIFF: one PDF page per TIFF page - Letter...
Add granular conversion progress stages with 8 distinct WebSocket updates
Stages: downloading (0-15%) → preparing (15-20%) → converting (20-65%) → verifying (65-75%) → storing (75-90%) → finalizing (90-100%) → complete
Handle image files (JPG, PNG, TIFF, etc.) directly via PDFBox instead of Docs
Docs can't convert images to PDF. Added ImageToPdfService that embeds images into a PDF page using PDFBox. Docs is only used for office document formats (DOC, D...
Use imgRepository.findByDat() instead of lazy imgDat.getImages()
Quartz jobs run outside JPA sessions, so lazy collection access on ImgDat.images throws LazyInitializationException. Use explicit repository query instead.
Add extensive logging to synchronous conversion flow, fix bucket lookup
Use img.getAssocId() for bucket instead of local assocType variable. Add step-by-step logging for download, conversion call, and result.
Pass SYSTEM_WIDE as parameter instead of FQCN in JPQL query
Hibernate may not resolve fully-qualified enum names in JPQL across all versions. Pass ImageAssocType.SYSTEM_WIDE as a named parameter instead.
Update imgId type to string|number for CockroachDB ID safety, add error logging
Serialize imgId as String to prevent JavaScript precision loss
CockroachDB unique_rowid() IDs exceed Number.MAX_SAFE_INTEGER. Changed imgId from Long to String in UploadDocumentResponse and DocumentMetadata DTOs so Jackson ...
Download converted PDF from MinIO instead of original file
The converted-pdf endpoint was calling imageService.downloadDocument() which returns the original file. Now downloads directly from MinIO using the convertedDat...
Set proxyClientMaxBodySize to 500mb for large file uploads in Next.js 16.2
Next.js 16.2.3, TypeScript 6.0, Node 24, React 19.2
- Next.js 16.0.10 → 16.2.3, TypeScript 5.8 → 6.0.2, Node 20 → 24, React 19.2.3 → 19.2.5 - Migrate ESLint from .eslintrc.json to flat config (eslint.config.mjs) ...
Redesign support page and webinar wizard to match account page layout
Both pages now use the same gradient hero header with embedded tab navigation, matching the /account page pattern. The webinar scheduling wizard uses numbered s...
Properly forward multipart FormData and set route handler body size limit
- Revert to parsing FormData and rebuilding for forwarding (fixes MalformedStreamException from raw arrayBuffer forwarding) - Add routeHandlerBodySizeLimit: 5...
Add support dropdown with sections, extract webinar scheduling to dedicated page
Support nav button now has a dropdown arrow and Popover with two sections: "Online Support" (Contact Support, View Active Tickets) and "Training" (Request Webin...
Stream upload body directly to avoid Next.js 10MB body size limit
- Read request as arrayBuffer and forward raw bytes with content-type header instead of parsing FormData (which triggers Next.js body limit) - Add serverActio...
Rename e-signature tabs and reorder to Available Templates, Drafts, Archived
Real-time conversion progress via WebSocket with dual percentages
- Add useConversionWebSocket hook supporting both member and template topics - Create page connects WebSocket before upload, shows live conversion progress fr...
Add NATS progress publishing for background document conversion
ConversionProgressPublisher publishes real-time progress events for each conversion stage. DocumentConversionJob and ThumbnailGenerationJob now emit progress fo...
Add conversion progress NATS-to-STOMP relay
Relays document conversion progress from NATS to WebSocket clients. Supports both imgId-based and member-based topic routing for real-time progress updates duri...
Synchronous PDF conversion for e-signature template uploads
Template uploads now convert directly via ConversionService during the upload request. Publishes NATS progress events for real-time WebSocket updates on the fro...
Call SecurityService directly via RKE2 DNS, fix hash computation, add staged upload progress
- All template API routes now call SecurityService directly via internal K8s DNS instead of proxying through APIService - Use computeBlake3/computeSha3256 fro...
Implement e-signature template management UI
- Replace E-Signatures tab placeholder with full template datagrid (AG Grid) with sub-tabs for Pending/Completed/Archived and Create New Template button - Add...
Add e-signature template API endpoints
- POST **************** — upload template with scope control - POST **************** — list templates by context and status - PATCH **************** — update te...
Add document conversion and thumbnail generation background jobs
- DocumentConversionJob: polls for unconverted files, sends to ConversionService, stores converted PDFs with deduplication - ThumbnailGenerationJob: renders f...
Add e-signature template support to imaging system
- Add SigTemplateStatusType enum (PENDING, COMPLETED, ARCHIVED) - Add SYSTEM_WIDE ImageAssocType for cross-context templates - Add isSigTemplate, sigTemplateSta...
Create ConversionService for document-to-PDF conversion
New Spring Boot microservice that converts documents to PDF using Docs and removes PDF security restrictions using Apache PDFBox. Includes K8s manifests and For...
Attach widget event listeners when password step renders, not on initial mount
Listen for both statechange and verified events, remove payload requirement from login gate
Use identical explicit pixel spacing on both username and password option rows
Context-aware *** error messages, tighten spacing between fields and options
Swap spacing on username/password views, label to 'I am Human', update error message
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.