Skip to content

Commit 8a7f170

Browse files
claude-code-chat-browser: schema drift detection for upstream JSONL changes (#5)
Fingerprint known Claude Code JSONL field paths against a committed schema_baseline.json, warn on drift during parsing, expose GET /api/schema-report, and surface a dismissible amber banner on the session list page. Warnings only - parsing is never blocked.
1 parent 4345d69 commit 8a7f170

9 files changed

Lines changed: 822 additions & 1 deletion

File tree

api/schema_report.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""Schema drift report endpoint."""
2+
3+
from flask import Blueprint
4+
5+
from api._flask_types import FlaskReturn, json_response
6+
from utils.schema_drift import get_schema_report
7+
8+
schema_report_bp = Blueprint("schema_report", __name__)
9+
10+
11+
@schema_report_bp.route("/api/schema-report")
12+
def schema_report() -> FlaskReturn:
13+
"""Return known/new/missing JSONL field paths from recent parse runs."""
14+
return json_response(get_schema_report())

app.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from api.export_api import export_bp
1111
from api.projects import projects_bp
12+
from api.schema_report import schema_report_bp
1213
from api.search import search_bp
1314
from api.sessions import sessions_bp
1415
from utils.exclusion_rules import load_rules, resolve_exclusion_rules_path
@@ -101,6 +102,7 @@ def create_app(
101102
app.register_blueprint(sessions_bp)
102103
app.register_blueprint(search_bp)
103104
app.register_blueprint(export_bp)
105+
app.register_blueprint(schema_report_bp)
104106

105107
@app.after_request
106108
def set_security_headers(response):

0 commit comments

Comments
 (0)