@@ -388,21 +388,21 @@ pub fn run(args: &[String]) -> anyhow::Result<()> {
388388
389389 // 6. Config Filters
390390 println ! ( "\n {}" , "Filters:" . bold( ) . bright_white( ) ) ;
391- let ( built_in, user_filters , local_filters ) =
391+ let ( built_in, user_report , local_report ) =
392392 crate :: pipeline:: toml_filter:: get_filters_by_source ( ) ;
393393
394394 println ! (
395395 " {:<15} {} loaded (embedded)" ,
396396 "Built-in:" . bright_black( ) ,
397- built_in. len( ) . to_string( ) . yellow( )
397+ built_in. filters . len( ) . to_string( ) . yellow( )
398398 ) ;
399399
400400 let user_dir = conf_dir. join ( "filters" ) ;
401401 if user_dir. exists ( ) {
402402 println ! (
403403 " {:<15} ~/.omni/filters/ ({} filters)" ,
404404 "User:" . bright_black( ) ,
405- user_filters . len( ) . to_string( ) . yellow( )
405+ user_report . filters . len( ) . to_string( ) . yellow( )
406406 ) ;
407407
408408 if fix_mode && let Ok ( entries) = std:: fs:: read_dir ( & user_dir) {
@@ -446,37 +446,65 @@ pub fn run(args: &[String]) -> anyhow::Result<()> {
446446 println ! ( " {:<15} none" , "User:" . bright_black( ) ) ;
447447 }
448448
449- let project_dir = PathBuf :: from ( ".omni/filters" ) ;
450- if project_dir. exists ( ) {
451- if crate :: guard:: trust:: is_trusted ( std:: env:: current_dir ( ) . unwrap_or_default ( ) . as_path ( ) ) {
452- println ! (
453- " {:<15} .omni/filters/ ({} filters, TRUSTED) {}" ,
454- "Project:" . bright_black( ) ,
455- local_filters. len( ) . to_string( ) . yellow( ) ,
456- "[OK]" . green( ) . bold( )
457- ) ;
458- } else {
459- if fix_mode {
460- let _ = crate :: guard:: trust:: trust_project (
461- std:: env:: current_dir ( ) . unwrap_or_default ( ) . as_path ( ) ,
462- ) ;
449+ if let Ok ( cwd) = std:: env:: current_dir ( ) {
450+ let local_filters_dir = cwd. join ( ".omni" ) . join ( "filters" ) ;
451+ if local_filters_dir. exists ( ) {
452+ if crate :: guard:: trust:: is_trusted ( & cwd. join ( "omni_config.json" ) ) {
463453 println ! (
464- " {:<15} .omni/filters/ (TRUSTED) {}" ,
454+ " {:<15} .omni/filters/ ({} filters, TRUSTED) {}" ,
465455 "Project:" . bright_black( ) ,
466- "[FIXED]" . green( ) . bold( )
456+ local_report. filters. len( ) . to_string( ) . yellow( ) ,
457+ "[OK]" . green( ) . bold( )
467458 ) ;
468459 } else {
469- println ! (
470- " {:<15} .omni/filters/ (NOT TRUSTED) {}" ,
471- "Project:" . bright_black( ) ,
472- "[WARNING]" . yellow( ) . bold( )
473- ) ;
474- warnings. push ( "Project filters found but not trusted. Run: `omni trust`." ) ;
475- all_ok = false ;
460+ if fix_mode {
461+ let _ = crate :: guard:: trust:: trust_project ( & cwd) ;
462+ println ! (
463+ " {:<15} .omni/filters/ (TRUSTED) {}" ,
464+ "Project:" . bright_black( ) ,
465+ "[FIXED]" . green( ) . bold( )
466+ ) ;
467+ } else {
468+ println ! (
469+ " {:<15} .omni/filters/ ({} filters, NOT TRUSTED) {}" ,
470+ "Project:" . bright_black( ) ,
471+ local_report. filters. len( ) . to_string( ) . yellow( ) ,
472+ "[WARNING]" . yellow( ) . bold( )
473+ ) ;
474+ warnings. push ( "Project filters found but not trusted. Run: `omni trust`." ) ;
475+ all_ok = false ;
476+ }
476477 }
478+ } else {
479+ println ! (
480+ " {:<15} {}" ,
481+ "Project:" . bright_black( ) ,
482+ "none" . bright_black( )
483+ ) ;
484+ }
485+ }
486+
487+ // --- Elegant Warning Display ---
488+ let mut all_filter_warnings = Vec :: new ( ) ;
489+ all_filter_warnings. extend ( built_in. warnings ) ;
490+ all_filter_warnings. extend ( user_report. warnings ) ;
491+ all_filter_warnings. extend ( local_report. warnings ) ;
492+
493+ if !all_filter_warnings. is_empty ( ) {
494+ for warning in all_filter_warnings. iter ( ) . take ( 5 ) {
495+ println ! (
496+ " {:<15} {}" ,
497+ "Warning:" . yellow( ) . bold( ) ,
498+ warning. bright_black( )
499+ ) ;
500+ }
501+ if all_filter_warnings. len ( ) > 5 {
502+ println ! (
503+ " {:<15} ... and {} more" ,
504+ "" . repeat( 15 ) ,
505+ ( all_filter_warnings. len( ) - 5 ) . to_string( ) . bright_black( )
506+ ) ;
477507 }
478- } else {
479- println ! ( " {:<15} none" , "Project:" . bright_black( ) ) ;
480508 }
481509
482510 if let Some ( latest) = crate :: guard:: update:: check ( ) {
0 commit comments