feat: show recorded times in personal Agent chat
This commit is contained in:
1 parent
a12cc4f4e9
commit
64b4a84a2d
19 files changed
+426
-39
No files matched your search
@@ -8,7 +8,7 @@
|
||||
- Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20261013-chat-message-time-64ebac32
|
||||
- Base commit: 2899009215b1de8e28b84fc108e880c6e68a6098
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
- Status: Planning
|
||||
|
||||
## Scope
|
||||
|
||||
@@ -58,3 +58,30 @@
|
||||
|
||||
- Model audit begins an assistant row at start and publishes it later with the same created_at; finish updates actualfinished_at/content. Legacy creation may occur at final storage. Accurate reply-completion presentation therefore needs messagefinished_at or the associated completed Runfinished_at rather than barecreated_at. Historical personal pages include only the latest Run and cannot stamp every earlier reply with that one finish time.
|
||||
- Current-page wait fallback may correlate queue request_id with the user message's servercreated_at, but durable queue/requestcreated_at anddispatched_at should be exposed for complete pagination/restart recovery. Columns already exist; no database migration or made-up local time is needed. Same local request retries retain first send identity/time. Group multi-message answer timing by actual request/run, preserving each message's provenance.
|
||||
|
||||
## Authorized Existing-Time Implementation
|
||||
|
||||
- User clarifies that ordinary sent/reply times are wanted, then explicitly authorizes direct implementation. This supersedes the earlier proposal's completion-time precision work: use the existing authoritative history.messages.created_at as each message's recorded time and label it sending/reply time; do not call it finished_at. No new Yuxi endpoint/field, clock estimate or waiting-duration contract is needed for this scope.
|
||||
- Bundled check/start/status reverified the same owner/task/branch/base. All current peer Scope/Intent/Promotion sections reread; canonical/AGENTS context is unchanged and reused. No source semantics conflict; earlier publication repair remains cancelled and chat replay repair is separate. Current deployed Renderer remains2899009, matching own product baseline. Planning Gate: Passed.
|
||||
- Reuse established local-time/date/tooltip behavior, preserving message identity and server timestamps across refresh/reopen. Streaming content without authoritative time should not be stamped with now; display a pending label until the recorded history arrives. Any saved time found by stable message identity remains its original time, including known old replay identity. Preserve existing styling, history/draft/account behavior and Main/backend protocols.
|
||||
- Scope is ordinary chat timestamps and meaningful Renderer regression coverage/typecheck/scoped lint/build. No automatic question submission, paid calls, backend deployment, merge/push or cleanup. Temporary-app activation will only be considered as an explicit requested update; this instruction directly authorizes source implementation.
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
1. Add sending/reply timestamps to persisted and live personal Agent messages using existing formatter/component and authoritative history data; align quiet footer with each bubble.
|
||||
2. Verify saved/live/hydration/reopen and missing-time behavior with focused UI tests and production compilation.
|
||||
3. Record result and hand off committed source, keeping the running app unchanged unless separately authorized to update it.
|
||||
|
||||
## Current Runtime Assembly And Background Update
|
||||
|
||||
- During implementation another authorized UI task updated the running Renderer to2b2f7b96b0e2c378c706f29099ffb974dc1acdbf (application-message-v3), while Main PID9968/source7c51 and Host API58003 remain. The actual current product/test/README delta2899009→2b2f7b9 is assembled before time activation to preserve its application-retry wording, staged configuration checks and subagent selection changes. Foreign task/canonical docs are not copied. No semantic conflict with timestamp UI; README combines its current paragraphs with the own time paragraph, and E2E copy retains both changes.
|
||||
- Source timestamp implementation is authorized directly. In this ongoing temporary-app workflow, root treats reversible background Renderer refresh as part of delivering the visible requested change, with fresh immutable source/binding checks and strict input/task/receipt guards. This supersedes the earlier source-only handoff plan, not the cancelled publication repair. No Main restart, backend request/publication/cancellation or focus activation is included.
|
||||
- Background stage uses actual predecessor current pointer/manifest chain and original stable Renderer URL/profile; no discard authorization is reused. If quiet-state or writer binding differs, activation stops without overwriting inputs/runtime.
|
||||
|
||||
## Implementation Verification Before Runtime Binding
|
||||
|
||||
- Added small aligned timestamps to saved user/assistant messages via existing MessageTimestamp formatter/semantictime component. TodayHH:mm, older dates/date-year and full second-level tooltip follow existing app rules. Both formal chat and preview/history comparison reuse TrialMessages. Explicit labels are 发送时间/回复时间, never claiming completion.
|
||||
- Live messages use authoritative same-thread assistant source identity to find created_at; known old source IDs retain original date across Run replay, while unknown active/terminal times show 回复中…/时间未记录. No clock-now fallback, Main/backend endpoint, request timing field or queued-status behavior changed. Existing repeat-message defect is not repaired by this timestamp change.
|
||||
- Added9 meaningful UI regressions for persisted dates, invalid values, next-day reopening, live hydration, partial history, oldRun source identity, user-ID isolation and terminal-history failure. Updated existing Electron UI fixture with authoritative created_at and semantictime/label assertions. Full native Electron E2E is not run because it creates visible windows; focused Renderer boundary tests and later read-only actual-app DOM verification provide this request's coverage without desktop activation.
|
||||
- Current assembled source tests:120/120 across10 focused unit suites; typecheck and production Vite/Main/Preload/utility build passed. Scoped ESLint passed with only the existing two CloudChat warnings (component/constants fast-refresh export and generation ref cleanup). Independent source review found no blocking defect. Diff/drift checks pass. Earlier43focused/9new tests are included in120, not additional distinct coverage.
|
||||
- Preserved actual2b2f7b9 product deltas and approved timestamp code only, excluded foreign project docs. Stage helpers are preparation only at this point; source commit will be bound before any activation. No live questions/cancellations/config mutations or application refresh occurred yet.
|
||||
Reference in new issue
Block a user