YAML parser breakage in the new update: tabs stop working

The new version rejects tabs used as indentation in YAML blocks. This breaks all of my existing files – both front matter as well as graphs rendered via e.g. the Tracker plugin just show YAML errors. Other people are complaining as well, see e.g. this downstream bug report caused by this problem.

I can’t just go and replace all tabs (I have code blocks that MUST keep their tabs or else copy/paste from them breaks other stuff), and I don’t feel like manually fixing >>100 files, so I’d like to see this fixed soon-ish.

Steps to reproduce

  1. Make a file with the following content: (That’s a tab as indentation, in case copy/paste breaks that.)

    ---
    asdf:
    	ghjk
    ---
    
  2. switch from editing to viewing mode

(There are other things that want to interpret the YAML and don’t care about preview, but this is the simplest thing.)

Expected result

nothing (if frontmatter not shown), or

asdf:
    ghjk

if showing frontmatter

Actual result

METADATA (INVALID YAML)


Environment

  • Operating system:
    Widnwos 10 Pro Version 10.0.19044 Build 19044
  • Debug info:
    SYSTEM INFO:
    	Obsidian version: v0.13.14
    	Installer version: v0.12.19
    	Login status: not logged in
    	Insider build toggle: off
    	Live preview: on
    	Legacy editor: on
    	Base theme: dark
    	Community theme: none
    	Snippets enabled: 0
    	Safe mode: on
    
    RECOMMENDATIONS:
    	none
    

Additional information

none

I don’t recall this ever working in the past however I am fairly confident that YAML only supports spaces for indentation. We won’t change this.

I assure you that it did work, otherwise I wouldn’t have amassed so many files with tabs in the YAML. (And the Tracker plugin bug shows at least 2 other people affected by this.)

What’s the way forward from here? If I interpret your “we won’t change this” correctly, you mean that you won’t restore the old functionality? Will you at least provide an upgrade / conversion path, to make the files work again?

I have just checked with a copy of 0.12.x. Tabs in the frontmatter/yaml block produce errors.
I do not know if tracker plugins tampered with the YAML parser or used something else.

That is invalid yaml. If that is a list you are missing the bullet before it. If it’s not meant to be a list, you should have the key-value pairs on the same line.

Looks like the YAML specs states space for indentation only:

https://yaml.org/spec/1.2.2/#:~:text=6.%20Structural%20Productions-,6.1.%20Indentation%20Spaces,-In%20YAML%20block

Chapter 6. Structural Productions
6.1. Indentation Spaces
In YAML block styles, structure is determined by indentation. In general, indentation is defined as a zero or more space characters at the start of a line.

To maintain portability, tab characters must not be used in indentation, since different systems treat tabs differently. Note that most modern editors may be configured so that pressing the tab key results in the insertion of an appropriate number of spaces.

The amount of indentation is a presentation detail and must not be used to convey content information.