@@ -339,6 +339,20 @@ def _strategy_dashboard_text(signal_metadata, *, translator) -> str:
339339 return f"{ dashboard_text } \n " + "\n " .join (timing_lines )
340340
341341
342+ def _signal_short (signal_desc : str , max_len : int = 80 ) -> str :
343+ """Extract the headline from a verbose signal description."""
344+ text = (signal_desc or "" ).strip ()
345+ if not text :
346+ return ""
347+ # Take first clause before comma, colon, or exceed max_len
348+ for sep in ("," , "。" , ":" , ";" , "\n " ):
349+ idx = text .find (sep )
350+ if idx > 0 :
351+ text = text [:idx ]
352+ break
353+ return text [:max_len ] + ("…" if len (text ) > max_len else "" )
354+
355+
342356def build_dashboard (
343357 positions ,
344358 account_values ,
@@ -408,8 +422,13 @@ def build_dashboard(
408422 diagnostics_text = "\n " .join (diagnostics_lines )
409423 localized_status_desc = _localize_notification_text (status_desc , translator = translator )
410424 localized_signal_desc = _localize_notification_text (signal_desc , translator = translator )
425+ signal_short = _signal_short (localized_signal_desc )
411426 status_lines = _format_prefixed_text (status_icon , localized_status_desc )
412- signal_lines = _format_prefixed_text ("🎯" , localized_signal_desc )
427+ # Show short signal first, then details if significantly different
428+ if len (signal_short ) < len (localized_signal_desc ) - 10 :
429+ signal_lines = _format_prefixed_text ("🎯" , signal_short ) + _format_prefixed_text ("📋" , localized_signal_desc )
430+ else :
431+ signal_lines = _format_prefixed_text ("🎯" , localized_signal_desc )
413432 status_text = "\n " .join (status_lines )
414433 signal_text = "\n " .join (signal_lines )
415434 return (
@@ -458,9 +477,13 @@ def _build_compact_message(
458477 status_line = _first_prefixed_line (status_icon , status_desc , translator = translator )
459478 if status_line :
460479 lines .append (status_line )
461- signal_line = _first_prefixed_line ("🎯" , signal_desc , translator = translator )
462- if signal_line :
463- lines .append (signal_line )
480+ signal_short = _signal_short (str (signal_desc or "" ))
481+ if signal_short :
482+ lines .append (f"🎯 { signal_short } " )
483+ # Full signal details
484+ localized = _localize_notification_text (str (signal_desc ), translator = translator )
485+ if len (localized ) > len (signal_short ) + 10 :
486+ lines .append (f"📋 { localized } " )
464487 compact_body = [str (line ).strip () for line in body_lines or () if str (line ).strip ()]
465488 if compact_body :
466489 lines .append (separator )
0 commit comments