Skip to content

Install "eslint-plugin-obsidianmd" plugin to fix all the lint errors and adhere to Obsidian plugin guidelines#830

Open
tu2-atmanand wants to merge 18 commits into
release-v2.0.0from
ticket-797/obsidian-eslint
Open

Install "eslint-plugin-obsidianmd" plugin to fix all the lint errors and adhere to Obsidian plugin guidelines#830
tu2-atmanand wants to merge 18 commits into
release-v2.0.0from
ticket-797/obsidian-eslint

Conversation

@tu2-atmanand

@tu2-atmanand tu2-atmanand commented Jun 14, 2026

Copy link
Copy Markdown
Owner

This PR contains :

Implements - #797

@tu2-atmanand tu2-atmanand added the optimization The algorithm/code can be optimized. A better approach label Jun 14, 2026
@github-project-automation github-project-automation Bot moved this to Backlogs in Task Board Dev Jun 14, 2026
@tu2-atmanand tu2-atmanand moved this from Backlogs to In progress in Task Board Dev Jun 14, 2026
@tu2-atmanand tu2-atmanand marked this pull request as ready for review June 14, 2026 03:55
@qodo-code-review

qodo-code-review Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (1)

Context used

Grey Divider


Action required

1. Debounced save drops async errors ✓ Resolved 🐞 Bug ☼ Reliability
Description
TaskBoardFileManager.debouncedSaveBoard() calls the async saveBoard() using void inside a
non-async setTimeout handler, so promise rejections bypass the surrounding try/catch and can surface
as unhandled rejections while silently failing the save.
Code

src/managers/TaskBoardFileManager.ts[R474-484]

