1.4.2
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
anytypes withunknownor proper types throughout codebase - ✅ Promise handling: Added proper
voidoperators and error handling for all floating promises - ✅ Console logging: Changed
console.logtoconsole.debugper 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.stylemanipulation with proper CSS methods - Better theming compatibility and maintainability
📦 Installation
From Community Plugins (pending approval)
- Open Settings → Community plugins
- Browse and search for "DashReader"
- Install and enable
Manual Installation
- Download
main.js,manifest.json,styles.cssfrom this release - Create folder
.obsidian/plugins/dashreader/in your vault - Copy the downloaded files to this folder
- Reload Obsidian
- 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
anytypes (@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