Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
628618d
feat: enhance thinking UI, support structured steps, and record total…
qnixsynapse Oct 18, 2025
aab1474
fix: Refactor ThinkingBlock streaming, unify tool calls
qnixsynapse Oct 18, 2025
e62a73a
fix: don't stream thought steps
qnixsynapse Oct 19, 2025
fe0d104
fix: do not add done after tool call output when there is another rea…
qnixsynapse Oct 19, 2025
7d04f01
chore: Refactor chat flow – remove loop, centralize tool handling, ad…
qnixsynapse Oct 20, 2025
f5fa714
chore: add smooth animation when step inside thinking and tool call
urmauur Oct 21, 2025
4d2570c
fix: final text stream rendering
qnixsynapse Oct 21, 2025
856890c
feat: Refactor reasoning/tool parsing and fix infinite tool loop prev…
qnixsynapse Oct 22, 2025
c3639db
chore: updat title block thinking and tool call
urmauur Oct 24, 2025
a99a186
feat: Add image visualization for tool_output steps
qnixsynapse Oct 28, 2025
6c37241
fix: disable any type checking in useChat
qnixsynapse Oct 28, 2025
a2d4d77
refactor: simplify reasoning handling in ThreadContent and related hooks
qnixsynapse Oct 29, 2025
2a36bab
feat: improve ThinkingBlock status messages and i18n
qnixsynapse Oct 29, 2025
cfe0757
fix: correct thinking time and chat translation keys
qnixsynapse Oct 29, 2025
2609bb8
refactor: streamline ThinkingBlock empty streaming handling
qnixsynapse Oct 29, 2025
31285b6
refactor: streamline streaming view logic in ThinkingBlock
qnixsynapse Oct 29, 2025
b3ff576
Remove defunct condition as tool calls and reasoning are unified
qnixsynapse Oct 30, 2025
fdde937
feat: add linkComponents prop for Markdown rendering in ThinkingBlock
qnixsynapse Oct 30, 2025
55a7afa
feat: update ScrollToBottom to use message status for button visibility
qnixsynapse Oct 30, 2025
03cf5e4
feat: enhance Message Metadata Dialog with structured display
qnixsynapse Oct 30, 2025
a7de5f2
test: improve completion.test for proactive screenshot handling and f…
qnixsynapse Oct 30, 2025
da907d2
refactor: allow nullable metadata in MessageMetadataDialog
qnixsynapse Oct 30, 2025
442fc82
refactor: reorder postMessageProcessing parameters for clarity
qnixsynapse Oct 30, 2025
0a7ddd3
feat: correct the condition check for proactive mode
Vanalite Nov 4, 2025
9b80469
refactor: update translation keys and clean up chat logic
qnixsynapse Nov 4, 2025
22ba39b
refactor: ThinkingBlock & ThreadContent memoize callbacks
qnixsynapse Nov 5, 2025
af7f914
fix: thought duration
louis-jan Nov 9, 2025
3ca1d7d
chore: clean up
louis-jan Nov 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions web-app/src/containers/ScrollToBottom.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { cn } from '@/lib/utils'
import { ArrowDown } from 'lucide-react'
import { useTranslation } from '@/i18n/react-i18next-compat'
import { useAppState } from '@/hooks/useAppState'
import { MessageStatus } from '@janhq/core'

const ScrollToBottom = ({
threadId,
Expand All @@ -18,8 +19,10 @@ const ScrollToBottom = ({
}) => {
const { t } = useTranslation()
const appMainViewBgColor = useInterfaceSettings((state) => state.appMainViewBgColor)
const { showScrollToBottomBtn, scrollToBottom } =
useThreadScrolling(threadId, scrollContainerRef)
const { showScrollToBottomBtn, scrollToBottom } = useThreadScrolling(
threadId,
scrollContainerRef
)
const { messages } = useMessages(
useShallow((state) => ({
messages: state.messages[threadId],
Expand All @@ -28,12 +31,9 @@ const ScrollToBottom = ({

const streamingContent = useAppState((state) => state.streamingContent)

const lastMsg = messages[messages.length - 1]
const showGenerateAIResponseBtn =
(messages[messages.length - 1]?.role === 'user' ||
(messages[messages.length - 1]?.metadata &&
'tool_calls' in (messages[messages.length - 1].metadata ?? {}))) &&
!streamingContent

!!lastMsg && lastMsg.status !== MessageStatus.Ready && !streamingContent
return (
<div
className={cn(
Expand Down
Loading