1616
1717from roast .analyzer import AnalysisReport , Issue
1818from roast .roaster import RoastResult
19+ from roast .history import get_history
1920
2021HEADER_ART = r"""
2122██████╗ ██████╗ █████╗ ███████╗████████╗
@@ -77,6 +78,8 @@ def build_report_payload(report: AnalysisReport, roast: RoastResult) -> dict[str
7778 category_counts = _issue_counts_by_category (report .issues )
7879 hotspots = _hotspot_files (report .issues )
7980 badge_color = _badge_markdown_color (overall_score )
81+ history = get_history ()
82+ trend = [h ["overall_score" ] for h in history ]
8083
8184 return {
8285 "summary" : {
@@ -85,6 +88,7 @@ def build_report_payload(report: AnalysisReport, roast: RoastResult) -> dict[str
8588 "total_issues" : len (report .issues ),
8689 "scores" : report .scores ,
8790 },
91+ "trend" : trend ,
8892 "counts" : {
8993 "by_severity" : severity_counts ,
9094 "by_category" : category_counts ,
@@ -214,31 +218,30 @@ def export_html_report(
214218 radius = 90
215219 circumference = 2 * pi * radius
216220 dash_offset = circumference * (1 - (overall_score / 100 ))
217- issue_rows = payload ["issues" ]
218- score_items = [
219- {
220- "name" : "AI Slop" ,
221- "value" : report .scores .get ("AI Slop" , 0 ),
222- "color" : _badge_color (report .scores .get ("AI Slop" , 0 )),
223- },
224- {
225- "name" : "Code Quality" ,
226- "value" : report .scores .get ("Code Quality" , 0 ),
227- "color" : _badge_color (report .scores .get ("Code Quality" , 0 )),
228- },
229- {
230- "name" : "Style" ,
231- "value" : report .scores .get ("Style" , 0 ),
232- "color" : _badge_color (report .scores .get ("Style" , 0 )),
233- },
234- ]
235-
221+
236222 rendered = template .render (
223+ payload = payload ,
237224 report = report ,
238225 roast = roast ,
239226 overall_score = overall_score ,
240- score_items = score_items ,
241- issues = issue_rows ,
227+ score_items = [
228+ {
229+ "name" : "AI Slop" ,
230+ "value" : report .scores .get ("AI Slop" , 0 ),
231+ "color" : _badge_color (report .scores .get ("AI Slop" , 0 )),
232+ },
233+ {
234+ "name" : "Code Quality" ,
235+ "value" : report .scores .get ("Code Quality" , 0 ),
236+ "color" : _badge_color (report .scores .get ("Code Quality" , 0 )),
237+ },
238+ {
239+ "name" : "Style" ,
240+ "value" : report .scores .get ("Style" , 0 ),
241+ "color" : _badge_color (report .scores .get ("Style" , 0 )),
242+ },
243+ ],
244+ issues = payload ["issues" ],
242245 severity_counts = payload ["counts" ]["by_severity" ],
243246 category_counts = payload ["counts" ]["by_category" ],
244247 hotspots = payload ["hotspots" ],
0 commit comments