dreaming: simplify the advanced review flow

This commit is contained in:
Dave Morin
2026-04-09 21:36:58 -10:00
committed by Vignesh
parent 7947d730fd
commit 14c96261e0
28 changed files with 529 additions and 191 deletions

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:00:59.430Z",
"generatedAt": "2026-04-10T07:35:36.377Z",
"locale": "de",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:00:59.711Z",
"generatedAt": "2026-04-10T07:35:36.662Z",
"locale": "es",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:01:00.519Z",
"generatedAt": "2026-04-10T07:35:37.521Z",
"locale": "fr",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:01:01.320Z",
"generatedAt": "2026-04-10T07:35:38.420Z",
"locale": "id",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:00:59.975Z",
"generatedAt": "2026-04-10T07:35:36.945Z",
"locale": "ja-JP",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:01:00.244Z",
"generatedAt": "2026-04-10T07:35:37.225Z",
"locale": "ko",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:01:01.595Z",
"generatedAt": "2026-04-10T07:35:38.735Z",
"locale": "pl",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:00:59.167Z",
"generatedAt": "2026-04-10T07:35:36.091Z",
"locale": "pt-BR",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:01:00.784Z",
"generatedAt": "2026-04-10T07:35:37.819Z",
"locale": "tr",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:01:01.055Z",
"generatedAt": "2026-04-10T07:35:38.126Z",
"locale": "uk",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:00:58.625Z",
"generatedAt": "2026-04-10T07:35:35.532Z",
"locale": "zh-CN",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -4,12 +4,21 @@
"dreaming.advanced.emptyGrounded",
"dreaming.advanced.emptyPromoted",
"dreaming.advanced.emptyShortTerm",
"dreaming.advanced.emptySignals",
"dreaming.advanced.eyebrow",
"dreaming.advanced.originDailyLog",
"dreaming.advanced.originLive",
"dreaming.advanced.originMixed",
"dreaming.advanced.promotedDescription",
"dreaming.advanced.promotedTitle",
"dreaming.advanced.shortTermDescription",
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.signalsTitle",
"dreaming.advanced.sortRecent",
"dreaming.advanced.sortSignals",
"dreaming.advanced.stagedDescription",
"dreaming.advanced.stagedTitle",
"dreaming.advanced.summaryFromDailyLog",
"dreaming.advanced.summaryPromotedToday",
"dreaming.advanced.summaryWaiting",
"dreaming.advanced.title",
"dreaming.advanced.updatedPrefix",
"dreaming.phase.deep",
@@ -18,12 +27,12 @@
"dreaming.phase.rem",
"dreaming.tabs.advanced"
],
"generatedAt": "2026-04-10T05:00:58.895Z",
"generatedAt": "2026-04-10T07:35:35.815Z",
"locale": "zh-TW",
"model": "gpt-5.4",
"provider": "openai",
"sourceHash": "65fe3752d8469d3ef02b7a2a971e73c53f2824d3cac6478ad4b8a594ba8fa4d0",
"totalKeys": 684,
"sourceHash": "06a0c6e1271629057cb308dd9f71232ba4e85e5b04ec5d2413dc7a36b35b582d",
"totalKeys": 693,
"translatedKeys": 667,
"workflow": 1
}

View File

@@ -316,13 +316,22 @@ export const de: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -304,16 +304,26 @@ export const en: TranslationMap = {
off: "off",
},
advanced: {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
stagedTitle: "Grounded Replay",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
eyebrow: "Review",
title: "Daily Log Replay",
description:
"See what replayed from the daily log, what is waiting for promotion, and what already made it through.",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "From Daily Log",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Waiting for Promotion",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -311,13 +311,22 @@ export const es: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -314,13 +314,22 @@ export const fr: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -311,13 +311,22 @@ export const id: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -315,13 +315,22 @@ export const ja_JP: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -310,13 +310,22 @@ export const ko: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -312,13 +312,22 @@ export const pl: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -311,13 +311,22 @@ export const pt_BR: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -315,13 +315,22 @@ export const tr: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -313,13 +313,22 @@ export const uk: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -307,13 +307,22 @@ export const zh_CN: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -307,13 +307,22 @@ export const zh_TW: TranslationMap = {
eyebrow: "Operator Review",
title: "Grounded Replay + Promotion",
description: "",
summaryFromDailyLog: "from daily log",
summaryWaiting: "waiting",
summaryPromotedToday: "promoted today",
stagedTitle: "Grounded Replay",
stagedDescription: "Replay candidates pulled from older daily log entries.",
shortTermTitle: "Short-term Queue",
signalsTitle: "Signal Hotspots",
shortTermDescription: "Current short-term candidates waiting to graduate into real memory.",
sortRecent: "Most recent",
sortSignals: "Strongest support",
originDailyLog: "replayed",
originLive: "live",
originMixed: "mixed",
promotedTitle: "Recent Promotions",
promotedDescription: "Items that already made it through promotion recently.",
emptyGrounded: "No staged grounded replay entries right now.",
emptyShortTerm: "No short-term entries to inspect.",
emptySignals: "No signal-rich entries to inspect.",
emptyPromoted: "No recent promotions to inspect.",
updatedPrefix: "updated",
},

View File

