HackMD has been designed to be intuitive and customizable for developers, so the metadata sits with the Markdown content. For example, the title comes from the
title key in the YAML header and, if the key is missing, from the first level 1 header.
Most of our users are happy with this. However, this design has prevented us from implementing advanced features. Every time the metadata changes, HackMD has to change the Markdown content itself, not to mention the difficulty of storing complex metadata in this way.
More and more users have felt the inconvenience when trying to edit tags for multiple notes. For the same reason, HackMD lacks backlink functionality.
After careful consideration, the HackMD team has decided to separate metadata from Markdown content.
This is a disruptive change and a painful migration. You have to give up old habits and build new ones. We never liked it. Please bear with us. Only after this migration can HackMD evolve to the next level.
The HackMD team will migrate the metadata without breaking the content, so you don’t have to do anything. With the migration, we will ship interfaces for editing the metadata, after which you will not be able to:
- Set metadata in YAML headers. (You will be able to set metadata elsewhere.)
- Set the title with the first level 1 header.
- Set tags with level 6 headers (H6 tagging).
We will respect remote files when you sync them from GitHub, which means we will not write anything to them, even if the metadata is different from the metadata in HackMD. However, if you want to take advantage of the metadata in HackMD, you need to set metadata in HackMD.