Files
storybook/docs/SBIR-CHANGELOG.md
Sienna Meridian Satterwhite 16deb5d237 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
2026-02-13 21:52:03 +00:00

169 lines
4.6 KiB
Markdown

# SBIR Changelog
All notable changes to the Storybook Intermediate Representation format.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
---
## [0.2.0] - 2026-02-13
### Added
**Resource Linking System:**
- `BehaviorLink` struct for conditional behavior attachment
- Priority system (Low, Normal, High, Critical)
- Conditional activation via expressions
- Default fallback behavior
- `ScheduleLink` struct for conditional schedule attachment
- First-match conditional selection
- Default fallback schedule
- Extended `Character` with `behavior_links` and `schedule_links` vectors
- Extended `Institution` with `behavior_links` and `schedule_links` vectors
**Year-Long Schedule System:**
- `Schedule.parent_schedule_id` for inheritance
- `Schedule.patterns` for temporal patterns
- `SchedulePattern` enum with three variants:
- `DayPattern` - day-specific blocks
- `SeasonPattern` - seasonal blocks
- `RecurrencePattern` - recurring events
- `RecurrenceSpec` with variants:
- Every N days
- Weekly on specific days
- Monthly on day N
- Annually on month/day
- Pattern-based schedule composition and merging
- User-definable calendar enums (DayOfWeek, Season, Month)
**Behavior Tree Enhancements:**
- Optional `label` field on Selector and Sequence nodes (for debugging)
- Parameterized decorators:
- `DecoratorRepeatN(u32)` - repeat N times
- `DecoratorRepeatRange(u32, u32)` - repeat min..max times
- `DecoratorRetry(u32)` - retry up to N times
- `DecoratorTimeout(u64)` - timeout after milliseconds
- `DecoratorCooldown(u64)` - cooldown period
- `DecoratorIf(Expression)` - conditional if
- `DecoratorSucceedAlways` - always succeed
- `DecoratorFailAlways` - always fail
- Keyword syntax support (choose, then, if, when, repeat, etc.)
### Changed
**Breaking:**
- `ScheduleBlock.name` is now required (was `Option<String>`)
- `ScheduleBlock.start` and `end` changed from `Time` struct to `u16` (minutes since midnight)
- `ScheduleBlock.activity: String` removed, replaced with `behavior_ref: Option<Vec<String>>`
- Binary format version updated from 0x0001 to 0x0002
- Character and Institution sections have different binary layout (added link vectors)
- Schedule section completely redesigned
**Non-breaking:**
- Behavior tree Selector/Sequence nodes extended (backward compatible if label is None)
### Removed
- `ScheduleBlock.activity` field (replaced by `behavior_ref`)
### Deprecated
- None (first formal release)
### Fixed
- None (first formal release)
### Security
- None
---
## [0.1.0] - Implicit (Pre-Release)
Initial format (inferred from codebase, never formally specified).
### Included
- Basic entity storage:
- Characters with species and field maps
- Templates with includes
- Species definitions
- Enums
- Simple schedules:
- Time blocks with activity strings
- Optional block names
- Behavior trees:
- Symbolic syntax (?, >, !, @, ~)
- Basic decorators (repeat with * sigil)
- Action nodes with parameters
- Conditions and subtree references
- Relationships with participants
- Locations
- Life arcs (state machines)
- Institutions
### Known Limitations
- No resource linking (behaviors/schedules hard-coded per entity)
- No schedule patterns (single 24-hour template only)
- No parameterized decorators
- No named behavior tree nodes
- No formal specification document
---
## Migration Notes
### From 0.1.0 to 0.2.0
**Required Actions:**
1. Recompile source files OR
2. Use `storybook-migrate` tool for binary migration
**Key Changes:**
- All schedules must have named blocks
- Activity strings converted to behavior references
- Characters/Institutions gain empty link vectors (if not specified)
- Time values converted to minutes since midnight
**See:** `/docs/SBIR-MIGRATION-GUIDE.md` for detailed instructions.
---
## Version Numbering
SBIR follows semantic versioning:
- **Major** (x.0.0): Incompatible changes requiring migration
- **Minor** (0.x.0): Backward-compatible additions
- **Patch** (0.0.x): Bug fixes, no format changes
**Current:** v0.2.0 (first formal release)
**Next Minor:** v0.3.0 (planned features TBD)
**Next Major:** v1.0.0 (when format stabilizes)
---
## Unreleased
_Track upcoming changes here_
### Planned for v0.3.0
- [ ] Compressed string table option
- [ ] Symbol index for faster lookups
- [ ] Metadata section for tooling info
### Under Consideration
- [ ] Module system for multi-file worlds
- [ ] Asset references (audio, images)
- [ ] Localization support
---
[0.2.0]: https://github.com/your-org/storybook/releases/tag/sbir-v0.2.0
[0.1.0]: (implicit, no release)