Skip to content

Releases: snowfrogdev/bobbin

Bobbin VS Code Extension v0.3.0

02 Feb 17:09
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Full Changelog: vscode-v0.3.0...vscode-v0.3.0

What's New

Commands System

Dialogue scripts can now trigger game effects through commands — fire-and-forget function calls from dialogue to your game:

extern give_item(name, count)
extern play_sound(name)

You found a treasure chest!
give_item("gold_coin", 50)
play_sound("chest_open")
Take these coins as a reward.

Commands are declared with extern (like host variables) but include parameters. The runtime validates arity at compile time — calling give_item("sword") when it expects 2 arguments produces a clear error.

GDScript Integration

Pass command handlers to Bobbin.create():

var runtime = Bobbin.create(
    "res://dialogue/quest.bobbin",
    {},  # saved_variables
    {"player_name": "Hero", "gold": 100},  # host_state
    {    # commands
        "give_item": func(args): inventory.add(args[0], int(args[1])),
        "play_sound": func(args): AudioManager.play(args[0]),
    }
)

Live Host State

Changes to the host_state dictionary are now immediately visible to the runtime. When a command handler updates host state, subsequent dialogue lines see the new values without explicit sync:

func _on_give_gold(args):
    var amount = int(args[0])
    _host_state["gold"] += amount  # Runtime sees this immediately
give_gold(100)
You now have {gold} gold.  # Shows updated value

Other Changes

  • Syntax highlighting for command invocations in Godot editor
  • Improved error messages for command-related issues
  • Fixed WASM build compatibility with recent Rust toolchain changes

Upgrade Notes

This release is backwards compatible. Existing scripts without commands continue to work unchanged.

Bobbin Godot Addon v0.4.0

02 Feb 18:27
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Full Changelog: vscode-v0.3.0...godot-addon-v0.4.0

What's New

Commands System

Dialogue scripts can now trigger game effects through commands — fire-and-forget function calls from dialogue to your game:

extern give_item(name, count)
extern play_sound(name)

You found a treasure chest!
give_item("gold_coin", 50)
play_sound("chest_open")
Take these coins as a reward.

Commands are declared with extern (like host variables) but include parameters. The runtime validates arity at compile time — calling give_item("sword") when it expects 2 arguments produces a clear error.

GDScript Integration

Pass command handlers to Bobbin.create():

var runtime = Bobbin.create(
    "res://dialogue/quest.bobbin",
    {},  # saved_variables
    {"player_name": "Hero", "gold": 100},  # host_state
    {    # commands
        "give_item": func(args): inventory.add(args[0], int(args[1])),
        "play_sound": func(args): AudioManager.play(args[0]),
    }
)

Live Host State

Changes to the host_state dictionary are now immediately visible to the runtime. When a command handler updates host state, subsequent dialogue lines see the new values without explicit sync:

func _on_give_gold(args):
    var amount = int(args[0])
    _host_state["gold"] += amount  # Runtime sees this immediately
give_gold(100)
You now have {gold} gold.  # Shows updated value

Other Changes

  • Syntax highlighting for command invocations in Godot editor
  • Improved error messages for command-related issues
  • Fixed WASM build compatibility with recent Rust toolchain changes

Upgrade Notes

This release is backwards compatible. Existing scripts without commands continue to work unchanged.

Bobbin VS Code Extension v0.2.0

26 Jan 22:09
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Full Changelog: vscode-v0.1.0...vscode-v0.2.0

New Features

Conditional Syntax Support

Full syntax highlighting and language server support for if/elseif/else blocks:

if gold >= 100
    You can afford the premium item!
elseif gold >= 50
    You can afford the standard item.
else
    You need more gold.

Expression Support Everywhere

  • Arithmetic operators: +, -, *, /, %
  • Comparison operators: ==, !=, <, <=, >, >=
  • Logical operators: and, or, not
  • Parentheses for grouping: (a + b) * c

Use expressions in variable assignments:

set total = price * quantity
temp discount = base_price - (base_price * 0.1)

And in string interpolations:

You have {gold} gold. That item costs {price * quantity} gold.
Your balance after purchase: {gold - price}

Enhanced Syntax Highlighting

  • Conditional keywords (if, elseif, else)
  • Logical operators (and, or, not)
  • Comparison and arithmetic operators
  • Improved expression highlighting inside {...} interpolations

Improved Diagnostics

The language server now provides better error messages for:

  • Invalid expressions
  • Type mismatches in conditions
  • Malformed conditional blocks

Bug Fixes

  • Fixed scanner issue with choices inside if blocks that have else clauses

Bobbin Godot Addon v0.3.0

26 Jan 22:17
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Full Changelog: godot-addon-v0.2.0...godot-addon-v0.3.0

New Features

Conditional Syntax Support

Full syntax highlighting and language server support for if/elseif/else blocks:

if gold >= 100
    You can afford the premium item!
elseif gold >= 50
    You can afford the standard item.
else
    You need more gold.

Expression Support Everywhere

  • Arithmetic operators: +, -, *, /, %
  • Comparison operators: ==, !=, <, <=, >, >=
  • Logical operators: and, or, not
  • Parentheses for grouping: (a + b) * c

Use expressions in variable assignments:

set total = price * quantity
temp discount = base_price - (base_price * 0.1)

And in string interpolations:

You have {gold} gold. That item costs {price * quantity} gold.
Your balance after purchase: {gold - price}

Enhanced Syntax Highlighting

  • Conditional keywords (if, elseif, else)
  • Logical operators (and, or, not)
  • Comparison and arithmetic operators
  • Improved expression highlighting inside {...} interpolations

Improved Diagnostics

The language server now provides better error messages for:

  • Invalid expressions
  • Type mismatches in conditions
  • Malformed conditional blocks

Bug Fixes

  • Fixed scanner issue with choices inside if blocks that have else clauses

Bobbin VS Code Extension v0.1.0

31 Dec 17:52
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

The first release of the official Bobbin extension for Visual Studio Code!

Features

Syntax Highlighting

  • Full syntax highlighting for .bobbin files
  • Colorizes variable declarations (save, temp, extern), assignments (set), dialogue text, choices, string interpolations {}, and comments

Error Diagnostics

  • Real-time error detection powered by the Bobbin Language Server
  • Undefined variable references with "did you mean?" suggestions
  • Variable shadowing warnings
  • Assignment to read-only extern variables
  • Parse errors with precise line/column locations

Autocomplete

  • Context-aware code completion
  • Suggests declared variables (temp, save, extern)
  • Suggests keywords (save, temp, set, extern) and boolean literals (true, false)
  • Smart filtering: only shows variables inside interpolations {}

Zero Setup

  • Bundled language server for all platforms (Windows, macOS, Linux)
  • No additional installation required — just install and go!

Commands

  • Bobbin: Restart Language Server — Restart the LSP if needed

Configuration

Setting Description
bobbin.lsp.path Custom path to bobbin-lsp executable
bobbin.trace.server LSP trace level (off, messages, verbose)

Full Changelog: godot-addon-v0.1.0...vscode-v0.1.0

Bobbin Godot Addon v0.2.0

31 Dec 17:02
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

New Features

Syntax Highlighting

  • Full syntax highlighting for .bobbin files in Godot's script editor
  • Colorizes variable declarations (save, temp, extern), assignments (set), dialogue text, choices, interpolations, and comments

Autocomplete

  • Context-aware code completion in the script editor
  • Suggests declared variables (temp, save, extern)
  • Suggests keywords (save, temp, set, extern) and boolean literals (true, false)
  • Smart filtering: only shows variables inside interpolations {}

Improved Diagnostics

  • ASCII-formatted error messages in the output panel
  • Clear visual indicators with line/column markers
  • Helpful notes and suggestions (e.g., "did you mean 'gold'?")

Bug Fixes

  • Fixed color bleeding between syntax tokens in the script editor

Internal

  • Extracted bobbin-syntax crate for shared analysis between Godot and LSP
  • Added editor-tooling feature flag for editor-specific functionality

Full Changelog: godot-addon-v0.1.0...godot-addon-v0.2.0

Bobbin Godot Addon v0.1.0

22 Dec 02:44
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

🎉 Initial Release — A narrative scripting language for branching dialogue and interactive stories in Godot 4.3+

Highlights

Bobbin brings a clean, writer-friendly syntax for creating interactive dialogue in your Godot games. This first release includes a complete runtime, Godot integration, and cross-platform support.

Features

Language

  • Dialogue scripting — Simple, indentation-based syntax for writing branching narratives
  • Choice sets — Support for player choices with nested branching paths
  • Variable system — Three variable scopes:
    • temp — Session-scoped variables (cleared on restart)
    • save — Persistent variables (survive save/load)
    • extern — Read-only variables provided by the host game
  • String interpolation — Embed variables in dialogue with {variable_name} syntax
  • Assignment statements — Modify variables with the set keyword

Godot Integration

  • GDExtension-based — Native performance via Rust and gdext
  • ScriptLanguageExtension — Full editor support for .bobbin files
  • Simple APIfrom_string(), advance(), select_choice(), and more
  • Custom script icon — Bobbin files are easily identifiable in the editor

Developer Experience

  • Rich error messages — Rust-quality diagnostics with source spans and context
  • Cross-platform builds — Windows, Linux, macOS, and Web (WASM)
  • Comprehensive test suite — Runtime tests and Godot smoke tests

Installation

  1. Download bobbin-godot-addon-0.1.0.zip from this release
  2. Extract to your Godot project root (creates addons/bobbin/)
  3. Enable the plugin in Project → Project Settings → Plugins

macOS users: You may need to remove the quarantine attribute:

xattr -dr com.apple.quarantine addons/bobbin/bin/

Example

save gold = 100
temp greeted = false
extern player_name

Welcome, {player_name}!
- Buy sword
    set gold = 50
    You bought a sword.
- Leave
    Goodbye!

What's Next

Planned for future releases:

  • Character/speaker management
  • Localization support
  • Event triggering/callbacks
  • Language Server Protocol (LSP) support

Full Changelog

https://github.com/snowfrogdev/bobbin/commits/godot-addon-v0.1.0