mirror of
https://github.com/jlengrand/Maestro.git
synced 2026-03-10 08:31:19 +00:00
Improve custom notification logging to reflect actual trigger state
- Update ToastContext to compute willTriggerCustomNotification before logging - audioNotification.enabled now only true when notification WILL be sent - Add reason field to explain why notification was skipped (disabled, no-command, opted-out, no-content) - Bump notification skip log from debug to info level in IPC handler - Update test to match new audioNotification format with reason field
This commit is contained in:
@@ -271,7 +271,7 @@ describe('ToastContext', () => {
|
||||
taskDuration: 5000,
|
||||
agentSessionId: 'test-session-id',
|
||||
tabName: 'TestTab',
|
||||
audioNotification: { enabled: false },
|
||||
audioNotification: { enabled: false, reason: 'disabled' },
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -364,7 +364,10 @@ export function registerNotificationsHandlers(): void {
|
||||
async (_event, text: string, command?: string): Promise<NotificationCommandResponse> => {
|
||||
// Skip if there's no content to send
|
||||
if (!text || text.trim().length === 0) {
|
||||
logger.debug('Notification skipped - no content to send', 'Notification');
|
||||
logger.info('Notification skipped - empty or whitespace-only content', 'Notification', {
|
||||
textLength: text?.length ?? 0,
|
||||
hasText: !!text,
|
||||
});
|
||||
return { success: true }; // Return success since there's nothing to do
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,16 @@ export function ToastProvider({
|
||||
// Capture audio feedback state for logging
|
||||
const { enabled: audioEnabled, command: audioCommand } = audioFeedbackRef.current;
|
||||
|
||||
// Determine if we have content to send for custom notification
|
||||
// Also skip if there's no content to send
|
||||
const hasContent = toast.message && toast.message.trim().length > 0;
|
||||
|
||||
// Determine if custom notification will actually be triggered
|
||||
const willTriggerCustomNotification =
|
||||
audioEnabled && audioCommand && !toast.skipCustomNotification && hasContent;
|
||||
|
||||
// Log toast to system logs (include audio notification info)
|
||||
// Only log enabled: true when we will actually trigger the notification
|
||||
window.maestro.logger.toast(toast.title, {
|
||||
type: toast.type,
|
||||
message: toast.message,
|
||||
@@ -107,23 +116,29 @@ export function ToastProvider({
|
||||
taskDuration: toast.taskDuration,
|
||||
agentSessionId: toast.agentSessionId,
|
||||
tabName: toast.tabName,
|
||||
// Audio/TTS notification info
|
||||
audioNotification:
|
||||
audioEnabled && audioCommand
|
||||
? {
|
||||
enabled: true,
|
||||
command: audioCommand,
|
||||
}
|
||||
: {
|
||||
enabled: false,
|
||||
},
|
||||
// Audio/TTS notification info - reflects whether notification WILL be triggered
|
||||
audioNotification: willTriggerCustomNotification
|
||||
? {
|
||||
enabled: true,
|
||||
command: audioCommand,
|
||||
}
|
||||
: {
|
||||
enabled: false,
|
||||
reason: !audioEnabled
|
||||
? 'disabled'
|
||||
: !audioCommand
|
||||
? 'no-command'
|
||||
: toast.skipCustomNotification
|
||||
? 'opted-out'
|
||||
: !hasContent
|
||||
? 'no-content'
|
||||
: 'unknown',
|
||||
},
|
||||
});
|
||||
|
||||
// Run custom notification command if enabled and configured
|
||||
// Skip for toasts that explicitly opt out (e.g., synopsis messages)
|
||||
// Also skip if there's no content to send
|
||||
const hasContent = toast.message && toast.message.trim().length > 0;
|
||||
if (audioEnabled && audioCommand && !toast.skipCustomNotification && hasContent) {
|
||||
if (willTriggerCustomNotification) {
|
||||
console.log(
|
||||
'[ToastContext] Running custom notification with message:',
|
||||
toast.message,
|
||||
|
||||
Reference in New Issue
Block a user