Skip to content

0.36.1

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Jul 10:51
· 22 commits to main since this release

refactor: remove all @typescript-eslint/no-explicit-any disables

Why

The Obsidian plugin reviewer flags // eslint-disable ... no-explicit-any comments as a quality/risk signal — a suppressed lint rule reads as "hiding a problem," which was marking the plugin as low quality. This removes every such disable in src/ by giving the values real types instead of suppressing the rule.

What

  • New src/types/obsidian-internals.ts — typed interfaces for the undocumented app.plugins registry (deliberately omitted from Obsidian's public App type) and the slice of the Dataview API we read. Access now goes through app as AppWithPlugins instead of app as any.
  • src/lib/utils.ts — retyped function params to App / TFile / CachedMetadata / FrontMatterCache / TAbstractFile / unknown; .find() now infers TFile from getMarkdownFiles().
  • src/views/TaskMapGraphView.tsx — the ReactFlow handlers use their exported types (EdgeMouseHandler, OnConnect, OnConnectStart via useCallback<T>); the custom dataview:index-ready event is registered by upcasting app.metadataCache to the Events base class (whose on(name: string, …) accepts custom event names — no cast needed).
  • src/components/tag-input.tsx — the react-select ref uses the exported SelectInstance<TagOption> type.

Verification

  • tsc -noEmit (build typecheck): passes
  • npm run lint: 0 errors
  • jest: 304 tests pass
  • grep -rn no-explicit-any src/: none remaining

🤖 Generated with Claude Code