@@ -438,14 +438,14 @@ func (m Model) renderRow(item TaskItem, selected bool) string {
438438 statusStyle = lipgloss .NewStyle ().Foreground (m .styles .Theme .Good ).Background (rowBg )
439439 }
440440
441- // Selection indicator — only the thick left border
442- indicator := lipgloss . NewStyle (). Background ( rowBg ). Render ( "" )
441+ // Selection indicator — render only for selected task
442+ indicator := " "
443443 if selected {
444444 indicator = lipgloss .NewStyle ().
445- Border (lipgloss .NormalBorder (), false , false , false , true ).
446- BorderForeground (m .styles .Theme .Accent ).
445+ Foreground (m .styles .Theme .Accent ).
447446 Background (rowBg ).
448- Render (" " )
447+ Bold (true ).
448+ Render ("│" )
449449 }
450450
451451 // Hierarchy indentation and icons
@@ -516,7 +516,7 @@ func (m Model) renderRow(item TaskItem, selected bool) string {
516516 // Clean left-to-right strikethrough wipe
517517 title = m .renderStrikeWipe (titleText , animProgress , rowBg )
518518 } else {
519- titleWidth := max (20 , m .width - 40 - lipgloss .Width (indent )- lipgloss .Width (expandIcon ))
519+ titleWidth := max (20 , m .width - 40 - lipgloss .Width (indicator ) - lipgloss . Width ( indent )- lipgloss .Width (expandIcon ))
520520 title = titleStyle .Render (truncate (titleText , titleWidth ))
521521 }
522522
@@ -539,11 +539,25 @@ func (m Model) renderRow(item TaskItem, selected bool) string {
539539 if t .Deadline != nil {
540540 now := time .Now ()
541541 deadText := humanDeadline (* t .Deadline , now )
542- deadStyle := m .styles .Muted
542+ deadStyleColor := m .styles . Theme .Muted
543543 if t .Deadline .Before (now ) && t .Status != core .StatusDone {
544- deadStyle = lipgloss . NewStyle (). Foreground ( m .styles .Theme .Bad ). Background ( rowBg )
544+ deadStyleColor = m .styles .Theme .Bad
545545 }
546- rightParts = append (rightParts , deadStyle .Render (styles .IconDeadline + deadText ))
546+
547+ dueContent := styles .IconDeadline + deadText
548+
549+ // Create pill badge for due date
550+ badge := m .styles .BadgeMuted .
551+ Background (m .styles .Theme .Muted ).
552+ Foreground (m .styles .Theme .Bg ).
553+ Padding (0 , 1 )
554+
555+ pill := lipgloss .JoinHorizontal (lipgloss .Left ,
556+ m .styles .TagLeft .Foreground (deadStyleColor ).Render (),
557+ badge .Background (deadStyleColor ).Render (dueContent ),
558+ m .styles .TagRight .Foreground (deadStyleColor ).Render (),
559+ )
560+ rightParts = append (rightParts , pill )
547561 }
548562 case "tags" :
549563 if len (t .Tags ) > 0 {
@@ -566,7 +580,7 @@ func (m Model) renderRow(item TaskItem, selected bool) string {
566580 }
567581 }
568582
569- right := strings .Join (rightParts , lipgloss . NewStyle (). Background ( rowBg ). Render ( " " ) )
583+ right := strings .Join (rightParts , " " )
570584
571585 // Use render.BarLine: fills the gap between left and right with bg-styled spaces.
572586 // Subtract 2 for the Padding(0,1) applied by rowStyle below.
0 commit comments