Ensure messages route is recognized by Next.js
- Added logging to verify route is being hit - Route file exists and structure is correct for Next.js 15
Remove non-existent 'active' property from STOMP Client logging
- STOMP Client doesn't have an 'active' property - Only check 'connected' property which is the correct state indicator
Remove unsupported onWebSocketError handler from STOMP client
- onWebSocketError is not a valid property in ClientOptions - SockJS error handlers (onerror, onclose) already provide error handling
Add comprehensive WebSocket error handling and logging
- Added SockJS error handlers (onopen, onerror, onclose) to catch connection failures - Added connection timeout detection (10 seconds) to identify silent failu...
Remove duplicate WebSocket endpoint registration and improve logging
- Removed duplicate /ws endpoint registration (SockJS already handles native WebSocket) - Added null check for payload in subscribeToSession - This may fix WebS...
Remove invalid Spring Security path pattern /ws/**/websocket
- Spring Security does not allow path segments after /** pattern - /ws/** already matches all paths under /ws including websocket endpoints - This fixes Pattern...
Remove incorrect HTTPS agent workaround
- Reverted changes that bypassed certificate validation - Certificates are issued by auto-cert service (Let's Encrypt), not self-signed - Need to investigate wh...
Use HTTPS with agent that accepts self-signed certificates
- Reverted to always use HTTPS (not HTTP) - Added HTTPS agent with rejectUnauthorized: false for self-signed certs - This allows server-side Next.js routes to c...
Use Kubernetes service name for MediaService to avoid SSL cert issues
- Server-side Next.js routes now use **************** - This avoids self-signed certificate errors when connecting to https://media.kamocrm.com - Client-side re...
Remove old /api/security/media/ routes that were intercepting requests
- Old routes were forwarding to APIService which no longer has media endpoints - All media requests should go through /api/media/ routes directly to MediaServic...
Revert to actions/checkout@v4 to match other Next.js projects
- Remove complex manual checkout logic that was causing hangs - Use standard actions/checkout@v4 like kamo-login and kamo-register - Simplify Docker build conte...
Use shallow clone with timeout to prevent hanging
- Use --depth 1 for faster cloning - Add timeout (120s for shallow, 300s for full) - Fallback to full clone if shallow fails - Fetch specific commit if needed a...
Change to valid directory before git clone to avoid working directory error
- Change to /tmp or / before removing/cloning workspace - Only remove directory if it exists but is not a git repo - Prevents 'Unable to read current working di...
Use hardcoded repository URL and set GITHUB_WORKSPACE env var
- Use direct repository URL to avoid DNS/hostname resolution issues - Set GITHUB_WORKSPACE environment variable for subsequent steps - Use env var in Docker bui...
Use git clone directly instead of relying on empty workspace
- Clone repository using git directly with repository URL - Handle both fresh clone and existing repository cases - Use working-directory for Docker build actio...
Simplify all checkout steps - remove git operations that hang
- Remove git fetch/reset/clean from deploy jobs - Forgejo runner already has code checked out - Just verify GITHUB_WORKSPACE is valid
Simplify checkout step - remove git clone that was hanging
- Remove git clone logic that was causing 20+ minute hangs - Forgejo runner already has code checked out, just verify directory - Remove unnecessary git fetch/r...
Improve checkout and Docker build context handling
- Add proper repository cloning if not already checked out - Verify Dockerfile exists before building - Use absolute paths for Docker build context - Fix workin...
Replace actions/checkout with manual git checkout to avoid DNS issues
- Replace actions/checkout@v4 with manual git checkout commands - Forgejo runner already has code checked out, just need to ensure clean state - Fixes DNS looku...
Explicitly permit WebSocket endpoints in Spring Security
- Added explicit permitAll for /ws/** endpoints - WebSocket upgrade requests need explicit permission even in development mode - Fixes issue where WebSocket con...
Search for existing chat sessions by participant membership, not just session owner
- Changed findOrCreateChatSession to search MediaSessionMember records instead of MediaSession.member - Now searches sessions where creator is a participant (me...
Add detailed logging for message member ID retrieval
- Added logging to trace member ID for each message being returned - Logs member class name to detect proxy/stub issues - Logs distinct member IDs in response t...
Add JOIN FETCH to eagerly load member in message queries
- Added JOIN FETCH m.member to both findBySessionAndIsRemovedFalse queries - Ensures member entity is eagerly loaded to avoid lazy loading issues - Fixes issue ...
Automatically create NATS JetStream stream if it doesn't exist
- Added createStreamIfNotExists method to check and create the CHAT_MESSAGES stream - Stream is created with subjects from configuration (chat.>) - Fixes 'No ma...
Extract large IDs from raw JSON to prevent JavaScript precision loss
- Extract memberID, userID, orgID, and securityOrgId from raw JSON string before parsing - Prevents precision loss for IDs > Number.MAX_SAFE_INTEGER (9007199254...
Make NatsMessageService work with Optional JetStream injection
- Changed JetStream injection to Optional with @Autowired(required=false) to handle bean ordering issues - Removed @ConditionalOnBean to allow service creation ...
Reorder annotations in NatsMessageService to check property first, then bean
Correct import for ConditionalOnProperty in NatsMessageService
Add ConditionalOnProperty to NatsMessageService to ensure it only loads when NATS is enabled
Serialize memberID and other IDs as strings in user-info API to prevent JavaScript precision loss
Explicitly import NatsConfig to ensure NATS JetStream is enabled
Add detailed logging for WebSocket subscription and NATS message forwarding
Serialize memberId as string in all API responses to prevent JavaScript precision loss
Complete memberId type updates in useChatWebSocket for string/number compatibility
Handle member IDs as strings consistently to fix message author detection
Update NavTop and NavTopPanel to accept string or number member IDs
Serialize member IDs as strings to avoid JavaScript precision loss
Add detailed logging for memberID type conversion to debug ClassCastException
Handle String type for memberID and parentId to prevent ClassCastException
Handle memberId as string from JavaScript to avoid precision loss with large numbers
Send memberId as string to avoid JavaScript precision loss with large numbers
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
