fix: hide todo list/status when all todos complete, fix notifications (#124)

This commit is contained in:
vio1ator
2026-01-11 17:00:01 +02:00
committed by GitHub
parent e09559f711
commit 53b51a12c9
3 changed files with 9 additions and 7 deletions
@@ -121,7 +121,7 @@ export const StatusRow: React.FC<StatusRowProps> = ({
return { completed, total };
}, [todos]);
const hasTodos = visibleTodos.length > 0;
const hasActiveTodos = visibleTodos.some((t) => t.status === "in_progress" || t.status === "pending");
// Original logic from ChatInput
const shouldRenderPlaceholder = !showAbortStatus && (wasAborted || !abortActive);
@@ -133,8 +133,8 @@ export const StatusRow: React.FC<StatusRowProps> = ({
// - isComplete (showing "Done" result)
// - wasAborted (showing "Aborted" result)
// - placeholderShowingResult (placeholder still displaying result)
// - hasTodos or showAbortStatus
const hasContent = isWorking || isComplete || wasAborted || placeholderShowingResult || hasTodos || showAbortStatus;
// - hasActiveTodos or showAbortStatus
const hasContent = isWorking || isComplete || wasAborted || placeholderShowingResult || hasActiveTodos || showAbortStatus;
// Close popover when clicking outside
const popoverRef = React.useRef<HTMLDivElement>(null);
@@ -171,7 +171,7 @@ export const StatusRow: React.FC<StatusRowProps> = ({
) : null;
// Todo trigger button
const todoTrigger = hasTodos ? (
const todoTrigger = hasActiveTodos ? (
<button
type="button"
onClick={toggleExpanded}
@@ -229,7 +229,7 @@ export const StatusRow: React.FC<StatusRowProps> = ({
{todoTrigger}
{/* Popover dropdown */}
{isExpanded && hasTodos && (
{isExpanded && hasActiveTodos && (
<div
style={{ maxWidth: "calc(100cqw - 4ch)" }}
className={cn(
@@ -1,7 +1,6 @@
import React from 'react';
import { useUIStore } from '@/stores/useUIStore';
import { isWebRuntime } from '@/lib/desktop';
import { getRegisteredRuntimeAPIs } from '@/contexts/runtimeAPIRegistry';
import { toast } from 'sonner';
export const NotificationSettings: React.FC = () => {
+4 -1
View File
@@ -1048,7 +1048,8 @@ export const useEventStream = () => {
completeStreamingMessage(sessionId, messageId);
if (isWebRuntime() && nativeNotificationsEnabled) {
// Only notify when entire message is finished (finish === 'stop')
if (finish === 'stop' && isWebRuntime() && nativeNotificationsEnabled) {
const notifiedMessages = notifiedMessagesRef.current;
if (!notifiedMessages.has(messageId)) {
@@ -1288,6 +1289,7 @@ export const useEventStream = () => {
}
}, [
currentSessionId,
nativeNotificationsEnabled,
addStreamingPart,
completeStreamingMessage,
updateMessageInfo,
@@ -1711,6 +1713,7 @@ export const useEventStream = () => {
cooldownTimers.forEach((timer) => clearTimeout(timer));
cooldownTimers.clear();
messageCache.clear();
// eslint-disable-next-line react-hooks/exhaustive-deps -- Intentionally accessing current ref value at cleanup time
notifiedMessagesRef.current.clear();
pendingResumeRef.current = false;