diff --git a/frontend-web/src/pages/PublicScheduledTaskPage.tsx b/frontend-web/src/pages/PublicScheduledTaskPage.tsx index dd5570f5..ef623b9d 100644 --- a/frontend-web/src/pages/PublicScheduledTaskPage.tsx +++ b/frontend-web/src/pages/PublicScheduledTaskPage.tsx @@ -193,6 +193,19 @@ function formatDate(value?: string | null): string { return value ? new Date(value).toLocaleString() : "暂无"; } +/** + * Compact "M月D日" badge prefixed to each run title so visually identical + * names (the agent often emits the same title every run) become scannable. + * Returns empty string for an invalid / missing date so the title falls back + * to its bare form instead of rendering "Invalid Date". + */ +function formatScheduledDatePrefix(value?: string | null): string { + if (!value) return ""; + const date = new Date(value); + if (Number.isNaN(date.getTime())) return ""; + return `${date.getMonth() + 1}月${date.getDate()}日`; +} + function isMarkdownFile(file: { name: string; kind?: string | null; mime_type?: string | null }): boolean { const name = file.name.toLowerCase(); return ( @@ -373,6 +386,7 @@ export default function PublicScheduledTaskPage() { const runTitle = stripTimestampSuffix( run.result?.title || formatDate(run.scheduled_for), ); + const datePrefix = formatScheduledDatePrefix(run.scheduled_for); const isDeletingThis = deleteRunMutation.isPending && deleteRunMutation.variables === run.id; return ( @@ -398,13 +412,18 @@ export default function PublicScheduledTaskPage() {
+ {datePrefix && ( + + {datePrefix} + + )} {runTitle}
- {runTitle} + {datePrefix ? `${datePrefix} · ${runTitle}` : runTitle}