Skip to content

Commit 0f6d859

Browse files
committed
fix
1 parent 62caf31 commit 0f6d859

File tree

7 files changed

+551
-33
lines changed

7 files changed

+551
-33
lines changed

webapp/src/components/MessageList.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ export const expandMessageReferences = (content: string, messages: Message[]): s
204204
processedRefs.add(messageID); // Mark this reference as processed
205205
const referencedMessage = messages.find(m => m.id === messageID);
206206
if (referencedMessage) {
207-
logger.debug('Expanding referenced message', {id: messageID, contentLength: referencedMessage.content.length});
207+
//logger.debug('Expanding referenced message', {id: messageID, contentLength: referencedMessage.content.length});
208208
node.innerHTML = expandMessageReferences(referencedMessage.content, messages);
209209
} else {
210210
logger.debug('Referenced message not found', {id: messageID});
@@ -234,6 +234,17 @@ const MessageList: React.FC<MessageListProps> = ({messages: propMessages}) => {
234234
const messages = Array.isArray(propMessages) ? propMessages :
235235
Array.isArray(storeMessages) ? storeMessages : [];
236236
const messageListRef = useRef<HTMLDivElement>(null);
237+
// Track processed reference versions to detect changes
238+
const referencesVersions = React.useMemo(() => {
239+
const versions: Record<string, number> = {};
240+
messages.forEach(msg => {
241+
if (msg.id?.startsWith('z')) {
242+
versions[msg.id] = msg.version || 0;
243+
}
244+
});
245+
return versions;
246+
}, [messages]);
247+
237248
const finalMessages = React.useMemo(() => messages
238249
.filter((message) => message.id && !message.id.startsWith("z"))
239250
.filter((message) => message.content?.length > 0).map((message) => (
@@ -242,7 +253,7 @@ const MessageList: React.FC<MessageListProps> = ({messages: propMessages}) => {
242253
content: expandMessageReferences(message.content, messages)
243254
}
244255
)),
245-
[messages]);
256+
[messages, referencesVersions]); // Add referencesVersions as dependency
246257

247258
// Effect to handle syntax highlighting after render
248259
useEffect(() => {

webapp/src/store/slices/messageSlice.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,18 @@ const messageSlice = createSlice({
5454
addMessage: (state: MessageState, action: PayloadAction<Message>) => {
5555
const messageId = action.payload.id;
5656
const messageVersion = action.payload.version;
57+
// Ensure version is set
58+
if (!messageVersion) {
59+
action.payload.version = Date.now();
60+
}
61+
5762
// Batch multiple message updates
5863
if (state.pendingUpdates && state.pendingUpdates.length > 0) {
5964
state.pendingUpdates.push(action.payload);
6065
return;
6166
}
6267
// Process message immediately if no pending updates
6368
const existingVersion = state.messageVersions[messageId];
64-
// Skip processing if message is older or duplicate
65-
if (existingVersion && existingVersion >= messageVersion) {
66-
console.debug(`${LOG_PREFIX} Ignoring older/duplicate message version:`, {
67-
id: messageId,
68-
existing: existingVersion,
69-
received: messageVersion
70-
});
71-
return;
72-
}
7369
state.messageVersions[messageId] = messageVersion;
7470
if (existingVersion) {
7571
// Update the message in place instead of removing and re-adding
@@ -82,6 +78,10 @@ const messageSlice = createSlice({
8278
console.debug(`${LOG_PREFIX} HTML content sanitized for message ${action.payload.id}`);
8379
}
8480
state.messages[existingIndex] = action.payload;
81+
// Force version update for reference messages
82+
if (messageId.startsWith('z')) {
83+
action.payload.version = Date.now();
84+
}
8585
console.debug(`${LOG_PREFIX} Updated existing message at index ${existingIndex}`);
8686
return;
8787
}

webui/src/main/resources/application/asset-manifest.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"files": {
33
"main.css": "/static/css/main.eb836bdd.css",
4-
"main.js": "/static/js/main.21e6ce4a.js",
4+
"main.js": "/static/js/main.90b2f58a.js",
55
"static/js/9017.98ad007d.chunk.js": "/static/js/9017.98ad007d.chunk.js",
66
"static/js/5536.9c75127e.chunk.js": "/static/js/5536.9c75127e.chunk.js",
77
"static/js/7035.2bce51c5.chunk.js": "/static/js/7035.2bce51c5.chunk.js",
@@ -73,7 +73,7 @@
7373
"static/js/5195.756798f5.chunk.js": "/static/js/5195.756798f5.chunk.js",
7474
"index.html": "/index.html",
7575
"main.eb836bdd.css.map": "/static/css/main.eb836bdd.css.map",
76-
"main.21e6ce4a.js.map": "/static/js/main.21e6ce4a.js.map",
76+
"main.90b2f58a.js.map": "/static/js/main.90b2f58a.js.map",
7777
"9017.98ad007d.chunk.js.map": "/static/js/9017.98ad007d.chunk.js.map",
7878
"5536.9c75127e.chunk.js.map": "/static/js/5536.9c75127e.chunk.js.map",
7979
"7035.2bce51c5.chunk.js.map": "/static/js/7035.2bce51c5.chunk.js.map",
@@ -141,6 +141,6 @@
141141
},
142142
"entrypoints": [
143143
"static/css/main.eb836bdd.css",
144-
"static/js/main.21e6ce4a.js"
144+
"static/js/main.90b2f58a.js"
145145
]
146146
}
Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1 @@
1-
<!doctype html>
2-
<html lang="en">
3-
<head>
4-
<meta charset="utf-8"/>
5-
<link rel="icon" href="favicon.ico"/>
6-
<meta name="viewport" content="width=device-width,initial-scale=1"/>
7-
<meta name="theme-color" content="#000000"/>
8-
<meta name="description" content="Web site created using create-react-app"/>
9-
<link rel="apple-touch-icon" href="logo192.png"/>
10-
<link rel="manifest" href="manifest.json"/>
11-
<title>React App</title>
12-
<script defer="defer" src="static/js/main.21e6ce4a.js"></script>
13-
<link href="static/css/main.eb836bdd.css" rel="stylesheet">
14-
</head>
15-
<body>
16-
<noscript>You need to enable JavaScript to run this app.</noscript>
17-
<div id="root"></div>
18-
</body>
19-
</html>
1+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>React App</title><script defer="defer" src="/static/js/main.90b2f58a.js"></script><link href="/static/css/main.eb836bdd.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

webui/src/main/resources/application/static/js/main.90b2f58a.js

Lines changed: 452 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*!
2+
* Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com
3+
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4+
* Copyright 2024 Fonticons, Inc.
5+
*/
6+
7+
/*! @license DOMPurify 3.2.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.2/LICENSE */
8+
9+
/*! Bundled license information:
10+
11+
js-yaml/dist/js-yaml.mjs:
12+
(*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *)
13+
*/
14+
15+
/**
16+
* @license React
17+
* react-dom.production.min.js
18+
*
19+
* Copyright (c) Facebook, Inc. and its affiliates.
20+
*
21+
* This source code is licensed under the MIT license found in the
22+
* LICENSE file in the root directory of this source tree.
23+
*/
24+
25+
/**
26+
* @license React
27+
* react-jsx-runtime.production.min.js
28+
*
29+
* Copyright (c) Facebook, Inc. and its affiliates.
30+
*
31+
* This source code is licensed under the MIT license found in the
32+
* LICENSE file in the root directory of this source tree.
33+
*/
34+
35+
/**
36+
* @license React
37+
* react.production.min.js
38+
*
39+
* Copyright (c) Facebook, Inc. and its affiliates.
40+
*
41+
* This source code is licensed under the MIT license found in the
42+
* LICENSE file in the root directory of this source tree.
43+
*/
44+
45+
/**
46+
* @license React
47+
* scheduler.production.min.js
48+
*
49+
* Copyright (c) Facebook, Inc. and its affiliates.
50+
*
51+
* This source code is licensed under the MIT license found in the
52+
* LICENSE file in the root directory of this source tree.
53+
*/
54+
55+
/**
56+
* @license React
57+
* use-sync-external-store-with-selector.production.min.js
58+
*
59+
* Copyright (c) Facebook, Inc. and its affiliates.
60+
*
61+
* This source code is licensed under the MIT license found in the
62+
* LICENSE file in the root directory of this source tree.
63+
*/
64+
65+
/**
66+
* Prism: Lightweight, robust, elegant syntax highlighting
67+
*
68+
* @license MIT <https://opensource.org/licenses/MIT>
69+
* @author Lea Verou <https://lea.verou.me>
70+
* @namespace
71+
* @public
72+
*/

webui/src/main/resources/application/static/js/main.90b2f58a.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)