-
Notifications
You must be signed in to change notification settings - Fork 301
feat(queue): hold/resume individual queued AI messages #941
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1056,6 +1056,7 @@ interface TerminalOutputProps { | |
| maxOutputLines: number; | ||
| onDeleteLog?: (logId: string) => number | null; // Returns the index to scroll to after deletion | ||
| onRemoveQueuedItem?: (itemId: string) => void; // Callback to remove a queued item from execution queue | ||
| onTogglePauseQueuedItem?: (itemId: string) => void; // Callback to toggle the held/paused state of a queued item | ||
| onInterrupt?: () => void; // Callback to interrupt the current process | ||
|
Comment on lines
1057
to
1060
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Include the new callback in the
🔧 Suggested fix prevProps.bionifyReadingMode === nextProps.bionifyReadingMode &&
prevProps.bionifyIntensity === nextProps.bionifyIntensity &&
prevProps.bionifyAlgorithm === nextProps.bionifyAlgorithm &&
+ prevProps.onTogglePauseQueuedItem === nextProps.onTogglePauseQueuedItem &&
prevProps.fontFamily === nextProps.fontFamily &&Also applies to: 1088-1121, 1844-1855 🤖 Prompt for AI Agents |
||
| onScrollPositionChange?: (scrollTop: number) => void; // Callback to save scroll position | ||
| onAtBottomChange?: (isAtBottom: boolean) => void; // Callback when user scrolls to/away from bottom | ||
|
|
@@ -1100,6 +1101,7 @@ export const TerminalOutput = memo( | |
| maxOutputLines, | ||
| onDeleteLog, | ||
| onRemoveQueuedItem, | ||
| onTogglePauseQueuedItem, | ||
| onInterrupt: _onInterrupt, | ||
| onScrollPositionChange, | ||
| onAtBottomChange, | ||
|
|
@@ -1847,6 +1849,7 @@ export const TerminalOutput = memo( | |
| executionQueue={session.executionQueue} | ||
| theme={theme} | ||
| onRemoveQueuedItem={onRemoveQueuedItem} | ||
| onTogglePauseItem={onTogglePauseQueuedItem} | ||
| activeTabId={activeTabId || undefined} | ||
| /> | ||
| )} | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
useQueueHandlersApp.tsxdefines its ownhandleTogglePauseQueuedItemlocally (used for the inlineQueuedItemsList) whileuseQueueHandlersexportshandleTogglePauseQueueItem(used forExecutionQueueBrowser). Both do the same!item.pausedflip, but through different code paths — one readingactiveSessionIdRef.current, the other taking an explicitsessionId. If the logic ever needs to change (e.g., adding a "cannot pause the first non-paused item" guard), it must be updated in two places. Consider wiring the inline list through the hook handler by passing the active session ID, or exposing an ID-less variant from the hook.