<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/newview/llchatservicehistorycore.cpp, branch 26.5</title>
<subtitle>Megapahit's fork of the Second Life viewer.
</subtitle>
<id>https://megapahit.org/viewer.git/atom?h=26.5</id>
<link rel='self' href='https://megapahit.org/viewer.git/atom?h=26.5'/>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/'/>
<updated>2026-09-23T19:24:07Z</updated>
<entry>
<title>Derive conversation identity from validated participants</title>
<updated>2026-09-23T19:24:07Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-09-21T21:31:12Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=40a7b0866c55196cd1e0dced29c83a3cb0301c1d'/>
<id>urn:sha1:40a7b0866c55196cd1e0dced29c83a3cb0301c1d</id>
<content type='text'>
Derive direct conversation IDs from the account and resident at request
and validation time. Remove their duplicate storage and the validator's
redundant conversation-ID argument.

Remove the first-list flag because empty coverage already schedules first
discovery. Retain strict list/page identity checks and add an assertion
rejecting another conversation's response.
</content>
</entry>
<entry>
<title>Remove unused Chat Service state and paging flags</title>
<updated>2026-09-23T19:24:03Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-09-21T21:21:29Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=c124a86c9fbfb7515bec2889411e66adce4b13a2'/>
<id>urn:sha1:c124a86c9fbfb7515bec2889411e66adce4b13a2</id>
<content type='text'>
Remove the unused login query, oldest summary key and comparison
operators. Use the page's existing terminal flag for the inclusive
deletion cutoff.

Add assertions that newer rows remain eligible, the cutoff ends paging,
and malformed older rows still reject the complete response.
</content>
</entry>
<entry>
<title>Simplify Chat Service timestamp validation</title>
<updated>2026-09-23T19:24:03Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-09-21T21:19:40Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=a47d7a2b35dd0f9f854af5b9c612c784b173f977'/>
<id>urn:sha1:a47d7a2b35dd0f9f854af5b9c612c784b173f977</id>
<content type='text'>
Use the existing regex library to validate the full timestamp shape,
clock fields, fractional seconds and zone suffix. Retain calendar checks,
leap-year handling and exact normalization of offset-less UTC values.

Compared acceptance and normalized output with the previous parser across
1,245 timestamp inputs.
</content>
</entry>
<entry>
<title>Remove redundant Chat Service history bookkeeping</title>
<updated>2026-09-23T19:24:02Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-09-21T21:16:55Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=85932e1ae52b02ff59b3677e5ba3ceec8114b01b'/>
<id>urn:sha1:85932e1ae52b02ff59b3677e5ba3ceec8114b01b</id>
<content type='text'>
Use strict descending TimeUUID validation to exclude duplicate page IDs,
and deterministic conversation identity to exclude duplicate direct
conversations. Add regression assertions for duplicate rows and cursor
replay while removing the extra ID sets and unused summary count.

Share regular-file inspection between scanning and mutation. Clear the
manifest dirty latch before its worker wait so callbacks can request a
follow-up, instead of comparing complete snapshots afterward.
</content>
</entry>
<entry>
<title>Reconcile live IMs recorded shortly after delivery</title>
<updated>2026-09-16T16:08:40Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-09-16T16:08:40Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=c9cb3694cce949e7ab4638200646e91814c1cc7b'/>
<id>urn:sha1:c9cb3694cce949e7ab4638200646e91814c1cc7b</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Skip system conversations during ChatService discovery</title>
<updated>2026-09-11T03:13:02Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-09-11T03:13:02Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=6d8dd429d671e7d261404435b85e9e76831d29c1'/>
<id>urn:sha1:6d8dd429d671e7d261404435b85e9e76831d29c1</id>
<content type='text'>
A stored Second Life notification can appear as a direct conversation with
an all-zero participant UUID. Validate that entry but exclude it from
resident history so it no longer rejects the entire conversation list and
prevents other archives from downloading.

Cover lists containing only a system entry and mixed system/resident
entries in either order. Validated with the Release viewer build, all 116
Windows tests including 36 ChatService core cases, and GCC warning-as-error
checks of the portable core and tests.
</content>
</entry>
<entry>
<title>Preserve repeated IM order across conversation reopening</title>
<updated>2026-09-11T02:26:47Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-09-11T02:26:47Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=bbb47725bab7c427c6589404990b2ed4e242a39e'/>
<id>urn:sha1:bbb47725bab7c427c6589404990b2ed4e242a39e</id>
<content type='text'>
Match newest live deliveries to newest eligible service occurrences so an
older repeated message keeps its historical position after its session is
recreated. Retain one-for-one matching within the rolling delivery window.

Cover late head publication, repeated refreshes and reopening with an
earlier offline message sharing the live message's body. All 116 Windows
Release test targets pass, including 35 ChatService cases. GCC also
compiles the test source with warnings treated as errors.
</content>
</entry>
<entry>
<title>Consolidate ChatService reconciliation and fix live IM replay</title>
<updated>2026-09-10T21:22:48Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-09-10T16:58:32Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=fe57d2caf1949abcdb54a35cb610b0eb9d783fd1'/>
<id>urn:sha1:fe57d2caf1949abcdb54a35cb610b0eb9d783fd1</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Restore canonical ChatService tail ordering</title>
<updated>2026-09-01T20:13:34Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-09-01T20:13:34Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=cfbbdcb6e874d73ef9429293d3afff58e1d6c216'/>
<id>urn:sha1:cfbbdcb6e874d73ef9429293d3afff58e1d6c216</id>
<content type='text'>
Apply the durable archive boundary before reconciling dated legacy overlaps so post-boundary messages stay in canonical service order and survive consumer caps.

Name the offset-less SLT conversion at the seam and cover capped archive summaries and UTC-7/UTC-8 boundary cases.

Validated with the RelWithDebInfo secondlife-bin build, the LLChatServiceHistoryCore suite (14 tests), the LLConversationLog suite (3 tests), and all 19 newview CTest targets.
</content>
</entry>
<entry>
<title>Normalize IM sender names during history reconciliation</title>
<updated>2026-08-26T15:50:26Z</updated>
<author>
<name>pepper</name>
<email>3782201+rohvani@users.noreply.github.com</email>
</author>
<published>2026-08-26T15:50:26Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=467c3116760966c61edbff2e8079609f22635c14'/>
<id>urn:sha1:467c3116760966c61edbff2e8079609f22635c14</id>
<content type='text'>
Compare fallback sender identities as canonical resident usernames when either stitched source lacks a UUID. This lets legacy First Last ChatService names match viewer first.last names, preventing the first outbound live IM from retaining a duplicate history row.

Cover legacy-to-resident matching and distinct-resident rejection in the LLChatServiceHistoryCore tests.

Validated with the Release secondlife-bin build and the LLChatServiceHistoryCore test suite (13 tests).
</content>
</entry>
</feed>
