Releases: Provable-Games/game-components
Releases · Provable-Games/game-components
v1.1.3
Changes
- Remove global token enumeration from EnumerableComponent (#91)
- Removed
total_supply(),token_by_index(),Enumerable_all_tokens,Enumerable_all_tokens_len - Replaced OZ
IERC721Enumerablewith customIEnumerableOwnerinterface (onlytoken_of_owner_by_index) - New SRC5 interface ID:
IENUMERABLE_OWNER_ID - Saves 2 storage writes per mint
- Removed
Breaking changes
- Contracts using
EnumerableComponentno longer exposetotal_supply()ortoken_by_index() - SRC5 interface ID changes from
IERC721_ENUMERABLE_IDtoIENUMERABLE_OWNER_ID - Consumers should switch from
IERC721EnumerableDispatchertoIEnumerableOwnerDispatcher
v1.1.2
What's Changed
- feat: add felt252 ERC721Enumerable extension (#83) — Drop-in replacement for OZ's
ERC721EnumerableComponentthat usesfelt252for internal storage instead ofu256, saving ~2x gas per storage operation. External interface remainsIERC721Enumerable(u256) for full compatibility with existing consumers.
New files
packages/embeddable_game_standard/src/token/extensions/enumerable/—EnumerableComponentpackages/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
What's Changed
- feat: SVG text truncation and overflow protection (#81)
- fix: remove unused
Intoimport 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
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_playablewith specific error messages for each failure reason- Removed blank token support —
game_addressnow required on mint
Game Standard
- Objectives decoupled from settings (standalone, same level)
on_game_actioncallback (renamed fromon_score_update)- Game versioning support
- Key-value pairs changed to felt252 for gas efficiency
Metagame Extensions
- Leaderboard: hooks pattern, u32 positions,
context_idgeneralization - 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_feltconversion, 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
This is the initial release of the Game Components and denshokan contract deployed on mainnet.