Skip to content

Commit bf2febc

Browse files
committed
refactor: 💄 update settings tab to comply better with Obsidian plugin guidelines
Sentence case for titles and other quality-of-life improvements
1 parent 5ad0833 commit bf2febc

File tree

1 file changed

+33
-51
lines changed

1 file changed

+33
-51
lines changed

src/ui/settings-tab.ts

+33-51
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,9 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
140140

141141
containerEl.empty();
142142

143-
containerEl.createEl('h1', { text: 'Readwise Sync Configuration' });
144-
145143
// Authentication section inspired by the official Readwise plugin
146144
new Setting(containerEl).setName('Authentication').setHeading();
147145

148-
149146
const hasValidToken = await this.plugin.readwiseApi.hasValidToken();
150147

151148
const tokenValidationError = containerEl.createDiv({
@@ -164,7 +161,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
164161
});
165162

166163
new Setting(containerEl)
167-
.setName('Readwise Authentication')
164+
.setName('Readwise authentication')
168165
.setDesc(createFragment((fragment) => {
169166
fragment.createEl('br');
170167
fragment.createEl('br');
@@ -219,12 +216,10 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
219216

220217

221218

222-
new Setting(containerEl)
223-
.setName('Library Settings')
224-
.setHeading();
219+
new Setting(containerEl).setName('Library').setHeading();
225220

226221
new Setting(containerEl)
227-
.setName('Readwise library folder name')
222+
.setName('Library folder name')
228223
.setDesc('Default: Readwise')
229224
.addText((text) =>
230225
text
@@ -237,12 +232,10 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
237232
})
238233
);
239234

240-
new Setting(containerEl)
241-
.setName('Sync Settings')
242-
.setHeading();
235+
new Setting(containerEl).setName('Sync').setHeading();
243236

244237
new Setting(containerEl)
245-
.setName('Auto Sync when starting')
238+
.setName('Auto sync when starting')
246239
.setDesc('Automatically syncs new highlights after opening Obsidian')
247240
.addToggle((toggle) =>
248241
toggle.setValue(this.plugin.settings.autoSync).onChange(async (value) => {
@@ -251,9 +244,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
251244
})
252245
);
253246

254-
new Setting(containerEl)
255-
.setName('Author Name Settings')
256-
.setHeading()
247+
new Setting(containerEl).setName('Author names').setHeading()
257248
.setDesc(createFragment((fragment) => {
258249
fragment.appendText(
259250
'These settings control how author names are processed. If enabled, titles (Dr., Prof., Mr., Mrs., Ms., Miss, Sir, Lady) will be stripped from author names.'
@@ -277,7 +268,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
277268
}))
278269

279270
new Setting(containerEl)
280-
.setName('Normalize Author Names')
271+
.setName('Normalize author names')
281272
.setClass('indent')
282273
.setDesc('If enabled, author names will be normalized to a consistent case.')
283274
.addToggle((toggle) =>
@@ -288,7 +279,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
288279
);
289280

290281
new Setting(containerEl)
291-
.setName('Strip Titles from Author Names')
282+
.setName('Strip titles from author names')
292283
.setClass('indent')
293284
.setDesc('If enabled, titles (e.g., Dr., Mr., Prof., etc.) will be stripped from author names.')
294285
.addToggle((toggle) =>
@@ -298,12 +289,10 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
298289
})
299290
);
300291

301-
new Setting(containerEl)
302-
.setName('Highlight Organization')
303-
.setHeading();
292+
new Setting(containerEl).setName('Highlight organization').setHeading();
304293

305294
new Setting(containerEl)
306-
.setName('Sort Highlights in notes from Oldest to Newest')
295+
.setName('Sort highlights from oldest to newest')
307296
.setDesc(
308297
'If checked, highlights will be listed from oldest to newest. Unchecked, newest highlights will appear first.'
309298
)
@@ -315,7 +304,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
315304
);
316305

317306
new Setting(containerEl)
318-
.setName('Sort Highlights by Location')
307+
.setName('Sort highlights by location')
319308
.setDesc(
320309
'If checked, highlights will be listed in order of Location. Combine with above Sort Highlights from Oldest to Newest option to reverse order.'
321310
)
@@ -327,7 +316,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
327316
);
328317

329318
new Setting(containerEl)
330-
.setName('Filter Discarded Highlights')
319+
.setName('Filter discarded highlights')
331320
.setDesc('If enabled, do not display discarded highlights in the Readwise library.')
332321
.addToggle((toggle) =>
333322
toggle.setValue(this.plugin.settings.highlightDiscard).onChange(async (value) => {
@@ -337,7 +326,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
337326
);
338327

339328
new Setting(containerEl)
340-
.setName('Only sync highlights with notes')
329+
.setName('Sync highlights with notes only')
341330
.setDesc(
342331
'If checked, highlights will only be synced if they have a note. This makes it easier to use these notes for Zettelkasten.'
343332
)
@@ -348,13 +337,10 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
348337
})
349338
);
350339

351-
new Setting(containerEl)
352-
.setName('Filename Settings')
353-
.setDesc('Controls how filenames are generated from the title')
354-
.setHeading();
340+
new Setting(containerEl).setName('Filenames').setHeading();
355341

356342
new Setting(containerEl)
357-
.setName('Replacement string for colons in filenames')
343+
.setName('Colon replacement in filenames')
358344
.setDesc(
359345
"Set the string to be used for replacement of colon (:) in filenames derived from the title. The default value for this setting is '-'."
360346
)
@@ -375,7 +361,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
375361
);
376362

