from pathlib import Path ROOT=Path(__file__).resolve().parents[1] def test_version(): assert (ROOT/"VERSION").read_text(encoding="utf-8").strip()=="4.6.15" def test_frontend_auto_summary_and_manual_override(): js=(ROOT/"static/js/app.js").read_text(encoding="utf-8") assert "conversationAutoSummary" in js assert "refreshSessionSummary" in js assert "migrateConversationSummaries" in js assert 'rename.textContent="修改概括"' in js assert 'auto.textContent="恢复自动概括"' in js assert "summary_locked=true" in js assert "summary_mode=\"manual\"" in js def test_history_does_not_set_first_prompt_as_title(): js=(ROOT/"static/js/app.js").read_text(encoding="utf-8") assert 'x.title=t.replace(/\\s+/g," ").slice(0,30)' not in js assert "对话概括:" in js def test_workspace_preserves_summary_metadata(): py=(ROOT/"services/user_state.py").read_text(encoding="utf-8") assert '"summary_locked":bool(x.get("summary_locked"))' in py assert '"summary_mode":"manual"' in py