+		const newTimer = window.setTimeout(() => {
			try {
-				await this.saveBoard(updatedBoardData, filePath);
+				void this.saveBoard(updatedBoardData, filePath);
				this.debouncedSaveBoardTimers.delete(boardId);
			} catch (error) {
				bugReporterManagerInsatance.addToLogs(
					208,
-					`Error in debounced save for board ID ${boardId} and filePath ${filePath}: ${error}`,
+					`Error in debounced save for board ID ${boardId} and filePath ${filePath}: ${String(error)}`,
					"TaskBoardFileManager.ts/debouncedSaveBoard",
				);
				this.debouncedSaveBoardTimers.delete(boardId);
Evidence
saveBoard() is explicitly async (Promise<boolean>), but debouncedSaveBoard() invokes it with void
inside a synchronous callback, meaning thrown errors inside the promise chain cannot be handled by
the local try/catch.

src/managers/TaskBoardFileManager.ts[367-370]
src/managers/TaskBoardFileManager.ts[454-490]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`debouncedSaveBoard()` schedules a save via `window.setTimeout(() => { void this.saveBoard(...) })`. Because `saveBoard()` is async, its failures are not caught by the surrounding synchronous `try/catch`, and the save can fail without logging.

## Issue Context
`saveBoard()` returns a Promise and can reject on IO/validation errors. Debounced saves are a key persistence path; failures need to be caught and logged.

## Fix Focus Areas
- src/managers/TaskBoardFileManager.ts[454-490]
- src/managers/TaskBoardFileManager.ts[367-370]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Advanced filter emptiness inverted ✓ Resolved 🐞 Bug ≡ Correctness
Description
isAdvancedFilterEmpty() returns false when no active filters exist and true when active filters do
exist, inverting its documented meaning. Callers (e.g., LazyColumn) that rely on
!isAdvancedFilterEmpty(...) will mis-detect whether a filter is applied.
Code

src/utils/algorithms/AdvancedFilterer.ts[R416-423]

+	if (
+		!advancedFilter.filters.some(
+			(filter: Filter) => filter.status && filter.filterGroups.length > 0,
+		)
+	)
+		return false;
+
+	return true;
Evidence
The new helper returns false when there is no enabled filter with filterGroups, and true
otherwise, which is the opposite of the function name/docs. LazyColumn negates this value to compute
isAdvancedFilterApplied, so the inversion flips the UI/logic.

src/utils/algorithms/AdvancedFilterer.ts[402-424]
src/components/KanbanView/LazyColumn.tsx[390-392]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`isAdvancedFilterEmpty()` currently returns `false` when the filter is empty (no active filters) and `true` when filters are active, which inverts its intended semantics and breaks callers that use `!isAdvancedFilterEmpty(...)`.

## Issue Context
This helper is used to determine whether advanced filters are applied (e.g., column header UI state). The current implementation flips that boolean.

## Fix Focus Areas
- src/utils/algorithms/AdvancedFilterer.ts[408-424]
- src/components/KanbanView/LazyColumn.tsx[389-392]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Priority filter value type mismatch ✓ Resolved 🐞 Bug ≡ Correctness
Description
FiltersWarehouse stores selected priority values as strings, but the filter evaluator compares
task.priority (number) to filter.value using strict equality for is/isNot, making priority
filters never match for those conditions.
Code

src/components/AdvancedFilterer/FiltersWarehouse.ts[R1035-1039]

							getPriorityOptionsForDropdown()[0].value.toString(),
					);
					valueSelect.onChange((newValue) => {
-						filterData.value = Number(newValue);
+						filterData.value = newValue;
						this.markAsEdited();
Evidence
FiltersWarehouse assigns the select value as a string. AdvancedFilterer returns a numeric
task.priority and evaluates is via strict equality, so the comparison will fail even when the
numeric values are the same.

src/components/AdvancedFilterer/FiltersWarehouse.ts[1004-1041]
src/utils/algorithms/AdvancedFilterer.ts[187-192]
src/utils/algorithms/AdvancedFilterer.ts[316-318]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Priority dropdown `onChange` assigns `filterData.value = newValue` (string). Filtering uses strict equality for `is`/`isNot`, while `task.priority` is numeric, so `number === string` fails.

## Issue Context
The priority property is treated as numeric in `getTaskPropertyValue()` and comparisons for `is`/`isNot` are strict.

## Fix Focus Areas
- src/components/AdvancedFilterer/FiltersWarehouse.ts[1004-1041]
- src/utils/algorithms/AdvancedFilterer.ts[187-192]
- src/utils/algorithms/AdvancedFilterer.ts[316-318]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (1)
4. Hidden-property spans never created ✓ Resolved 🐞 Bug ≡ Correctness
Description
main.ts hidePropertiesInElement() wraps matches with <span class="taskboard-hidden-property">...
but then assigns the resulting string to tempDiv.textContent, which escapes markup and inserts
literal text instead of span elements. As a result, the CSS that hides .taskboard-hidden-property
will never apply.
Code

main.ts[R845-862]

			if (modified && textNode.parentElement) {
				// Create a temporary element to hold the HTML
-				const tempDiv = document.createElement("div");
+				const tempDiv = activeDocument.createElement("div");
				// Use insertAdjacentHTML with proper sanitization (content already escaped via regex)
-				tempDiv.replaceChildren();
-				tempDiv.insertAdjacentHTML("beforeend", content);
+				// tempDiv.replaceChildren();
+				// tempDiv.insertAdjacentHTML("beforeend", content);
+
+				// Approach 1
+				tempDiv.textContent = content;
+
+				// Approach 2 - Parse HTML string into DOM nodes safely
+				// const parser = new DOMParser();
+				// const doc = parser.parseFromString(content, "text/html");
+				// // Replace content using node-based methods (no innerHTML/insertAdjacentHTML)
+				// tempDiv.replaceChildren(...Array.from(doc.body.childNodes));

				// Replace the text node with the new content
				while (tempDiv.firstChild) {
Evidence
The code replaces matched substrings with span markup, but then uses textContent, which treats
<span ...> as plain text. The CSS rules in styles.css target real .taskboard-hidden-property
elements, so the feature cannot work without creating those elements.

main.ts[828-869]
styles.css[3090-3106]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The code now uses `tempDiv.textContent = content` even though `content` contains HTML markup (`<span class="taskboard-hidden-property">`). This prevents the span elements from being created, breaking the hidden-properties feature.

## Issue Context
The stylesheet relies on `.taskboard-hidden-property` elements to hide/show properties on hover. The replacement should create actual DOM nodes (e.g., build a DocumentFragment with text nodes + created `<span>` nodes around matches), not HTML strings or textContent.

## Fix Focus Areas
- main.ts[828-869]
- styles.css[3090-3106]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

5. obsidianmd rules disabled via comments 📎 Requirement gap ⚙ Maintainability
Description
The PR adds multiple eslint-disable directives for obsidianmd/* rules, bypassing Obsidian
guideline checks rather than resolving the underlying issues. This can mask remaining guideline
violations while still producing a passing lint run.
Code

src/components/MapView/EdgeWithToolbar.tsx[1]

+/* eslint-disable obsidianmd/rule-custom-message */
Evidence
PR Compliance ID 2 requires resolving ESLint issues when eslint-plugin-obsidianmd is enabled. The
diff introduces multiple new suppressions of obsidianmd/* rules (file-level and inline),
indicating guideline checks are being bypassed instead of addressed.

Resolve all ESLint issues to comply with Obsidian plugin guidelines
src/components/MapView/EdgeWithToolbar.tsx[1-1]
src/modals/DiffContentCompareModal.ts[107-107]
src/modals/ModifiedFilesModal.ts[112-112]
src/settings/SettingConstructUI.ts[1970-1970]
src/services/MarkdownEditor.ts[66-66]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Several new `eslint-disable` comments suppress `obsidianmd/*` rules, which undermines the goal of fully complying with Obsidian plugin ESLint guidelines.

## Issue Context
PR Compliance requires resolving Obsidian-guideline lint issues, not bypassing them by disabling the corresponding rules.

## Fix Focus Areas
- src/components/MapView/EdgeWithToolbar.tsx[1-1]
- src/modals/DiffContentCompareModal.ts[107-108]
- src/modals/ModifiedFilesModal.ts[112-113]
- src/settings/SettingConstructUI.ts[1970-1971]
- src/services/MarkdownEditor.ts[66-66]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. Editor prototype patch not cleaned ✓ Resolved 🐞 Bug ➹ Performance
Description
EmbeddableMarkdownEditor installs an around() patch on EditorClass.prototype.buildLocalExtensions
and stores the returned uninstaller, but never calls it. Creating multiple embedded editors can
stack wrappers and increase overhead over time.
Code

src/services/MarkdownEditor.ts[R188-205]

+		// Use monkey-around to safely patch the method
+		const uninstaller = around((EditorClass as { prototype: object }).prototype, {
+			buildLocalExtensions: (originalMethod: unknown) =>
+				function (this: object) {
+					const extensions = (originalMethod as (this: object) => unknown[]).call(this);
+
+					// Only add our custom extensions if this is our editor instance
+					if (this === self.editor) {
+						// Add placeholder if configured
+						if (self.options.placeholder) {
+							extensions.push(
+								placeholder(self.options.placeholder),
+							);
+						}
+
+						// Add paste, blur, and focus event handlers
+						extensions.push(
+							EditorView.domEventHandlers({
Evidence
The file shows const uninstaller = around(...) but the identifier is never referenced elsewhere,
and destroy()/onunload() do not call it, so the patch persists indefinitely and can be applied
repeatedly.

src/services/MarkdownEditor.ts[176-205]
src/services/MarkdownEditor.ts[553-570]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The constructor patches `EditorClass.prototype.buildLocalExtensions` via `around(...)` and assigns the returned `uninstaller` to a local const, but the uninstaller is never invoked. Repeated editor creation can wrap the same method multiple times.

## Issue Context
Even if the wrapper is mostly no-op for non-matching instances, nested wrappers still add call overhead and can complicate debugging. The patch should either be installed once (module-level guard) or uninstalled during editor cleanup.

## Fix Focus Areas
- src/services/MarkdownEditor.ts[176-205]
- src/services/MarkdownEditor.ts[553-570]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Install eslint-plugin-obsidianmd and fix all lint/build errors across codebase
⚙️ Configuration changes ✨ Enhancement 🐞 Bug fix 🕐 40+ Minutes

Grey Divider

Walkthroughs

Description
• Adds eslint-plugin-obsidianmd with a new eslint.config.mjs flat config, replacing the legacy
  .eslintignore file and adding lint/lint:fix npm scripts.
• Fixes all lint violations across ~90 files: replaces document.* with activeDocument.*,
  setTimeout/setInterval with window.* equivalents, NodeJS.Timeout with number, and adds
  void to unhandled promise calls.
• Removes the self-referential plugin.view and plugin.plugin pattern to prevent memory leaks;
  refactors registerEmbedRegistry into its own method with error handling.
Diagram
graph TD
    A["eslint.config.mjs"] --> B["eslint-plugin-obsidianmd"] --> C["main.ts"] --> D["registerEmbedRegistry()"]
    B --> E["src/**/*.ts/tsx"] --> F["activeDocument API"]
    E --> G["window.setTimeout/setInterval"]
    E --> H["void + Promise chains"]
    I["styles.css"] --> J["CSS classes"]
    E --> J

    subgraph Legend
        direction LR
        _cfg["Config"] ~~~ _mod(["Module"]) ~~~ _api(["API"]) ~~~ _css["CSS"]
    end
Loading
High-Level Assessment

Adopting the official eslint-plugin-obsidianmd is the correct and intended path for Obsidian plugin compliance. The bulk changes (activeDocument/window timers/unknown types/void for floating promises) are necessary consequences of the ruleset, and the main.ts refactor removing stored view references aligns with Obsidian’s guidance and reduces leak risk.

Grey Divider

File Changes

Enhancement (2)
Enums.ts Add enum entries for minimized UI state +10/-0

Add enum entries for minimized UI state

• Adds new enum values used for task card minimized state fields.

src/interfaces/Enums.ts


styles.css Add CSS for AdvancedFilterer animations and BoardsExplorer loading bar +79/-0

Add CSS for AdvancedFilterer animations and BoardsExplorer loading bar

• Introduces expand/collapse CSS classes for the advanced filter UI and moves BoardsExplorer loading bar styles from injected '<style>' to static CSS. Adds a few common utility classes.

styles.css


Bug fix (15)
main.ts Remove stored view reference, improve async handling, and comply with Obsidian rules +219/-164

Remove stored view reference, improve async handling, and comply with Obsidian rules

• Stops storing view instances on the Plugin (avoids guideline violations/memory leaks), refactors embed registry setup into a dedicated method with error handling, replaces NodeJS timer types with browser-friendly 'number', and applies widespread 'void'/unknown/activeDocument lint fixes.

main.ts


KanbanSwimlanesContainer.tsx Fix async handling and types in swimlanes container +18/-9

Fix async handling and types in swimlanes container

• Adjusts promise handling and types to satisfy lint rules while preserving behavior.

src/components/KanbanView/KanbanSwimlanesContainer.tsx


TasksImporterPanel.tsx Improve typing and async handling in tasks importer panel +23/-12

Improve typing and async handling in tasks importer panel

• Fixes lint-reported issues around typing and promise handling.

src/components/MapView/TasksImporterPanel.tsx


TaskItem.tsx Refactor TaskItem component for async and typing lint compliance +89/-72

Refactor TaskItem component for async and typing lint compliance

• Adds safer promise handling patterns and replaces loose typing to satisfy new lint rules.

src/components/TaskCard/TaskItem.tsx


DragDropTasksManager.ts Use activeDocument and improve async error handling in drag/drop manager +191/-116

Use activeDocument and improve async error handling in drag/drop manager

• Replaces 'document.*' usage with 'activeDocument.*', switches timers to window-scoped APIs, and adds '.catch'/'void' patterns to avoid floating promises.

src/managers/DragDropTasksManager.ts


RealTimeScanner.ts Async/promise lint fixes in RealTimeScanner +61/-50

Async/promise lint fixes in RealTimeScanner

• Adjusts async flows and timer usage to satisfy lint rules and reduce unhandled promise paths.

src/managers/RealTimeScanner.ts


TaskBoardFileManager.ts Promise handling and typing cleanup in file manager +154/-122

Promise handling and typing cleanup in file manager

• Adds proper promise handling patterns and removes unsafe typing flagged by lint rules.

src/managers/TaskBoardFileManager.ts


DiffContentCompareModal.ts Fix lint/type issues in diff compare modal +55/-32

Fix lint/type issues in diff compare modal

• Primarily typing/async compliance changes; aligns DOM usage with Obsidian-safe patterns.

src/modals/DiffContentCompareModal.ts


EditTagsModal.ts Async/promise and typing lint fixes in EditTagsModal +109/-90

Async/promise and typing lint fixes in EditTagsModal

• Refactors promise handling and typing to satisfy new lint rules.

src/modals/EditTagsModal.ts


CommunityPlugins.ts Fix typing/optional access for community plugin integrations +18/-5

Fix typing/optional access for community plugin integrations

• Improves typing around optional plugin APIs (e.g., QuickAdd) and adjusts async handling per lint guidance.

src/services/CommunityPlugins.ts


OpenModals.ts Fix floating promises and add error handling in modal workflows +188/-86

Fix floating promises and add error handling in modal workflows

• Adds '.catch()' around background refresh scans, replaces 'sleep().then()' with 'window.setTimeout', and removes unsafe/unused return values from callbacks to satisfy lint rules.

src/services/OpenModals.ts


SettingSynchronizer.ts Improve async/type safety in settings synchronization +67/-49

Improve async/type safety in settings synchronization

• Fixes floating promises, tightens types, and addresses lint violations in synchronizer flows.

src/settings/SettingSynchronizer.ts


UserTaskEvents.ts Fix async error handling and typing in UserTaskEvents +152/-81

Fix async error handling and typing in UserTaskEvents

• Adds safer promise handling and replaces unsafe types to satisfy lint rules.

src/utils/UserTaskEvents.ts


TaskItemEventHandlers.ts Fix async error handling and typing in task-line event handlers +49/-26

Fix async error handling and typing in task-line event handlers

• Adds safe promise handling and replaces unsafe typing for lint compliance.

src/utils/taskLine/TaskItemEventHandlers.ts


TaskNoteEventHandlers.ts Fix async error handling and typing in task note handlers +46/-26

Fix async error handling and typing in task note handlers

• Adds safe promise handling and resolves lint issues.

src/utils/taskNote/TaskNoteEventHandlers.ts


Refactor (76)
Component.ts Refactor expandable UI to CSS-class driven animation and improve typing +34/-46

Refactor expandable UI to CSS-class driven animation and improve typing

• Replaces inline style animations with 'expand/collapse' CSS classes and switches timers to 'window.setTimeout'. Improves JSON parsing type safety and fixes floating promise patterns.

src/components/AdvancedFilterer/Component.ts


FiltersWarehouse.ts Remove any-casts, improve button state handling, and adopt CSS-class animations +24/-37

Remove any-casts, improve button state handling, and adopt CSS-class animations

• Replaces '(this as any)' button fields with real private members, moves inline styling toward CSS classes, replaces timers with 'window.setTimeout', and tightens types to satisfy lint rules.

src/components/AdvancedFilterer/FiltersWarehouse.ts


LoadSavedFiltersModal.ts Delete deprecated LoadSavedFilters modal implementation +0/-417

Delete deprecated LoadSavedFilters modal implementation

• Removes a deprecated modal that is being replaced by Filters Warehouse.

src/components/AdvancedFilterer/LoadSavedFiltersModal.ts


Popover.ts Minor lint/type fixes in popover component +1/-1

Minor lint/type fixes in popover component

• Applies small lint compliance adjustments (typing/formatting).

src/components/AdvancedFilterer/Popover.ts


KanbanBoardView.tsx Apply lint compliance fixes in Kanban board view +7/-3

Apply lint compliance fixes in Kanban board view

• Small type/async handling tweaks to satisfy obsidianmd lint rules.

src/components/KanbanView/KanbanBoardView.tsx


LazyColumn.tsx Refactor for lint/type compliance in lazy column +30/-30

Refactor for lint/type compliance in lazy column

• Mechanical changes for linting: typing cleanup and safer async usage.

src/components/KanbanView/LazyColumn.tsx


CustomNodeResizer.tsx Lint/type compliance tweaks in CustomNodeResizer +3/-3

Lint/type compliance tweaks in CustomNodeResizer

• Minor typing/formatting adjustments for lint compliance.

src/components/MapView/CustomNodeResizer.tsx


EdgeWithToolbar.tsx Lint/type compliance tweaks in EdgeWithToolbar +2/-1

Lint/type compliance tweaks in EdgeWithToolbar

• Minor typing adjustments and lint fixes.

src/components/MapView/EdgeWithToolbar.tsx


MapView.tsx Apply lint/type compliance fixes in MapView +63/-62

Apply lint/type compliance fixes in MapView

• Refactors types and async handling to comply with new lint rules.

src/components/MapView/MapView.tsx


ResizableNodeSelected.tsx Lint/type compliance tweaks in ResizableNodeSelected +20/-21

Lint/type compliance tweaks in ResizableNodeSelected

• Minor typing and lint adjustments.

src/components/MapView/ResizableNodeSelected.tsx


TaskBoardEmbedComponent.tsx Apply lint/type compliance fixes for embed component +6/-6

Apply lint/type compliance fixes for embed component

• Mechanical lint fixes (typing and promise usage) for Obsidian guideline compliance.

src/components/TaskBoardEmbedComponent.tsx


TaskBoardViewContainer.tsx Apply lint/type compliance fixes in main view container +106/-100

Apply lint/type compliance fixes in main view container

• Updates typing and async patterns to satisfy obsidianmd lint rules.

src/components/TaskBoardViewContainer.tsx


TaskCardImage.ts Lint/type compliance fixes in TaskCardImage +29/-29

Lint/type compliance fixes in TaskCardImage

• Mechanical lint/type cleanup without functional change intent.

src/components/TaskCard/TaskCardImage.ts


TaskItemV2.tsx Lint/type compliance fixes in TaskItemV2 +74/-71

Lint/type compliance fixes in TaskItemV2

• Mechanical changes for typing and async lint warnings.

src/components/TaskCard/TaskItemV2.tsx


TaskEditorRC.tsx Lint/type compliance fixes in TaskEditorRC +43/-30

Lint/type compliance fixes in TaskEditorRC

• Refactors types and event handlers to satisfy lint rules.

src/components/TaskEditorRC.tsx


BoardConfigs.ts Tighten interfaces for lint/type compliance +23/-15

Tighten interfaces for lint/type compliance

• Updates interface definitions to reduce implicit any/unsafe typing flagged by ESLint.

src/interfaces/BoardConfigs.ts


GlobalSettings.ts Refine settings types for lint compliance +19/-17

Refine settings types for lint compliance

• Mechanical type tightening and lint fixes in global settings definitions.

src/interfaces/GlobalSettings.ts


Mapping.ts Lint/type compliance fixes in Mapping interfaces +4/-4

Lint/type compliance fixes in Mapping interfaces

• Minor typing adjustments for ESLint compliance.

src/interfaces/Mapping.ts


StatusConfiguration.ts Refactor status configuration types for lint compliance +52/-63

Refactor status configuration types for lint compliance

• Tightens typing and removes lint violations around unsafe types.

src/interfaces/StatusConfiguration.ts


TaskItem.ts Minor lint/type fix in TaskItem interface +1/-1

Minor lint/type fix in TaskItem interface

• Mechanical adjustment to satisfy lint/type rules.

src/interfaces/TaskItem.ts


BugReporter.ts Type-safety and lint fixes in bug reporter manager +27/-22

Type-safety and lint fixes in bug reporter manager

• Replaces unsafe typing patterns with 'unknown' and improves error stringification for lint compliance.

src/managers/BugReporter.ts


VaultScanner.ts Lint/type compliance fixes in VaultScanner +16/-21

Lint/type compliance fixes in VaultScanner

• Mechanical lint-driven changes to typing and async usage.

src/managers/VaultScanner.ts


AddColumnModal.ts Lint compliance fixes in AddColumnModal +3/-3

Lint compliance fixes in AddColumnModal

• Minor type and formatting fixes.

src/modals/AddColumnModal.ts


AddViewModal.ts Lint compliance fixes in AddViewModal +2/-2

Lint compliance fixes in AddViewModal

• Minor type and formatting fixes.

src/modals/AddViewModal.ts


BoardConfigModal.tsx Lint/type compliance fixes in board config modal +34/-31

Lint/type compliance fixes in board config modal

• Typing and async cleanup driven by obsidianmd lint rules.

src/modals/BoardConfigModal.tsx


BoardsExplorer.ts Move loading bar styling to CSS and fix async handlers +9/-56

Move loading bar styling to CSS and fix async handlers

• Removes inline '<style>' injection, creates elements via 'activeDocument', and relies on new CSS classes in 'styles.css'. Updates click handlers to use 'void' for async calls and improves i18n usage.

src/modals/BoardsExplorer.ts


BugReporterModal.ts Lint compliance fixes in BugReporterModal +4/-4

Lint compliance fixes in BugReporterModal

• Minor typing and lint fixes.

src/modals/BugReporterModal.ts


ConfigureColumnSortingModal.ts Lint compliance fixes in ConfigureColumnSortingModal +7/-6

Lint compliance fixes in ConfigureColumnSortingModal

• Mechanical lint/type tweaks.

src/modals/ConfigureColumnSortingModal.ts


CustomStatusConfigurator.ts Lint/type compliance fixes in custom status configurator +8/-14

Lint/type compliance fixes in custom status configurator

• Mechanical changes to satisfy lint rules.

src/modals/CustomStatusConfigurator.ts


MergeBoardsModal.ts Lint/type compliance fixes in merge boards modal +6/-17

Lint/type compliance fixes in merge boards modal

• Mechanical lint/type fixes.

src/modals/MergeBoardsModal.ts


ModifiedFilesModal.ts Minor lint fix in ModifiedFilesModal +1/-0

Minor lint fix in ModifiedFilesModal

• Small lint compliance adjustment.

src/modals/ModifiedFilesModal.ts


ScanFilterModal.ts Minor lint fix in ScanFilterModal +1/-1

Minor lint fix in ScanFilterModal

• Small lint compliance adjustment.

src/modals/ScanFilterModal.ts


ScanVaultModal.tsx Lint/type compliance fixes in ScanVaultModal +12/-11

Lint/type compliance fixes in ScanVaultModal

• Mechanical typing and async fixes for ESLint compliance.

src/modals/ScanVaultModal.tsx


SwimlanesConfigModal.tsx Lint/type compliance fixes in SwimlanesConfigModal +4/-4

Lint/type compliance fixes in SwimlanesConfigModal

• Minor typing and formatting fixes.

src/modals/SwimlanesConfigModal.tsx


TaskBoardActionsModal.ts Lint/type compliance fixes in TaskBoardActionsModal +14/-18

Lint/type compliance fixes in TaskBoardActionsModal

• Mechanical lint/type cleanup.

src/modals/TaskBoardActionsModal.ts


TaskEditorModal.tsx Lint/type compliance fixes in TaskEditorModal +3/-4

Lint/type compliance fixes in TaskEditorModal

• Minor typing and async handler fixes.

src/modals/TaskEditorModal.tsx


TextInputModal.ts Lint compliance fixes in TextInputModal +1/-1

Lint compliance fixes in TextInputModal

• Minor type/formatting adjustments.

src/modals/TextInputModal.ts


DatePickerComponent.ts Lint compliance fixes in DatePickerComponent +1/-1

Lint compliance fixes in DatePickerComponent

• Mechanical lint/type cleanup.

src/modals/date_picker/DatePickerComponent.ts


Archived_TaskBoardView_TextFileView.tsx Remove archived TextFileView-based TaskBoardView +0/-421

Remove archived TextFileView-based TaskBoardView

• Deletes an archived/unused view implementation, reducing maintenance surface area and lint burden.

src/obsidian_views/Archived_TaskBoardView_TextFileView.tsx


TaskEditorView.tsx Lint/type compliance fixes in TaskEditorView +5/-6

Lint/type compliance fixes in TaskEditorView

• Mechanical typing and async fixes to satisfy obsidianmd lint rules.

src/obsidian_views/TaskEditorView.tsx


EventEmitter.ts Lint/type compliance fixes in EventEmitter service +12/-7

Lint/type compliance fixes in EventEmitter service

• Mechanical lint-driven type tightening.

src/services/EventEmitter.ts


FileSystem.ts Lint/type compliance fixes in FileSystem service +11/-9

Lint/type compliance fixes in FileSystem service

• Mechanical typing updates and promise handling fixes.

src/services/FileSystem.ts


FrontmatterRenderer.ts Lint/type compliance fixes in FrontmatterRenderer +11/-7

Lint/type compliance fixes in FrontmatterRenderer

• Tightens typing and resolves lint issues.

src/services/FrontmatterRenderer.ts


MarkdownEditor.ts Refactor embeddable Markdown editor to satisfy lint and improve safety +161/-48

Refactor embeddable Markdown editor to satisfy lint and improve safety

• Replaces broad 'any' usage with 'unknown', adds 'onEscape' and 'singleLine' options, and uses a safer monkey-patch approach ('around') for editor extension wiring while scoping changes to the intended editor instance.

src/services/MarkdownEditor.ts


MarkdownHoverPreview.ts Lint/type compliance fixes in hover preview +4/-4

Lint/type compliance fixes in hover preview

• Mechanical lint/type adjustments.

src/services/MarkdownHoverPreview.ts


MarkdownUIRenderer.ts Lint/type compliance fixes in markdown UI renderer +9/-11

Lint/type compliance fixes in markdown UI renderer

• Mechanical lint/type adjustments.

src/services/MarkdownUIRenderer.ts


MultiSuggest.ts Lint/type compliance fixes in MultiSuggest +17/-13

Lint/type compliance fixes in MultiSuggest

• Mechanical lint/type adjustments.

src/services/MultiSuggest.ts


ObsidianDebugInfo.ts Type Capacitor/Electron access and remove unsafe any usage +42/-15

Type Capacitor/Electron access and remove unsafe any usage

• Adds explicit interfaces for Capacitor plugin return types, replaces 'any' with 'unknown'/records, switches 'document.body' to 'activeDocument.body', and tightens Electron IPC typings.

src/services/ObsidianDebugInfo.ts


TaskSelectorWithCreateModal.ts Minor lint fix in task selector modal +1/-1

Minor lint fix in task selector modal

• Mechanical lint compliance update.

src/services/TaskSelectorWithCreateModal.ts


GutterMarker.ts Lint/type compliance fixes in GutterMarker extension +10/-9

Lint/type compliance fixes in GutterMarker extension

• Mechanical lint/type cleanup.

src/services/editor_extensions/GutterMarker.ts


PropertiesHiding.ts Lint/type compliance fixes in PropertiesHiding extension +2/-2

Lint/type compliance fixes in PropertiesHiding extension

• Mechanical lint/type cleanup.

src/services/editor_extensions/PropertiesHiding.ts


subModules.ts Add api placeholder field to TaskBoardSubmodule +2/-0

Add api placeholder field to TaskBoardSubmodule

• Adds 'api: unknown' on the base submodule class to satisfy typing/lint constraints.

src/services/subModules.ts


helpers.ts Lint/type compliance fixes in Tasks plugin helpers +32/-10

Lint/type compliance fixes in Tasks plugin helpers

• Mechanical typing and promise handling cleanup for lint compliance.

src/services/tasks-plugin/helpers.ts


LegacyInterfacesAndTypings.ts Lint/type compliance fixes in migration typings +27/-9

Lint/type compliance fixes in migration typings

• Mechanical type tightening and lint fixes.

src/settings/2_x_x_Migrations/LegacyInterfacesAndTypings.ts


MigrationModal.tsx Lint compliance fixes in MigrationModal +3/-3

Lint compliance fixes in MigrationModal

• Minor typing and formatting updates.

src/settings/2_x_x_Migrations/MigrationModal.tsx


MigrationUtils.ts Lint/type compliance fixes in migration utils +33/-22

Lint/type compliance fixes in migration utils

• Mechanical lint/type adjustments.

src/settings/2_x_x_Migrations/MigrationUtils.ts


SettingConstructUI.ts Large-scale lint compliance pass over settings UI builder +431/-423

Large-scale lint compliance pass over settings UI builder

• Broad mechanical changes for obsidianmd lint compliance: typing cleanup, safe DOM access patterns, and consistent async handling.

src/settings/SettingConstructUI.ts


TaskBoardSettingTab.ts Lint compliance fixes in setting tab entry point +2/-2

Lint compliance fixes in setting tab entry point

• Minor lint/type cleanup.

src/settings/TaskBoardSettingTab.ts


taskboardAPIs.ts Lint/type compliance fixes in public API module +1/-2

Lint/type compliance fixes in public API module

• Small type cleanup to satisfy lint rules.

src/taskboardAPIs.ts


obsidian-ex.d.ts Expand Obsidian extended typings and remove unsafe any usage +101/-61

Expand Obsidian extended typings and remove unsafe any usage

• Adds missing Obsidian/obsidian-typings imports, exports helper wrapper classes, and tightens many 'any' types to 'unknown' to align with stricter linting.

src/typings/obsidian-ex.d.ts


CheckBoxUtils.ts Lint/type compliance fixes in checkbox utilities +18/-16

Lint/type compliance fixes in checkbox utilities

• Mechanical typing and lint cleanup.

src/utils/CheckBoxUtils.ts


DateTimeCalculations.ts Lint/type compliance fixes in datetime utilities +8/-3

Lint/type compliance fixes in datetime utilities

• Minor lint/type cleanup.

src/utils/DateTimeCalculations.ts


JsonFileOperations.ts Lint/type compliance fixes in JSON file operations +36/-44

Lint/type compliance fixes in JSON file operations

• Type safety improvements and lint compliance changes.

src/utils/JsonFileOperations.ts


MarkdownFileOperations.ts Lint/type compliance fixes in markdown file operations +4/-2

Lint/type compliance fixes in markdown file operations

• Minor typing and async fixes for lint compliance.

src/utils/MarkdownFileOperations.ts


TaskItemCacheOperations.ts Lint/type compliance fixes in cache operations +4/-4

Lint/type compliance fixes in cache operations

• Mechanical typing cleanup.

src/utils/TaskItemCacheOperations.ts


TaskItemUtils.ts Lint/type compliance fixes in TaskItem utilities +2/-2

Lint/type compliance fixes in TaskItem utilities

• Mechanical typing cleanup.

src/utils/TaskItemUtils.ts


ViewUtils.ts Lint/type compliance fixes in view utilities +9/-5

Lint/type compliance fixes in view utilities

• Minor typing/async cleanup.

src/utils/ViewUtils.ts


AdvancedFilterer.ts Type-safety fixes in AdvancedFilterer algorithm +48/-7

Type-safety fixes in AdvancedFilterer algorithm

• Reworks unsafe JSON parse/cast patterns and tightens types to satisfy lint rules.

src/utils/algorithms/AdvancedFilterer.ts


ColumnSegregator.ts Lint/type compliance fixes in ColumnSegregator +7/-4

Lint/type compliance fixes in ColumnSegregator

• Minor typing cleanup.

src/utils/algorithms/ColumnSegregator.ts


ColumnSortingAlgorithm.ts Lint/type compliance fixes in column sorting algorithm +54/-48

Lint/type compliance fixes in column sorting algorithm

• Mechanical typing and promise-handling adjustments.

src/utils/algorithms/ColumnSortingAlgorithm.ts


ScanningFilterer.ts Lint/type compliance fixes in scanning filterer +3/-3

Lint/type compliance fixes in scanning filterer

• Mechanical typing cleanup.

src/utils/algorithms/ScanningFilterer.ts


helper.ts Lint/type compliance fixes in i18n helper +20/-8

Lint/type compliance fixes in i18n helper

• Mechanical typing/async updates for lint compliance.

src/utils/lang/helper.ts


TaskContentFormatter.ts Type safety and lint compliance refactor in TaskContentFormatter +115/-37

Type safety and lint compliance refactor in TaskContentFormatter

• Tightens types and resolves lint issues across formatting helpers, especially around parsing and return types.

src/utils/taskLine/TaskContentFormatter.ts


TaskLineUtils.ts Lint/type compliance fixes in TaskLineUtils +38/-32

Lint/type compliance fixes in TaskLineUtils

• Mechanical typing cleanup and minor async fixes.

src/utils/taskLine/TaskLineUtils.ts


FrontmatterOperations.ts Lint/type compliance fixes in frontmatter operations +13/-13

Lint/type compliance fixes in frontmatter operations

• Mechanical lint/type cleanup.

src/utils/taskNote/FrontmatterOperations.ts


TaskNoteUtils.ts Lint/type compliance fixes in task note utils +10/-8

Lint/type compliance fixes in task note utils

• Mechanical typing cleanup.

src/utils/taskNote/TaskNoteUtils.ts


Documentation (1)
en.ts Update/enforce locale entries for lint-driven string usage +5/-1

Update/enforce locale entries for lint-driven string usage

• Minor locale key/value adjustments to support updated UI strings.

src/utils/lang/locale/en.ts


Other (7)
eslint.config.mjs Add flat ESLint config with eslint-plugin-obsidianmd +20/-0

Add flat ESLint config with eslint-plugin-obsidianmd

• Introduces ESLint flat config and applies obsidianmd recommended rules. Configures TypeScript parser with project service and sets ignores for build outputs.

eslint.config.mjs


.eslintignore Remove legacy .eslintignore (superseded by flat config ignores) +0/-3

Remove legacy .eslintignore (superseded by flat config ignores)

• Deletes '.eslintignore'; ignore patterns are now defined in 'eslint.config.mjs'.

.eslintignore


package.json Add lint scripts and Obsidian ESLint dependencies +6/-2

Add lint scripts and Obsidian ESLint dependencies

• Adds 'eslint' and 'eslint-plugin-obsidianmd', upgrades '@typescript-eslint/*', and introduces 'lint'/'lint:fix' npm scripts.

package.json


tsconfig.json Include main.ts in TypeScript project scope +2/-1

Include main.ts in TypeScript project scope

• Adds 'main.ts' to 'include' to support typed linting via project service.

tsconfig.json


manifest.json Bump minAppVersion to 1.10.0 +1/-1

Bump minAppVersion to 1.10.0

• Raises minimum Obsidian version requirement from 1.4.13 to 1.10.0, aligning with APIs used after lint fixes.

manifest.json


data.json Adjust default plugin settings for new UI state fields +6/-4

Adjust default plugin settings for new UI state fields

• Adds minimized-state properties ('descriptionMinimized', 'subTasksMinimized'), changes default task card style, and toggles experimental features in defaults.

data.json


react-beautiful-dnd.d.ts No-op touch of react-beautiful-dnd typings +0/-0

No-op touch of react-beautiful-dnd typings

• No functional content change; present as part of overall lint/type normalization.

src/typings/react-beautiful-dnd.d.ts


Grey Divider

Qodo Logo

Comment thread src/utils/algorithms/AdvancedFilterer.ts
Comment thread src/managers/TaskBoardFileManager.ts Outdated
Comment thread main.ts Outdated
Comment thread src/components/AdvancedFilterer/FiltersWarehouse.ts
@tu2-atmanand tu2-atmanand added the test A thorough testing is pending for this ticket. label Jun 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

optimization The algorithm/code can be optimized. A better approach test A thorough testing is pending for this ticket.

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

OPTI : Adhere to the Obsidian Guidelines by installing the Obsidian's eslint-plugin

1 participant