MetaEdit 1.9.0 is the biggest release in years. Property editing now happens through Obsidian's own property widgets, new properties are created in one fluid, type-aware modal, and you can edit metadata across a whole folder in one pass. Auto Properties grew multi-select, descriptions, and learn-as-you-go values. Underneath it all, five months of hardening make every write safer than it has ever been.
Important
MetaEdit now requires Obsidian 1.12.7 or newer - the new editing experience is built directly on Obsidian's modern properties engine.
Edit properties with Obsidian's native widgets
Pick a property from MetaEdit's menu and you now get the exact widget Obsidian's Properties panel would give you: a date picker for dates, a checkbox for booleans, chips for lists, a number field for numbers. No more retyping structured values as free text - types are respected end to end, so rating stays a number and started stays a real date, both in the editor and in the file.
Create properties fluidly - types included
New YAML property opens a single row that behaves like Obsidian's own property editor:
- The key input autocompletes from every property name in your vault.
- The value widget follows the type: type a known key like
ratingand the row switches to the number widget on its own;finishedmounts a date picker. - Type a value that looks like a date or number under the wrong type, and MetaEdit offers a one-click "Change to Date/Number" switch.
- Keyboard-first:
⌘/Ctrl+Ycycles the type,⌘/Ctrl+↵adds the property.
Keys with an Auto Property hand you off to its value prompt, and tags/aliases lock to their reserved types so you can't create malformed frontmatter.
Bulk edit metadata across folders and selections
Right-click any folder - or multi-select notes in the file explorer - and choose Bulk edit metadata. Name a property, give it a value, and if some notes already define it, choose exactly what happens:
- Skip notes that already have it (nothing is overwritten),
- Merge into a list without duplicating, or
- Overwrite existing values - behind an explicit confirmation, because bulk edits can't be undone with
Ctrl+Z.
A summary notice reports what changed. Every write goes through MetaEdit's serialized write queue, so a bulk run can't race your other edits.
Auto Properties leveled up
Auto Properties - predefined value lists for properties you edit often - learned some serious new tricks:
- Multi-select: mark an Auto Property as Multi and pick several values with checkboxes; they're written as a proper YAML list.
- Descriptions: add an optional note that shows up in the value prompt, so future-you remembers what the property means.
- Learn as you go: type a value that isn't in the list to use it once, or save it into the choices right from the prompt - no trip to settings.
- Paste a list: paste comma- or newline-separated values into a choice field in settings and it splits into one choice per entry.
Smarter value entry everywhere
Text prompts now autocomplete from your vault: property values are suggested ranked by how often you already use them, and tag edits suggest your existing tags. Date- and datetime-typed properties get a native picker instead of a bare text box.
A cleaner, more capable menu
- Every YAML/Dataview row has native, tooltipped actions: delete the property, or transform it YAML ⇄ Dataview, right from the list.
- Hide file tags from the menu (Settings → Edit Meta menu) when you only care about frontmatter and inline fields - a frontmatter
tags:property stays editable. - Hide specific properties by name via the same filtering settings.
- Nested YAML shows up as individual child rows, so structured frontmatter is no longer a wall of text.
Tags are edited where they live
Tag editing was rebuilt for correctness (#94, #142): rename a body #tag occurrence in place, or edit a frontmatter tags: list as a real list - MetaEdit strips stray # prefixes, accepts single values or comma/space-separated strings, and removes the key when you clear the last tag. Because body tags could not be deleted or transformed safely, those two actions were removed for body tags; renaming and leaf-editing stay. Vault-wide renames remain Obsidian's Tag pane territory.
For plugin developers and Templater users
The public API (app.plugins.plugins["metaedit"].api) grew a lot this cycle:
const api = app.plugins.plugins["metaedit"].api;
// Nested YAML paths - read, update, or create-with-parents
await api.addOrUpdateYamlPath("book.progress.page", 217, file);
const page = await api.getYamlPath("book.progress.page", file);
// Append a NEW inline Dataview field instance (never replaces existing ones),
// with control over where it lands
await api.appendDataviewField("review", "pending", file, { location: "end" });
// Read every property in a file - YAML (incl. nested), inline fields, tags
const props = await api.getPropertiesInFile(file);
// Manage Auto Properties programmatically
const autoProps = api.getAutoProperties();
await api.setAutoProperties([...autoProps, { name: "mood", choices: ["😀", "😐", "😞"] }]);
// Subscribe to real metadata changes (no-op edits are filtered out)
const unsubscribe = api.onMetadataChange(({ file, properties, previousProperties }) => {
console.log(`${file.path} metadata changed`);
});New in 1.9.0: getYamlPath / updateYamlPath / addOrUpdateYamlPath (nested paths with a.b[0].c syntax), appendDataviewField insert-location options, getPropertiesInFile, getAutoProperties / setAutoProperties, and the onMetadataChange subscription. See the API docs in the README for the full surface.
Reliability roundup
A lot of this release is invisible: it's the writes that don't go wrong anymore.
- Inline fields: updates no longer append stray brackets (#127), fields behind list/quote markers and brackets are parsed (#122), writes are fence-aware so
key:: valueinside code blocks is left alone, and[[wikilinks]]survive multi-value edits. - YAML lists (including
tags) are edited as native lists instead of being collapsed to a string (#94/#128), and malformed frontmatter no longer breaks parsing (#132). - Kanban helper: only the card's leading link is synced - trailing date/reference links are ignored (#126); ambiguous same-named notes are never written to (#158); a missing board property produces a single notice instead of spam (#145).
- Progress Properties count only
[x]/[X]tasks as complete (#145). - Safety:
__proto__/constructor/prototypeare rejected as property keys everywhere (#148, #159), frontmatter writes are hardened, and reserved keys are preserved when cloning values (#162). - No lost updates: settings and bulk writes are serialized through write queues (#147, #154, #156), and the settings tab no longer clobbers concurrently added Auto Property choices.
- Deleting a block-list property, presence-based property lookups, and safe command no-ops (#143); well-formed duplicate-name notices and more robust modal closing (#144).
Behavior changes to know about
- Requires Obsidian 1.12.7+ (
minAppVersionraised). - Body-tag delete/transform actions were removed - they could not target the right text safely. Rename and leaf-edit remain; frontmatter
tags:editing is unaffected. - MetaEdit's suggester actions now use Obsidian's native icons and tooltips - same actions, clearer presentation.
Full changelog
Every commit since 1.8.4: 1.8.4...1.9.0
All changes by type
Features
- create: fluid, type-aware native YAML property creation (#170)
- editor: edit properties with Obsidian's native widgets; raise minAppVersion to 1.12.7 (#168)
- api: append Dataview field instances without replacing; expand public integration surface (#120)
- auto-properties: description, multi-select, and learn-as-you-go values (#123); paste a list to split into choices (#139)
- bulk edit metadata across folders and selected notes (#124)
- assist property-value entry with autocomplete and a native date picker (#125)
- support nested YAML path editing
- hide file tags from the Edit Meta menu (#46, #90, #131)
- adopt modern Obsidian APIs and raise baseline
Fixes
- suggester: native icons + tooltips for row actions; centered flush-right (#166); robust modal close and well-formed duplicate notices (#144)
- controller: fence-aware inline-field writes;
__proto__/constructorguards in all frontmatter writes (#159); hardened frontmatter metadata writes - parser: preserve
[[wikilinks]]in multi-value inline edits; parse inline fields behind list/quote markers and brackets (#122); tolerate malformed YAML frontmatter (#132) - bulk: serialize bulk frontmatter writes through the controller write queue (#147); reject
__proto__/constructoras bulk property keys (#148) - settings: serialize Auto Property persistence to prevent lost updates (#154); validate auto-properties before queueing, compare-and-restore rollbacks (#156); no clobbering of concurrently added choices
- kanban: don't write to ambiguous same-named notes (#158); single notice for missing board property (#145); sync only the card's leading link (#126)
- tags: correct and clarify tag editing (#142); edit YAML lists (incl. tags) as native lists (#94, #128)
- automators: count only
[x]/[X]tasks complete; null-guard Kanban lane display (#145) - api: preserve reserved keys when cloning values (#162)
- core: safe command no-op, block-list deletion, presence-based property lookups (#143); stop inline-field updates appending a stray bracket (#127)
- Kanban helper syncs only the card's leading link, not trailing date/reference links (#126)
Install: MetaEdit is in the Community plugins browser. Already installed? It will update on its own, or force it via Settings → Community plugins → Check for updates.
Found a bug or have an idea? Open an issue - this release closed a big stack of them, and reports like yours are what drove it.






