Skip to main content
A computed view is a fenced okf-view block in a page. Instead of a list you maintain by hand, it declares what to list, and Isomorphic computes it on every read. Add a customer page and every view that should include it does, with nobody updating an index.
You rarely write one by hand. Ask Claude for “a table of active customers with owner and renewal date” and it writes the block.

How it renders

  • In Claude and the app, the view is always computed live from the brain’s index.
  • In the file, Isomorphic also writes a snapshot of the result below the block, between okf-view:snapshot comments, so github.com, Obsidian and other plain-markdown readers still see a real table. The snapshot refreshes whenever the page is saved through Isomorphic, and can go stale in between. Do not edit inside it; it is regenerated on save.
  • A malformed block renders a visible note saying what is wrong. A view never blocks a read or a save.

Reference

Every view picks a source with kind and a rendering with as.

Filters

filter takes an inline map (filter: { type: Contact }) or one indented level. A value is a match unless it starts with an operator: <, <=, > and >= compare numbers and YYYY-MM-DD dates. Besides a number or a date, they take today or a day offset such as -30d or +7d (in UTC). != also takes text. A page missing the key, or holding a value that is not a number or date, never matches an operator, != included. List-valued frontmatter matches if any element does.
Filters, grouping and columns read flat frontmatter keys only. Nested frontmatter is not indexed, so a view cannot see inside it.

Readable tables

Column headers and group headings are made readable, so next_step_due shows as “Next step due”. In Claude and the app, a YYYY-MM-DD date shows relative to today (“Oct 16 · in 12 days”), and under a key named due or ending in _due or _due_date, a past date shows as “N days overdue”. The snapshot written to the file keeps the raw date, so a saved page does not change from one day to the next.

Examples

What is overdue. Tasks past their due date:
How many pages link here. On a person’s page, the number of meetings that mention them:
Everything that links here, as a table. On a project page:
A directory, grouped. On people/index.md:
A count per value. Customers per stage:
Sub-folders. On a folder note, one entry per sub-folder, linked through its own folder note: