Overview
The Hall of Fame management module has core functionality in place but is missing several admin-facing controls. This issue tracks the implementation of all pending items.
Completed Items
1. Manual public title editing
Admins can override the auto-generated disclosed title for any Hall of Fame entry. The override is stored as public_title on the hall_of_fame table (null means use the auto-generated title). Changes are logged to audit_logs.
2. Manual point adjustment
Admins can adjust the points awarded for any entry with a mandatory reason field. The researcher total points in researcher_stats is recalculated from scratch after each adjustment to prevent drift. The related hacktivity row is also synced. All adjustments are logged to audit_logs.
3. Leaderboard CSV export
An Export CSV button in the leaderboard section generates a downloadable CSV with rank, researcher name, points, severity counts, accepted reports, and first/last report dates.
4. Bulk visibility toggle
Checkbox selection on the entries table with a select-all-on-page header checkbox. A floating toolbar appears when entries are selected with Make Public and Hide actions. Backed by a new bulk-visibility API endpoint that handles up to 250 entries per request.
5. Researcher profile pages
A public-facing profile page at /researcher/[id] showing a researcher's stats and accepted reports. No authentication required. Stats are computed from public entries only so hidden entries do not leak through aggregates. The admin leaderboard links each researcher to their profile.
Additional fixes
- Public leaderboard, stats, and hacktivity now exclude hidden entries consistently
- Hacktivity respects the
public_title override and reflects manual point adjustments
- Whitespace-only reasons are rejected on the points adjustment endpoint
Database changes
- New migration
0013_hof_enhancements.sql adds public_title TEXT column to hall_of_fame
New API endpoints
PATCH /api/admin/hall-of-fame/[id]/title
PATCH /api/admin/hall-of-fame/[id]/points
PATCH /api/admin/hall-of-fame/bulk-visibility
GET /api/researcher/[id]
Overview
The Hall of Fame management module has core functionality in place but is missing several admin-facing controls. This issue tracks the implementation of all pending items.
Completed Items
1. Manual public title editing
Admins can override the auto-generated disclosed title for any Hall of Fame entry. The override is stored as
public_titleon thehall_of_fametable (null means use the auto-generated title). Changes are logged toaudit_logs.2. Manual point adjustment
Admins can adjust the points awarded for any entry with a mandatory reason field. The researcher total points in
researcher_statsis recalculated from scratch after each adjustment to prevent drift. The relatedhacktivityrow is also synced. All adjustments are logged toaudit_logs.3. Leaderboard CSV export
An Export CSV button in the leaderboard section generates a downloadable CSV with rank, researcher name, points, severity counts, accepted reports, and first/last report dates.
4. Bulk visibility toggle
Checkbox selection on the entries table with a select-all-on-page header checkbox. A floating toolbar appears when entries are selected with Make Public and Hide actions. Backed by a new bulk-visibility API endpoint that handles up to 250 entries per request.
5. Researcher profile pages
A public-facing profile page at
/researcher/[id]showing a researcher's stats and accepted reports. No authentication required. Stats are computed from public entries only so hidden entries do not leak through aggregates. The admin leaderboard links each researcher to their profile.Additional fixes
public_titleoverride and reflects manual point adjustmentsDatabase changes
0013_hof_enhancements.sqladdspublic_title TEXTcolumn tohall_of_fameNew API endpoints
PATCH /api/admin/hall-of-fame/[id]/titlePATCH /api/admin/hall-of-fame/[id]/pointsPATCH /api/admin/hall-of-fame/bulk-visibilityGET /api/researcher/[id]