Lint / PHP (phpcs PSR-12) (push) Successful in 31s
Lint / JS (eslint) (push) Successful in 13s
Lint / PHP requirements (version + extensions) (push) Successful in 31s
Lint / Notify on failure (push) Skipped
Security / PHP Security (semgrep) (push) Successful in 1m4s
Lint / Deploy (push) Successful in 6s
StatsModel::getAllStats()'s by_status breakdown grouped every status including Closed, unlike by_priority and by_category which already filter status != 'Closed'. Closed tickets accumulate indefinitely, so over time the status donut chart's Closed slice comes to dominate it, squeezing Open/Pending/In Progress down to barely-visible slivers — exactly the breakdown the chart exists to show at a glance. Filtered by_status the same way the other two breakdowns already are. The separate open_tickets/closed_tickets KPI counts are unaffected (a different query); Closed just no longer appears as a chart segment. Note: this issue was labeled 'invalid' with no explanation in the body or comments — checked and it's Gitea's generic stock label (description "Something is wrong"), not a documented decision that the request itself was wrong. The described problem is real and reproducible in the code, so implementing it as filed. Verified against real MariaDB: seeded 3 open-ish tickets (Open, Pending, In Progress) and 3 Closed. by_status now returns only the 3 active statuses; open_tickets/closed_tickets KPI counts are unchanged at 3/3. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0117oBw2jN4kALYeS8HPq4zV