Issue timeline should read oldest to newest #225
Labels
No labels
actions
bug
cli
duplicate
enhancement
fork
forum
git storage
help wanted
insights
invalid
issues
moderation
oidc
ownership transfer
packages
pr/merge protection rules
projects
pull requests
question
releases
sponsorships
tags
webhooks
wiki
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub#225
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue timeline should read oldest → newest (oldest top, newest bottom)
The issue view tab currently renders messages newest-first (newest at top). It should read chronologically: oldest at top, newest landing at the bottom (GitHub convention).
Scope
ThreadTimelineso PR conversations match (same component, same convention — verify; do not leave the two surfaces inconsistent).Acceptance criteria
node --testgreen (ordering tests); browser check (long thread: top is oldest, bottom newest, load-older + live append sane) both themes, zero console errors; no new deps.Fix is up in PR #226 (#226), branch fix/issue-225 — not merged, needs the real-Chromium pass first. Summary: shared ThreadTimeline now sorts stable-by-seq at render (oldest top, newest bottom); wire unchanged (newest-first windows, client-side adaptation — the API matches 02 §7, so no backend change). Older-events button sits above the thread, viewport pinned across prepends, SSE appends land at the bottom with no autoscroll. PR conversations inherit with zero PR-side code. node --test 438/438 green (incl. 8 new ordering tests), Go TestGetIssueHTTP green, no new deps. Open: browser check (long thread, both themes, zero console errors) — :9222 was down in this environment.
Review of PR #226 (fix/issue-225, now at
b9e3857with my one review fix pushed):VERIFIED (scratch worktree /tmp/pr226, removed afterward; main untouched):
REVIEW CHECKS:
b9e3857): both-missing-seq previously returned NaN from the comparator (behaviorally saved by NaN→0 coercion + stable sort, but implicit) — now falls to the index tiebreak explicitly. Re-tested 51/51 across thread-order + adjacent suites, vite rebuilt.OPEN / NOT DONE BY ME:
RECOMMENDATION: blocked — real-Chromium pass still required before merge (PR description agrees: do NOT merge before that). Code itself is ready.
Browser verdict for PR #226 (fix/issue-225, commit
b9e3857): PASS — real HeadlessChrome 151 over CDP against a scratch server (branch-built web + Go binary, port 18081, repo demo/thread issue #1 seeded with 60+ comments + close/reopen system events).Per-check results:
3a. Own comment via composer: PASS — typed + submitted in-browser, new row lands at bottom (event-63, 'browser-check comment bottom').
3b. Remote SSE comment: PASS — POST via API while page open appends at bottom (event-64, 'remote SSE comment append') with older windows intact (top stays event-0), no duplicated rows.
Screenshots (800x600, on the verification host):
Observation (pre-existing, NOT introduced by #226 — report-only, no fix applied): when older windows are loaded and then a remote SSE event slides the newest-50 view, one boundary row drops from the render (this run: range event-0..event-64 rendered 64 rows with seq 14 missing; view 15..64 + pinned extras 0..13). Mechanism: Issue.jsx reload() clears extras on own mutations but the SSE path (useCollabStream -> invalidateCollab, web/src/components/collab.jsx) refetches only the view, so the slid window + pinned extras leave a one-seq hole; more() reads the (now-false) extra flag so the hole persists until full reload. Repro: load full history, POST a comment from elsewhere, diff rendered event-N ids vs server log. The new olderCursor()/appendOlderWindow() docs (web/src/lib/thread-order.js) cover cursor overlap, not this slide — may deserve a follow-up issue. Ready to merge from the browser side.
Fixed by PR #226 (review + real-Chromium pass: order, older-load, live-append verified; all green), merged. Closing.