MarkConversation에 대한 기본 쿼리를 사용하여 Hibernate 6.2 유형의 mismatch를 해결하십시오
JPQL의 CURRENT TIMESTAMP는 java.sql을 반환합니다. 일치하지 않는 Timestamp Instant-typed updateAt 필드. 현재와 Native 쿼리()이를 우회합니다.
대신 데이터베이스 레벨 타임스탬프를 사용합니다. Instant.now()
모든 @Builder.Default Instant.now() 및 @PreUpdate 메소드를 대체하십시오. @CreationTimestamp(source=DB) 및 @UpdateTimestamp(source=DB) 그래서 데이터베이스는 타임스탬프에 대한 진실의 단일 소스입니다.
Migrate JPA entities and repos to kamo-shared-library
Entities and repositories moved to **************** in the shared library. All imports updated to reference shared lib.
이메일 메타데이터 entities 및 저장소 추가
EmailService에서 공유 라이브러리에 JPA entities 및 저장소 마이그레이션 그래서 KamoInitializerService는 ddl-auto를 통해 모든 스키마를 관리 할 수 있습니다.
Use native query for PostgreSQL text[] column in ConversationRepository
MEMBER OF is not supported by Hibernate for @JdbcTypeCode(ARRAY) fields. Switch to native SQL with ANY() for folder_ids array lookup.
Add search UI, virtual scrolling, IndexedDB caching, and offline mode
- Add SearchBar with operator autocomplete, saved/recent search suggestions - Add AdvancedSearchPanel with structured field-based query builder - Add VirtualMes...
Add IMAP connection pool, search intelligence, and delta sync endpoints
- Add Apache Commons Pool2 keyed connection pool for IMAP Store reuse (3/account, 500 total, 10min idle eviction) - Migrate EmailImapService from ConcurrentHash...
Add enterprise email organization — labels, filters, shortcuts, quick actions
Plans 2-3: conversation threading views, email API layer with zustand store, label picker, filter rule builder, smart folder modal, keyboard shortcuts with help...
Add enterprise email metadata services — labels, filters, smart folders, batch ops
Plans 1-3: metadata schema, JPA entities, repositories, conversation threading, label CRUD, filter rule engine with async retroactive apply, smart folder criter...
Add email HTML sanitization and CSS isolation via Shadow DOM
Replace raw dangerouslySetInnerHTML in MessageBrowser with a sanitized email renderer that uses DOMPurify + css-tree for HTML/CSS filtering and a closed Shadow ...
Use StringRedisTemplate to read OTK/session values stored as plain strings
The Next.js app stores OTK and *** values as plain strings in Redis. The default RedisTemplate uses JSON serializer which fails to parse them.
Resolve TypeScript errors in useEmailWebSocket hook
- Remove non-existent connectHeaders property from Client options - Replace client.active with client.connected for @stomp/stompjs compatibility
Add missing jakarta.mail.event imports and catch IOException in NATS handler
Rewrite email components to use real EmailService API
- FolderSidebar: fetch folders via API, real create folder, WebSocket refresh - MessageBrowser: real message fetch/search/star/delete with optimistic updates - ...