Skip to content

chore: release v0.0.25#104

Merged
squidfunk merged 1 commit into
masterfrom
release/v0.0.25
Jul 2, 2026
Merged

chore: release v0.0.25#104
squidfunk merged 1 commit into
masterfrom
release/v0.0.25

Conversation

@squidfunk

Copy link
Copy Markdown
Member

Summary

This version adds Sequence as the ordered relation layer on top of Expression, which is what makes route matching work for keyed relations like page -> tags.

With Sequence, those relations can now be represented and matched as ordered paths of ids or expressions instead of as a flat one-shot lookup. That matters because routes are not just "does this id match?” anymore. They are "does this relation appear in this order, with these constraints, and possibly with gaps or intermediate steps?”

So the model is:

  • Id is one concrete node in the relation
  • Selector is a pattern over one node
  • Expression is a logical combination of selectors
  • Sequence is an ordered combination of expressions
  • Filter compiles that relation matching into something fast

In practice, that means if the scheduler or routing layer sees a relation like page -> tags, it can now match a route against that relation shape. A route can say "I care about pages that have tags”, or "I care about tags that refer back to pages”, and the ordered sequence gives the compiler enough structure to evaluate that efficiently.

That is the bigger idea: routes are no longer just attached to isolated ids, they can be attached to relation paths. Sequence is the piece that makes those paths first-class.

## Summary

This version adds `Sequence` as the ordered relation layer on top of `Expression`, which is what makes route matching work for keyed relations like `page -> tags`.

With `Sequence`, those relations can now be represented and matched as ordered paths of ids or expressions instead of as a flat one-shot lookup. That matters because routes are not just "does this id match?” anymore. They are "does this relation appear in this order, with these constraints, and possibly with gaps or intermediate steps?”

So the model is:

- `Id` is one concrete node in the relation
- `Selector` is a pattern over one node
- `Expression` is a logical combination of selectors
- `Sequence` is an ordered combination of expressions
- `Filter` compiles that relation matching into something fast

In practice, that means if the scheduler or routing layer sees a relation like `page -> tags`, it can now match a route against that relation shape. A route can say "I care about pages that have tags”, or "I care about tags that refer back to pages”, and the ordered sequence gives the compiler enough structure to evaluate that efficiently.

That is the bigger idea: routes are no longer just attached to isolated ids, they can be attached to relation paths. `Sequence` is the piece that makes those paths first-class.

Signed-off-by: squidfunk <martin.donath@squidfunk.com>
@squidfunk squidfunk merged commit b712ef0 into master Jul 2, 2026
17 checks passed
@squidfunk squidfunk deleted the release/v0.0.25 branch July 2, 2026 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant