From a74fd43d34e85b3ffbc36f2ece2cce8967deecee Mon Sep 17 00:00:00 2001 From: Expertium <83031600+Expertium@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:34:48 +0300 Subject: [PATCH 01/19] Colored button borders to prevent Hard misuse --- qt/aqt/reviewer.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index 6d68f9e3a..71859d73a 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -919,6 +919,12 @@ timerStopped = false; extra = """id="defease" """ else: extra = "" + + if i == 1: + button_class = "answerIncorrect" + else: + button_class = "answerCorrect" + due = self._buttonTime(i, v3_labels=labels) key = ( tr.actions_shortcut_key(val=aqt.mw.pm.get_answer_key(i)) @@ -926,9 +932,10 @@ timerStopped = false; else "" ) return """ -""" % ( extra, + button_class, key, i, i, From aaa9f8c11eeb18454bbc3990fbdcf938542a4faa Mon Sep 17 00:00:00 2001 From: Expertium <83031600+Expertium@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:38:59 +0300 Subject: [PATCH 02/19] Add border styles for answer buttons in reviewer CSS --- qt/aqt/data/web/css/reviewer-bottom.scss | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/qt/aqt/data/web/css/reviewer-bottom.scss b/qt/aqt/data/web/css/reviewer-bottom.scss index 59098a5fb..da1fe5e2c 100644 --- a/qt/aqt/data/web/css/reviewer-bottom.scss +++ b/qt/aqt/data/web/css/reviewer-bottom.scss @@ -28,6 +28,34 @@ button { white-space: nowrap; margin: 9px; position: relative; + border-top-color: color(border-subtle); +} + +.answerButton, +.answerButton:hover { + border-style: solid; +} + +.answerButton:focus { + border-style: dashed; +} + +.answerButton, +.answerButton:hover, +.answerButton:focus { + border-width: 2px; +} + +.answerIncorrect, +.answerIncorrect:hover, +.answerIncorrect:focus { + border-color: #e01b24; +} + +.answerCorrect, +.answerCorrect:hover, +.answerCorrect:focus { + border-color: #2ec27e; } .hitem { From 5da16c0f067af141401bf1e3e8a667553501d60c Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:28:48 +0200 Subject: [PATCH 03/19] FEAT/ADD: Option for colored answer buttons --- ftl/core/preferences.ftl | 1 + proto/anki/config.proto | 1 + qt/aqt/forms/preferences.ui | 13 +++++++++++++ qt/aqt/preferences.py | 2 ++ qt/aqt/reviewer.py | 15 ++++++++++++++- rslib/src/config/bool.rs | 3 +++ rslib/src/preferences.rs | 6 ++++++ 7 files changed, 40 insertions(+), 1 deletion(-) diff --git a/ftl/core/preferences.ftl b/ftl/core/preferences.ftl index 23b72f267..aa09cb2ce 100644 --- a/ftl/core/preferences.ftl +++ b/ftl/core/preferences.ftl @@ -22,6 +22,7 @@ preferences-scheduling = Scheduling preferences-show-learning-cards-with-larger-steps = Show learning cards with larger steps before reviews preferences-show-next-review-time-above-answer = Show next review time above answer buttons preferences-spacebar-rates-card = Spacebar (or enter) also answers card +preferences-show-colored-buttons = Show colored border on answer buttons preferences-show-play-buttons-on-cards-with = Show play buttons on cards with audio preferences-show-remaining-card-count = Show remaining card count preferences-some-settings-will-take-effect-after = Some settings will take effect after you restart Anki. diff --git a/proto/anki/config.proto b/proto/anki/config.proto index ea115f0fc..f3619f237 100644 --- a/proto/anki/config.proto +++ b/proto/anki/config.proto @@ -120,6 +120,7 @@ message Preferences { uint32 time_limit_secs = 5; bool load_balancer_enabled = 6; bool fsrs_short_term_with_steps_enabled = 7; + bool hide_colored_buttons = 8; } message Editing { bool adding_defaults_to_current_deck = 1; diff --git a/qt/aqt/forms/preferences.ui b/qt/aqt/forms/preferences.ui index 0035e1f42..2c285569a 100644 --- a/qt/aqt/forms/preferences.ui +++ b/qt/aqt/forms/preferences.ui @@ -373,6 +373,19 @@ preferences_review + + + + + 0 + 0 + + + + preferences_show_colored_buttons + + + diff --git a/qt/aqt/preferences.py b/qt/aqt/preferences.py index afce6d489..e6d5a487a 100644 --- a/qt/aqt/preferences.py +++ b/qt/aqt/preferences.py @@ -137,6 +137,7 @@ class Preferences(QDialog): form.showEstimates.setChecked(reviewing.show_intervals_on_buttons) form.showProgress.setChecked(reviewing.show_remaining_due_counts) form.showPlayButtons.setChecked(not reviewing.hide_audio_play_buttons) + form.hideColoredButtons.setChecked(not reviewing.hide_colored_buttons) form.interrupt_audio.setChecked(reviewing.interrupt_audio_when_answering) editing = self.prefs.editing @@ -172,6 +173,7 @@ class Preferences(QDialog): reviewing.show_intervals_on_buttons = form.showEstimates.isChecked() reviewing.time_limit_secs = form.timeLimit.value() * 60 reviewing.hide_audio_play_buttons = not self.form.showPlayButtons.isChecked() + reviewing.hide_colored_buttons = not self.form.hideColoredButtons.isChecked() reviewing.interrupt_audio_when_answering = self.form.interrupt_audio.isChecked() editing = self.prefs.editing diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index 71859d73a..023f6a184 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -931,7 +931,20 @@ timerStopped = false; if aqt.mw.pm.get_answer_key(i) else "" ) - return """ + + if self.mw.col.conf["hideColor"]: + return """ +""" % ( + extra, + key, + i, + i, + label, + due, + ) + else: + return """ """ % ( extra, diff --git a/rslib/src/config/bool.rs b/rslib/src/config/bool.rs index c76787cb0..8923b328a 100644 --- a/rslib/src/config/bool.rs +++ b/rslib/src/config/bool.rs @@ -54,6 +54,8 @@ pub enum BoolKey { ShowRemainingDueCountsInStudy, #[strum(to_string = "addToCur")] AddingDefaultsToCurrentDeck, + #[strum(to_string = "hideColor")] + HideColoredButtons, } /// This is a workaround for old clients that used ints to represent boolean @@ -71,6 +73,7 @@ impl Collection { // some keys default to true BoolKey::InterruptAudioWhenAnswering | BoolKey::ShowIntervalsAboveAnswerButtons + | BoolKey::HideColoredButtons | BoolKey::AddingDefaultsToCurrentDeck | BoolKey::FutureDueShowBacklog | BoolKey::ShowRemainingDueCountsInStudy diff --git a/rslib/src/preferences.rs b/rslib/src/preferences.rs index 96be8e461..97be7b02e 100644 --- a/rslib/src/preferences.rs +++ b/rslib/src/preferences.rs @@ -97,6 +97,8 @@ impl Collection { show_remaining_due_counts: self.get_config_bool(BoolKey::ShowRemainingDueCountsInStudy), show_intervals_on_buttons: self .get_config_bool(BoolKey::ShowIntervalsAboveAnswerButtons), + hide_colored_buttons: self + .get_config_bool(BoolKey::HideColoredButtons), time_limit_secs: self.get_answer_time_limit_secs(), load_balancer_enabled: self.get_config_bool(BoolKey::LoadBalancerEnabled), fsrs_short_term_with_steps_enabled: self @@ -119,6 +121,10 @@ impl Collection { BoolKey::ShowIntervalsAboveAnswerButtons, s.show_intervals_on_buttons, )?; + self.set_config_bool_inner( + BoolKey::HideColoredButtons, + s.hide_colored_buttons, + )?; self.set_answer_time_limit_secs(s.time_limit_secs)?; self.set_config_bool_inner(BoolKey::LoadBalancerEnabled, s.load_balancer_enabled)?; self.set_config_bool_inner( From e9b8f9487edf432226611d72f8caca079987f4de Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:31:06 +0200 Subject: [PATCH 04/19] CHORE: ninja fix && format --- qt/aqt/reviewer.py | 32 ++++++++++++++++---------------- rslib/src/preferences.rs | 8 ++------ 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index 023f6a184..9d7345e91 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -931,30 +931,30 @@ timerStopped = false; if aqt.mw.pm.get_answer_key(i) else "" ) - + if self.mw.col.conf["hideColor"]: return """ """ % ( - extra, - key, - i, - i, - label, - due, - ) + extra, + key, + i, + i, + label, + due, + ) else: return """ """ % ( - extra, - button_class, - key, - i, - i, - label, - due, - ) + extra, + button_class, + key, + i, + i, + label, + due, + ) buf = "
" for ease, label in self._answerButtonList(): diff --git a/rslib/src/preferences.rs b/rslib/src/preferences.rs index 97be7b02e..b1e40724c 100644 --- a/rslib/src/preferences.rs +++ b/rslib/src/preferences.rs @@ -97,8 +97,7 @@ impl Collection { show_remaining_due_counts: self.get_config_bool(BoolKey::ShowRemainingDueCountsInStudy), show_intervals_on_buttons: self .get_config_bool(BoolKey::ShowIntervalsAboveAnswerButtons), - hide_colored_buttons: self - .get_config_bool(BoolKey::HideColoredButtons), + hide_colored_buttons: self.get_config_bool(BoolKey::HideColoredButtons), time_limit_secs: self.get_answer_time_limit_secs(), load_balancer_enabled: self.get_config_bool(BoolKey::LoadBalancerEnabled), fsrs_short_term_with_steps_enabled: self @@ -121,10 +120,7 @@ impl Collection { BoolKey::ShowIntervalsAboveAnswerButtons, s.show_intervals_on_buttons, )?; - self.set_config_bool_inner( - BoolKey::HideColoredButtons, - s.hide_colored_buttons, - )?; + self.set_config_bool_inner(BoolKey::HideColoredButtons, s.hide_colored_buttons)?; self.set_answer_time_limit_secs(s.time_limit_secs)?; self.set_config_bool_inner(BoolKey::LoadBalancerEnabled, s.load_balancer_enabled)?; self.set_config_bool_inner( From cd44746131b477dedf20ae591850ecd23ed53a0a Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:32:53 +0200 Subject: [PATCH 05/19] CHANGE: Move checkbox down to related option --- qt/aqt/forms/preferences.ui | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/qt/aqt/forms/preferences.ui b/qt/aqt/forms/preferences.ui index 2c285569a..85ab2754d 100644 --- a/qt/aqt/forms/preferences.ui +++ b/qt/aqt/forms/preferences.ui @@ -373,19 +373,6 @@ preferences_review - - - - - 0 - 0 - - - - preferences_show_colored_buttons - - - @@ -438,6 +425,19 @@ + + + + + 0 + 0 + + + + preferences_show_colored_buttons + + + From 11dbaa740eceb87ff793b29290d1cd57380a5ef2 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:42:24 +0200 Subject: [PATCH 06/19] FIX: Option had no initial value (true/false) --- rslib/src/config/schema11.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/rslib/src/config/schema11.rs b/rslib/src/config/schema11.rs index afbc398e6..fba43b232 100644 --- a/rslib/src/config/schema11.rs +++ b/rslib/src/config/schema11.rs @@ -25,6 +25,7 @@ pub(crate) fn schema11_config_as_string(creation_offset: Option) -> String "schedVer": 2, "creationOffset": creation_offset, "sched2021": true, + "hideColor": true, }); serde_json::to_string(&obj).unwrap() } From 2a467559c36fee3a3feccbdfd4962ec2b5d35a40 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:46:07 +0200 Subject: [PATCH 07/19] FIX: Add correct initial value to solve bug --- rslib/src/config/schema11.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rslib/src/config/schema11.rs b/rslib/src/config/schema11.rs index fba43b232..c81f398ea 100644 --- a/rslib/src/config/schema11.rs +++ b/rslib/src/config/schema11.rs @@ -25,7 +25,7 @@ pub(crate) fn schema11_config_as_string(creation_offset: Option) -> String "schedVer": 2, "creationOffset": creation_offset, "sched2021": true, - "hideColor": true, + "hideColor": false, }); serde_json::to_string(&obj).unwrap() } From 6b2aa2c5db7af87184a0d92eeafb8820ee966950 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:51:42 +0200 Subject: [PATCH 08/19] CHANGE: Use 1px instead of 2px --- qt/aqt/data/web/css/reviewer-bottom.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt/aqt/data/web/css/reviewer-bottom.scss b/qt/aqt/data/web/css/reviewer-bottom.scss index da1fe5e2c..589bd6bcd 100644 --- a/qt/aqt/data/web/css/reviewer-bottom.scss +++ b/qt/aqt/data/web/css/reviewer-bottom.scss @@ -43,7 +43,7 @@ button { .answerButton, .answerButton:hover, .answerButton:focus { - border-width: 2px; + border-width: 1px; } .answerIncorrect, From 7b52687c42fd1444b7c274acbcbe6311a4e03686 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 23:24:17 +0200 Subject: [PATCH 09/19] CHORE: Improve consistency in string and function names #1 --- proto/anki/config.proto | 2 +- qt/aqt/preferences.py | 4 ++-- rslib/src/preferences.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/proto/anki/config.proto b/proto/anki/config.proto index f3619f237..ebf16314e 100644 --- a/proto/anki/config.proto +++ b/proto/anki/config.proto @@ -120,7 +120,7 @@ message Preferences { uint32 time_limit_secs = 5; bool load_balancer_enabled = 6; bool fsrs_short_term_with_steps_enabled = 7; - bool hide_colored_buttons = 8; + bool show_colored_buttons = 8; } message Editing { bool adding_defaults_to_current_deck = 1; diff --git a/qt/aqt/preferences.py b/qt/aqt/preferences.py index e6d5a487a..8aec0bf99 100644 --- a/qt/aqt/preferences.py +++ b/qt/aqt/preferences.py @@ -137,7 +137,7 @@ class Preferences(QDialog): form.showEstimates.setChecked(reviewing.show_intervals_on_buttons) form.showProgress.setChecked(reviewing.show_remaining_due_counts) form.showPlayButtons.setChecked(not reviewing.hide_audio_play_buttons) - form.hideColoredButtons.setChecked(not reviewing.hide_colored_buttons) + form.hideColoredButtons.setChecked(not reviewing.show_colored_buttons) form.interrupt_audio.setChecked(reviewing.interrupt_audio_when_answering) editing = self.prefs.editing @@ -173,7 +173,7 @@ class Preferences(QDialog): reviewing.show_intervals_on_buttons = form.showEstimates.isChecked() reviewing.time_limit_secs = form.timeLimit.value() * 60 reviewing.hide_audio_play_buttons = not self.form.showPlayButtons.isChecked() - reviewing.hide_colored_buttons = not self.form.hideColoredButtons.isChecked() + reviewing.show_colored_buttons = not self.form.hideColoredButtons.isChecked() reviewing.interrupt_audio_when_answering = self.form.interrupt_audio.isChecked() editing = self.prefs.editing diff --git a/rslib/src/preferences.rs b/rslib/src/preferences.rs index b1e40724c..6e9f64d5d 100644 --- a/rslib/src/preferences.rs +++ b/rslib/src/preferences.rs @@ -97,7 +97,7 @@ impl Collection { show_remaining_due_counts: self.get_config_bool(BoolKey::ShowRemainingDueCountsInStudy), show_intervals_on_buttons: self .get_config_bool(BoolKey::ShowIntervalsAboveAnswerButtons), - hide_colored_buttons: self.get_config_bool(BoolKey::HideColoredButtons), + show_colored_buttons: self.get_config_bool(BoolKey::HideColoredButtons), time_limit_secs: self.get_answer_time_limit_secs(), load_balancer_enabled: self.get_config_bool(BoolKey::LoadBalancerEnabled), fsrs_short_term_with_steps_enabled: self @@ -120,7 +120,7 @@ impl Collection { BoolKey::ShowIntervalsAboveAnswerButtons, s.show_intervals_on_buttons, )?; - self.set_config_bool_inner(BoolKey::HideColoredButtons, s.hide_colored_buttons)?; + self.set_config_bool_inner(BoolKey::HideColoredButtons, s.show_colored_buttons)?; self.set_answer_time_limit_secs(s.time_limit_secs)?; self.set_config_bool_inner(BoolKey::LoadBalancerEnabled, s.load_balancer_enabled)?; self.set_config_bool_inner( From 453df4b373d7b8bdeccd65b71aa2693462ba5dd8 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 23:27:56 +0200 Subject: [PATCH 10/19] CHORE: Improve consistency in string and function names #2 --- qt/aqt/forms/preferences.ui | 2 +- qt/aqt/preferences.py | 4 ++-- rslib/src/config/bool.rs | 4 ++-- rslib/src/preferences.rs | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/qt/aqt/forms/preferences.ui b/qt/aqt/forms/preferences.ui index 85ab2754d..c91113ac7 100644 --- a/qt/aqt/forms/preferences.ui +++ b/qt/aqt/forms/preferences.ui @@ -426,7 +426,7 @@ - + 0 diff --git a/qt/aqt/preferences.py b/qt/aqt/preferences.py index 8aec0bf99..6a1482298 100644 --- a/qt/aqt/preferences.py +++ b/qt/aqt/preferences.py @@ -137,7 +137,7 @@ class Preferences(QDialog): form.showEstimates.setChecked(reviewing.show_intervals_on_buttons) form.showProgress.setChecked(reviewing.show_remaining_due_counts) form.showPlayButtons.setChecked(not reviewing.hide_audio_play_buttons) - form.hideColoredButtons.setChecked(not reviewing.show_colored_buttons) + form.showColoredButtons.setChecked(not reviewing.show_colored_buttons) form.interrupt_audio.setChecked(reviewing.interrupt_audio_when_answering) editing = self.prefs.editing @@ -173,7 +173,7 @@ class Preferences(QDialog): reviewing.show_intervals_on_buttons = form.showEstimates.isChecked() reviewing.time_limit_secs = form.timeLimit.value() * 60 reviewing.hide_audio_play_buttons = not self.form.showPlayButtons.isChecked() - reviewing.show_colored_buttons = not self.form.hideColoredButtons.isChecked() + reviewing.show_colored_buttons = not self.form.showColoredButtons.isChecked() reviewing.interrupt_audio_when_answering = self.form.interrupt_audio.isChecked() editing = self.prefs.editing diff --git a/rslib/src/config/bool.rs b/rslib/src/config/bool.rs index 8923b328a..2207b5d4c 100644 --- a/rslib/src/config/bool.rs +++ b/rslib/src/config/bool.rs @@ -55,7 +55,7 @@ pub enum BoolKey { #[strum(to_string = "addToCur")] AddingDefaultsToCurrentDeck, #[strum(to_string = "hideColor")] - HideColoredButtons, + ShowColoredButtons, } /// This is a workaround for old clients that used ints to represent boolean @@ -73,7 +73,7 @@ impl Collection { // some keys default to true BoolKey::InterruptAudioWhenAnswering | BoolKey::ShowIntervalsAboveAnswerButtons - | BoolKey::HideColoredButtons + | BoolKey::ShowColoredButtons | BoolKey::AddingDefaultsToCurrentDeck | BoolKey::FutureDueShowBacklog | BoolKey::ShowRemainingDueCountsInStudy diff --git a/rslib/src/preferences.rs b/rslib/src/preferences.rs index 6e9f64d5d..394d5bec8 100644 --- a/rslib/src/preferences.rs +++ b/rslib/src/preferences.rs @@ -97,7 +97,7 @@ impl Collection { show_remaining_due_counts: self.get_config_bool(BoolKey::ShowRemainingDueCountsInStudy), show_intervals_on_buttons: self .get_config_bool(BoolKey::ShowIntervalsAboveAnswerButtons), - show_colored_buttons: self.get_config_bool(BoolKey::HideColoredButtons), + show_colored_buttons: self.get_config_bool(BoolKey::ShowColoredButtons), time_limit_secs: self.get_answer_time_limit_secs(), load_balancer_enabled: self.get_config_bool(BoolKey::LoadBalancerEnabled), fsrs_short_term_with_steps_enabled: self @@ -120,7 +120,7 @@ impl Collection { BoolKey::ShowIntervalsAboveAnswerButtons, s.show_intervals_on_buttons, )?; - self.set_config_bool_inner(BoolKey::HideColoredButtons, s.show_colored_buttons)?; + self.set_config_bool_inner(BoolKey::ShowColoredButtons, s.show_colored_buttons)?; self.set_answer_time_limit_secs(s.time_limit_secs)?; self.set_config_bool_inner(BoolKey::LoadBalancerEnabled, s.load_balancer_enabled)?; self.set_config_bool_inner( From 84d887b831cdcf00853f41e2f7a732bd66b088c9 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 23:41:15 +0200 Subject: [PATCH 11/19] CHORE: Improve consistency in string and function names #3 --- qt/aqt/reviewer.py | 2 +- rslib/src/config/bool.rs | 2 +- rslib/src/config/schema11.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index 9d7345e91..1c4601214 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -932,7 +932,7 @@ timerStopped = false; else "" ) - if self.mw.col.conf["hideColor"]: + if self.mw.col.conf["showColor"]: return """ """ % ( diff --git a/rslib/src/config/bool.rs b/rslib/src/config/bool.rs index 2207b5d4c..53872f35b 100644 --- a/rslib/src/config/bool.rs +++ b/rslib/src/config/bool.rs @@ -54,7 +54,7 @@ pub enum BoolKey { ShowRemainingDueCountsInStudy, #[strum(to_string = "addToCur")] AddingDefaultsToCurrentDeck, - #[strum(to_string = "hideColor")] + #[strum(to_string = "showColor")] ShowColoredButtons, } diff --git a/rslib/src/config/schema11.rs b/rslib/src/config/schema11.rs index c81f398ea..96e199e7a 100644 --- a/rslib/src/config/schema11.rs +++ b/rslib/src/config/schema11.rs @@ -25,7 +25,7 @@ pub(crate) fn schema11_config_as_string(creation_offset: Option) -> String "schedVer": 2, "creationOffset": creation_offset, "sched2021": true, - "hideColor": false, + "showColor": false, }); serde_json::to_string(&obj).unwrap() } From e840aae5ec405de563f6a2166e06ab978cfa5802 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 23:42:36 +0200 Subject: [PATCH 12/19] FIX: tabstop was missing in preferences --- qt/aqt/forms/preferences.ui | 1 + 1 file changed, 1 insertion(+) diff --git a/qt/aqt/forms/preferences.ui b/qt/aqt/forms/preferences.ui index c91113ac7..9383dafce 100644 --- a/qt/aqt/forms/preferences.ui +++ b/qt/aqt/forms/preferences.ui @@ -1284,6 +1284,7 @@ interrupt_audio showProgress showEstimates + showColoredButtons spacebar_rates_card render_latex url_schemes From 33ed1efbc08d8ae5e6b6be8a521c2515ad865b4a Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Tue, 30 Sep 2025 00:03:52 +0200 Subject: [PATCH 13/19] REMOVE: Unneccessary object in schema11 --- rslib/src/config/schema11.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/rslib/src/config/schema11.rs b/rslib/src/config/schema11.rs index 96e199e7a..afbc398e6 100644 --- a/rslib/src/config/schema11.rs +++ b/rslib/src/config/schema11.rs @@ -25,7 +25,6 @@ pub(crate) fn schema11_config_as_string(creation_offset: Option) -> String "schedVer": 2, "creationOffset": creation_offset, "sched2021": true, - "showColor": false, }); serde_json::to_string(&obj).unwrap() } From e58d1e08810b0d6ef8ddac5a7833559fb977a4a7 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:11:46 +0000 Subject: [PATCH 14/19] Update qt/aqt/preferences.py Co-authored-by: Ross Brown --- qt/aqt/preferences.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt/aqt/preferences.py b/qt/aqt/preferences.py index 6a1482298..a13088978 100644 --- a/qt/aqt/preferences.py +++ b/qt/aqt/preferences.py @@ -137,7 +137,7 @@ class Preferences(QDialog): form.showEstimates.setChecked(reviewing.show_intervals_on_buttons) form.showProgress.setChecked(reviewing.show_remaining_due_counts) form.showPlayButtons.setChecked(not reviewing.hide_audio_play_buttons) - form.showColoredButtons.setChecked(not reviewing.show_colored_buttons) + form.showColoredButtons.setChecked(reviewing.show_colored_buttons) form.interrupt_audio.setChecked(reviewing.interrupt_audio_when_answering) editing = self.prefs.editing From 1821359b4da0a9b4dd13622849566dd4cb882350 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:11:56 +0000 Subject: [PATCH 15/19] Update qt/aqt/preferences.py Co-authored-by: Ross Brown --- qt/aqt/preferences.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt/aqt/preferences.py b/qt/aqt/preferences.py index a13088978..042d244cf 100644 --- a/qt/aqt/preferences.py +++ b/qt/aqt/preferences.py @@ -173,7 +173,7 @@ class Preferences(QDialog): reviewing.show_intervals_on_buttons = form.showEstimates.isChecked() reviewing.time_limit_secs = form.timeLimit.value() * 60 reviewing.hide_audio_play_buttons = not self.form.showPlayButtons.isChecked() - reviewing.show_colored_buttons = not self.form.showColoredButtons.isChecked() + reviewing.show_colored_buttons = self.form.showColoredButtons.isChecked() reviewing.interrupt_audio_when_answering = self.form.interrupt_audio.isChecked() editing = self.prefs.editing From 7d5683a0b2a43f5edb6740e83828922803361ad8 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:12:05 +0000 Subject: [PATCH 16/19] Update qt/aqt/reviewer.py Co-authored-by: Ross Brown --- qt/aqt/reviewer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index 1c4601214..7a81ef016 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -932,7 +932,7 @@ timerStopped = false; else "" ) - if self.mw.col.conf["showColor"]: + if not self.mw.col.conf["showColor"]: return """ """ % ( From 26b69008d8c9686fa7caafdf059b28252a7877f1 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:31:14 +0000 Subject: [PATCH 17/19] Update qt/aqt/data/web/css/reviewer-bottom.scss Co-authored-by: Ross Brown --- qt/aqt/data/web/css/reviewer-bottom.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/qt/aqt/data/web/css/reviewer-bottom.scss b/qt/aqt/data/web/css/reviewer-bottom.scss index 589bd6bcd..bcd1bf77a 100644 --- a/qt/aqt/data/web/css/reviewer-bottom.scss +++ b/qt/aqt/data/web/css/reviewer-bottom.scss @@ -28,7 +28,6 @@ button { white-space: nowrap; margin: 9px; position: relative; - border-top-color: color(border-subtle); } .answerButton, From 4debb0ddfc9bb3815cfbc11d1e81712f9cffa706 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Tue, 30 Sep 2025 01:07:11 +0200 Subject: [PATCH 18/19] FIX: Missing key in db and related error popup (thanks @iamllama) --- proto/anki/config.proto | 1 + qt/aqt/reviewer.py | 2 +- rslib/src/backend/config.rs | 1 + rslib/src/config/bool.rs | 1 - 4 files changed, 3 insertions(+), 2 deletions(-) diff --git a/proto/anki/config.proto b/proto/anki/config.proto index ebf16314e..40371e78d 100644 --- a/proto/anki/config.proto +++ b/proto/anki/config.proto @@ -57,6 +57,7 @@ message ConfigKey { LOAD_BALANCER_ENABLED = 26; FSRS_SHORT_TERM_WITH_STEPS_ENABLED = 27; FSRS_LEGACY_EVALUATE = 28; + SHOW_COLORED_BUTTONS = 29; } enum String { SET_DUE_BROWSER = 0; diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index 7a81ef016..de13335ef 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -932,7 +932,7 @@ timerStopped = false; else "" ) - if not self.mw.col.conf["showColor"]: + if not self.mw.col.get_config_bool(Config.Bool.SHOW_COLORED_BUTTONS): return """ """ % ( diff --git a/rslib/src/backend/config.rs b/rslib/src/backend/config.rs index b6e81ce2a..81edbf552 100644 --- a/rslib/src/backend/config.rs +++ b/rslib/src/backend/config.rs @@ -40,6 +40,7 @@ impl From for BoolKey { BoolKeyProto::LoadBalancerEnabled => BoolKey::LoadBalancerEnabled, BoolKeyProto::FsrsShortTermWithStepsEnabled => BoolKey::FsrsShortTermWithStepsEnabled, BoolKeyProto::FsrsLegacyEvaluate => BoolKey::FsrsLegacyEvaluate, + BoolKeyProto::ShowColoredButtons => BoolKey::ShowColoredButtons, } } } diff --git a/rslib/src/config/bool.rs b/rslib/src/config/bool.rs index 53872f35b..16121bcd9 100644 --- a/rslib/src/config/bool.rs +++ b/rslib/src/config/bool.rs @@ -54,7 +54,6 @@ pub enum BoolKey { ShowRemainingDueCountsInStudy, #[strum(to_string = "addToCur")] AddingDefaultsToCurrentDeck, - #[strum(to_string = "showColor")] ShowColoredButtons, } From 28d3b46d3599341dfe8d1b269ddb3fb8f358e058 Mon Sep 17 00:00:00 2001 From: GithubAnon0000 <160563432+GithubAnon0000@users.noreply.github.com> Date: Tue, 30 Sep 2025 01:44:39 +0200 Subject: [PATCH 19/19] CHANGE: Reuse existing color palette --- qt/aqt/data/web/css/reviewer-bottom.scss | 10 ++-------- ts/lib/sass/_vars.scss | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/qt/aqt/data/web/css/reviewer-bottom.scss b/qt/aqt/data/web/css/reviewer-bottom.scss index bcd1bf77a..a514474f2 100644 --- a/qt/aqt/data/web/css/reviewer-bottom.scss +++ b/qt/aqt/data/web/css/reviewer-bottom.scss @@ -39,22 +39,16 @@ button { border-style: dashed; } -.answerButton, -.answerButton:hover, -.answerButton:focus { - border-width: 1px; -} - .answerIncorrect, .answerIncorrect:hover, .answerIncorrect:focus { - border-color: #e01b24; + border-color: color(border-answerIncorrect); } .answerCorrect, .answerCorrect:hover, .answerCorrect:focus { - border-color: #2ec27e; + border-color: color(border-answerCorrect); } .hitem { diff --git a/ts/lib/sass/_vars.scss b/ts/lib/sass/_vars.scss index a8da766ad..65d99c6b3 100644 --- a/ts/lib/sass/_vars.scss +++ b/ts/lib/sass/_vars.scss @@ -178,6 +178,20 @@ $vars: ( dark: palette(blue, 5), ), ), + answerCorrect: ( + "Border color of answer buttons that show the answer was correct (hard, good, easy)", + ( + light: palette(green, 5), + dark: palette(green, 5), + ) + ), + answerIncorrect: ( + "Border color of the answer button that shows that the answer was incorrect (again)", + ( + light: palette(red, 5), + dark: palette(red, 5), + ) + ), ), button: ( bg: (