Skip to content

1.4.2

Choose a tag to compare

@inattendu inattendu released this 04 Nov 11:36
· 1 commit to main since this release
0cd0b49

Obsidian Guidelines Compliance

Overview

This release focuses on full compliance with Obsidian plugin guidelines to ensure smooth approval for the Community Plugins directory. All ESLint errors identified by the Obsidian plugin review bot have been resolved.

Bot Review: All issues from the official review comment have been addressed and fixed.

🔧 Technical Improvements

Security & Memory Management

  • Fixed memory leak in plugin view registration (no longer stores view reference in plugin)
  • Implemented safe getView() helper method to access view instances
  • Proper cleanup in view lifecycle methods

Code Quality (75 ESLint errors fixed)

  • Type safety: Replaced any types with unknown or proper types throughout codebase
  • Promise handling: Added proper void operators and error handling for all floating promises
  • Console logging: Changed console.log to console.debug per Obsidian guidelines
  • Regex patterns: Fixed unnecessary escape characters in regular expressions
  • Async/await: Proper async method signatures for Obsidian API compatibility

UI/UX Consistency

  • Sentence case: All UI text now follows Obsidian's sentence case convention
    • Example: "Toggle Play/Pause" → "Toggle play/pause"
    • Removed redundant plugin name from UI elements
  • Settings headings: Using Setting.setHeading() instead of manual HTML elements
  • Command IDs: Simplified to avoid redundant plugin ID prefix

Styling Best Practices

  • Replaced direct element.style manipulation with proper CSS methods
  • Better theming compatibility and maintainability

📦 Installation

From Community Plugins (pending approval)

  1. Open Settings → Community plugins
  2. Browse and search for "DashReader"
  3. Install and enable

Manual Installation

  1. Download main.js, manifest.json, styles.css from this release
  2. Create folder .obsidian/plugins/dashreader/ in your vault
  3. Copy the downloaded files to this folder
  4. Reload Obsidian
  5. Enable DashReader in Settings → Community plugins

🔄 Changelog

Fixed

  • Memory leak in view registration (obsidianmd/no-view-references-in-plugin)
  • Command IDs now exclude plugin ID prefix (obsidianmd/commands/no-plugin-id-in-command-id)
  • All UI text converted to sentence case (obsidianmd/ui/sentence-case)
  • Console methods restricted to warn/error/debug (no-console)
  • Settings headings use proper API (obsidianmd/settings-tab/no-manual-html-headings)
  • Eliminated all any types (@typescript-eslint/no-explicit-any)
  • Fixed floating promise warnings (@typescript-eslint/no-floating-promises)
  • Proper async/await in view lifecycle methods

Technical

  • Upgraded TypeScript to 5.7.2
  • Added ESLint 9 with obsidianmd plugin
  • Improved type safety across entire codebase
  • Better error handling and logging

🚀 Features (from v1.4.0-1.4.1)

  • Breadcrumb navigation with hierarchical document structure
  • Visual minimap showing heading positions
  • Slow start feature for comfortable reading initiation
  • Full callout support for Obsidian callouts
  • Extended WPM range (50-5000)
  • Editable numeric inputs for all sliders
  • 8 configurable micropause multipliers

📝 Notes

This is a maintenance release focused on code quality and Obsidian guidelines compliance. No functional changes or breaking changes for users.