Bases formulas — access to the latest value of repeated inline fields

Use case

I would like to use repeated inline fields as an append-only history while allowing Bases to dynamically expose the latest value as the current state.

For example, a note may contain multiple historical entries:

History

2026-06-01

[status_history:: On Track]
[priority_history:: Normal]

2026-09-15

[status_history:: Attention]
[priority_history:: High]

2026-09-28

[status_history:: Blocked]
[priority_history:: Critical]

Dataview can currently treat these repeated fields as a list and retrieve the latest value.

It would be extremely useful if a Base formula could do something conceptually similar to:

current_status = status_history.last()
current_priority = priority_history.last()

The resulting formula properties could then be used normally in Bases:

FILTER current_status == “Blocked”
SORT current_priority
GROUP BY current_status

Why this matters

YAML/Properties are excellent for representing the current state of a note, but they do not provide a queryable history of previous values.

For workflows involving project tracking, CRM/account management, issue tracking, risks, support cases, decisions, etc., historical state changes are important.

Currently this creates a choice between:

  1. storing only the current value in YAML and losing the queryable history;
  2. keeping an append-only history using repeated inline fields, but being unable to use the latest value easily in Bases;
  3. duplicating the latest value into YAML using scripts or automation, which creates two representations of the same data and a risk of synchronization issues.

Ideally, the history could remain the single source of truth, while Bases dynamically derives the current state:

Append-only history
↓
repeated inline fields
↓
Bases formula: .last()
↓
current state
↓
filter / sort / group / display

Possible implementation

This does not necessarily need to be a dedicated .last() function. Any generic mechanism for accessing elements of a list/collection would solve the problem, for example:

status_history.last()

or

status_history[-1]

or

last(status_history)

Ideally, other collection operations could eventually also be supported (first, length, etc.), but retrieving the latest value would already enable this workflow.

Important detail

The derived value should ideally remain usable by other Base features — not only for display:

  • filtering
  • sorting
  • grouping
  • formulas

This would make it possible to build dynamic current-state views from historical data without scripts, duplicated YAML properties, or manual synchronization.

Thanks!

This sounds like a new feature (new Bases functions) on top of a feature that doesn’t exist yet (inline properties). You might be interested in the feature request for inline properties that would have to exist first: Native support for Inline (Intext) properties (`key:: value` a la dataview)

As for Bases formulas, you can do .latest() and .earliest() on a list of dates. You can also get a list’s first or last item by index position (respectively, [0] and [-1]). You just need to give the base the list.

To your end, I think Front Matter properties would be a (slightly) more structurally sound solution than inline properties, which are prone to accidental omissions and typos, either of which would misalign your date-status pairings.

Even though Obsidian’s Properties UI renders YAML objects and nested lists in a jarring line of orange text, the YAML is still valid. Bases can read them. Mismatches are unlikely here. And the Nested Properties plugin can help minimize typo opportunities (and render objects in the UI as a bonus): https://github.com/mnaoumov/obsidian-nested-properties

One YAML format for your consideration, natively queryable by Bases:

---
history:
  - date: 2026-06-01
    status: on track
    priority: normal
  - date: 2026-09-15
    status: attention
    priority: high
---

If the whole purpose of the note is to track history, then you could shorten the entries to this type:

---
2026-06-01:
  status: on track
  priority: normal
2026-09-15:
  status: attention
  priority: high
---