Releases: diegoeis/obsidian-conditional-properties
0.16.2
🎯 What Changed
The plugin now detects H1 headings only immediately after YAML frontmatter, completely ignoring first-level headings that appear in the middle or end of documents.
🔧 Problem Solved
Before: The plugin considered any H1 in the document as the "title", even if it was on line 500. This caused issues where:
Files with H1 headings in internal sections were treated as having a title
The IF first level heading does not exist rule didn't work correctly
There was no consistency about which H1 represented the note's title
Now: Only the H1 immediately after YAML frontmatter is considered the "title". Example:
---
type: note
---
# This Is The Title ← ✅ Detected
Content...
## Section
More content...
# Another Heading ← ❌ Ignored (not the title)
This change may affect existing files:
Files with H1 not immediately after YAML: Will be treated as "no title" and will receive a new H1 at the beginning if rules are configured
Files with multiple H1s: Only the first one (after YAML) will be considered; others will be ignored
✨ Benefits
Consistent behavior: The "title" is always in the same place
Rules work correctly: notExists and isEmpty now reliably detect files without titles
Configuration independent: Completely ignores Obsidian's "Show inline title" setting
More predictable: You know exactly where the plugin will add/modify the title
🔍 Technical Details
Removed dependency on MetadataCache.headings
Direct file content reading with vault.read()
Position verification of H1 relative to frontmatter
Ensures only whitespace can exist between YAML and H1
📝 Primary Use Case
Perfect for vaults using plugins like Granola that create notes with structured content but no initial title, allowing Conditional Properties to automatically add titles using {filename} or {date} placeholders.
🚀 How to Update
Reload the plugin in Obsidian (Settings → Community plugins → Reload)
Review your rules - files with H1 headings not at the top may now be processed
Test with "Run conditional rules on current file" command
📚 Documentation
For more information about H1 detection and title modification rules, see the plugin documentation.
0.16.1: fix: ignore inline title when checking for first level heading existence
🐛 Bug Fix
Fixed inline title interference with FIRST_LEVEL_HEADING conditions
This release fixes a critical bug where Obsidian's "Show inline title" setting was interfering with the notExists operator for FIRST_LEVEL_HEADING conditions.
What was fixed:
- The
_getNoteTitle()function now ignores Obsidian's inline title setting - Only real H1 headings (
# Title) in the file content are considered - The
notExistsoperator now works correctly regardless of inline title configuration
Benefits:
- ✅ Keep "Show inline title" enabled in your Obsidian settings
- ✅ Use conditional rules to automatically create titles when H1 doesn't exist
- ✅ Consistent behavior across different Obsidian configurations
Example use case:
IF: First level heading → does not exist
THEN: Change title → Overwrite to → {filename}0.16.0
New Features
- RENAME property action: New action to rename properties while preserving their values. Use "Rename property to" option in THEN actions to change property names (e.g., rename
old_companytocompany)
Improvements
-
Case-insensitive property name matching for rename operations
-
Automatic protection against overwriting existing properties during rename
-
Clean removal of old property after successful rename
OVERWRITE TO option for title
0.15.0 - 2026-01-08
New Features
-
OVERWRITE TO option for title modification: Completely replace note titles instead of just adding prefix/suffix
-
{filename} placeholder: New placeholder that inserts the file's basename (without .md extension)
-
Combined placeholders: Mix {date}, {date:FORMAT}, and {filename} in any order (e.g.,
{date:YYYY-MM-DD} - {filename}) -
Auto-create H1 headings: When using
notExistsorisEmptyoperators with FIRST LEVEL HEADING, the plugin now creates H1 headings automatically -
Improved UI: Text input field now hides automatically when using
exists,notExists, orisEmptyoperators
Bug Fixes
-
Fixed issue where rules with
notExistsorisEmptyoperators on FIRST LEVEL HEADING were being skipped -
Fixed
isEmptyoperator returning false for non-existent headings instead of true -
Fixed OVERWRITE TO not working when H1 heading doesn't exist
fixing a little layout bug, updating the readme adding best instructions and examples.
- fixing a little layout bug caused by last update of Obsidian,
- rewriting the readme adding best instructions and examples.
Performance Improvements and Bug Fixes
This release brings significant performance enhancements and stability improvements, along with important bug fixes. Here are the key highlights:
Performance Optimization: Enhanced execution of conditional rules for better efficiency.
Bug Fixes: Addressed reported issues affecting rule application in specific scenarios.
UI Improvements: Visual refinements for an improved user experience.
Dependency Updates: Updated dependencies to ensure compatibility and security.
Update Note: We recommend all users update to this version to benefit from the performance improvements and bug fixes.
0.14.4
Release 0.14.3 - Obsidian Plugin Submission Review Fixes
This release addresses all feedback from the Obsidian plugin submission review, implementing best practices and improving code quality for official plugin directory inclusion.
🔧 Code Quality Improvements
API & Best Practices
File Modification Methods: Replaced Vault.modify() with Vault.process() for atomic content modifications
Frontmatter Handling: Implemented FileManager.processFrontMatter() for safer, atomic frontmatter updates
Heading Detection: Switched from string matching to MetadataCache.getFileCache() to properly detect headings and avoid false positives in code blocks
Moment.js Import: Updated to import moment directly from the "obsidian" package instead of accessing via window.moment()
Code Cleanup
Console Logging: Removed excessive debug logging from production code, keeping only error logs for troubleshooting
Command Registration: Simplified command IDs by removing redundant plugin prefix:
conditional-properties-run-now → run-now
conditional-properties-run-current-file → run-current-file
Conditional Commands: Added checkCallback to file-dependent commands for proper enable/disable state based on active file existence
🎨 UI/UX Improvements
Settings Interface
Removed top-level plugin name heading per Obsidian guidelines
Converted all UI text to sentence case for consistency
Implemented proper section headings using Setting().setName().setHeading()
Updated button and label text:
"Backup & Restore" → "Backup and restore"
"Export Settings" → "Export settings"
"Import Settings" → "Import settings"
"+ Add Rule" → "Add rule"
"+ Add action" → "Add action"
"IF" → "If"
"THEN:" → "Then:"
"First Level Heading" → "First level heading"
"ADD VALUE" → "Add value"
"REMOVE VALUE" → "Remove value"
"OVERWRITE ALL VALUES WITH" → "Overwrite all values with"
"DELETE PROPERTY" → "Delete property"
"Change Property" → "Change property"
"Change Title" → "Change title"
CSS Improvements
Renamed CSS variable --red-color to --cp-red-color to avoid conflicts with other plugins
Improved plugin-specific class naming for better isolation
📊 Impact
These changes ensure the plugin follows all Obsidian plugin development guidelines and best practices, making it ready for official plugin directory inclusion. The updates improve:
Reliability: Atomic operations prevent data corruption
Performance: Proper API usage improves efficiency
Compatibility: Plugin-specific naming prevents conflicts
User Experience: Consistent UI language and proper command behavior
Maintainability: Cleaner code with proper error handling
🔗 Related
Addresses feedback from Obsidian Releases PR #8201
Full changelog: CHANGELOG.md
0.13.0
Release 0.13.0 — 2025-12-13
🚀 Highlights
- Backup & restore: Export and import plugin settings directly from the settings tab.
- Title rules: Add prefixes/suffixes with
{date}formatting to note titles. - New condition operators:
exists,notExists, andisEmptygive you more control when defining rules.
✨ Improvements
{date}placeholders now work in property values.- Value inputs automatically hide when the selected operator doesn’t require them.
- Settings UI is wrapped in
#eis-cp-pluginto prevent CSS conflicts (addresses issue #3).
🐞 Fixes
DELETE PROPERTYnow removes keys reliably and logs debugging info.- Prevent duplicate title prefixes/suffixes and improve date formatting.
- Properly hide the value field when using the
isEmptyoperator.
📚 Docs & Maintenance
- README and PRD updated to reflect the new operators and workflows.
.gitignoreupdated (e.g., .DS_Store, IDE folders).- Removed the legacy “REPLACE VALUE” action in favor of the current
add/remove/overwrite/deleteactions.
Enjoy the update!
0.10.0
Overview:
This release introduces powerful new actions for more flexible frontmatter management, along with UI improvements and bug fixes.
Key Changes:
NEW: OVERWRITE Action - Completely replaces a property's value with a new one, ideal for resetting or fully updating properties.
NEW: DELETE PROPERTY Action - Permanently removes a property from the frontmatter, with built-in warnings for safety.
Enhanced UI - Added warning messages for destructive actions and conditional display of value fields.
Improved YAML Handling - Better cleanup of empty lines and whitespace when modifying properties.
Documentation Updates - Updated README with examples and roadmap for template variable support.
Bug Fixes:
Fixed property removal logic to prevent broken YAML structures.
Ensured consistent behavior across ADD, REMOVE, OVERWRITE, and DELETE actions.
This version enhances automation capabilities while maintaining ease of use. All processing remains local for privacy.
0.9.0 Release
Release Notes for Conditional Properties v0.9.0
Overview:
This release introduces powerful new actions for more flexible frontmatter management, along with UI improvements and bug fixes.
Key Changes:
- NEW: OVERWRITE Action - Completely replaces a property's value with a new one, ideal for resetting or fully updating properties.
- NEW: DELETE PROPERTY Action - Permanently removes a property from the frontmatter, with built-in warnings for safety.
- Enhanced UI - Added warning messages for destructive actions and conditional display of value fields.
- Improved YAML Handling - Better cleanup of empty lines and whitespace when modifying properties.
- Documentation Updates - Updated README with examples and roadmap for template variable support.
Bug Fixes:
- Fixed property removal logic to prevent broken YAML structures.
- Ensured consistent behavior across ADD, REMOVE, OVERWRITE, and DELETE actions.
This version enhances automation capabilities while maintaining ease of use. All processing remains local for privacy.
Full Changelog: 0.1.0...0.9.0