@latticexyz/block-logs-stream
Advanced tools
Changelog
Version 2.2.20
Release date: Tue Feb 11 2025
feat(explorer): wrap table names in double quotes by default (#3588) (@latticexyz/explorer)
Table names in SQL queries are now automatically enclosed in double quotes by default, allowing support for special characters.
feat(world-consumer): convert store-consumer package into world-consumer (#3584) (@latticexyz/world-module-erc20)
Migrated from store-consumer
to world-consumer
.
refactor(world): add default-reverting methods to Module (#3581) (@latticexyz/world-module-callwithsignature, @latticexyz/world-module-erc20, @latticexyz/world-module-metadata, @latticexyz/world-modules)
Removed unsupported install methods as these now automatically revert in the base Module
contract.
feat: install module with delegation (#3586) (@latticexyz/cli, @latticexyz/world)
Added useDelegation
module config option to install modules using a temporary, unlimited delegation. This allows modules to install or upgrade systems and tables on your behalf.
feat(world): generate system libs (#3587) (@latticexyz/world)
Added experimental system libraries for World systems for better ergonomics when interacting with core systems.
Note that these libraries are marked experimental as we may make breaking changes to their interfaces.
import { worldRegistrationSystem } from "@latticexyz/world/src/codegen/experimental/systems/WorldRegistrationSystemLib.sol";
// equivalent to `IBaseWorld(_world()).registerNamespace("hello")` but directly routed through `world.call` for better gas.
worldRegistrationSystem.registerNamespace("hello");
// and makes delegation use cases easier
worldRegistrationSystem.callFrom(_msgSender()).registerNamespace("hello");
refactor(world): add default-reverting methods to Module (#3581) (@latticexyz/world)
The base Module
contract now includes default implementations of install
and installRoot
that immediately revert, avoiding the need to implement these manually in each module.
If you've written a module, you may need to update your install methods with override
when using this new base contract.
-function install(bytes memory) public {
+function install(bytes memory) public override {
-function installRoot(bytes memory) public {
+function installRoot(bytes memory) public override {
fix(cli): use execa directly instead of custom foundry wrappers (#3582) (@latticexyz/cli)
Fixed forge/anvil/cast output for all CLI commands.
feat: install module with delegation (#3586) (@latticexyz/cli, @latticexyz/world-module-metadata)
Metadata module has been updated to install via delegation, making it easier for later module upgrades and to demonstrate modules installed via delegation.
feat(world): generate system libs (#3587) (@latticexyz/store)
Updated IStoreRegistration
interface to allow calling registerTable
with keyNames
and fieldNames
from memory
rather than calldata
so this can be called with names returned by table libraries.
feat: install module with delegation (#3586) (@latticexyz/world)
Updated encodeSystemCalls
and encodeSystemCallsFrom
to include the abi
in each call so that different systems/ABIs can be called in batch. Types have been improved to properly hint/narrow the expected arguments for each call.
-encodeSystemCalls(abi, [{
+encodeSystemCalls([{
+ abi,
systemId: '0x...',
functionName: '...',
args: [...],
}]);
-encodeSystemCallsFrom(from, abi, [{
+encodeSystemCallsFrom(from, [{
+ abi,
systemId: '0x...',
functionName: '...',
args: [...],
}]);
feat(world-consumer): convert store-consumer package into world-consumer (#3584) (@latticexyz/world-consumer)
Renamed store-consumer
package to world-consumer
. The world-consumer
package now only includes a single WorldConsumer
contract that is bound to a World
.
Changelog
Version 2.2.19
Release date: Thu Feb 06 2025
fix(entrykit): improve fee handling (#3577) (@latticexyz/entrykit)
Improved fee handling for known chains.
Changelog
Version 2.2.18
Release date: Wed Feb 05 2025
fix(explorer): enable editing internal namespace tables (#3553) (@latticexyz/explorer)
Tables under internal namespace are now editable.
chore(explorer): handle tuples in interact form (#3464) (@latticexyz/explorer)
In the Interact tab, functions with tuple arguments can now be submitted. Additionally, function input fields display the tuple name when available and indicate tuple argument types.
feat: bump to node 20 (#3456) (create-mud)
Updated templates to Node v20.
fix(vite-plugin-mud): start block as number (#3555) (create-mud, vite-plugin-mud)
Fixed an issue with providing world deploy's start block to Vite app's env.
fix(explorer): use table name helper from sqlite package (#3542) (@latticexyz/explorer)
Fixed an issue with how MUD table names were translated SQLite table names when querying.
chore(store-indexer): start frontend with decoded backend (#3572) (@latticexyz/store-indexer)
pnpm start:postgres-decoded
now starts both the indexer backend and frontend.
fix(entrykit): require bundler (#3570) (@latticexyz/entrykit)
Using EntryKit without a configured bundler will now throw an error.
Redstone, Garnet, Rhodolite, and Anvil chains come preconfigured. For other chains, you can a bundler RPC URL to your chain config via
import type { Chain } from "viem";
const chain = {
...
rpcUrls: {
...
bundler: {
http: ["https://..."],
},
},
} as const satisfies Chain;
refactor(store-consumer): adapt WithWorld to be a System (#3546) (@latticexyz/store-consumer, @latticexyz/store, @latticexyz/world-module-erc20, @latticexyz/world)
Updates WithWorld
to be a System
, so that functions in child contracts that use the onlyWorld
or onlyNamespace
modifiers must be called through the world in order to safely support calls from systems.
refactor(world-module-erc20): change erc20 module table names to pascal case (#3544) (@latticexyz/world-module-erc20)
Updated table names to pascal case for consistency.
feat(explorer): loading indicator for refetched query (#3552) (@latticexyz/explorer)
Display a loading indicator on the query execution button while refetching a non-live query.
refactor(entrykit): improve error handling (#3574) (@latticexyz/entrykit)
Improved error handling.
fix(entrykit): session client uses smart account (#3547) (@latticexyz/entrykit)
Clarified SessionClient
type as using a SmartAccount
under the hood so that it can be used with smart account-related Viem actions.
fix(entrykit): require bundler (#3570) (@latticexyz/common)
Added bundler RPC URL to Garnet chain config.
fix(store-sync): skip invalid utf-8 characters in strings before inserting into postgres (#3562) (@latticexyz/store-sync)
Since Postgres doesn't support \x00
bytes in strings, the decoded postgres indexer now removes \x00
bytes from decoded strings.