Skip to content

Releases: Provable-Games/game-components

v1.1.3

06 Apr 17:29

Choose a tag to compare

Changes

  • Remove global token enumeration from EnumerableComponent (#91)
    • Removed total_supply(), token_by_index(), Enumerable_all_tokens, Enumerable_all_tokens_len
    • Replaced OZ IERC721Enumerable with custom IEnumerableOwner interface (only token_of_owner_by_index)
    • New SRC5 interface ID: IENUMERABLE_OWNER_ID
    • Saves 2 storage writes per mint

Breaking changes

  • Contracts using EnumerableComponent no longer expose total_supply() or token_by_index()
  • SRC5 interface ID changes from IERC721_ENUMERABLE_ID to IENUMERABLE_OWNER_ID
  • Consumers should switch from IERC721EnumerableDispatcher to IEnumerableOwnerDispatcher

v1.1.2

26 Mar 09:22

Choose a tag to compare

What's Changed

  • feat: add felt252 ERC721Enumerable extension (#83) — Drop-in replacement for OZ's ERC721EnumerableComponent that uses felt252 for internal storage instead of u256, saving ~2x gas per storage operation. External interface remains IERC721Enumerable (u256) for full compatibility with existing consumers.

New files

  • packages/embeddable_game_standard/src/token/extensions/enumerable/EnumerableComponent
  • packages/test_common/src/mocks/mock_enumerable.cairo — Test mock
  • 32 tests ported from OpenZeppelin's test suite

Full Changelog: v1.1.1...v1.1.2

v1.1.1

23 Mar 17:10

Choose a tag to compare

What's Changed

  • feat: SVG text truncation and overflow protection (#81)
  • fix: remove unused Into import in svg.cairo
  • fix: cap felt252_to_byte_array at 31 bytes to prevent 'bad append len'
  • feat: add game fee standard (ERC2981-inspired) (#80)
  • refactor: upgrade metagame_extensions to v0.1.1 (#79)

Full Changelog: v1.1.0...v1.1.1

game-components v1.1.0

06 Mar 13:22
6bcb819

Choose a tag to compare

game-components v1.1.0

Architecture

  • 3-layer component pattern: Pure library → Store bridge → Component across all modules
  • Domain-grouped packages: embeddable_game_standard, metagame, economy, utilities, presets
  • Consolidated interfaces package with SNIP-5 compliant interface IDs derived via src5_rs

Token

  • Packed felt252 token IDs with collision prevention
  • Batch minting (mint_batch_recipients) and batch queries (token_full_state_batch)
  • SVG renderer with status badges, 3D card effect, gold cartridge pins, and inline icons
  • Skills extension for per-token agent skills address overrides
  • assert_is_playable with specific error messages for each failure reason
  • Removed blank token support — game_address now required on mint

Game Standard

  • Objectives decoupled from settings (standalone, same level)
  • on_game_action callback (renamed from on_score_update)
  • Game versioning support
  • Key-value pairs changed to felt252 for gas efficiency

Metagame Extensions

  • Leaderboard: hooks pattern, u32 positions, context_id generalization
  • Registration: context-based entry enumeration with split storage
  • Entry Requirement: token/allowlist/extension gating with SRC5 validation
  • Entry Fee: ERC20 deposits with share distribution and selective unpacking
  • Prize: ERC20/ERC721 rewards with claim tracking
  • Ticket Booth: payment-enabled game access with tickets and golden passes

Economy

  • Tokenomics: Ekubo TWAMM buyback and stream token distribution
  • StreamTokenFactory for deployment, premint support

Utilities

  • Fixed-point math (32.32 bit), distribution algorithms (Linear/Exponential/Uniform/Custom)
  • u128_to_ascii_felt conversion, renderer module

Gas Optimizations

  • u128-aligned DivRem StorePacking (~64% savings across 4 implementations)
  • Selective unpacking and split storage for hot paths
  • SVG: inline icons, URL-encoded data URIs (eliminated base64 overhead)

Infrastructure

  • Matrix-based parallel CI (16 modules), split main/pr workflows
  • Codecov integration with per-module coverage flags
  • Score type widened from u32 to u64
  • OpenZeppelin upgraded to v3.0.0 stable

1.0.0

11 Sep 20:45

Choose a tag to compare

This is the initial release of the Game Components and denshokan contract deployed on mainnet.