@@ -98,6 +98,11 @@ pub struct Config {
9898 #[ serde( default = "default_feedback_path" ) ]
9999 pub feedback_path : PathBuf ,
100100
101+ /// Path to the convention store file for learned review patterns.
102+ /// Defaults to ~/.local/share/diffscope/conventions.json if not set.
103+ #[ serde( default ) ]
104+ pub convention_store_path : Option < String > ,
105+
101106 pub system_prompt : Option < String > ,
102107 pub api_key : Option < String > ,
103108 pub base_url : Option < String > ,
@@ -221,6 +226,11 @@ pub struct Config {
221226 /// Webhook secret for verifying GitHub webhook signatures.
222227 #[ serde( default ) ]
223228 pub github_webhook_secret : Option < String > ,
229+
230+ /// When true, run separate specialized LLM passes for security, correctness,
231+ /// and style instead of a single monolithic review prompt.
232+ #[ serde( default = "default_false" ) ]
233+ pub multi_pass_specialized : bool ,
224234}
225235
226236#[ derive( Debug , Clone , Serialize , Deserialize , Default ) ]
@@ -316,6 +326,7 @@ impl Default for Config {
316326 symbol_index_lsp_command : None ,
317327 symbol_index_lsp_languages : default_symbol_index_lsp_languages ( ) ,
318328 feedback_path : default_feedback_path ( ) ,
329+ convention_store_path : None ,
319330 system_prompt : None ,
320331 api_key : None ,
321332 base_url : None ,
@@ -352,6 +363,7 @@ impl Default for Config {
352363 github_client_secret : None ,
353364 github_private_key : None ,
354365 github_webhook_secret : None ,
366+ multi_pass_specialized : false ,
355367 }
356368 }
357369}
@@ -1074,6 +1086,10 @@ fn default_true() -> bool {
10741086 true
10751087}
10761088
1089+ fn default_false ( ) -> bool {
1090+ false
1091+ }
1092+
10771093fn normalize_comment_types ( values : & [ String ] ) -> Vec < String > {
10781094 if values. is_empty ( ) {
10791095 return default_comment_types ( ) ;
0 commit comments