Skip to content

Commit 6a2ce85

Browse files
committed
feat(doctor): enhance doctor check functionality with previews and update notes
1 parent 4b56c61 commit 6a2ce85

File tree

9 files changed

+132
-94
lines changed

9 files changed

+132
-94
lines changed

wox.core/plugin/doctor.go

Lines changed: 57 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"sort"
7+
"wox/common"
78
"wox/i18n"
89
"wox/updater"
910
"wox/util"
@@ -24,6 +25,7 @@ type DoctorCheckResult struct {
2425
Description string
2526
ActionName string
2627
Action func(ctx context.Context)
28+
Preview WoxPreview // Preview content for the check result
2729
}
2830

2931
// RunDoctorChecks runs all doctor checks
@@ -45,56 +47,89 @@ func RunDoctorChecks(ctx context.Context) []DoctorCheckResult {
4547
}
4648

4749
func checkWoxVersion(ctx context.Context) DoctorCheckResult {
48-
updateStatus := updater.CheckUpdate(ctx)
49-
if updateStatus.Status == updater.UpdateStatusError {
50+
updateInfo := updater.GetUpdateInfo()
51+
if updateInfo.Status == updater.UpdateStatusError {
5052
return DoctorCheckResult{
5153
Name: "i18n:plugin_doctor_version",
5254
Type: DoctorCheckUpdate,
5355
Passed: false,
54-
Description: updateStatus.UpdateError.Error(),
56+
Description: updateInfo.UpdateError.Error(),
5557
ActionName: "",
5658
Action: func(ctx context.Context) {
5759
},
60+
Preview: WoxPreview{
61+
PreviewType: WoxPreviewTypeText,
62+
PreviewData: updateInfo.UpdateError.Error(),
63+
PreviewProperties: map[string]string{},
64+
ScrollPosition: WoxPreviewScrollPositionBottom,
65+
},
5866
}
5967
}
6068

61-
if !updateStatus.HasUpdate {
69+
if !updateInfo.HasUpdate {
6270
return DoctorCheckResult{
6371
Name: "i18n:plugin_doctor_version",
6472
Type: DoctorCheckUpdate,
6573
Passed: true,
66-
Description: fmt.Sprintf(i18n.GetI18nManager().TranslateWox(ctx, "plugin_doctor_version_latest"), updateStatus.LatestVersion),
74+
Description: fmt.Sprintf(i18n.GetI18nManager().TranslateWox(ctx, "plugin_doctor_version_latest"), updateInfo.LatestVersion),
6775
ActionName: "",
6876
Action: func(ctx context.Context) {
6977
},
78+
Preview: WoxPreview{
79+
PreviewType: WoxPreviewTypeText,
80+
PreviewData: fmt.Sprintf(i18n.GetI18nManager().TranslateWox(ctx, "plugin_doctor_version_latest"), updateInfo.LatestVersion),
81+
PreviewProperties: map[string]string{},
82+
ScrollPosition: WoxPreviewScrollPositionBottom,
83+
},
7084
}
7185
} else {
7286
actionName := "i18n:plugin_doctor_version_download"
73-
if updateStatus.Status == updater.UpdateStatusReady {
87+
if updateInfo.Status == updater.UpdateStatusReady {
7488
actionName = "i18n:plugin_doctor_version_apply_update"
7589
}
7690

91+
// Create preview with release notes
92+
previewData := fmt.Sprintf("# %s\n\n%s",
93+
i18n.GetI18nManager().TranslateWox(ctx, "plugin_doctor_version_update_notes"),
94+
updateInfo.ReleaseNotes)
95+
96+
if updateInfo.ReleaseNotes == "" {
97+
previewData = i18n.GetI18nManager().TranslateWox(ctx, "plugin_doctor_version_no_release_notes")
98+
}
99+
77100
return DoctorCheckResult{
78101
Name: "i18n:plugin_doctor_version",
79102
Type: DoctorCheckUpdate,
80103
Passed: false,
81-
Description: fmt.Sprintf(i18n.GetI18nManager().TranslateWox(ctx, "plugin_doctor_version_update_available"), updateStatus.CurrentVersion, updateStatus.LatestVersion, updateStatus.Status),
104+
Description: fmt.Sprintf(i18n.GetI18nManager().TranslateWox(ctx, "plugin_doctor_version_update_available"), updateInfo.CurrentVersion, updateInfo.LatestVersion, updateInfo.Status),
82105
ActionName: actionName,
83106
Action: func(ctx context.Context) {
84107
updateStatus := updater.GetUpdateInfo()
85108
if updateStatus.Status == updater.UpdateStatusReady {
86109
updater.ApplyUpdate(ctx)
87-
}
88-
if updateStatus.Status == updater.UpdateStatusError {
89-
updater.DownloadUpdate(ctx)
110+
} else if updateStatus.Status == updater.UpdateStatusError {
111+
GetPluginManager().GetUI().Notify(ctx, common.NotifyMsg{
112+
Text: updateStatus.UpdateError.Error(),
113+
DisplaySeconds: 3,
114+
})
90115
}
91116
},
117+
Preview: WoxPreview{
118+
PreviewType: WoxPreviewTypeMarkdown,
119+
PreviewData: previewData,
120+
PreviewProperties: map[string]string{},
121+
ScrollPosition: WoxPreviewScrollPositionBottom,
122+
},
92123
}
93124
}
94125
}
95126

96127
func checkAccessibilityPermission(ctx context.Context) DoctorCheckResult {
97128
hasPermission := permission.HasAccessibilityPermission(ctx)
129+
130+
// Create preview with accessibility permission explanation
131+
previewData := i18n.GetI18nManager().TranslateWox(ctx, "plugin_doctor_accessibility_explanation")
132+
98133
if !hasPermission {
99134
return DoctorCheckResult{
100135
Name: "i18n:plugin_doctor_accessibility",
@@ -105,6 +140,12 @@ func checkAccessibilityPermission(ctx context.Context) DoctorCheckResult {
105140
Action: func(ctx context.Context) {
106141
permission.GrantAccessibilityPermission(ctx)
107142
},
143+
Preview: WoxPreview{
144+
PreviewType: WoxPreviewTypeMarkdown,
145+
PreviewData: previewData,
146+
PreviewProperties: map[string]string{},
147+
ScrollPosition: WoxPreviewScrollPositionBottom,
148+
},
108149
}
109150
}
110151

@@ -116,5 +157,11 @@ func checkAccessibilityPermission(ctx context.Context) DoctorCheckResult {
116157
ActionName: "",
117158
Action: func(ctx context.Context) {
118159
},
160+
Preview: WoxPreview{
161+
PreviewType: WoxPreviewTypeMarkdown,
162+
PreviewData: previewData,
163+
PreviewProperties: map[string]string{},
164+
ScrollPosition: WoxPreviewScrollPositionBottom,
165+
},
119166
}
120167
}

wox.core/plugin/system/doctor.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (r *DoctorPlugin) Query(ctx context.Context, query plugin.Query) (results [
4949
icon = plugin.CorrectIcon
5050
}
5151

52-
results = append(results, plugin.QueryResult{
52+
result := plugin.QueryResult{
5353
Title: check.Name,
5454
SubTitle: check.Description,
5555
Icon: icon,
@@ -61,7 +61,12 @@ func (r *DoctorPlugin) Query(ctx context.Context, query plugin.Query) (results [
6161
},
6262
},
6363
},
64-
})
64+
}
65+
66+
// Add preview
67+
result.Preview = check.Preview
68+
69+
results = append(results, result)
6570
}
6671

6772
return results

wox.core/resource/lang/en_US.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,10 +224,13 @@
224224
"plugin_doctor_version_update_available": "New version available, current: %s, latest: %s, status: %s",
225225
"plugin_doctor_version_download": "Go to download page",
226226
"plugin_doctor_version_apply_update": "Apply update",
227+
"plugin_doctor_version_update_notes": "Update Notes",
228+
"plugin_doctor_version_no_release_notes": "No release notes available for this update.",
227229
"plugin_doctor_accessibility": "Accessibility",
228230
"plugin_doctor_accessibility_required": "You need to grant Wox Accessibility permission to use this plugin",
229231
"plugin_doctor_accessibility_open_settings": "Open Accessibility Settings",
230232
"plugin_doctor_accessibility_granted": "You have granted Wox Accessibility permission",
233+
"plugin_doctor_accessibility_explanation": "# Why Wox Needs Accessibility Permission\n\nWox requires accessibility permission to perform the following functions:\n\n- **Global Hotkeys**: Allow you to activate Wox from anywhere using keyboard shortcuts\n- **Window Management**: Get information about active windows to provide context-aware results\n- **Keyboard Simulation**: Enable features like pasting results directly into applications\n\nWithout this permission, some features of Wox will be limited or unavailable.",
231234
"plugin_query_history_use": "Use",
232235
"plugin_browser_open_tab": "Open",
233236
"plugin_browser_server_port": "Server Port",

wox.core/resource/lang/pt_BR.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,13 @@
222222
"plugin_doctor_version_update_available": "Nova versão disponível, atual: %s, mais recente: %s, status: %s",
223223
"plugin_doctor_version_download": "Ir para a página de download",
224224
"plugin_doctor_version_apply_update": "Aplicar atualização",
225+
"plugin_doctor_version_update_notes": "Notas da Atualização",
226+
"plugin_doctor_version_no_release_notes": "Não há notas de lançamento disponíveis para esta atualização.",
225227
"plugin_doctor_accessibility": "Acessibilidade",
226228
"plugin_doctor_accessibility_required": "Você precisa conceder permissão de Acessibilidade ao Wox para usar este plugin",
227229
"plugin_doctor_accessibility_open_settings": "Abrir configurações de acessibilidade",
228230
"plugin_doctor_accessibility_granted": "Você concedeu permissão de Acessibilidade ao Wox",
231+
"plugin_doctor_accessibility_explanation": "# Por que o Wox precisa de permissão de Acessibilidade\n\nO Wox requer permissão de acessibilidade para realizar as seguintes funções:\n\n- **Teclas de atalho globais**: Permite ativar o Wox de qualquer lugar usando atalhos de teclado\n- **Gerenciamento de janelas**: Obter informações sobre janelas ativas para fornecer resultados contextuais\n- **Simulação de teclado**: Habilitar recursos como colar resultados diretamente em aplicativos\n\nSem essa permissão, alguns recursos do Wox serão limitados ou indisponíveis.",
229232
"plugin_query_history_use": "Usar",
230233
"plugin_browser_open_tab": "Abrir",
231234
"plugin_browser_server_port": "Porta do servidor",

wox.core/resource/lang/ru_RU.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,13 @@
222222
"plugin_doctor_version_update_available": "Доступна новая версия, текущая: %s, последняя: %s, статус: %s",
223223
"plugin_doctor_version_download": "Перейти на страницу загрузки",
224224
"plugin_doctor_version_apply_update": "Применить обновление",
225+
"plugin_doctor_version_update_notes": "Примечания к обновлению",
226+
"plugin_doctor_version_no_release_notes": "Для этого обновления нет доступных примечаний к выпуску.",
225227
"plugin_doctor_accessibility": "Доступность",
226228
"plugin_doctor_accessibility_required": "Вам нужно предоставить Wox разрешение на доступность для использования этого плагина",
227229
"plugin_doctor_accessibility_open_settings": "Открыть настройки доступности",
228230
"plugin_doctor_accessibility_granted": "Вы предоставили Wox разрешение на доступность",
231+
"plugin_doctor_accessibility_explanation": "# Почему Wox нуждается в разрешении на доступность\n\nWox требует разрешение на доступность для выполнения следующих функций:\n\n- **Глобальные горячие клавиши**: Позволяют активировать Wox из любого места с помощью сочетаний клавиш\n- **Управление окнами**: Получение информации об активных окнах для предоставления контекстно-зависимых результатов\n- **Эмуляция клавиатуры**: Включение функций, таких как вставка результатов непосредственно в приложения\n\nБез этого разрешения некоторые функции Wox будут ограничены или недоступны.",
229232
"plugin_query_history_use": "Использовать",
230233
"plugin_browser_open_tab": "Открыть",
231234
"plugin_browser_server_port": "Порт сервера",

wox.core/resource/lang/zh_CN.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,13 @@
221221
"plugin_doctor_version_update_available": "发现新版本,当前版:%s,最新版本:%s, 更新状态:%s",
222222
"plugin_doctor_version_download": "前往下载页面",
223223
"plugin_doctor_version_apply_update": "应用更新",
224+
"plugin_doctor_version_update_notes": "更新说明",
225+
"plugin_doctor_version_no_release_notes": "此更新没有提供更新说明。",
224226
"plugin_doctor_accessibility": "辅助功能",
225227
"plugin_doctor_accessibility_required": "您需要授予 Wox 辅助功能权限才能使用此插件",
226228
"plugin_doctor_accessibility_open_settings": "打开辅助功能设置",
227229
"plugin_doctor_accessibility_granted": "您已授予 Wox 辅助功能权限",
230+
"plugin_doctor_accessibility_explanation": "# 为什么 Wox 需要辅助功能权限\n\nWox 需要辅助功能权限来执行以下功能:\n\n- **全局快捷键**:允许您通过键盘快捷键从任何地方激活 Wox\n- **窗口管理**:获取活动窗口的信息,以提供上下文相关的结果\n- **键盘模拟**:启用直接将结果粘贴到应用程序等功能\n\n如果没有此权限,Wox 的某些功能将受到限制或不可用。",
228231
"plugin_query_history_use": "使用",
229232
"plugin_url_open": "打开",
230233
"plugin_url_remove": "从历史记录中移除",

0 commit comments

Comments
 (0)