release: Storybook v0.2.0 - Major syntax and features update

BREAKING CHANGES:
- Relationship syntax now requires blocks for all participants
- Removed self/other perspective blocks from relationships
- Replaced 'guard' keyword with 'if' for behavior tree decorators

Language Features:
- Add tree-sitter grammar with improved if/condition disambiguation
- Add comprehensive tutorial and reference documentation
- Add SBIR v0.2.0 binary format specification
- Add resource linking system for behaviors and schedules
- Add year-long schedule patterns (day, season, recurrence)
- Add behavior tree enhancements (named nodes, decorators)

Documentation:
- Complete tutorial series (9 chapters) with baker family examples
- Complete reference documentation for all language features
- SBIR v0.2.0 specification with binary format details
- Added locations and institutions documentation

Examples:
- Convert all examples to baker family scenario
- Add comprehensive working examples

Tooling:
- Zed extension with LSP integration
- Tree-sitter grammar for syntax highlighting
- Build scripts and development tools

Version Updates:
- Main package: 0.1.0 → 0.2.0
- Tree-sitter grammar: 0.1.0 → 0.2.0
- Zed extension: 0.1.0 → 0.2.0
- Storybook editor: 0.1.0 → 0.2.0
This commit is contained in:
2026-02-13 21:52:03 +00:00
parent 80332971b8
commit 16deb5d237
290 changed files with 90316 additions and 5827 deletions

View File

@@ -69,11 +69,56 @@ pub enum Token {
From,
#[token("is")]
Is,
#[token("uses")]
Uses,
#[token("behaviors")]
Behaviors,
#[token("schedules")]
Schedules,
#[token("tree")]
Tree,
#[token("priority")]
Priority,
#[token("extends")]
Extends,
#[token("override")]
Override,
#[token("recurrence")]
Recurrence,
#[token("season")]
Season,
#[token("block")]
Block,
#[token("true")]
True,
#[token("false")]
False,
// Behavior tree keywords
#[token("choose")]
Choose,
#[token("then")]
Then,
#[token("if")]
If,
#[token("when")]
When,
#[token("repeat")]
Repeat,
#[token("invert")]
Invert,
#[token("retry")]
Retry,
#[token("timeout")]
Timeout,
#[token("cooldown")]
Cooldown,
// "guard" keyword removed - use "if" instead (Token::If)
#[token("succeed_always")]
SucceedAlways,
#[token("fail_always")]
FailAlways,
// Identifiers and literals
#[regex(r"[a-zA-Z_][a-zA-Z0-9_]*", |lex| lex.slice().to_string())]
Ident(String),