1- import type { App } from 'obsidian' ;
1+ import type { App , SettingDefinitionItem } from 'obsidian' ;
22import { Notice , PluginSettingTab , Setting } from 'obsidian' ;
33
44import type { ChatViewPlacement } from '../../core/types/settings' ;
@@ -20,6 +20,111 @@ export class QoderianSettingTab extends PluginSettingTab {
2020 this . plugin = plugin ;
2121 }
2222
23+ /**
24+ * Declarative mirror of display() for Obsidian's settings search (1.13+).
25+ * Rendering stays imperative in display(); these definitions only feed the
26+ * search index, so every entry is a plain name/desc row grouped under the
27+ * same headings the page shows.
28+ */
29+ getSettingDefinitions ( ) : SettingDefinitionItem [ ] {
30+ setLocale ( this . plugin . settings . locale as Locale ) ;
31+
32+ return [
33+ {
34+ type : 'group' ,
35+ heading : t ( 'settings.setup' ) ,
36+ items : [
37+ { name : t ( 'settings.cliPath.name' ) , desc : t ( 'settings.cliPath.desc' ) } ,
38+ ] ,
39+ } ,
40+ { name : t ( 'settings.language.name' ) , desc : t ( 'settings.language.desc' ) } ,
41+ {
42+ type : 'group' ,
43+ heading : t ( 'settings.display' ) ,
44+ items : [
45+ { name : t ( 'settings.maxTabs.name' ) , desc : t ( 'settings.maxTabs.desc' ) } ,
46+ { name : t ( 'settings.chatViewPlacement.name' ) , desc : t ( 'settings.chatViewPlacement.desc' ) } ,
47+ { name : t ( 'settings.enableAutoScroll.name' ) , desc : t ( 'settings.enableAutoScroll.desc' ) } ,
48+ { name : t ( 'settings.deferMathRenderingDuringStreaming.name' ) , desc : t ( 'settings.deferMathRenderingDuringStreaming.desc' ) } ,
49+ { name : t ( 'settings.expandFileEditsByDefault.name' ) , desc : t ( 'settings.expandFileEditsByDefault.desc' ) } ,
50+ ] ,
51+ } ,
52+ {
53+ type : 'group' ,
54+ heading : t ( 'settings.conversations' ) ,
55+ items : [
56+ { name : t ( 'settings.autoTitle.name' ) , desc : t ( 'settings.autoTitle.desc' ) } ,
57+ {
58+ name : t ( 'settings.titleModel.name' ) ,
59+ desc : t ( 'settings.titleModel.desc' ) ,
60+ visible : ( ) => this . plugin . settings . enableAutoTitleGeneration ,
61+ } ,
62+ ] ,
63+ } ,
64+ {
65+ type : 'group' ,
66+ heading : t ( 'settings.content' ) ,
67+ items : [
68+ { name : t ( 'settings.userName.name' ) , desc : t ( 'settings.userName.desc' ) } ,
69+ { name : t ( 'settings.systemPrompt.name' ) , desc : t ( 'settings.systemPrompt.desc' ) } ,
70+ { name : t ( 'settings.excludedTags.name' ) , desc : t ( 'settings.excludedTags.desc' ) } ,
71+ { name : t ( 'settings.mediaFolder.name' ) , desc : t ( 'settings.mediaFolder.desc' ) } ,
72+ ] ,
73+ } ,
74+ {
75+ type : 'group' ,
76+ heading : t ( 'settings.input' ) ,
77+ items : [
78+ { name : t ( 'settings.requireCommandOrControlEnterToSend.name' ) , desc : t ( 'settings.requireCommandOrControlEnterToSend.desc' ) } ,
79+ { name : t ( 'settings.navMappings.name' ) , desc : t ( 'settings.navMappings.desc' ) } ,
80+ ] ,
81+ } ,
82+ {
83+ type : 'group' ,
84+ heading : t ( 'settings.safety' ) ,
85+ items : [
86+ { name : t ( 'settings.loadUserSettings.name' ) , desc : t ( 'settings.loadUserSettings.desc' ) } ,
87+ ] ,
88+ } ,
89+ {
90+ type : 'group' ,
91+ heading : t ( 'settings.slashCommands.name' ) ,
92+ items : [
93+ { name : t ( 'settings.slashCommands.commands' ) , desc : t ( 'settings.slashCommands.commandsDesc' ) } ,
94+ { name : t ( 'settings.slashCommands.skills' ) , desc : t ( 'settings.slashCommands.skillsDesc' ) } ,
95+ ] ,
96+ } ,
97+ {
98+ type : 'group' ,
99+ heading : t ( 'settings.subagents.name' ) ,
100+ items : [
101+ { name : t ( 'settings.subagents.name' ) , desc : t ( 'settings.subagents.desc' ) } ,
102+ ] ,
103+ } ,
104+ {
105+ type : 'group' ,
106+ heading : t ( 'settings.mcpServers.name' ) ,
107+ items : [
108+ { name : t ( 'settings.mcpServers.name' ) , desc : t ( 'settings.mcpServers.desc' ) } ,
109+ ] ,
110+ } ,
111+ {
112+ type : 'group' ,
113+ heading : t ( 'settings.plugins.name' ) ,
114+ items : [
115+ { name : t ( 'settings.plugins.name' ) , desc : t ( 'settings.plugins.desc' ) } ,
116+ ] ,
117+ } ,
118+ {
119+ type : 'group' ,
120+ heading : t ( 'settings.experimental' ) ,
121+ items : [
122+ { name : t ( 'settings.enableBangBash.name' ) , desc : t ( 'settings.enableBangBash.desc' ) } ,
123+ ] ,
124+ } ,
125+ ] ;
126+ }
127+
23128 display ( ) : void {
24129 const { containerEl } = this ;
25130 containerEl . empty ( ) ;
@@ -97,7 +202,6 @@ export class QoderianSettingTab extends PluginSettingTab {
97202 slider
98203 . setLimits ( 3 , 10 , 1 )
99204 . setValue ( this . plugin . settings . maxTabs ?? 3 )
100- . setDynamicTooltip ( )
101205 . onChange ( async ( value ) => {
102206 this . plugin . settings . maxTabs = value ;
103207 await this . plugin . saveSettings ( ) ;
0 commit comments