Editing Properties (Frontmatter)

Editing Properties (Frontmatter)

The in-browser editor shows a note’s YAML frontmatter as Properties, in a panel above the body. A note without frontmatter shows Add properties instead. The panel has two tabs that edit the same YAML:

You do not need to know mbr’s vocabulary in advance. The form offers the fields mbr understands, the fields of the OKF spec, and the keys and values your other notes already use.

Your YAML is kept as you wrote it

The form never rewrites the whole block. Each edit changes only the bytes of the value you edited. Everything else stays as it was: comments, key order, quoting, flow style ([a, b]), blank lines, and keys mbr knows nothing about. Frontmatter you do not touch at all is saved byte for byte (see What a save writes).

After every edit the editor parses the result again and checks that it means what the edit meant. In the rare case that an edit cannot be made in place, the editor rewrites the block in a standard YAML layout and the form says so: “One edit could not be made in place, so the YAML was rewritten in a standard layout.”

Some YAML features have no form equivalent: anchors (&x), aliases (*x), explicit tags (!!str), merge keys (<<), and comments inside a list or map. A value that uses any of them is shown read-only, as its YAML source, with an Edit as YAML button. That opens a small YAML editor holding only that value. Apply (or Cmd+Enter / Ctrl+Enter) writes it back in place, and Cancel (or Esc) leaves it unchanged. A comment at the end of a scalar’s line (mobile: "+1 555 0100" # cell) does not need this: editing the value keeps the comment.

Save includes edits you have not finished: an Edit as YAML you did not apply, a tag typed without Enter, a rename still being typed. If the YAML you typed does not parse, the note is not saved and the status line says which value to fix. Closing the editor asks about them like any other unsaved change.

If the YAML does not parse, the form is read-only. It lists each error with its line and column and offers Fix it in YAML. The form never writes over YAML it could not read.

The form

Each row shows an icon for the kind of value, the property name, and the value widget. The ⋯ menu on a row holds Rename, Edit as YAML, Change type to … (for example, text to a number or a date, or a single value to a list), and Remove. Maps and lists expand into nested rows, each with its own Add, so a value of any shape can be edited.

ValueWidget
TextA text field. Long text (a description, or anything with line breaks) gets a text area. A value you wrote without quotes gets quotes only while it needs them, such as while a trailing space is typed
NumberA number field
true / falseA checkbox
Date (2026-10-21)A date picker that writes the date only
Date and timeA date-and-time picker. The UTC offset written with the time is shown beside it and kept when you edit. A time with no offset gets your local offset, because OKF requires one: 2026-06-30T14:00:00-06:00, or Z for UTC
Partial dateYear, month and day, any of them blank, for contact dates: 1927-03-19, 1927-03, 1927 or --03-19. An impossible combination, like a day with no month, writes nothing and says why
TagsChips. Type a tag and press Enter or , to add it; your vault’s tags are suggested. A tag field written as one comma-separated string stays a string
A choice (type, status)A field with suggestions that still accepts any text
Note link (company)A note picker that writes "[[Note Title]]". Free text is still allowed
ListOne field per item. Enter moves to the next item, and in the last one adds a new item
Anything elseNested rows

+ Add property (or Cmd+; / Ctrl+;) opens a list of property names. The order is: mbr’s fields, then the contact fields when the note is a person or organization, then the Attested Computation fields when the note is that type, then OKF’s fields, and last the keys your other notes use, most used first. Fields the note already has are left out. You can also type any name. A new property starts with an empty widget of the right kind.

Problems show as soft hints next to the value. They never block a save:

Choosing a type

type is the one field that turns a note into something mbr treats specially. Its suggestions come first, then your vault’s own types, most used first:

typeEffect
slidesThe note plays as a slideshow (Slides)
flashcardEvery definition list becomes a study deck (Flashcards)
personA contact card, and relationship charts below the note (Contacts)
organizationA contact card and an org chart

Any other value is fine. OKF types are open-ended (Metric, Playbook, BigQuery Table), and an unknown type gets no warning. Every type also becomes a class on the page’s <body> (see Page Styles and Types). The form has no helper for style, which stays an ordinary field.

mbr’s fields

Relationships

Each relationship in relationships is a row that reads from the note’s own side: type, then note. parent · [[Sam]] means “Sam is this note’s parent” (type: parent, to: "[[Sam]]"). The row has:

A relationship that names two other notes (both from: and to:) shows both notes, labelled “from” and “to”, and has no checkbox.

Under the row, the relationship reads back as a sentence, including the reverse relationship mbr derives. On Jane’s note, type: parent, to: "[[Sam]]" reads “Sam is Jane’s parent · Jane is Sam’s child”. Any other key on a relationship (married:, place:) is kept and shown as an ordinary row under it. A type that is not in the registry is allowed, with a warning that no reverse relationship will be derived.

Contact fields

When type is person or organization, the form offers the contact fields: name parts, company (a note link, which on a person also makes an employer relationship), job_title, department, image, and the labeled fields emails, phones, urls, social, im, addresses and dates.

A labeled field is a list of entries, each with a label and a value. The labels are suggested (mobile, work, home for phones; birthday, death, anniversary for dates). An address has its parts (street, city, region, postcode, country). mbr reads three ways of writing a labeled field: a map (work: x), a list of one-key maps (- work: x), or plain values. The form reads all three, and a new entry is written the way the note already writes the others. A field that is empty becomes a map.

born and died are still shown when a note has them, but new notes get dates.birthday and dates.death instead.

OKF fields

Every note is offered the optional fields of OKF v0.2, after mbr’s own:

FieldWhat it holds
statusdraft, stable or deprecated. A note without one counts as stable
resourceWhat the note describes: a URL or a path
sourcesWhere the knowledge came from: a list of sources, each with resource (required) and optionally id, title, author, usage_count, last_modified and usage_window
usage_windowfrom and to, both dates and times
generatedby (who or what wrote the note) and at. at starts at the current time
verifiedReviews, each with by and at. A single review written as one map (not a list) stays a map until you add a second review
stale_afterThe date and time after which the note is stale

When type is Attested Computation, the form also offers runtime (required), parameters (each with name, type, required), computation, executor (resource and receipt) and attester.

The OKF spec asks tools to keep keys they do not know. The editor keeps every key, so a note stays valid OKF after mbr edits it.

Actors. The by and author fields name an actor: human:<id>, process:<id>, or <agent>/<version>. The suggestions are the actors your vault already uses and the human: and process: prefixes. The Me button writes human:<your id>. The first time you use it, it fills in human: and asks you to type your id. After that the id is remembered until you leave the page. It is never stored.

The YAML tab

The YAML tab is a code editor for the whole frontmatter block. It has syntax highlighting, undo, and line wrapping.

Suggestions come from your notes

The first time you click into the properties panel, the editor reads the site index (/.mbr/site.json, the same one the browse and search panels use). It then knows:

The site index leaves out contact details (emails, phones and so on) and flattens nested values, so suggestions inside those come from mbr’s built-in knowledge rather than from your notes. No configuration is involved, and nothing is stored.

Keyboard shortcuts

KeyWhereAction
Cmd+; / Ctrl+;FormAdd a property
← / →On the Form / YAML tabsSwitch tabs
Enter / TabRenaming a propertyApply the new name
EscRenaming a propertyCancel the rename
EnterIn a list itemMove to the next item; in the last one, add an item
Enter or ,In a tag fieldAdd the tag
BackspaceIn an empty tag fieldRemove the last tag
↑ / ↓, EscIn a row’s ⋯ menuMove through the menu, close it
Ctrl+SpaceYAML tabOpen completion
EscYAML tab, completion openClose the completion list (the editor stays open)
Cmd+Enter / Ctrl+EnterEdit as YAMLApply
EscEdit as YAMLCancel

The editor’s own keys still apply: Cmd+S / Ctrl+S saves, and Esc elsewhere closes the editor. See In-Browser Editing.