@@ -510,39 +510,15 @@
}
.dreams-advanced__summary {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.dreams-advanced__summary-card {
display: flex;
flex-direction: column;
gap: 6px;
padding: 14px 16px;
border-radius: 14px;
border: 1px solid color-mix(in oklab, var(--border) 70%, transparent);
background: color-mix(in oklab, var(--panel) 88%, transparent);
}
.dreams-advanced__summary-label {
font-size: 10px;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
margin-top: 12px;
font-size: 12px;
line-height: 1.5;
color: var(--muted);
}
.dreams-advanced__summary-value {
font-size: 24px;
font-weight: 700;
font-variant-numeric: tabular-nums;
color: var(--text);
}
.dreams-advanced__sections {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
display: flex;
flex-direction: column;
gap: 16px;
}
@@ -558,11 +534,17 @@
.dreams-advanced__section-header {
display: flex;
align-items: center;
align-items: flex-start;
justify-content: space-between;
gap: 12px;
padding: 14px 16px;
border-bottom: 1px solid color-mix(in oklab, var(--border) 62%, transparent);
flex-wrap: wrap;
}
.dreams-advanced__section-copy {
min-width: 0;
max-width: 56ch;
}
.dreams-advanced__section-title {
@@ -573,6 +555,20 @@
color: var(--muted);
}
.dreams-advanced__section-description {
margin: 6px 0 0;
font-size: 12px;
line-height: 1.5;
color: var(--muted);
}
.dreams-advanced__section-toolbar {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.dreams-advanced__section-count {
min-width: 26px;
height: 26px;
@@ -588,6 +584,39 @@
font-variant-numeric: tabular-nums;
}
.dreams-advanced__sort {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 3px;
border-radius: 999px;
border: 1px solid color-mix(in oklab, var(--border) 62%, transparent);
background: color-mix(in oklab, var(--surface) 92%, transparent);
}
.dreams-advanced__sort-btn {
border: none;
background: transparent;
color: var(--muted);
padding: 6px 10px;
border-radius: 999px;
font-size: 11px;
line-height: 1;
cursor: pointer;
transition:
background 0.2s ease,
color 0.2s ease;
}
.dreams-advanced__sort-btn:hover {
color: var(--text);
}
.dreams-advanced__sort-btn--active {
background: color-mix(in oklab, var(--accent-subtle) 85%, transparent);
color: var(--accent);
}
.dreams-advanced__list {
display: flex;
flex-direction: column;
@@ -598,6 +627,20 @@
border-top: 1px solid color-mix(in oklab, var(--border) 50%, transparent);
}
.dreams-advanced__badge {
display: inline-flex;
align-items: center;
margin-bottom: 10px;
padding: 4px 8px;
border-radius: 999px;
background: color-mix(in oklab, var(--accent-subtle) 72%, transparent);
color: var(--accent);
font-size: 10px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.dreams-advanced__item:first-child {
border-top: none;
}
@@ -839,11 +882,6 @@
padding: 20px 16px 32px;
}
.dreams-advanced__summary,
.dreams-advanced__sections {
grid-template-columns: 1fr;
}
.dreams__phases {
gap: 12px;
flex-wrap: wrap;

View File

@@ -2,7 +2,12 @@
import { render } from "lit";
import { describe, expect, it } from "vitest";
import { renderDreaming, setDreamSubTab, type DreamingProps } from "./dreaming.ts";
import {
renderDreaming,
setDreamAdvancedWaitingSort,
setDreamSubTab,
type DreamingProps,
} from "./dreaming.ts";
function buildProps(overrides?: Partial<DreamingProps>): DreamingProps {
return {
@@ -315,9 +320,10 @@ describe("dreaming view", () => {
it("renders operator actions and evidence lists on the advanced tab", () => {
setDreamSubTab("advanced");
setDreamAdvancedWaitingSort("recent");
const container = renderInto(buildProps());
expect(container.querySelector(".dreams-advanced__title")?.textContent).toContain(
"Grounded Replay",
"Daily Log Replay",
);
const buttons = [...container.querySelectorAll("button")].map((node) =>
node.textContent?.trim(),
@@ -325,10 +331,20 @@ describe("dreaming view", () => {
expect(buttons).toContain("Backfill");
expect(buttons).toContain("Reset");
expect(buttons).toContain("Clear Grounded");
expect(container.querySelector(".dreams-advanced__summary-value")?.textContent).toBe("47");
expect(buttons).toContain("Most recent");
expect(buttons).toContain("Strongest support");
const sectionTitles = [...container.querySelectorAll(".dreams-advanced__section-title")].map(
(node) => node.textContent?.trim(),
);
expect(sectionTitles).toEqual(["From Daily Log", "Waiting for Promotion", "Recent Promotions"]);
expect(container.querySelector(".dreams-advanced__summary")?.textContent).toContain(
"1 from daily log",
);
expect(container.querySelector(".dreams-advanced__item")?.textContent).toContain(
"Emma prefers shorter",
);
expect(container.textContent).not.toContain("Signal Hotspots");
setDreamAdvancedWaitingSort("recent");
setDreamSubTab("scene");
});

View File

@@ -155,11 +155,17 @@ const DREAM_SWAP_MS = 6_000;
type DreamSubTab = "scene" | "diary" | "advanced";
let _subTab: DreamSubTab = "scene";
type AdvancedWaitingSort = "recent" | "signals";
let _advancedWaitingSort: AdvancedWaitingSort = "recent";
export function setDreamSubTab(tab: DreamSubTab): void {
_subTab = tab;
}
export function setDreamAdvancedWaitingSort(sort: AdvancedWaitingSort): void {
_advancedWaitingSort = sort;
}
// ── Diary pagination state ─────────────────────────────────────────────
let _diaryPage = 0;
@@ -425,31 +431,61 @@ function formatCompactDateTime(value: string): string {
});
}
function renderAdvancedEntryList(
titleKey: string,
emptyKey: string,
entries: DreamingEntry[],
meta: (entry: DreamingEntry) => string[],
) {
function describeWaitingEntryOrigin(entry: DreamingEntry): string {
const hasGroundedReplay = entry.groundedCount > 0;
const hasLiveSupport = entry.recallCount > 0 || entry.dailyCount > 0;
if (hasGroundedReplay && hasLiveSupport) {
return t("dreaming.advanced.originMixed");
}
if (hasGroundedReplay) {
return t("dreaming.advanced.originDailyLog");
}
return t("dreaming.advanced.originLive");
}
function renderAdvancedEntryList(params: {
titleKey: string;
descriptionKey: string;
emptyKey: string;
entries: DreamingEntry[];
meta: (entry: DreamingEntry) => string[];
badge?: (entry: DreamingEntry) => string | null;
controls?: ReturnType<typeof html>;
}) {
return html`
<section class="dreams-advanced__section">
<div class="dreams-advanced__section-header">
<span class="dreams-advanced__section-title">${t(titleKey)}</span>
<span class="dreams-advanced__section-count">${entries.length}</span>
<div class="dreams-advanced__section-copy">
<span class="dreams-advanced__section-title">${t(params.titleKey)}</span>
<p class="dreams-advanced__section-description">${t(params.descriptionKey)}</p>
</div>
<div class="dreams-advanced__section-toolbar">
${params.controls ?? nothing}
<span class="dreams-advanced__section-count">${params.entries.length}</span>
</div>
</div>
${entries.length === 0
? html`<div class="dreams-advanced__empty">${t(emptyKey)}</div>`
${params.entries.length === 0
? html`<div class="dreams-advanced__empty">${t(params.emptyKey)}</div>`
: html`
<div class="dreams-advanced__list">
${entries.map(
${params.entries.map(
(entry) => html`
<article class="dreams-advanced__item" data-entry-key=${entry.key}>
${params.badge
? (() => {
const label = params.badge?.(entry);
return label
? html`<span class="dreams-advanced__badge">${label}</span>`
: nothing;
})()
: nothing}
<div class="dreams-advanced__snippet">${entry.snippet}</div>
<div class="dreams-advanced__source">
${formatRange(entry.path, entry.startLine, entry.endLine)}
</div>
<div class="dreams-advanced__meta">
${meta(entry)
${params
.meta(entry)
.filter((part) => part.length > 0)
.join(" · ")}
</div>
@@ -464,7 +500,14 @@ function renderAdvancedEntryList(
function renderAdvancedSection(props: DreamingProps) {
const groundedEntries = props.shortTermEntries.filter((entry) => entry.groundedCount > 0);
const waitingEntries =
_advancedWaitingSort === "signals" ? props.signalEntries : props.shortTermEntries;
const description = t("dreaming.advanced.description");
const summary = [
`${groundedEntries.length} ${t("dreaming.advanced.summaryFromDailyLog")}`,
`${props.shortTermCount} ${t("dreaming.advanced.summaryWaiting")}`,
`${props.promotedCount} ${t("dreaming.advanced.summaryPromotedToday")}`,
].join(" · ");
return html`
<section class="dreams-advanced">
@@ -475,6 +518,7 @@ function renderAdvancedSection(props: DreamingProps) {
${description
? html`<p class="dreams-advanced__description">${description}</p>`
: nothing}
<div class="dreams-advanced__summary">${summary}</div>
</div>
<div class="dreams-advanced__actions">
<button
@@ -503,65 +547,79 @@ function renderAdvancedSection(props: DreamingProps) {
</div>
</div>
<div class="dreams-advanced__summary">
<div class="dreams-advanced__summary-card">
<span class="dreams-advanced__summary-label">${t("dreaming.stats.shortTerm")}</span>
<span class="dreams-advanced__summary-value">${props.shortTermCount}</span>
</div>
<div class="dreams-advanced__summary-card">
<span class="dreams-advanced__summary-label">${t("dreaming.stats.grounded")}</span>
<span class="dreams-advanced__summary-value">${props.groundedSignalCount}</span>
</div>
<div class="dreams-advanced__summary-card">
<span class="dreams-advanced__summary-label">${t("dreaming.stats.signals")}</span>
<span class="dreams-advanced__summary-value">${props.totalSignalCount}</span>
</div>
<div class="dreams-advanced__summary-card">
<span class="dreams-advanced__summary-label">${t("dreaming.stats.promoted")}</span>
<span class="dreams-advanced__summary-value">${props.promotedCount}</span>
</div>
</div>
<div class="dreams-advanced__sections">
${renderAdvancedEntryList(
"dreaming.advanced.stagedTitle",
"dreaming.advanced.emptyGrounded",
groundedEntries,
(entry) => [
${renderAdvancedEntryList({
titleKey: "dreaming.advanced.stagedTitle",
descriptionKey: "dreaming.advanced.stagedDescription",
emptyKey: "dreaming.advanced.emptyGrounded",
entries: groundedEntries,
controls: html`
<button
class="btn btn--subtle btn--sm"
?disabled=${props.modeSaving || props.dreamDiaryActionLoading}
@click=${() => props.onResetGroundedShortTerm()}
>
${t("dreaming.scene.clearGrounded")}
</button>
`,
badge: () => t("dreaming.advanced.originDailyLog"),
meta: (entry) => [
entry.groundedCount > 0
? `${entry.groundedCount} ${t("dreaming.stats.grounded").toLowerCase()}`
: "",
entry.recallCount > 0 ? `${entry.recallCount} recall` : "",
entry.dailyCount > 0 ? `${entry.dailyCount} daily` : "",
],
)}
${renderAdvancedEntryList(
"dreaming.advanced.shortTermTitle",
"dreaming.advanced.emptyShortTerm",
props.shortTermEntries,
(entry) => [
entry.recallCount > 0 ? `${entry.recallCount} recall` : "",
entry.dailyCount > 0 ? `${entry.dailyCount} daily` : "",
entry.groundedCount > 0
? `${entry.groundedCount} ${t("dreaming.stats.grounded").toLowerCase()}`
: "",
entry.phaseHitCount > 0 ? `${entry.phaseHitCount} phase hit` : "",
],
)}
${renderAdvancedEntryList(
"dreaming.advanced.signalsTitle",
"dreaming.advanced.emptySignals",
props.signalEntries,
(entry) => [
})}
${renderAdvancedEntryList({
titleKey: "dreaming.advanced.shortTermTitle",
descriptionKey: "dreaming.advanced.shortTermDescription",
emptyKey: "dreaming.advanced.emptyShortTerm",
entries: waitingEntries,
controls: html`
<div class="dreams-advanced__sort">
<button
class="dreams-advanced__sort-btn ${_advancedWaitingSort === "recent"
? "dreams-advanced__sort-btn--active"
: ""}"
@click=${() => {
_advancedWaitingSort = "recent";
props.onRequestUpdate?.();
}}
>
${t("dreaming.advanced.sortRecent")}
</button>
<button
class="dreams-advanced__sort-btn ${_advancedWaitingSort === "signals"
? "dreams-advanced__sort-btn--active"
: ""}"
@click=${() => {
_advancedWaitingSort = "signals";
props.onRequestUpdate?.();
}}
>
${t("dreaming.advanced.sortSignals")}
</button>
</div>
`,
badge: (entry) => describeWaitingEntryOrigin(entry),
meta: (entry) => [
`${entry.totalSignalCount} ${t("dreaming.stats.signals").toLowerCase()}`,
entry.recallCount > 0 ? `${entry.recallCount} recall` : "",
entry.dailyCount > 0 ? `${entry.dailyCount} daily` : "",
entry.groundedCount > 0
? `${entry.groundedCount} ${t("dreaming.stats.grounded").toLowerCase()}`
: "",
entry.phaseHitCount > 0 ? `${entry.phaseHitCount} phase hit` : "",
],
)}
${renderAdvancedEntryList(
"dreaming.advanced.promotedTitle",
"dreaming.advanced.emptyPromoted",
props.promotedEntries,
(entry) => [
})}
${renderAdvancedEntryList({
titleKey: "dreaming.advanced.promotedTitle",
descriptionKey: "dreaming.advanced.promotedDescription",
emptyKey: "dreaming.advanced.emptyPromoted",
entries: props.promotedEntries,
badge: (entry) => describeWaitingEntryOrigin(entry),
meta: (entry) => [
entry.promotedAt
? `${t("dreaming.advanced.updatedPrefix")} ${formatCompactDateTime(entry.promotedAt)}`
: "",
@@ -572,7 +630,7 @@ function renderAdvancedSection(props: DreamingProps) {
? `${entry.totalSignalCount} ${t("dreaming.stats.signals").toLowerCase()}`
: "",
],
)}
})}
</div>
${props.statusError