Skip to content

fix(chat): show streamed answers as they arrive and finish them on push - #693

Open
ifedan-ed wants to merge 2 commits into
nextcloud:mainfrom
ifedan-ed:enh/noid/faster-chat-streaming
Open

ifedan-ed wants to merge 2 commits into
nextcloud:mainfrom
ifedan-ed:enh/noid/faster-chat-streaming

Conversation

@ifedan-ed

@ifedan-ed ifedan-ed commented Oct 10, 2026 •

Copy link
Copy Markdown

🤖 AI (if applicable)

  • The content of this PR was partly or fully generated using AI (N/A)

@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 132d9be4-fd22-4249-b6a6-d7fb1072c944





📥 Commits

Reviewing files that changed from the base of the PR and between 0fa2cfb and 7b7b783.






📒 Files selected for processing (5)
  • package.json
  • src/components/ChattyLLM/ChatMessage.vue
  • src/components/ChattyLLM/ChattyLLMInputForm.vue
  • src/components/ChattyLLM/streamReveal.js
  • tests/frontend/streamReveal.test.js





Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.







📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough

Walkthrough

The changes add timed progressive reveals for streamed message content and update generation-task polling to check on task events as well as on a two-second interval. The polling logic prevents overlapping requests and centralizes cleanup. The changes also add a Node.js test script and tests for reveal-length calculations.












Priority: ➖ Normal

Merge Risk: ⚪ Minimal · up to 7b7b7

Completed responses remain visible, and early task checks continue polling until the result is available. No merge-blocking issue was established.

Pre-merge checks | Passed 4 | Failed 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check Warning The description only records AI-generation metadata. It does not describe the chat streaming or polling changes. Add a short summary of the changes, such as progressive streamed-text reveals, immediate completion checks after push events, and protection against overlapping polling requests.
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files. (3 skipped: 3 …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly summarizes the main changes: faster streamed answer display and completion on push events.

  • Fix all pre-merge checks with AI
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ifedan-ed
ifedan-ed force-pushed the enh/noid/faster-chat-streaming branch from 7b7b783 to 93f8a5e Compare October 10, 2026 22:56
Daniel added 2 commits October 11, 2026 01:00
The streaming chat message typed the received text one character every
5 ms and re-rendered the markdown after each character. That caps the
display at 200 characters per second, slower than common models stream
(about 140 tokens/s, roughly 550 characters/s, for a flash model), so
the visible text fell behind the received text and jumped ahead with
each new chunk. The first chunk was not displayed at all: the watcher
was not immediate, and the streaming message is mounted with the first
chunk already set, so it showed "Reasoning…" until the second chunk.

Reveal each new chunk over at most 200 ms in ~16 ms steps. That is
shorter than the 250 ms interval at which integration_openai reports
intermediate output, so the display catches up before the next chunk.
Show the content that was received before the component was mounted.

Signed-off-by: Daniel <danitex@danvics.com>
The chat checked the generation task only every 2 seconds, so the final
message and the re-enabled input came 0 to 2 s (1 s on average) after
the task had finished, even when notify_push had already announced it.

assistant.js already turns the taskprocessing:task_update push into
assistant:task:updated and assistant:task:status:updated events. Listen
to them while polling and check right away when the task succeeded,
failed or was cancelled. Polling every 2 s stays as the fallback
without notify_push. Only one check request runs at a time.

Signed-off-by: Daniel <danitex@danvics.com>
@ifedan-ed
ifedan-ed force-pushed the enh/noid/faster-chat-streaming branch from 93f8a5e to 26d3dc0 Compare October 10, 2026 23:00
@ifedan-ed ifedan-ed changed the title Enh/noid/faster chat streaming fix(chat): show streamed answers as they arrive and finish them on push Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant