summaryrefslogtreecommitdiff
path: root/indra/newview/llimview.cpp
AgeCommit message (Collapse)Author
8 daysMerge tag 'Second_Life_Release#db59a05a-26.5' into 26.5Erik Kundiman
2026-09-23Share stitched history loading between IM sessions and Previewpepper
Give both consumers one history owner for subscriptions, asynchronous reads and publication. Retain weak handles, request tokens, account epochs, archive serials, consent changes and delayed-name reloads while removing the duplicated consumer state machines. Check LogShowHistory before model publication and stop the IM owner before voice teardown. Preserve plaintext fallback when dispatch is unavailable.
2026-09-16Reconcile live IMs recorded shortly after deliverypepper
Allow ChatService timestamps up to five seconds after online receipt while retaining the existing 60-second delivery-delay limit. Forwarding can finish before the service records a message, so requiring receipt to follow created_at left a historical copy beside the live reply. Keep newest-first one-for-one matching and cover delayed recording, calendar boundaries, translations, and partial repeated-message histories. Validated with the Windows Release ChatService core target: six regression cases failed before the fix and all 38 cases pass afterward.
2026-09-10Share the ChatService quiet timer across incoming and outgoing IMspepper
Apply the existing per-resident 15-second quiet deadline to accepted incoming direct IMs as well as sends. This prevents each received IM from immediately starting history reconciliation during an active exchange. Keep live delivery, conversation opens and first-contact discovery immediate. Rename outbound scheduler terms to activity terms while reusing the existing queue, cooldown and cancellation paths. Validated with the Windows Release viewer build, all 116 configured Windows tests and an 80-check native scheduler fixture. The scheduler fixture also compiles with GCC warnings treated as errors.
2026-09-10Consolidate ChatService reconciliation and fix live IM replaypepper
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.
2026-09-04Merge remote-tracking branch 'secondlife/release/26.4' into 26.4Erik Kundiman
2026-08-31Avoid redundant IM transcript reconstructionpepper
Compare normalized historical overlays before replacing the visible transcript, and retain the current bounded history when durable live rows only roll the oldest entries out of the 200-message window. Let an active history read observe newer archive generations and restart itself instead of scheduling overlapping reads from snapshot callbacks. Validated with the RelWithDebInfo secondlife-bin build and the LLChatServiceHistoryCore test suite.
2026-08-14Merge branch 'project/lua_editor' into pepper/pchat-revampJonathan "Geenz" Goodman
2026-08-14Refresh ChatService history after outbound burstspepper
Track one resettable quiet deadline for each direct-message resident so multiple outgoing messages coalesce into one head refresh after the last send. Preserve immediate bounded discovery for new conversations and reuse the existing priority and follow-up path at pacing, response, and archive-preparation boundaries. Retire deadlines when consent, blocking, or deletion makes work ineligible, preventing a failed deletion from leaving a rapid wake loop. Leave inbound priority and tab switching unchanged. Validated with the RelWithDebInfo secondlife-bin build and the LLChatServiceHistoryCore test suite.
2026-08-13Reconcile stitched history with live messagespepper
Replace exact legacy transcript occurrences with canonical ChatService rows while preserving local ordering and consuming repeated messages one-for-one. Carry service timestamps into normalized IM history and keep system sender identity null. Filter authoritative P2P history refreshes against same-minute live rows so open sessions do not display duplicate messages after asynchronous reloads.
2026-08-13Restore resident links in stitched legacy historypepper
Recover missing sender UUIDs for plaintext transcript rows from existing name caches while normalizing stitched history. Preserve explicit ChatService and system IDs so resident headers regain icons and profile actions without scheduling name lookups. Validated with the RelWithDebInfo secondlife-bin build and the LLChatServiceHistoryCore test suite (11 tests).
2026-08-13Discover new outbound ChatService conversationspepper
Arm a bounded discovery confirmation when the first direct IM is sent to a resident absent from the validated conversation list. Preserve the existing priority placeholder across the first validated miss, then retry the shared list path after the manager-wide delay. Leave listed conversations and inbound priority behavior unchanged, and retire the unresolved candidate after a second miss so no general live-message debounce or parallel scheduler is introduced. Validated with the RelWithDebInfo secondlife-bin build and the LLChatServiceHistoryCore test suite.
2026-08-13Improve ChatService history readabilitypepper
Add phase-oriented comments around history synchronization, archive validation, asynchronous view updates, and transcript deletion. Expand dense control flow and restore readable spacing throughout the ChatService implementation and its integration points without changing behavior. Restore unrelated end-of-file formatting so it drops out of the overall PR diff.
2026-08-13Implement ChatService persistent history stitchingpepper
Synchronize eligible direct IM conversations through the ChatService capabilities into durable per-resident CSV archives. Validate deterministic conversation IDs, UUIDv1 ordering, complete discovery and history payloads, and the account-wide deletion cutoff before a bounded pass can append or rebuild an archive. Run discovery, pacing, retries, metadata resolution, and participant paging through one account-scoped manager. Immediately prioritize new Direct sessions, P2P previews, and accepted inbound IMs while honoring transcript consent, authoritative mute state, capability changes, and fail-closed account state. Stitch ordinary and monthly legacy plaintext before the oldest accumulated service row, keep normal plaintext logging active, and merge the first validated service page in memory while older backfill continues. Drive Direct and Preview reloads and their nonmodal loading status from shared resident snapshots. Maintain the human-readable chat_service_index.csv manifest and protect archive updates with strict validation, torn-tail repair, corrupt-file preservation, private file stamps, and atomic replacement. Extend Delete Transcripts with a durable TimeUUID boundary and an asynchronous sweep that suppresses every historical source until cleanup completes safely. Add core coverage for deterministic IDs, UUIDv1 and timestamp validation, strict page and list contracts, RFC 4180 CSV quoting, archive scanning, torn tails, and corrupt records.
2026-06-13Merge tag 'Second_Life_Release#663bf4d3-26.3' into 26.3Erik Kundiman
2026-05-20Merge branch 'develop' into geenz/26.3-to-developJonathan "Geenz" Goodman
2026-05-12Remove Vivox-related codeRoxie Linden
Remove the Vivox-related code altogether, including SLVoice.
2026-04-27#5690 fix viewer trying to fetch group chat history for p2p IMMaxim Nikolenko
* #5690 fix viewer trying to fetch group chat history for p2p IM * #5690 cache "FetchGroupChatHistory" setting
2025-12-04Merge remote-tracking branch 'secondlife/release/2026.01' into 2026.01Erik Kundiman
2025-11-28#5072 Use make_shared for more efficient ref counting and allocationRye
2025-10-25Merge tag 'Second_Life_Release#01823996-2025.08' into 2025.08Erik Kundiman
2025-10-09#4777 Fix crash on missing factoryAndrey Kleshchev
2025-05-29Merge branch 'main' into 2025.05Erik Kundiman
2025-05-28Merge branch 'main' into marchcat/2505-mergeAndrey Lihatskiy
# Conflicts: # .github/workflows/qatest.yaml # indra/llcommon/llsdutil.h # indra/llui/llflatlistview.h # indra/newview/llinventorybridge.cpp # indra/newview/lloutfitgallery.cpp # indra/newview/lloutfitgallery.h
2025-05-22Merge tag 'Second_Life_Release#a31b7ae2-Second_Life_Release#a31b7ae-2025.04' ↵Erik Kundiman
into 2025.04
2025-05-12#4010 play only audio mention ping for new conversationMaxim Nikolenko
2025-05-09Merge tag 'Second_Life_Release#377d1b38-2025.04' into 2025.04Erik Kundiman
2025-05-08#4010 Add audio ping for chat mentionsMaxim Nikolenko
2025-05-07#4011 Add conversation list highlight for chat mentionMaxim Nikolenko
2025-04-19Merge tag 'Second_Life_Release#11cd9b9-2025.05' into 2025.05Erik Kundiman
2025-04-19Merge tag 'Second_Life_Release#9a333e65-2025.04' into 2025.04Erik Kundiman
2025-04-15Merge branch 'develop' into marchcat/05-developAndrey Lihatskiy
2025-04-15Merge branch 'main' into marchcat/maint-c-restoreAndrey Lihatskiy
# Conflicts: # indra/llcommon/lldate.h # indra/newview/llappviewer.cpp # indra/newview/llinventorybridge.cpp # indra/newview/llmaterialeditor.cpp # indra/newview/llviewerparceloverlay.cpp # indra/newview/llvoavatar.cpp
2025-04-15Merge pull request #3911 from secondlife/mainJonathan "Geenz" Goodman
Merge 2025.03 release into develop.
2025-04-10Merge commit '9e24b30' into marchcat/maint-c/restoreAndrey Lihatskiy
# Conflicts: # indra/llmath/v2math.cpp # indra/llmath/v2math.h # indra/llmath/v3math.h # indra/llmath/v4math.h # indra/llui/llfolderviewitem.cpp # indra/llui/llfolderviewitem.h # indra/llui/llfolderviewmodel.h # indra/llui/llmodaldialog.cpp # indra/llui/lltexteditor.cpp # indra/llui/lltexteditor.h # indra/llwindow/llwindowwin32.cpp # indra/newview/llagent.cpp # indra/newview/llagentcamera.h # indra/newview/llavatarrenderinfoaccountant.cpp # indra/newview/llconversationmodel.h # indra/newview/llfloaterinventorysettings.cpp # indra/newview/llfloaternamedesc.cpp # indra/newview/llfloaternamedesc.h # indra/newview/llfloaterobjectweights.cpp # indra/newview/llfloaterobjectweights.h # indra/newview/llfolderviewmodelinventory.h # indra/newview/llinspecttexture.cpp # indra/newview/llinventorybridge.cpp # indra/newview/llinventorybridge.h # indra/newview/llinventoryfunctions.cpp # indra/newview/llinventorygallery.h # indra/newview/llinventorygallerymenu.cpp # indra/newview/llinventorymodel.cpp # indra/newview/llinventorypanel.cpp # indra/newview/llinventorypanel.h # indra/newview/llmaterialeditor.cpp # indra/newview/lloutfitgallery.cpp # indra/newview/lloutfitgallery.h # indra/newview/lloutfitslist.cpp # indra/newview/lloutfitslist.h # indra/newview/llpanelgroupcreate.cpp # indra/newview/llpanelgroupgeneral.cpp # indra/newview/llpanelobjectinventory.cpp # indra/newview/llpaneloutfitsinventory.h # indra/newview/llpanelprofile.cpp # indra/newview/llpanelwearing.cpp # indra/newview/llreflectionmap.cpp # indra/newview/llselectmgr.cpp # indra/newview/llsidepanelappearance.cpp # indra/newview/llsidepaneliteminfo.cpp # indra/newview/llteleporthistorystorage.cpp # indra/newview/lltexturectrl.cpp # indra/newview/lltexturectrl.h # indra/newview/lltexturefetch.cpp # indra/newview/lltexturefetch.h # indra/newview/llviewerassetupload.cpp # indra/newview/llviewercamera.cpp # indra/newview/llviewercamera.h # indra/newview/llviewermenufile.cpp # indra/newview/llviewerobject.h # indra/newview/llviewertexture.cpp # indra/newview/llviewerwindow.cpp # indra/newview/llvoavatar.cpp # indra/newview/llvoavatar.h # indra/newview/llvoavatarself.cpp # indra/newview/llvovolume.cpp # indra/newview/llvovolume.h # indra/newview/tests/llviewerassetstats_test.cpp
2025-03-21Merge tag 'Second_Life_Release#895a6739-2025.03' into 2025.03Erik Kundiman
2025-03-05#2626 fix for incoming IM calls not being rejected when DND mode is activeMaxim Nikolenko
2025-02-26Issue #2907: When passing the injected notification message into addMessage ↵Rider Linden
on behalf of the system, optionally specify the agent id and name that should be used. (cherry picked from commit 7ff297ec3fc5f878cc9a916678987c0033b7eb8a)
2025-02-26Issue #2907: Process metadata sent along with chats of type ↵Rider Linden
IM_NOTHING_SPECIAL, The metadata can contain information about the bot status of the sender. It may also contain a system-injected notification that is displayed to the agent as part of the 1:1 chat window.
2024-12-31Though it worked, it should be new_session_idErik Kundiman
2024-12-30Relocate leaving muted group chat session snippetErik Kundiman
to avoid incoming sound & flashing toolbar button.
2024-12-29Group chat blockerErik Kundiman
https://megapahit.com/show_bug.cgi?id=9 At first I was trying to implement it without any peeking, but I got stuck at making the group IM blocking state synced across logins and user accounts, and found that there wasn't any data block reserved for it in SL group-related message protocols. I took a peek at Kokua's code, and the feature seemed to have been imported from Exodus viewer. There were exogroupmutelist files, which had some implementation of saving to a list named muted_groups.xml, which was also how I thought the information was stored at first, locally, meaning would have to be synced manually across user accounts. I tested the feature on Kokua, and found it didn't generate any file that lists the muted groups locally, instead it was indeed synced across devices, which meant that there must have been a way to store such information in SL servers. After looking carefully at the logs, only then I noticed a call from llmutelist, which I then realised it was wrapped by exogroupmutelist. So, this implementation forwards Exodus' way of using llmutelist to llpanelgroupgeneral, for saving and loading the states to and from SL server without using the exogroupmutelist files which contained more, but unused, code. Exodus' way is to use legacy mute, and construct the name by prepending "Group:" to the group ID (I had tried setting LLMute's enum to GROUP, instead of BY_NAME, and it didn't work). This implementation also differs in how the chat gets blocked in llimview.cpp, I just tried some few lines and it worked, though I don't know yet whether this implementation is good/better or not, so I leave it to others to improve it if they want.
2024-11-06Merge remote-tracking branch 'secondlife/release/2024.09-ExtraFPS' into ↵Erik Kundiman
2024.09-ExtraFPS
2024-11-01viewer#2985 Odd crash when notifying voice observersAndrey Kleshchev
Crash points at enableDisableCallBtn, but button's floater was cleaned earlier and has a removeObserver call so an observer record should be long gone. Likely something else is going on. Went over various callbacks and made sure they are cleaned. But in case floater somehow remained, added mSession = nullptr.
2024-10-18Merge remote-tracking branch 'secondlife/release/2024.09-ExtraFPS' into ↵Erik Kundiman
2024.09-ExtraFPS
2024-09-09Callback button for groups was not being reenabled after hanging up on group ↵Roxie Linden
call. For #2532, callback button was remaining disabled after hanging up on a group call. Also, fix an issue where user was automatically added to a group call after the initiator of the group call hangs up and re-calls the group.
2024-09-01Merge remote-tracking branch 'secondlife/release/2024.08-DeltaFPS' into ↵Erik Kundiman
2024.08-DeltaFPS
2024-08-20Merge remote-tracking branch 'origin/release/2024.06-atlasaurus' into developBrad Linden
# Conflicts: # autobuild.xml # indra/newview/llvoicewebrtc.cpp
2024-08-19Merge remote-tracking branch 'secondlife/release/2024.06-atlasaurus' into ↵Erik Kundiman
2024.06-atlasaurus
2024-08-15Merge remote-tracking branch 'origin/release/webrtc-voice' into ↵Brad Linden
release/2024.06-atlasaurus # Conflicts: # indra/newview/llpanelpeople.cpp