~bigbes/sr-ht-ecore · parade

main · last commit 18 hours ago · 7bghjra2

← Back to the parade

sr-ht-ecore-n3u Add a shared pager partial and inc/dec/agotime/shorttime helpers to chrome Lined Up

status: open P3 task
bd update sr-ht-ecore-n3u --claim bd close sr-ht-ecore-n3u
Created byEugene Blikh
Ownerbigbes@gmail.com
Created2026-08-17T20:36:52Z
Updated2026-08-17T20:36:52Z
Description
What is wrong: four services (bench, coverage, curator, dolt) each hand-roll their own pagination markup — four different HTML shapes, one of them a <button> instead of a link — plus byte-equivalent inc/dec arithmetic copied three times, plus two incompatible ago time-formatting helpers (coverage: short units, forward-facing, reads time.Since directly; dolt: long units, past-facing, clamps the future, swappable timeNow) — while sr-ht-ecore/chrome.Funcs already provides a third phrasing, reltime. sr-ht-ecore/chrome ships none of a pager, inc/dec or ago, so there is nowhere for a new service to import these from and every donor copy re-derives its own.

Why it matters: this is the most visible inconsistency to a user hopping between services on the same instance. Upstream SourceHut ships a shared core.sr.ht/srht/templates/pagination.html and ecore currently has no equivalent. RelTime's own doc-comment names exactly this class of drift as the reason it was hoisted into chrome in the first place ('the copies disagreed about the future... for the same instant').

Correct variant: none of the four existing copies alone — dolt's clock-swappable, past-facing ago is judged the better implementation; coverage's short units serve a legitimately different, valid need, so the fix may need two ago variants rather than one.

Fix: add srht-pager to sr-ht-ecore/chrome/templates/chrome.tmpl over a chrome.Pager{PrevHref, NextHref, Page, TotalPages} dot, plus inc/dec and agotime/shorttime to chrome.Funcs(). Converting bench/coverage/curator/dolt to use it and deleting their private copies is separate follow-up work per consumer repo, not part of this issue.

Confidence: verified.

Audit: D40 (cross-repo audit, 2026-08-17)

Depends on

No outgoing dependencies.

Depended on by

Nothing depends on this issue.

No comments.

  • Eugene Blikh created the issue · 2026-08-17T23:36:51Z
Stored rows — what this pane was built from, as read
issues 1 row
id sr-ht-ecore-n3u
content_hash d2d6482ab7bda4ccd731bac37ca96f8b241666d6991211ad7a6df42ba67e3736
title Add a shared pager partial and inc/dec/agotime/shorttime helpers to chrome
description What is wrong: four services (bench, coverage, curator, dolt) each hand-roll their own pagination markup — four different HTML shapes, one of them a <button> instead of a link — plus byte-equivalent inc/dec arithmetic copied three times, plus two incompatible ago time-formatting helpers (coverage: short units, forward-facing, reads time.Since directly; dolt: long units, past-facing, clamps the future, swappable timeNow) — while sr-ht-ecore/chrome.Funcs already provides a third phrasing, reltime. sr-ht-ecore/chrome ships none of a pager, inc/dec or ago, so there is nowhere for a new service to import these from and every donor copy re-derives its own. Why it matters: this is the most visible inconsistency to a user hopping between services on the same instance. Upstream SourceHut ships a shared core.sr.ht/srht/templates/pagination.html and ecore currently has no equivalent. RelTime's own doc-comment names exactly this class of drift as the reason it was hoisted into chrome in the first place ('the copies disagreed about the future... for the same instant'). Correct variant: none of the four existing copies alone — dolt's clock-swappable, past-facing ago is judged the better implementation; coverage's short units serve a legitimately different, valid need, so the fix may need two ago variants rather than one. Fix: add srht-pager to sr-ht-ecore/chrome/templates/chrome.tmpl over a chrome.Pager{PrevHref, NextHref, Page, TotalPages} dot, plus inc/dec and agotime/shorttime to chrome.Funcs(). Converting bench/coverage/curator/dolt to use it and deleting their private copies is separate follow-up work per consumer repo, not part of this issue. Confidence: verified. Audit: D40 (cross-repo audit, 2026-08-17)
design
acceptance_criteria
notes
status open
priority 3
issue_type task
assignee NULL
estimated_minutes NULL
created_at 2026-08-17T20:36:52Z
created_by Eugene Blikh
owner bigbes@gmail.com
updated_at 2026-08-17T20:36:52Z
closed_at NULL
closed_by_session
external_ref NULL
spec_id
compaction_level 0
compacted_at NULL
compacted_at_commit NULL
original_size NULL
sender
ephemeral 0
wisp_type
pinned 0
is_template 0
mol_type
work_type
source_system
metadata �{}
source_repo
close_reason
event_kind
actor
target
payload
await_type
await_id
timeout_ns 0
waiters
hook_bead
role_bead
agent_state
last_activity NULL
role_type
rig
due_at NULL
defer_until NULL
no_history 0
started_at NULL
is_blocked 0
events 1 row
id 01a01170-fa99-7670-8617-ae1075aeabe1
issue_id sr-ht-ecore-n3u
event_type created
actor Eugene Blikh
old_value
new_value
comment NULL
created_at 2026-08-17T23:36:51Z