@@ -156,12 +156,16 @@ func renderRichHeadline(sb *strings.Builder, h *health.HeadlineSignal) {
156156func renderRichMorningSummary (sb * strings.Builder , b * health.BriefingResponse , f freshness , lang string ) {
157157 sleepValue := "—"
158158 sleepRead := tr (lang , "tg_warn_no_sleep" )
159- if b .Sleep != nil {
159+ if f .sleepStale () && f .sleepKnown {
160+ sleepRead = fmt .Sprintf (tr (lang , "tg_sleep_silence" ), fmtSilence (f .sleep , lang ))
161+ } else if b .Sleep != nil {
160162 sleepValue = fmt .Sprintf ("%.1fh" , b .Sleep .TotalAvg )
161163 sleepRead = sectionSummary (findSection (b , "sleep" ))
162164 }
165+ recoveryValue := fmt .Sprintf ("%d%%" , b .RecoveryPct )
163166 recoveryRead := sectionSummary (findSection (b , "recovery" ))
164167 if f .watchOff () && f .watchKnown {
168+ recoveryValue = "—"
165169 recoveryRead = fmt .Sprintf (tr (lang , "tg_watch_off" ), fmtSilence (f .watch , lang ))
166170 }
167171 energyValue , energyRead := "—" , "—"
@@ -174,7 +178,7 @@ func renderRichMorningSummary(sb *strings.Builder, b *health.BriefingResponse, f
174178 fmt .Fprintf (sb , "<tr><td>⚡ %s</td><td>%s</td><td>%s</td></tr>\n " , richEsc (tr (lang , "tg_energy" )), richEsc (energyValue ), richText (energyRead ))
175179 fmt .Fprintf (sb , "<tr><td>%s %s</td><td>%d/100</td><td>%s</td></tr>\n " , richEsc (readinessEmoji (b .ReadinessToday )), richEsc (tr (lang , "tg_readiness" )), b .ReadinessToday , richText (b .ReadinessTodayLabel ))
176180 fmt .Fprintf (sb , "<tr><td>😴 Sleep</td><td>%s</td><td>%s</td></tr>\n " , richEsc (sleepValue ), richText (stripSimpleTags (sleepRead )))
177- fmt .Fprintf (sb , "<tr><td>❤️ Recovery</td><td>%d%% </td><td>%s</td></tr>\n " , b . RecoveryPct , richText (stripSimpleTags (recoveryRead )))
181+ fmt .Fprintf (sb , "<tr><td>❤️ Recovery</td><td>%s </td><td>%s</td></tr>\n " , richEsc ( recoveryValue ) , richText (stripSimpleTags (recoveryRead )))
178182 sb .WriteString ("</table>\n " )
179183}
180184
0 commit comments