Context
JoyBoy supports multiple conversations and background jobs. Skeleton/progress replacement must target the correct active chat, not an older .image-skeleton-message or .video-skeleton-message from another conversation.
Relevant files:
web/static/js/chat.js
web/static/js/generation.js
web/static/js/app.js
tests/
Suggested approach
Extract the DOM lookup logic for scoped skeleton replacement into a small testable helper, or add a lightweight JS/unit smoke test that builds a fake DOM with two chats and verifies the newest matching skeleton is updated.
Acceptance criteria
- A test covers two chat IDs with simultaneous/old skeletons.
- The helper chooses the skeleton matching the requested
chatId.
- Legacy fallback still works only when no scoped skeleton exists.
- Existing Python tests and JS syntax checks still pass.
Context
JoyBoy supports multiple conversations and background jobs. Skeleton/progress replacement must target the correct active chat, not an older
.image-skeleton-messageor.video-skeleton-messagefrom another conversation.Relevant files:
web/static/js/chat.jsweb/static/js/generation.jsweb/static/js/app.jstests/Suggested approach
Extract the DOM lookup logic for scoped skeleton replacement into a small testable helper, or add a lightweight JS/unit smoke test that builds a fake DOM with two chats and verifies the newest matching skeleton is updated.
Acceptance criteria
chatId.