Show persistent timestamps for operation and teacher messages

This commit is contained in:
鲨鱼辣椒
2026-09-29 18:02:54 +08:00
parent 3a175101c9
commit ead3407890
24 changed files with 355 additions and 9 deletions

View File

@@ -8,7 +8,7 @@
- Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20260929-community-welcome-c724e5a1
- Base commit: 4199cadd1e067ce9741d6496196f4d13fed61d12
- Owner: codex
- Status: Ready for Integration
- Status: In Progress
## Scope
@@ -109,3 +109,14 @@ All three steps completed. Earlier public-feed investigation was feasibility wor
- Completed: removed shared welcome background/shadow, heading and dismiss-all entry/callback. Each native button owns its entire colored speech-bubble surface (including the tail), while the close button is a separate sibling. Avatar opening, teacher-specific dismissal, persisted introduction receipts and three-operation-round auto-dismiss are retained. Keyboard focus is visible.
- Verification: 78 related unit tests, 21 headless welcome/teacher-preview layout cases, typecheck, lint:check (0 errors, 8 existing warnings), scoped changed-test ESLint, build:vite, native E2E --list (20 cases), ownership and whitespace checks passed. Tests cover padding clicks opening the correct teacher, close not opening consultation, Enter opening, many-teacher scroll, no shared chrome, individual dismissal persistence and the previous three-round lifecycle. Reviewed the desktop screenshot. Native headed fixture was not run to avoid focus changes.
- Trial refreshed in the background to index-BmLachPE.js on unchanged Main PID 62668. Live DOM confirms transparent outer container, no shadow/header/dismiss-all, preserved independent close button and hit-testing of bubble padding to the open button. Preserved the already-dismissed introduction receipts (one remaining Alice introduction), login identity, route and all 13 saved drafts. Welcome centering error remains 0px and bottom gap 16px. No alert or focus activation. Background capture was unavailable; visual evidence comes from the headless screenshot plus actual live DOM verification. Original background throttling restored and inspector closed after completion. Evidence: trial standalone-teacher-bubbles-20260929/.
## Follow-up: Timestamps For Operation And Teacher Messages
- User approved the timestamp proposal and asks to implement and update the temporary app. Same owned task/worktree resumed at 3a17510; official start/status verified planning ownership. Existing Project Context Loaded and peer scope assessment apply; no new overlap. Planning Gate: Passed.
- Show unobtrusive local timestamps beneath every visible user/assistant message, including operation commentary and teacher check-ins. Today uses HH:mm, older messages include date, hover gives full date and seconds. Pending replies show a pending label.
- Operation messages use Pi user send timestamps and persisted assistant message-entry completion timestamps; live completion is observed at message_end and reconciled to durable history on settlement. Teacher questions retain createdAt; all teacher terminal replies persist a new optional finishedAt. Missing historical times remain explicitly unknown, with no backfill from topic/update/current time and no destructive migration.
- Plan: add shared validation/display, propagate times through Main and Renderer, verify streaming/terminal/reload/legacy paths, then rebuild and restart only the existing trial in the background, preserving account/project/drafts/history. Keep standalone teacher bubbles and other approved UI. No cloud prompts/config edits, model calls, subagents, main merge or push.
- Implemented the approved timestamp data/display flow with no prompt/configuration changes or history migration. The shared display uses semantic time elements, accessible labels, local dates and full hover precision. Terminal teacher replies persist finishedAt before the saved snapshot is emitted. Operation settlement continues to use the existing canonical Pi hydration.
- Verification before trial restart: 286 focused tests passed; full suite 2,681 passed and 3 skipped across 266 files including the pressure run. After extracting the pure formatter to remove a new lint warning, typecheck and all 41 affected UI/formatter tests passed. lint:check has 0 errors and the same 8 existing warnings; changed E2E files pass scoped ESLint; build:vite passed. All 23 headless Chrome layout/interaction cases passed, including the two new real-component timestamp fixtures (375/1280px, stable times after reload, quick-reply usability). Reviewed both screenshot sizes. Updated native Electron timestamp assertions and all 20 native cases parse via --list; no headed launch or real model calls.