- Persistence layer (jsonl.go addMsg/SetHistory) normalizes CreatedAt when missing so the invariant is guaranteed at the storage boundary - API layer (session.go) exposes created_at on all transcript message types with session.updated fallback for legacy messages - Frontend uses per-message timestamps when available - messagesContentEqual ignores CreatedAt for tail-matching after JSONL roundtrip Fixes #2787 |
||
|---|---|---|
| .. | ||
| jsonl.go | ||
| jsonl_test.go | ||
| migration.go | ||
| migration_test.go | ||
| store.go | ||