🔨 1 new commit to ComuCompose:master:
1749d40: Replace CallForegroundService with direct NotificationManager usage
- Delete
- Move incoming call notification construction logic to
- Update
- Refactor call state event handlers (
- Update
- Pass context to
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
1749d40: Replace CallForegroundService with direct NotificationManager usage
- Delete
CallForegroundService.kt and remove its declaration from AndroidManifest.xml.- Move incoming call notification construction logic to
Handlers.kt as buildIncomingCall.- Update
handleCall to display notifications using NotificationManagerCompat instead of starting a foreground service.- Refactor call state event handlers (
EVENT_CALL_REJECTED, EVENT_CALL_ENDED, etc.) in Handlers.kt and CallActionReceiver to cancel notifications by ID directly.- Update
CallActivity to remove service start/stop logic and use notification cancellation.- Pass context to
handleCall in ComuFirebaseService.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:
619743b: Per-device TCP/FCM delivery: prevent duplicate push and keep multi-device state consistent
Route outbound events per device: TCP to authenticated sessions, FCM only to devices without TCP
Update all existing FCM fallback paths to use device-level online/offline filtering (msg.send, SendMessageAsync, user.pictureup, call.incoming)
Add callee-side FCM delivery for call.taken, call.rejected, call.ended, call.reset when the target device is TCP-offline
Preserve existing behavior for all other server logic; only adjust delivery selection logic by NikkaGames
619743b: Per-device TCP/FCM delivery: prevent duplicate push and keep multi-device state consistent
Route outbound events per device: TCP to authenticated sessions, FCM only to devices without TCP
Update all existing FCM fallback paths to use device-level online/offline filtering (msg.send, SendMessageAsync, user.pictureup, call.incoming)
Add callee-side FCM delivery for call.taken, call.rejected, call.ended, call.reset when the target device is TCP-offline
Preserve existing behavior for all other server logic; only adjust delivery selection logic by NikkaGames
🔨 1 new commit to ComuCompose:master:
b91adef: Refactor permissions, token usage, and call logic
- Implement coroutine-based permission wrappers in Utils and enforce Audio permission before calls
- Remove
- Handle additional call events (ended, rejected, taken) in ComuFirebaseService
- Dispatch socket message sending to
- Optimize LoginActivity startup routing and MainActivity back press handling
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
b91adef: Refactor permissions, token usage, and call logic
- Implement coroutine-based permission wrappers in Utils and enforce Audio permission before calls
- Remove
Singleton.rpk and standardize token retrieval across activities and services- Handle additional call events (ended, rejected, taken) in ComuFirebaseService
- Dispatch socket message sending to
handlerScope- Optimize LoginActivity startup routing and MainActivity back press handling
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:
1ba13c6: Persistence: one document per (uid, device) by upserting token/ts instead of inserting on every reconnect by NikkaGames
1ba13c6: Persistence: one document per (uid, device) by upserting token/ts instead of inserting on every reconnect by NikkaGames
🔨 1 new commit to ComuCompose:master:
af87380: Enable multiple image selection and improve handler threading
- Update image picker to allow selecting up to 20 items in ChatActivity
- Implement retry logic with backoff and cache busting for failed image loads
- Ensure socket event handlers (status, upload progress) execute on the main thread
- Update call rejection API to include X-Uid, X-Token, and X-Device headers
- Remove legacy incoming call notification logic from Handlers
- Initialize LoginActivity UI content immediately to prevent startup delay
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
af87380: Enable multiple image selection and improve handler threading
- Update image picker to allow selecting up to 20 items in ChatActivity
- Implement retry logic with backoff and cache busting for failed image loads
- Ensure socket event handlers (status, upload progress) execute on the main thread
- Update call rejection API to include X-Uid, X-Token, and X-Device headers
- Remove legacy incoming call notification logic from Handlers
- Initialize LoginActivity UI content immediately to prevent startup delay
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
834825c: Implement interactive full-screen media viewer
- Add
- Implement animated transitions expanding media from chat thumbnails to the full viewport.
- Add "Save to Gallery" functionality within the media viewer toolbar.
- Update
- Add logic to auto-scroll to the latest message when an upload completes.
- Simplify context retrieval logic for message drafts.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
834825c: Implement interactive full-screen media viewer
- Add
FullscreenMediaOverlay composable supporting pinch-to-zoom, pan, and vertical drag-to-dismiss gestures.- Implement animated transitions expanding media from chat thumbnails to the full viewport.
- Add "Save to Gallery" functionality within the media viewer toolbar.
- Update
Handlers.kt to increase the maximum image scaling size limit from 700mp to 1mp.- Add logic to auto-scroll to the latest message when an upload completes.
- Simplify context retrieval logic for message drafts.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
6cf5b28: Implement photo replies and improve media viewer interactions
ChatActivity
- Implement rendering for photo replies (
- Update media viewer behavior: single tap now toggles the top app bar with an animation instead of closing the viewer.
- Move
- Add animation for blur radius transitions.
Handlers
- Prevent duplicate chat items from being added by checking if the path already exists.
- Ensure updates to
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
6cf5b28: Implement photo replies and improve media viewer interactions
ChatActivity
- Implement rendering for photo replies (
photo: prefix), including dynamic aspect ratio calculation, loading indicators, and retry logic.- Update media viewer behavior: single tap now toggles the top app bar with an animation instead of closing the viewer.
- Move
saveToGallery operations to Dispatchers.IO to prevent blocking the UI.- Add animation for blur radius transitions.
Handlers
- Prevent duplicate chat items from being added by checking if the path already exists.
- Ensure updates to
MainActivity.items are posted to the main thread.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
7873422: Implement custom call audio and scroll-to-reply features
- Add
- update
- Replace default system sounds with custom resources for calls and notifications; update notification channel configurations.
- specific keep-alive logic in
- Implement scroll-to-reply functionality in
- Add a pulse highlight animation for messages targeted by the scroll-to-reply action.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
7873422: Implement custom call audio and scroll-to-reply features
- Add
DelayedLooperSound in Utils to handle looping ringtones and audio routing (Speaker/Earpiece).- update
Handlers and CallActivity to trigger sound playback and cessation based on call states (Outgoing, Incoming, Active, Ended).- Replace default system sounds with custom resources for calls and notifications; update notification channel configurations.
- specific keep-alive logic in
ComuFirebaseService and Handlers to monitor incoming call validity.- Implement scroll-to-reply functionality in
ChatActivity: clicking a reply preview now scrolls to the original message.- Add a pulse highlight animation for messages targeted by the scroll-to-reply action.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
18915b3: Add new audio resources for call notifications and ringtones
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
18915b3: Add new audio resources for call notifications and ringtones
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
75e8715: Generate a deterministic GUID from file content for image uploads
A new utility function
This logic is applied in
Additionally,
Specific changes:
*
*
*
*
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
75e8715: Generate a deterministic GUID from file content for image uploads
A new utility function
guidFromUri has been added to Utils.kt which calculates a UUID based on the SHA-256 hash of the file content at a given URI. This ensures that the same file results in the same GUID.This logic is applied in
ProfileActivity and ChatActivity when picking images: instead of generating a random UUID immediately, the app now attempts to derive the GUID from the file content first.Additionally,
Handlers.uploadImage now accepts a randGuid parameter, which is passed as a new header X-Upload-Randguid. In ChatActivity, the message ID for photo messages is updated to a composite format (guid:randGuid) to distinguish identical images sent as separate messages while maintaining the content-based GUID for the upload itself.Specific changes:
*
Utils.kt: Added guidFromUri to generate content-based UUIDs.*
ProfileActivity.kt: Use guidFromUri for profile picture uploads.*
Handlers.kt: Update uploadImage signature to accept randGuid and send X-Upload-Randguid header.*
ChatActivity.kt: Use guidFromUri for image messages; generate a separate randGuid for the message ID composite to allow re-sending identical images. Update message handling to parse the composite ID.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
c79459d: Implement horizontal swipe navigation for expanded media
- Add logic to extract distinct media GUIDs from chat messages.
- Update gesture detector to distinguish between vertical dismiss and horizontal paging.
- Add animation logic for sliding transitions between images.
- Implement
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
c79459d: Implement horizontal swipe navigation for expanded media
- Add logic to extract distinct media GUIDs from chat messages.
- Update gesture detector to distinguish between vertical dismiss and horizontal paging.
- Add animation logic for sliding transitions between images.
- Implement
openGuid to load adjacent media without closing the viewer.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
80e03ee: Fix message reply scrolling and optimize profile update logic
* ChatActivity: Update the logic for finding a replied-to message. Instead of an exact match (
* ProfileActivity: Refactor the conditional check for showing the save button. Combine logic to ensure the name or bio has changed and that the name meets validation requirements (not empty, length >= 4) in a cleaner expression.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
80e03ee: Fix message reply scrolling and optimize profile update logic
* ChatActivity: Update the logic for finding a replied-to message. Instead of an exact match (
==), check if the message ID contains the replyGuid, and use the found message's ID for highlighting. This improves the reliability of scrolling to a specific message.* ProfileActivity: Refactor the conditional check for showing the save button. Combine logic to ensure the name or bio has changed and that the name meets validation requirements (not empty, length >= 4) in a cleaner expression.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
ce676c7: Add support for video and GIF messages
- Implement video uploading and thumbnail generation logic
- Integrate ExoPlayer for inline and fullscreen media playback
- Add GIF decoding support to Coil configuration
- Update gallery saving logic to handle video and GIF types
- Add Media3 and Coil GIF dependencies
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
ce676c7: Add support for video and GIF messages
- Implement video uploading and thumbnail generation logic
- Integrate ExoPlayer for inline and fullscreen media playback
- Add GIF decoding support to Coil configuration
- Update gallery saving logic to handle video and GIF types
- Add Media3 and Coil GIF dependencies
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:
627382f: Media additions
* Implement GIF upload support
* Implement Video upload support by NikkaGames
627382f: Media additions
* Implement GIF upload support
* Implement Video upload support by NikkaGames
🔨 1 new commit to ComuServer:main:
92f9821: Increase max length for chat media uploads. by NikkaGames
92f9821: Increase max length for chat media uploads. by NikkaGames
🔨 1 new commit to ComuCompose:master:
e032bfe: Implement video transcoding and caching mechanism
- Add Media3 Transformer to re-encode and compress videos before upload
- Introduce disk caching for video playback and thumbnails using SimpleCache
- Update upload logic to handle transcoded sources and improve progress reporting
- Persist video thumbnails and store aspect ratios for smoother UI rendering
- Refactor video player and thumbnail extraction to use cached data sources
- Adjust content scaling for avatars and icons to
- Update Compose, Firebase, and Media3 dependencies
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
e032bfe: Implement video transcoding and caching mechanism
- Add Media3 Transformer to re-encode and compress videos before upload
- Introduce disk caching for video playback and thumbnails using SimpleCache
- Update upload logic to handle transcoded sources and improve progress reporting
- Persist video thumbnails and store aspect ratios for smoother UI rendering
- Refactor video player and thumbnail extraction to use cached data sources
- Adjust content scaling for avatars and icons to
Fit- Update Compose, Firebase, and Media3 dependencies
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:
726957c: Refactor chat media upload/download logic and implement chat read status for every participant. by NikkaGames
726957c: Refactor chat media upload/download logic and implement chat read status for every participant. by NikkaGames
🔨 1 new commit to ComuCompose:master:
c1244f5: Implement unread message UI and logic updates
- Add visual indicators (dot, bold text) for unread chats in main list
- Format media message previews (Video, Photo, GIF) to be user-friendly
- Sync read status updates across Handlers and Activities
- Add blur and scale animations to ProfileActivity editor
- Move video thumbnail storage to cache directory
- Prevent manual input of internal media prefixes (sticker, photo, etc.)
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
c1244f5: Implement unread message UI and logic updates
- Add visual indicators (dot, bold text) for unread chats in main list
- Format media message previews (Video, Photo, GIF) to be user-friendly
- Sync read status updates across Handlers and Activities
- Add blur and scale animations to ProfileActivity editor
- Move video thumbnail storage to cache directory
- Prevent manual input of internal media prefixes (sticker, photo, etc.)
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
70cb4c5: Refactor video thumbnail generation and optimize chat list sorting
- Handlers: Remove
- ChatActivity: Re-implement video thumbnail extraction using a localized
- ChatActivity: Add logic to capture frames via
- ChatActivity: Ensure aggressive player cleanup (
- ChatActivity: Update inline video player to consistently use
- ChatActivity: Change haptic feedback to
- MainActivity: Optimize chat list filtering by replacing custom sorting with
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
70cb4c5: Refactor video thumbnail generation and optimize chat list sorting
- Handlers: Remove
cacheRemoteVideoThumb and primeUploadState logic.- ChatActivity: Re-implement video thumbnail extraction using a localized
ExoPlayer with a custom DefaultLoadControl to minimize buffering.- ChatActivity: Add logic to capture frames via
TextureView, calculate aspect ratios from onVideoSizeChanged, and persist scaled bitmaps.- ChatActivity: Ensure aggressive player cleanup (
stop, clearMediaItems, release) after frame capture or playback errors.- ChatActivity: Update inline video player to consistently use
photoGuid as the custom cache key.- ChatActivity: Change haptic feedback to
LongPress when detecting and clearing restricted media prefixes.- MainActivity: Optimize chat list filtering by replacing custom sorting with
sortedByDescending and simplifying derivedStateOf logic.Signed-off-by: NikkaGames <[email protected]> by NikkaGames