July 16, 2025
CLI v0.0.79

Breaking Change: Generated Struct Names Now Include Contract Names

With CLI version v0.0.79 and upwards, there will be a breaking change that impacts users who import and use generated structs from the ABI.

Why this change was needed: The same struct name can be used across different contracts (example: GPv2Trade.Data and GPv2Interaction.Data within the same ABI) with different definitions. Using just the struct name for generated structs prevented proper triggering on protocols like CoW Swap.

What changed: We now include the contract name as part of the struct name in the generated Solidity file associated with the ABI. Instead of using $AbiName$StructName for the names, we now use $AbiName$ContractName$StructName.

Impact: If you have imported a generated struct, you’ll need to update the name to include the contract name the next time you run codegen. This doesn’t impact the default inputs/outputs/context structs, so most users won’t encounter this issue.

Who is affected: You’ll only run into this issue if you:

  • Update to use CLI v0.0.79 or higher
  • Add a new ABI or manually run a new codegen
  • AND you’ve been using generated structs that aren’t the ones provided in the trigger inputs/outputs object (i.e., you’re using a nested struct from the inputs/outputs for some variable or part of the event)
July 15, 2025
CLI v0.0.78

New Feature: Multiple Listener Contracts Support

The Sim CLI now supports defining multiple listener contracts within a single IDX application, enabling better code organization and structure.

What’s new:

  • You can now define listeners in separate files instead of having everything in Main.sol
  • Listeners can be organized across multiple contracts for better code maintainability
  • The Main.sol file still needs to contain the Triggers contract, but individual listeners can be defined anywhere
  • Enhanced sim listeners evaluate command to target specific listeners for focused testing

Benefits:

  • Better Code Organization: Split large applications with many listeners into manageable, separate files
  • Improved Maintainability: Organize related listeners together (e.g., all DEX-specific listeners in one file)
  • Focused Testing: Evaluate specific listeners without noise from other listeners in your application

Migration:

  • Existing single-file applications continue to work without changes
  • Main.sol must still exist and contain your Triggers contract
  • Listener contracts can be moved to separate files as needed

This feature is particularly valuable for complex applications like DEX trade indexers that may have 15+ listeners and benefit from better file organization.

July 4, 2025
CLI v0.0.73

New Feature: Pre-Execution Triggers

The Sim CLI now supports pre-execution triggers, allowing you to execute code before a function runs instead of the default behavior of executing after.

What’s new:

  • Pre-triggers use corresponding Pre- abstract contracts (e.g., preCreatePoolFunction)
  • Handlers receive a PreFunctionContext with access to function inputs only (outputs haven’t been generated yet)
  • Enables reactive logic that needs to run before the target function executes

Use cases:

  • Emit events or perform actions based on upcoming function calls
  • Pre-process or validate function inputs before execution
  • Set up state or conditions that the main function execution will depend on

For detailed implementation examples and usage patterns, see the Function Triggers documentation.