Releases: evmnow/dapp
Release list
@evmnow/dapp@0.2.4
@evmnow/dapp@0.2.3
Patch Changes
- Updated dependencies [
ccec8b0]:- @evmnow/contract-reader@0.7.0
@evmnow/contract-reader@0.8.0
Minor Changes
-
5100264Thanks @jwahdatehagh! - New public composables and a component that extract generic reader orchestration out of consuming apps:useContractReaderView— the shared reader-page orchestration: tab derivation from the ABI, view-state mapping overuseReaderQueryState, wallet-gated action filtering, function source selection, overview stat links, and read-error bookkeeping (including clearing call errors on navigation and refetching metadata off discrete chain-id/RPC watch sources). Hosts wire it to their own wallet/metadata configuration and keep only branding and layout in the page.useTokenAmountMeta— token metadata resolution for amount-like params: resolves token identity (decimals/symbol, lowercased-address keyed, in-flight deduplicated) and connected-wallet balances, and derives per-input amount rendering/parsing info.ActionResultPanel(components/Action/ResultPanel.vue) — the read-result live region previously inlined inActionDetail, rendering loading/fields/single-value/error states with theaddressslot passthrough.
ActionDetailand the playground/reader pages now consume these; behavior is unchanged.
Patch Changes
-
99aa30aThanks @jwahdatehagh! - The action detail's vertical rhythm is now owned entirely by its grid gap (--cr-action-detail-gap) instead of a mix of gap and per-block margins. Grid auto-rows don't reliably include child margins in track sizing — a margined block (e.g. a custom_componentcard) could overflow its row and swallow the next section's spacing, making the gap above the source link inconsistent. Child margins inside.cr-action-detailare now neutralized, and every section — results, previews, custom components — gets the same separation. Tune spacing via--cr-action-detail-gap. -
5100264Thanks @jwahdatehagh! - Upgrade @evmnow/sdk to ^0.7.0: fixed Sourcify v2 integration (runtimeBytecode), chain-scoped metadata repository lookups, hardened merge/ENS/address handling, and new modular exports. -
5100264Thanks @jwahdatehagh! - A round of correctness, security, performance, accessibility and packaging fixes across the reader:- Reads are now guarded by a request-generation counter (and action details are keyed per action), so switching actions while a read is in flight can no longer write a stale result or error into the new action's view.
- Malformed
min/maxbounds in payable value validation metadata no longer throw and break rendering — unparseable bounds are ignored. A non-empty transaction value that doesn't parse as ETH now shows a visible error and disables sending even without a metadata validation rule. writeContractFunctionstring values are now always ETH-denominated ("1"used to be treated as 1 wei while"1.5"was 1.5 ETH); bigints remain wei.- Token info is keyed by lowercased address on both write and read, so checksummed metadata addresses resolve the same entry, and concurrent token metadata lookups are deduplicated in flight.
- Amount-like tuple members now render the same human-decimal amount input that arg building scales on submit, instead of silently multiplying raw input by 10^decimals.
- External metadata URLs are scheme-allowlisted (
https:/http:/data:image/*) before binding intoimg/iframe/asinks, and metadata-supplied validation regexes are length-capped and compiled once (invalid patterns are ignored) to mitigate ReDoS. - Shiki (and the solidity grammar) now loads lazily when a source view first renders instead of shipping in the initial chunk, and token metadata gateway fetches time out after 15s instead of hanging forever.
- Inputs are associated with real labels and expose
aria-describedby/aria-invalid; read results/errors announce via a polite live region; card expanders exposearia-expanded/aria-controls; preview toggles exposearia-pressed; the copy button shows a brief failed state when clipboard access is denied. - Packaging:
nuxt/vueare declared as peer dependencies,viemmoved to a caret range compatible with@wagmi/core's peer range, and the deep import into the wallet layer's ENS cache is isolated behind a single adapter module.
@evmnow/contract-reader@0.7.0
Minor Changes
-
ccec8b0Thanks @jwahdatehagh! - Host-extensibility release — everything a consuming app previously had to work around is now a first-class API:- msg.value is exposed: a new
value-fieldslot (withvalue/setValue/meta/label/disabled/errorscope) lets hosts render their own payable-value input, and theactionsslot scope now includesvalue(ETH string) andvalueWeifor confirmation previews. - Tuple-aware
fieldslot: the slot scope now exposes the full input record (values,errors,setValue) plus the resolvedamountinfo, so hosts can render tuple members and amount inputs over layer state instead of mirroring it. - Robust read triggers: reads triggered while one is in flight are queued instead of dropped; a changed
readFunctionidentity refreshes a displayed result (time-travel/block pickers); newautoReadWithArgsprop auto-executes parameterized reads when hydratedargsfill the form validly (deep links);ActionDetailexposesread()via template ref. - Semantic input widgets:
enum(select),slider(range),date/datetime/timestamp(pickers storing unix seconds, ISO for string params, timezone-safe),duration(amount + unit, seconds storage), andbytes32-utf8(text stored as right-padded hex, no stale value on overflow) — inActionInput, shared by all consumers. _componentextension registry:registerActionComponent(type, component)+resolveActionComponent(meta)(utils/custom-components);ActionDetailrenders registered components in its preview area with{ value, config, args, address, abi, action }, and exposescustomComponent/customArgsin thepreviewslot scope.- Injectable token resolution: a
resolveTokenInfoprop (onActionDetail/ActionPanel/ActionCards) replaces the built-in per-tokeneth_calls, e.g. with an indexer API;readFunctionremains the fallback. - Types align with the SDK:
types/metadatanow re-exports the document types from@evmnow/sdk(withSemanticTypealiasingParamType), keeping only the layer-specificParamMeta.componentsand_componentextensions local. Requires@evmnow/sdk >= 0.6.0.
- msg.value is exposed: a new
@evmnow/dapp@0.2.2
Patch Changes
- Updated dependencies [
918c7f2]:- @evmnow/contract-reader@0.6.0
@evmnow/dapp@0.2.1
Patch Changes
-
d0f2c59Thanks @jwahdatehagh! - Move the generic reader glue from the app into the layer so any consumer gets a complete, wireable contract reader:useContractWallet— wallet-layer wiring forreadFunction/writeFunction, SDKmetadataOptions/metadataFetch(moved from the dapp; now falls back to the wallet layer's main chain).useTokenMetadataResolver— token-URI metadata resolution with gateways fromappConfig.evm.useReaderQueryState— query-param reader state machine with configurable views.utils/provider-rpc—createProviderRpcFetch/PROVIDER_RPC_URLviem-client-to-fetch bridge.ActionPanelcomponent — the responsive list+detail / cards composition (formerly the dapp'sContractActions), with slot pass-through toActionDetail(also added toActionCards).types/view— sharedContractView/ContractViewState/ReaderQueryStatetypes.ContractReadParamsgains optionalblockNumberfor historical reads.Sourceaccepts ahighlightfunction prop;utils/syntaxaddsloadSyntaxTheme/setSyntaxThemeand a theme argument onhighlightSolidity.- The layer stylesheet now owns all
.cr-*structural and default visual rules (shell/header/tabs, action items, cards, inputs, warnings, copy button, form-item fixes); apps only remap--cr-*tokens. - Ship
LICENSEwith the package.
The dapp now contains only branding, routing, RPC-settings UX and theme token remaps; wagmi/viem are no longer direct dependencies.
-
Updated dependencies [
d0f2c59]:- @evmnow/contract-reader@0.5.0
@evmnow/contract-reader@0.6.0
Minor Changes
-
918c7f2Thanks @jwahdatehagh! - Resolve legacy ZeppelinOS (pre-EIP-1967) proxies via@evmnow/sdk0.4.0.Contracts like Circle's USDC (
FiatTokenProxy) store their implementation atkeccak256('org.zeppelinos.proxy.implementation')and previously surfaced only the proxy's own ABI — the read/interact views showed the upgrade/admin functions instead of the implementation's. They now resolve through the standard proxy pipeline, so the ERC-20 functions (with their NatSpec) appear as expected.
@evmnow/contract-reader@0.5.0
Minor Changes
-
d0f2c59Thanks @jwahdatehagh! - Move the generic reader glue from the app into the layer so any consumer gets a complete, wireable contract reader:useContractWallet— wallet-layer wiring forreadFunction/writeFunction, SDKmetadataOptions/metadataFetch(moved from the dapp; now falls back to the wallet layer's main chain).useTokenMetadataResolver— token-URI metadata resolution with gateways fromappConfig.evm.useReaderQueryState— query-param reader state machine with configurable views.utils/provider-rpc—createProviderRpcFetch/PROVIDER_RPC_URLviem-client-to-fetch bridge.ActionPanelcomponent — the responsive list+detail / cards composition (formerly the dapp'sContractActions), with slot pass-through toActionDetail(also added toActionCards).types/view— sharedContractView/ContractViewState/ReaderQueryStatetypes.ContractReadParamsgains optionalblockNumberfor historical reads.Sourceaccepts ahighlightfunction prop;utils/syntaxaddsloadSyntaxTheme/setSyntaxThemeand a theme argument onhighlightSolidity.- The layer stylesheet now owns all
.cr-*structural and default visual rules (shell/header/tabs, action items, cards, inputs, warnings, copy button, form-item fixes); apps only remap--cr-*tokens. - Ship
LICENSEwith the package.
The dapp now contains only branding, routing, RPC-settings UX and theme token remaps; wagmi/viem are no longer direct dependencies.
@evmnow/dapp@0.2.0
Minor Changes
-
6022259Thanks @jwahdatehagh! - Support setting the RPC from a URL query parameter.Links can now pass an RPC endpoint per chain using the dappspec
ds-rpc-<chainId>convention, e.g.?ds-rpc-1=https%3A%2F%2Frpc.example.org. The override takes priority over locally saved settings for the duration of the session and is never persisted. Ads-rpc-1endpoint is also used for.ethENS resolution, and both the reader and the settings page show a notice while an override is active.
Patch Changes
-
e552f41Thanks @jwahdatehagh! - Align amount-input prefix/suffix segments with the reader theme. The form-item group now carries the input border, and the segments no longer draw their own outset ring taller than the field they belong to. -
e552f41Thanks @jwahdatehagh! - Hide actions locked to the connected wallet while no wallet is connected.An action whose hidden or disabled parameter (or transaction value) autofills from
connected-address— like the ERC-20 interface's "My Balance" — cannot be invoked without a wallet. The newactionRequiresConnectedWallet()util identifies such actions, and the dapp now omits them from the action list until a wallet connects. -
Updated dependencies [
e552f41,e552f41,e552f41,e552f41]:- @evmnow/contract-reader@0.4.0