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
169 lines
4.6 KiB
Markdown
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)
|