diff --git a/dikte/home_ui.py b/dikte/home_ui.py
index c25ac6a..293a650 100644
--- a/dikte/home_ui.py
+++ b/dikte/home_ui.py
@@ -100,7 +100,7 @@ def processing_locations(conf, mode="dictation", file_cleanup=None, file_timesta
if provider in ("codex", "agy") and not conf[f"cleanup_{provider}_model"].strip():
model = t("{name} default model", name="Codex" if provider == "codex" else "Antigravity")
text = _model_location(model, provider, local.get("llama")) if enabled else t("Editing off")
- location = t("Audio: {sound} / Text: {text}", sound=sound, text=text)
+ location = t("Dictation: {sound} / Cleanup: {text}", sound=sound, text=text)
if mode == "meeting":
location += " / " + t("Minutes: {model}", model=_model_location(conf["meeting_model"], "openrouter"))
elif mode == "ask":
diff --git a/dikte/i18n.py b/dikte/i18n.py
index c8badc9..f930830 100644
--- a/dikte/i18n.py
+++ b/dikte/i18n.py
@@ -68,7 +68,7 @@ TR = {
"Local CPU": "Yerel CPU",
"Model not selected": "Model seçilmedi",
"{name} default model": "{name} varsayılan modeli",
- "Audio: {sound} / Text: {text}": "Ses: {sound} / Metin: {text}",
+ "Dictation: {sound} / Cleanup: {text}": "Dikte: {sound} / Temizleme: {text}",
"Minutes: {model}": "Tutanak: {model}",
"Assistant: {model}": "Asistan: {model}",
"Completed with a warning: {error}": "Uyarıyla tamamlandı: {error}",
diff --git a/dikte/icons/check-light.svg b/dikte/icons/check-light.svg
new file mode 100644
index 0000000..47e04cf
--- /dev/null
+++ b/dikte/icons/check-light.svg
@@ -0,0 +1 @@
+
diff --git a/dikte/icons/check.svg b/dikte/icons/check.svg
new file mode 100644
index 0000000..3b9baff
--- /dev/null
+++ b/dikte/icons/check.svg
@@ -0,0 +1 @@
+
diff --git a/dikte/theme.py b/dikte/theme.py
index 1939158..e3e81cf 100644
--- a/dikte/theme.py
+++ b/dikte/theme.py
@@ -74,15 +74,30 @@ QComboBox::drop-down {
width: 26px; border: none; background: transparent;
}
QComboBox::down-arrow { image: url("__ICONS__/chevron-down@arrow_suffix.svg"); width: 12px; height: 12px; }
-QSpinBox { padding-right: 28px; min-height: 18px; }
+QSpinBox { padding: 2px 20px 2px 6px; min-height: 18px; }
+QSpinBox > QLineEdit { border: none; background: transparent; padding: 0; }
QSpinBox::up-button, QSpinBox::down-button {
- subcontrol-origin: border; width: 26px; border: none; background: transparent;
+ subcontrol-origin: border; width: 20px; border: none; background: transparent;
}
QSpinBox::up-button { subcontrol-position: top right; border-top-right-radius: 5px; }
QSpinBox::down-button { subcontrol-position: bottom right; border-bottom-right-radius: 5px; }
QSpinBox::up-button:hover, QSpinBox::down-button:hover { background: @border; }
QSpinBox::up-arrow { image: url("__ICONS__/chevron-up@arrow_suffix.svg"); width: 10px; height: 10px; }
QSpinBox::down-arrow { image: url("__ICONS__/chevron-down@arrow_suffix.svg"); width: 10px; height: 10px; }
+QCheckBox { spacing: 7px; }
+QCheckBox::indicator {
+ width: 14px; height: 14px; border: 1px solid @border;
+ border-radius: 4px; background: @surface;
+}
+QCheckBox::indicator:hover { border-color: @accent; }
+QCheckBox::indicator:checked {
+ background: @accent; border-color: @accent;
+ image: url("__ICONS__/check@arrow_suffix.svg");
+}
+QCheckBox:focus::indicator { border-color: @text; }
+QCheckBox:disabled { color: @disabled_text; }
+QCheckBox::indicator:disabled { background: @disabled_bg; border-color: @disabled_text; }
+QCheckBox::indicator:checked:disabled { background: @disabled_text; }
QComboBox QAbstractItemView { background: @surface; color: @text; selection-background-color: @border; }
QTabWidget::pane { border: none; }
QTabBar::tab { background: @surface; padding: 10px; }
diff --git a/docs/home.webp b/docs/home.webp
index a7b1051..2009ec6 100644
Binary files a/docs/home.webp and b/docs/home.webp differ
diff --git a/docs/settings-agent.webp b/docs/settings-agent.webp
index afb5e42..8c5dad9 100644
Binary files a/docs/settings-agent.webp and b/docs/settings-agent.webp differ
diff --git a/docs/settings-api.webp b/docs/settings-api.webp
index 3558f6d..d4c45e5 100644
Binary files a/docs/settings-api.webp and b/docs/settings-api.webp differ
diff --git a/docs/settings-audio-file.webp b/docs/settings-audio-file.webp
index 747eba9..743ff3b 100644
Binary files a/docs/settings-audio-file.webp and b/docs/settings-audio-file.webp differ
diff --git a/docs/settings-display.webp b/docs/settings-display.webp
index e22ce8a..322cfb8 100644
Binary files a/docs/settings-display.webp and b/docs/settings-display.webp differ
diff --git a/docs/settings-general.webp b/docs/settings-general.webp
index cbd4787..0ec9e53 100644
Binary files a/docs/settings-general.webp and b/docs/settings-general.webp differ
diff --git a/docs/settings-meeting.webp b/docs/settings-meeting.webp
index 578d3ce..16f3295 100644
Binary files a/docs/settings-meeting.webp and b/docs/settings-meeting.webp differ
diff --git a/tests/test_home_ui.py b/tests/test_home_ui.py
index 491084a..34c499c 100644
--- a/tests/test_home_ui.py
+++ b/tests/test_home_ui.py
@@ -390,7 +390,8 @@ class Home(DikteTest):
i18n.set_language("tr")
self.window.refresh()
self.assertEqual(self.window.capture_status.text(), "Konuşmaya hazır")
- self.assertIn("Ses:", self.window.capture_models.text())
+ self.assertIn("Dikte:", self.window.capture_models.text())
+ self.assertIn("Temizleme:", self.window.capture_models.text())
def test_completed_run_refreshes_workspace_without_changing_controller_state(self):
controller = Dikte.__new__(Dikte)