377363
new Setting(containerEl)
378-
.setName('Use Slugify for filenames')
364+
.setName('Use slugify for filenames')
379365
.setDesc(
380366
createFragment((fragment) => {
381367
fragment.appendText(
@@ -411,7 +397,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
411397
if (this.plugin.settings.useSlugify) {
412398
new Setting(containerEl)
413399
.setClass('indent')
414-
.setName('Slugify Separator')
400+
.setName('Slugify separator')
415401
.setDesc('Character to use as separator in slugified filenames (default: -)')
416402
.addText((text) =>
417403
text
@@ -425,7 +411,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
425411

426412
new Setting(containerEl)
427413
.setClass('indent')
428-
.setName('Slugify Lowercase')
414+
.setName('Slugify lowercase')
429415
.setDesc('Convert slugified filenames to lowercase')
430416
.addToggle((toggle) =>
431417
toggle.setValue(this.plugin.settings.slugifyLowercase).onChange(async (value) => {
@@ -435,12 +421,10 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
435421
);
436422
}
437423

438-
new Setting(containerEl)
439-
.setName('Sync Logging')
440-
.setHeading();
424+
new Setting(containerEl).setName('Sync logging').setHeading();
441425

442426
new Setting(containerEl)
443-
.setName('Sync Log')
427+
.setName('Sync log')
444428
.setDesc('Save sync log to file in Library')
445429
.addToggle((toggle) =>
446430
toggle.setValue(this.plugin.settings.logFile).onChange(async (value) => {
@@ -452,7 +436,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
452436
if (this.plugin.settings.logFile) {
453437
new Setting(containerEl)
454438
.setClass('indent')
455-
.setName('Sync Log File Name')
439+
.setName('Log filename')
456440
.setDesc('Default: Sync.md')
457441
.addText((text) =>
458442
text
@@ -484,7 +468,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
484468
// Documentation block for templates
485469

486470
new Setting(containerEl)
487-
.setName('Frontmatter Settings')
471+
.setName('Frontmatter settings')
488472
.setDesc(
489473
createFragment((fragment) => {
490474
fragment.appendText('Controls the YAML metadata at the top of each note.');
@@ -493,7 +477,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
493477
.setHeading();
494478

495479
new Setting(containerEl)
496-
.setName('Frontmatter')
480+
.setName('Add frontmatter')
497481
.setDesc('Add frontmatter (defined with the Frontmatter Template below)')
498482
.addToggle((toggle) =>
499483
toggle.setValue(this.plugin.settings.frontMatter).onChange(async (value) => {
@@ -516,7 +500,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
516500
if (this.plugin.settings.frontMatter) {
517501
new Setting(containerEl)
518502
.setClass('indent')
519-
.setName('Update Frontmatter')
503+
.setName('Update frontmatter')
520504
.setDesc(
521505
createFragment((fragment) => {
522506
fragment.appendText('Update frontmatter when syncing existing files');
@@ -538,7 +522,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
538522
if (this.plugin.settings.updateFrontmatter) {
539523
new Setting(containerEl)
540524
.setClass('indent')
541-
.setName('Protect Frontmatter Fields')
525+
.setName('Protect frontmatter fields')
542526
.setDesc(
543527
createFragment((fragment) => {
544528
fragment.appendText('Prevent existing frontmatter fields from being overwritten during sync');
@@ -583,7 +567,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
583567
const container = containerEl.createDiv();
584568
new Setting(container)
585569
.setClass('indent')
586-
.setName('Protected Fields')
570+
.setName('Protected fields')
587571
.setDesc('Enter one field name per line')
588572
.addTextArea((text) => {
589573
const errorDiv = container.createDiv({
@@ -626,12 +610,10 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
626610
}
627611

628612

629-
new Setting(containerEl)
630-
.setName('File Tracking')
631-
.setHeading();
613+
new Setting(containerEl).setName('File tracking').setHeading();
632614

633615
new Setting(containerEl)
634-
.setName('Enable File Tracking')
616+
.setName('Enable file tracking')
635617
.setDesc(
636618
createFragment((fragment) => {
637619
fragment.appendText(
@@ -661,7 +643,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
661643
if (this.plugin.settings.trackFiles && this.plugin.settings.frontMatter) {
662644
new Setting(containerEl)
663645
.setClass('indent')
664-
.setName('Tracking Property')
646+
.setName('Tracking property')
665647
.setDesc(
666648
'Frontmatter property to store the unique Readwise URL (default: uri). This field will be automatically managed in the frontmatter.'
667649
)
@@ -678,7 +660,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
678660

679661
new Setting(containerEl)
680662
.setClass('indent')
681-
.setName('Remove Duplicate Files')
663+
.setName('Remove duplicate files')
682664
.setDesc(
683665
createFragment((fragment) => {
684666
fragment.appendText(
@@ -730,7 +712,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
730712
}
731713

732714
new Setting(containerEl)
733-
.setName('Frontmatter Template')
715+
.setName('Frontmatter template')
734716
.setDesc(
735717
createFragment((fragment) => {
736718
fragment.appendText('Controls YAML frontmatter metadata. The same variables are available as for the Header template, with specific versions optimised for YAML frontmatter (tags), and escaped values for YAML compatibility.');
@@ -876,7 +858,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
876858

877859

878860
new Setting(containerEl)
879-
.setName('Header Template')
861+
.setName('Header template')
880862
.setDesc(
881863
createFragment((fragment) => {
882864
fragment.appendText('Controls document metadata and structure.');
@@ -931,7 +913,7 @@ export default class ReadwiseMirrorSettingTab extends PluginSettingTab {
931913
});
932914

933915
new Setting(containerEl)
934-
.setName('Highlight Template')
916+
.setName('Highlight template')
935917
.setDesc(
936918
createFragment((fragment) => {
937919
fragment.appendText('Controls individual highlight formatting.');

0 commit comments

Comments
 (0)