Skip to content

Commit 4eade0c

Browse files
committed
feat: Allow localization of the "Milestones" header
1 parent 895969e commit 4eade0c

3 files changed

Lines changed: 32 additions & 2 deletions

File tree

src/flow-scanner.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { App, TFile, CachedMetadata } from "obsidian";
2-
import { FlowProject, nextActionsHeaderText, PluginSettings } from "./types";
2+
import { FlowProject, milestonesHeaderText, nextActionsHeaderText, PluginSettings } from "./types";
33
import { ProjectNode, buildProjectHierarchy } from "./project-hierarchy";
44

55
export class FlowProjectScanner {
@@ -65,7 +65,7 @@ export class FlowProjectScanner {
6565
mtime: file.stat.mtime,
6666
nextActions: this.extractSection(content, `## ${nextActionsHeaderText(this.settings)}`),
6767
parentProject: frontmatter["parent-project"],
68-
milestones: this.extractSectionText(content, "## Milestones"),
68+
milestones: this.extractSectionText(content, `## ${milestonesHeaderText(this.settings)}`),
6969
coverImage: frontmatter["cover-image"],
7070
current: frontmatter.current === true,
7171
};

src/settings-tab.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,22 @@ export class FlowGTDSettingTab extends PluginSettingTab {
379379
})
380380
);
381381

382+
// Milestones Header Text
383+
new Setting(containerEl)
384+
.setName("Milestones Header Text")
385+
.setDesc(
386+
"Alternative text for the \"Milestones\" header in project files."
387+
)
388+
.addText((text) =>
389+
text
390+
.setPlaceholder("Milestones")
391+
.setValue(this.plugin.settings.milestonesHeaderText)
392+
.onChange(async (value) => {
393+
this.plugin.settings.milestonesHeaderText = value;
394+
await this.plugin.saveSettings();
395+
})
396+
);
397+
382398
// Default Inbox File
383399
new Setting(containerEl)
384400
.setName("Default Inbox File")

src/types/settings.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export interface PluginSettings {
1818
inboxFolderPath: string;
1919
processedInboxFolderPath: string;
2020
nextActionsHeaderText: string; // Header text to use instead of "Next actions"
21+
milestonesHeaderText: string; // Header text to use instead of "Milestones"
2122
nextActionsFilePath: string;
2223
somedayFilePath: string;
2324
projectsFolderPath: string;
@@ -53,6 +54,7 @@ export const DEFAULT_SETTINGS: PluginSettings = {
5354
processedInboxFolderPath: "Processed Inbox Folder Notes",
5455
nextActionsFilePath: "Next actions.md",
5556
nextActionsHeaderText: "Next actions",
57+
milestonesHeaderText: "Milestones",
5658
somedayFilePath: "Someday.md",
5759
projectsFolderPath: "Projects",
5860
projectTemplateFilePath: "Templates/Project.md",
@@ -82,3 +84,15 @@ export function nextActionsHeaderText(settings: PluginSettings): string {
8284
}
8385
return "Next actions";
8486
}
87+
88+
/**
89+
* Returns "Milestones" header text from settings if present;
90+
* returns a fallback text otherwise.
91+
*/
92+
export function milestonesHeaderText(settings: PluginSettings): string {
93+
const headerText = settings.milestonesHeaderText;
94+
if (headerText && headerText.trim().length > 0) {
95+
return headerText;
96+
}
97+
return "Milestones";
98+
}

0 commit comments

Comments
 (0)