@@ -81,6 +81,7 @@ pub fn sync_renderer_caches(runtime_state: &RuntimeState, renderer: &mut Termina
8181 renderer. set_reverse_palette ( runtime_state. reverse_palette ) ;
8282 renderer. set_charset ( runtime_state. current_charset ( ) ) ;
8383 renderer. set_intensity_mapping ( Some ( runtime_state. intensity_mapping . clone ( ) ) ) ;
84+ renderer. set_palette_cycle ( runtime_state. palette_cycle ) ;
8485 renderer. set_window_frame ( runtime_state. window_frame ) ;
8586 renderer. set_dither_mode ( runtime_state. dither_mode ) ;
8687}
@@ -1242,7 +1243,7 @@ pub fn export_webm_mode(
12421243mod tests {
12431244 use super :: * ;
12441245 use crate :: cli:: { ColorMode , PauseStyle } ;
1245- use crate :: render:: palette:: { IntensityMapping , Palette } ;
1246+ use crate :: render:: palette:: { IntensityMapping , Palette , PaletteCycle , PaletteCycleMode } ;
12461247 use crate :: simulation:: config:: WindowFrame ;
12471248 use crate :: terminal:: control:: MouseInteractionMode ;
12481249
@@ -1283,6 +1284,42 @@ mod tests {
12831284 assert_eq ! ( r. window_frame( ) , rs. window_frame) ;
12841285 }
12851286
1287+ #[ test]
1288+ fn sync_renderer_caches_pushes_palette_cycle ( ) {
1289+ let mut rs = RuntimeState :: new (
1290+ 42 ,
1291+ InitMode :: Random ,
1292+ Preset :: Organic ,
1293+ 0 ,
1294+ 0 ,
1295+ MouseInteractionMode :: Disabled ,
1296+ 3.0 ,
1297+ IntensityMapping :: linear ( ) ,
1298+ & SimConfig :: default ( ) ,
1299+ PauseStyle :: Vignette ,
1300+ false ,
1301+ false ,
1302+ ) ;
1303+ let mut r = TerminalRenderer :: new (
1304+ 80 ,
1305+ 24 ,
1306+ Palette :: Organic ,
1307+ Charset :: HalfBlock ,
1308+ false ,
1309+ false ,
1310+ ColorMode :: TrueColor ,
1311+ None ,
1312+ ) ;
1313+ let non_identity = PaletteCycle {
1314+ cycles : 3 ,
1315+ mode : PaletteCycleMode :: Wrap ,
1316+ } ;
1317+ rs. palette_cycle = non_identity;
1318+ sync_renderer_caches ( & rs, & mut r) ;
1319+ assert_eq ! ( r. palette_cycle( ) . cycles, 3 ) ;
1320+ assert_eq ! ( r. palette_cycle( ) . mode, PaletteCycleMode :: Wrap ) ;
1321+ }
1322+
12861323 #[ test]
12871324 fn apply_live_params_syncs_sim_config_and_sigma ( ) {
12881325 let mut rs = RuntimeState :: new (
0 commit comments