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

@@ -0,0 +1,89 @@
%YAML 1.2
---
name: Storybook
file_extensions:
- sb
- storybook
scope: source.storybook
contexts:
main:
# Comments
- match: '//!.*$'
scope: comment.line.documentation.storybook
- match: '//.*$'
scope: comment.line.double-slash.storybook
# Prose blocks
- match: '^(\s*)(---\w*)$'
captures:
2: keyword.control.prose.storybook
push: prose_block
# Declaration keywords
- match: '\b(species|character|behavior|template|use|from)\b'
scope: keyword.declaration.storybook
# Control flow keywords
- match: '\b(for|where|if|else|match|with)\b'
scope: keyword.control.storybook
# Boolean literals
- match: '\b(true|false)\b'
scope: constant.language.boolean.storybook
# Numeric literals
- match: '\b\d+(\.\d+)?\b'
scope: constant.numeric.storybook
# Time/Duration literals
- match: '\b\d+[hms]\b'
scope: constant.numeric.time.storybook
# String literals
- match: '"'
scope: punctuation.definition.string.begin.storybook
push: double_quoted_string
# Field names (before colon)
- match: '^\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*(:)'
captures:
1: variable.other.member.storybook
2: punctuation.separator.storybook
# Range operator
- match: '\.\.'
scope: keyword.operator.range.storybook
# Operators
- match: '[+\-*/%<>=!&|]'
scope: keyword.operator.storybook
# Punctuation
- match: '[{}()\[\],;]'
scope: punctuation.storybook
# Type names and identifiers (capitalized)
- match: '\b[A-Z][a-zA-Z0-9_]*\b'
scope: entity.name.type.storybook
# Regular identifiers
- match: '\b[a-z_][a-zA-Z0-9_]*\b'
scope: variable.other.storybook
prose_block:
- meta_scope: string.unquoted.prose.storybook
- match: '^(\s*)(---)$'
captures:
2: keyword.control.prose.storybook
pop: true
- match: '.*$'
scope: string.unquoted.prose.storybook
double_quoted_string:
- meta_scope: string.quoted.double.storybook
- match: '\\.'
scope: constant.character.escape.storybook
- match: '"'
scope: punctuation.definition.string.end.storybook
pop: true

View File

@@ -0,0 +1,33 @@
# Font Download Instructions
## Geist
1. Go to: https://vercel.com/font
2. Click "Download Geist" button
3. Extract the zip file
4. Copy these files to this directory:
- `Geist/static/Geist-Regular.otf`
- `Geist/static/Geist-Medium.otf`
- `Geist/static/Geist-SemiBold.otf`
## Monaspace Neon
1. Go to: https://github.com/githubnext/monaspace/releases/latest
2. Download `monaspace-v1.101.zip` (or latest version)
3. Extract the zip file
4. Copy these files to this directory:
- `monaspace-v1.101/fonts/otf/MonaspaceNeon-Regular.otf`
- `monaspace-v1.101/fonts/otf/MonaspaceNeon-SemiBold.otf`
## Quick Check
After downloading, you should have these 5 files:
```
Geist-Regular.otf
Geist-Medium.otf
Geist-SemiBold.otf
MonaspaceNeon-Regular.otf
MonaspaceNeon-SemiBold.otf
```
Once you have the fonts, we'll update the code to load them!

View File

@@ -0,0 +1 @@
Not Found

Binary file not shown.

View File

@@ -0,0 +1,28 @@
# Fonts for Storybook Editor
## Required Fonts
### Geist (UI Text)
- **Source**: https://vercel.com/font
- **License**: SIL Open Font License
- **Files needed**:
- `Geist-Regular.otf` (400)
- `Geist-Medium.otf` (500)
- `Geist-SemiBold.otf` (600)
### Monaspace Neon (Code)
- **Source**: https://github.com/githubnext/monaspace
- **License**: SIL Open Font License
- **Files needed**:
- `MonaspaceNeon-Regular.otf` (400)
- `MonaspaceNeon-SemiBold.otf` (600)
## Installation
1. Download Geist from https://vercel.com/font
2. Download Monaspace from https://github.com/githubnext/monaspace/releases
3. Extract and copy the `.otf` files to this directory
## Usage in Iced
Fonts will be embedded at compile time using `include_bytes!()` and loaded via Iced's font system.

View File

@@ -0,0 +1,20 @@
#!/bin/bash
set -e
echo "Downloading Geist font..."
curl -L "https://github.com/vercel/geist-font/releases/latest/download/Geist.zip" -o Geist.zip
unzip -q Geist.zip
cp Geist/static/Geist-Regular.otf ./
cp Geist/static/Geist-Medium.otf ./
cp Geist/static/Geist-SemiBold.otf ./
rm -rf Geist Geist.zip
echo "Downloading Monaspace..."
curl -L "https://github.com/githubnext/monaspace/releases/latest/download/monaspace-v1.101.zip" -o monaspace.zip
unzip -q monaspace.zip
cp monaspace-v1.101/fonts/otf/MonaspaceNeon-Regular.otf ./
cp monaspace-v1.101/fonts/otf/MonaspaceNeon-SemiBold.otf ./
rm -rf monaspace-v1.101 monaspace.zip
echo "Fonts downloaded successfully!"
ls -lh *.otf