You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Sidebar: colour the thread time label by age
#17169
In the sidebar, each active thread row shows a relative time in its status slot: now, 34m, 14h, 1d. All of them use the same grey (text-secondary-label). With six or more active threads, I have to read each label to see which threads I touched a minute ago and which have been sitting since yesterday.
The label comes from threadTimeLabel in apps/web/src/components/Sidebar.tsx:
So it measures time since my last message in the thread, or since the last update when there is none. Settled rows use settledTimeLabel and are out of scope here.
Proposal
Tint the time label of active (unsettled) threads by age. The bands follow a working day with several agent threads open, and they end in today's grey for threads close to auto-settle (three days by default):
label shown
age
colour
what it tells me
now to 59m
under 1 hour
green
this sitting; I'm probably still waiting on it or reading it
1h, 2h
1 to 3 hours
yellow-green
same block of work, still in my head
3h to 7h
3 to 8 hours
yellow
earlier today; needs a re-read before I reply
8h to 23h
8 to 24 hours
amber
since last night; pick it up or park it
1d
24 to 48 hours
orange
a day old; decide whether it still matters
2d, 3d
48 hours or more
grey (unchanged)
going quiet; auto-settle will take it
The colours sit next to each other on the spectrum (green, yellow-green, yellow, amber, orange), so the order reads without a legend. Each band edge falls on a change in the label text, so a colour never changes while the text stays the same. Status labels (Working, Done, Woke, the snooze wake time) keep their own colours.
Mockup on today's nightly, made by colouring the existing labels with a script. The box at the bottom is a legend added for the screenshot:
The sidebar already re-renders on the minute clock (useNowMinute), so the band can come from that tick without a new timer. The five colours could be theme tokens, so custom themes can change them and keep contrast on dark backgrounds.
Prior art
Refined GitHub does something close in its file-age-color feature for repository file lists (https://github.com/refined-github/refined-github). It mixes one orange (#c24e00) with the muted text colour in 10 steps over roughly the last 23 days, and dims files untouched for 4 or 12 months. A single-hue fade works there because the range is weeks. Here the range is three days and each band means a different next step, so separate hues read faster.
Related but different: #14589 asks for a row background colour by status (working, done, stale). This one is about age and only touches the time label.
Questions
Should this be on by default, or a setting under Appearance?
Are the band edges right? Should they follow the environment's auto-settle delay when someone changes it from three days?
If the direction is acceptable, I can send a focused PR: a pure band function in Sidebar.logic.ts with tests in Sidebar.logic.test.ts, the colour applied where threadTimeLabel renders for active rows, and before/after screenshots in light and dark themes.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Problem
In the sidebar, each active thread row shows a relative time in its status slot:
now,34m,14h,1d. All of them use the same grey (text-secondary-label). With six or more active threads, I have to read each label to see which threads I touched a minute ago and which have been sitting since yesterday.The label comes from
threadTimeLabelinapps/web/src/components/Sidebar.tsx:So it measures time since my last message in the thread, or since the last update when there is none. Settled rows use
settledTimeLabeland are out of scope here.Proposal
Tint the time label of active (unsettled) threads by age. The bands follow a working day with several agent threads open, and they end in today's grey for threads close to auto-settle (three days by default):
nowto59m1h,2h3hto7h8hto23h1d2d,3dThe colours sit next to each other on the spectrum (green, yellow-green, yellow, amber, orange), so the order reads without a legend. Each band edge falls on a change in the label text, so a colour never changes while the text stays the same. Status labels (Working, Done, Woke, the snooze wake time) keep their own colours.
Mockup on today's nightly, made by colouring the existing labels with a script. The box at the bottom is a legend added for the screenshot:
The sidebar already re-renders on the minute clock (
useNowMinute), so the band can come from that tick without a new timer. The five colours could be theme tokens, so custom themes can change them and keep contrast on dark backgrounds.Prior art
Refined GitHub does something close in its
file-age-colorfeature for repository file lists (https://github.com/refined-github/refined-github). It mixes one orange (#c24e00) with the muted text colour in 10 steps over roughly the last 23 days, and dims files untouched for 4 or 12 months. A single-hue fade works there because the range is weeks. Here the range is three days and each band means a different next step, so separate hues read faster.Related but different: #14589 asks for a row background colour by status (working, done, stale). This one is about age and only touches the time label.
Questions
If the direction is acceptable, I can send a focused PR: a pure band function in
Sidebar.logic.tswith tests inSidebar.logic.test.ts, the colour applied wherethreadTimeLabelrenders for active rows, and before/after screenshots in light and dark themes.All reactions