What
Settings > Icons edits every behavior.*_icon except repeat_track_icon and repeat_context_icon. Both already load from and save to config.yml, and docs/configuration.md says every icon can be edited in Settings, so I think this is just two missing rows.
Where to look
src/core/app/settings_schema.rs: the SettingsCategory::Icons list, the behavior.shuffle_icon item
src/core/app/settings_apply.rs: the "behavior.shuffle_icon" arm of apply_settings_changes
Possible solution
- Copy the shuffle item and arm once per icon. They are linked only by the raw id string, so a typo silently drops the write.
- No change to
user_config.rs is needed.
- Put the new arms with the plain icon arms in
apply_settings_changes, not in the group guarded by the "must be exactly one terminal cell wide" check: the default glyphs are two cells wide.
- Test in the
mod tests of settings_schema.rs: set app.view.settings_category = SettingsCategory::Icons, call app.load_settings_for_category(), give both rows a new SettingValue::String, call app.apply_settings_changes(), and assert both app.user_config.behavior fields changed.
- Each new
#[test] raises test_attribute_total in tools/gates.count by one. If the number is off, cargo test fails in src/gates.rs and prints the right one.
Done when
- In the app, Settings (
Alt-,, or Ctrl-, on macOS) > Icons shows both rows, and saving writes them to config.yml.
cargo fmt --all -- --check, cargo clippy --no-default-features --features telemetry,tui -- -D warnings and cargo test --no-default-features --features telemetry,tui pass.
What
Settings > Icons edits every
behavior.*_iconexceptrepeat_track_iconandrepeat_context_icon. Both already load from and save to config.yml, anddocs/configuration.mdsays every icon can be edited in Settings, so I think this is just two missing rows.Where to look
src/core/app/settings_schema.rs: theSettingsCategory::Iconslist, thebehavior.shuffle_iconitemsrc/core/app/settings_apply.rs: the"behavior.shuffle_icon"arm ofapply_settings_changesPossible solution
user_config.rsis needed.apply_settings_changes, not in the group guarded by the "must be exactly one terminal cell wide" check: the default glyphs are two cells wide.mod testsofsettings_schema.rs: setapp.view.settings_category = SettingsCategory::Icons, callapp.load_settings_for_category(), give both rows a newSettingValue::String, callapp.apply_settings_changes(), and assert bothapp.user_config.behaviorfields changed.#[test]raisestest_attribute_totalintools/gates.countby one. If the number is off,cargo testfails insrc/gates.rsand prints the right one.Done when
Alt-,, orCtrl-,on macOS) > Icons shows both rows, and saving writes them to config.yml.cargo fmt --all -- --check,cargo clippy --no-default-features --features telemetry,tui -- -D warningsandcargo test --no-default-features --features telemetry,tuipass.