mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-28 17:43:05 +00:00
dreaming: simplify the advanced review flow
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
});
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user