Skip to content

additional fixes/cleanup for chat modernization project viewer - #6298

Open
rohvani wants to merge 1 commit into
project/chat-modernizationfrom
pepper/chat-fixes-2
Open

rohvani wants to merge 1 commit into
project/chat-modernizationfrom
pepper/chat-fixes-2

Conversation

@rohvani

@rohvani rohvani commented Sep 10, 2026

Copy link
Copy Markdown
Member

Use this project board to find the referenced issues: https://github.com/orgs/secondlife/projects/90/views/1

Issues Covered:

  • Issue 131 - Desktop conversation log duplicates first exchange with another user

This PR consolidates chat-history stitching and reconciliation logic in llchatservicehistory.cpp and llchatservicehistorycore.cpp, rather than having it fragmented across several files.

The bulk of this PR is in the ChatService tests which consists of new tests covering various bug scenarios observed by either QA or myself. There is also quite a bit of cleanup around ChatService and its reconciliation process during chat stitching.

Lastly, this PR includes a fix for a deadlock that could occur during login when ChatService co-routines attempted to rebuild the chat UI while font initialization was still in progress.

Checklist

Please ensure the following before requesting review:

  • I have provided a clear title and detailed description for this pull request.
  • If useful, I have included media such as screenshots and video to show off my changes.
  • The PR is linked to a relevant issue with sufficient context.
  • I have tested the changes locally and verified they work as intended.
  • All new and existing tests pass.
  • Code follows the project's style guidelines.
  • Documentation has been updated if needed.
  • Any dependent changes have been merged and published in downstream modules
  • I have reviewed the contributing guidelines.

Additional Notes

@github-actions github-actions Bot added the c/cpp label Sep 10, 2026
Merge archives, plaintext and head previews by service ID and occurrence
before applying history limits. Keep loaded history and visible context in
ChatService so IM sessions and previews share one composer, with ordinary
live appends remaining independent of history replay.

Preserve original bodies and send-versus-receipt timing through offline
delivery and translation. Match known send times exactly and online receipt
times within a rolling 60-second window. Consume eligible occurrences once
in chronological order so repeated messages survive reconciliation across
minute boundaries.

Link offer fallback text to its notification ID and advance the replay
cursor for each actual row. Missing or delayed fallback rows can no longer
cause the following live IM to be skipped.

Dispatch ChatService presentation through the main-loop queue with runtime
and current-state checks. This prevents login deadlocks from reentering
font initialization in another coroutine. Await deletion invalidation
before continuing cleanup so a delayed clear cannot erase later messages.

Validated with the Release viewer build, all 34 LLChatServiceHistoryCore
cases, and native delivery, archive, offer replay and coroutine-deadlock
fixtures. The deadlock fixtures reproduce the original hangs and pass with
deferred presentation.
@rohvani
rohvani force-pushed the pepper/chat-fixes-2 branch from 517d466 to fe57d2c Compare September 10, 2026 21:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant