Repository source: docs/plans/archive/board_activity_carryback_step3_development_plan.md
Step 3: Development Plan — Board/Activity Carry-Back (+ Board Score column)
Stage 1
Goal: Render Board and Activity list-row dates in relative format with a full-timestamp tooltip, matching Users.
Dependencies: none —
$relativeTimestampclosure already exists and is proven.Expected changes:
templates/partials/paned_board_thread_list.php(~line 77): swap the list-row date span's$timestamp(...)call for$relativeTimestamp(...).templates/partials/paned_activity_item_row.php(~line 25) andpaned_activity_commit_row.php(~line 27): same swap for their list-row date spans.No other
$timestampusage in these views changes.
Verification approach: manual browser check of Board and Activity — list rows show "X ago" text, hovering shows the full timestamp tooltip; confirm no other date display on these pages changed.
Risks or open questions:
None — mechanical swap of an already-shipped closure.
Canonical components/API contracts touched:
$relativeTimestamp/$timestampclosures insrc/ForumRewrite/View/TemplateRenderer.php(reused as-is, no signature change).
Stage 2
Goal: Add a sortable Score column to Board, sourced from
threads.score_total.Dependencies: independent of Stage 1.
Expected changes:
templates/partials/paned_board_thread_list.php: add a "Score" head button (data-paned-sort-column="score") alongside Subject/From/Date/Replies; add a row span rendering(int) $thread['score_total']with a matchingdata-paned-sort-scoreattribute.public/assets/paned_board_reader.js: extendsortValueFor()'s numeric branch (currently special-cased forreplies) to also parsescoreas an integer; addscore: "desc"to thesortDefaultDirmap.Board's CSS column-width rules (
forte.css): add a fixed-width rule for the new Score column matching the existingrepliescolumn pattern.
Verification approach: manual browser check — Score column appears with correct values, clicking its header sorts ascending/descending and updates the sort URL param like other columns, no layout regression at desktop width.
Risks or open questions:
score_totalcan be negative (perTagScore) — confirm negative values render correctly with no special formatting needed.Adding a fixed-width column shrinks remaining flexible space at desktop width — confirm no regression there; the narrow-viewport squeeze bug itself is out of scope, tracked under
forte_mobile_friendly.
Canonical components/API contracts touched:
paned_board_reader.jssortValueFor()/sortDefaultDir(extended, not restructured);threads.score_totalfield (read-only reuse, no schema change).