Clean up series detail page typography
Remove completion stats (streak/on-time) from both the series show
page and panel — the history list already conveys this. Use a fixed
"Series" section header instead of repeating the note title. Adjust
type scale so the note (step-0) is visually dominant over detail
fields (step--2) and history rows (step--1).
Assisted-by: Claude Opus 4.6 via Claude Code
diff --git a/lib/ketchup/views/series/show.rb b/lib/ketchup/views/series/show.rb
index 23e72b8..fcb932c 100644
--- a/lib/ketchup/views/series/show.rb
+++ b/lib/ketchup/views/series/show.rb
@@ -22,7 +22,7 @@ module Views
section(class: "section") do
div(class: "section-header") do
h2(class: "section-title") do
- span(class: "section-title-text") { note_title }
+ span(class: "section-title-text") { "Series" }
end
end
@@ -46,14 +46,6 @@ module Views
end
unless @series.completed_tasks.empty?
- stats = @series.completion_stats
- dl(class: "detail-fields") do
- dt { "Streak" }
- dd { stats[:streak].to_s }
- dt { "On-time" }
- dd { "#{stats[:on_time_pct]}%" }
- end
-
div(class: "task-history") do
div(class: "section-header") do
h2(class: "section-title") do
diff --git a/lib/ketchup/views/series_detail.rb b/lib/ketchup/views/series_detail.rb
index 648d1c2..cbc8bd2 100644
--- a/lib/ketchup/views/series_detail.rb
+++ b/lib/ketchup/views/series_detail.rb
@@ -90,16 +90,6 @@ module Views
end
unless @series.completed_tasks.empty?
- stats = @series.completion_stats
- div(class: "panel-stats") do
- dl(class: "detail-fields") do
- dt { "Streak" }
- dd { stats[:streak].to_s }
- dt { "On-time" }
- dd { "#{stats[:on_time_pct]}%" }
- end
- end
-
div(class: "task-history") do
h3 { "History" }
ul do
diff --git a/public/css/app.css b/public/css/app.css
index 8999f7f..ab7bac5 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -430,6 +430,7 @@ h2 { font-size: var(--step-0); font-weight: 600; }
/* -------------------- */
.series-note {
+ font-size: var(--step-0);
color: #444;
line-height: 1.4;
border: 1px solid transparent;
@@ -464,7 +465,7 @@ h2 { font-size: var(--step-0); font-weight: 600; }
display: grid;
grid-template-columns: auto 1fr;
gap: var(--space-3xs) var(--space-s);
- font-size: var(--step--1);
+ font-size: var(--step--2);
}
.detail-fields dt {
@@ -526,12 +527,6 @@ h2 { font-size: var(--step-0); font-weight: 600; }
width: 100%;
}
-.panel-stats {
- margin-block-start: var(--space-m);
- padding-block-start: var(--space-s);
- border-block-start: 1px solid #f0f0f0;
-}
-
/* -------------------- */
/* Task history */
/* -------------------- */
@@ -564,7 +559,7 @@ h2 { font-size: var(--step-0); font-weight: 600; }
display: flex;
align-items: center;
gap: var(--space-3xs);
- font-size: var(--step--2);
+ font-size: var(--step--1);
color: #444;
}
diff --git a/test/test_web.rb b/test/test_web.rb
index 0831db2..817ed49 100644
--- a/test/test_web.rb
+++ b/test/test_web.rb
@@ -626,18 +626,6 @@ class TestWeb < Minitest::Test
assert_includes last_response.body, "Haircut"
end
- def test_series_panel_shows_stats
- create_series(note: "Call Mom", interval_unit: "week", interval_count: "1",
- first_due_date: (Date.today - 7).to_s)
-
- series = DB[:series].first
- task = DB[:tasks].first
- csrf_post "/series/#{series[:id]}/tasks/#{task[:id]}/complete", {}, auth_headers
-
- get "/series/#{series[:id]}/panel", {}, auth_headers
- assert_includes last_response.body, "panel-stats"
- end
-
private
def csrf_post(path, params = {}, headers = auth_headers)