feat: journal dashboard widgets, agent polish, and edit-mode live previews
CI / checks (push) Failing after 2m7s
CI / build (push) Successful in 4m36s

Journal dashboard widgets and quick-add; rich-text quick-add dialogs.

Dashboard draft sync for live edit previews; assistant bubble + API tools.

Journal UX: stress slider, mood grid, query cap fix.
This commit is contained in:
ginnoir
2026-07-04 22:03:45 -05:00
parent 4a924a4107
commit a09747c314
76 changed files with 4594 additions and 611 deletions
+17
View File
@@ -8,3 +8,20 @@ export function toDayKey(date: Date): string {
export function recordedDayKey(iso: string): string {
return toDayKey(new Date(iso));
}
export function dayKeyToMonthStart(dayKey: string): Date | null {
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dayKey);
if (!match) return null;
return new Date(Number(match[1]), Number(match[2]) - 1, 1);
}
export function formatDayKeyLabel(dayKey: string): string {
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dayKey);
if (!match) return dayKey;
const date = new Date(Number(match[1]), Number(match[2]) - 1, Number(match[3]));
return date.toLocaleDateString(undefined, { month: "long", day: "numeric", year: "numeric" });
}
export function buildEntryDaySet(entries: Array<{ recordedAt: string }>): Set<string> {
return new Set(entries.map((entry) => recordedDayKey(entry.recordedAt)));
}