feat: improve chat streaming UX and add Mermaid diagram rendering (#438)

* feat: show current branch in empty chat state

* fix: display current git branch for worktrees and update them with branch change

* refactor: improve read tool output parsing with structured data

* feat: add support for message part delta events

* fix(chat): improve streaming rendering, scroll behavior, and assistant action visibility

* feat: Add mermaid diagram support to chat markdown rendering

* fix: update table download functionality to include success notification and remove unused MarkdownRenderer import

* refactor: streamline Streamdown component props for improved readability

* fix: preserve Streamdown code-block markers and use native Tauri cache clearing

* feat: add context overview panel to view conversation details
This commit is contained in:
Bohdan Triapitsyn
2026-02-17 18:25:03 +02:00
committed by GitHub
parent 138772e66e
commit 4d71bb27eb
31 changed files with 1391 additions and 182 deletions
@@ -1290,11 +1290,21 @@ export const SessionSidebar: React.FC<SessionSidebarProps> = ({
sortedWorktrees.forEach((meta) => {
const directory = normalizePath(meta.path) ?? meta.path;
const label = meta.label || meta.name || formatDirectoryName(directory, homeDirectory) || directory;
const currentBranch = gitDirectories.get(directory)?.status?.current?.trim() || null;
const metadataBranch = meta.branch?.trim() || null;
const shouldSyncLabelWithBranch = Boolean(
currentBranch
&& metadataBranch
&& meta.label
&& normalizeForBranchComparison(meta.label) === normalizeForBranchComparison(metadataBranch),
);
const label = shouldSyncLabelWithBranch
? currentBranch!
: (meta.label || meta.name || formatDirectoryName(directory, homeDirectory) || directory);
groups.push({
id: `worktree:${directory}`,
label,
branch: meta.branch || null,
branch: currentBranch || metadataBranch,
description: formatPathForDisplay(directory, homeDirectory),
isMain: false,
worktree: meta,
@@ -1309,10 +1319,11 @@ export const SessionSidebar: React.FC<SessionSidebarProps> = ({
.sort((a, b) => (groupOrder.get(a) ?? 0) - (groupOrder.get(b) ?? 0));
orphanKeys.forEach((directory) => {
const currentBranch = gitDirectories.get(directory)?.status?.current?.trim() || null;
groups.push({
id: `worktree:orphan:${directory}`,
label: formatDirectoryName(directory, homeDirectory) || directory,
branch: null,
branch: currentBranch,
description: formatPathForDisplay(directory, homeDirectory),
isMain: false,
worktree: null,
@@ -1323,7 +1334,7 @@ export const SessionSidebar: React.FC<SessionSidebarProps> = ({
return groups;
},
[homeDirectory, worktreeMetadata, pinnedSessionIds]
[homeDirectory, worktreeMetadata, pinnedSessionIds, gitDirectories]
);
const toggleGroupSessionLimit = React.useCallback((groupId: string) => {