Web dashboard step 1: migration, sessions, users CLI, public site

Migration 0004 (users, sessions, config_changes, profile_versions, jobs,
rating_events.user_id, runs.report_json, issues.issue_json), the issue
snapshot writer and loader, the web module skeleton with layout and static
assets, axum-login/tower-sessions over a sqlx session store, password-auth
users with a CLI, the login throttle, the origin check, security headers,
and the public issue pages, archive, Atom feed and robots.txt.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NHyYupFdBiR4VfoUM7NjSM
This commit is contained in:
2026-09-03 04:38:22 +00:00
co-authored by Claude Fable 5.1
parent a70de4af06
commit 69cd736455
35 changed files with 3801 additions and 69 deletions
+3
View File
@@ -509,6 +509,7 @@ mod tests {
fn prompt_sections_are_ordered_and_verdicts_have_required_labels() {
let rating = RatedArticle {
article_id: 1,
user_id: None,
issue_date: None,
title: "A title".into(),
feed_title: "A feed".into(),
@@ -551,6 +552,7 @@ mod tests {
fn rebuild_prompt_carries_summary_facets_note_and_diversity_instruction() {
let rating = RatedArticle {
article_id: 1,
user_id: None,
issue_date: Some("2026-08-15".parse().unwrap()),
title: "Postgres failover".into(),
feed_title: "Engineering Notes".into(),
@@ -647,6 +649,7 @@ mod tests {
.unwrap();
db.append_rating_event(&RatingEvent {
id: 0,
user_id: None,
article_id: 1,
issue_date: None,
kind: "explicit".into(),