Releases: Emurgo/dapp-example
Release list
2.4.0: Quality-focus
Quality-focused release: correctness fixes, a debug logger with a live on/off switch, user-facing error toasts, a first test suite + CI, and a broad internal cleanup. No breaking changes.
✨ Added
- Runtime log toggle — flip debug logging on/off from the browser console without rebuilding:
dappLogs.on()/off()/toggle()/status()/reset()(persists across reloads). - Debug-gated logger — debug/log/info print only in development or when built with REACT_APP_DEBUG=true; warn/error always print. Replaces ~159 scattered console.* calls.
- Error toasts — wallet connect failures (Cardano & Ethereum) now surface a visible banner instead of only logging to the console.
- Tests & CI — Jest + React Testing Library suites (39 tests); a CI workflow runs format-check + lint + tests on every push/PR.
- Tooling & docs — lint / format scripts (+ prettier), an expanded README, and .env.example.
🐛 Fixed
- Network toggle unclickable on the titles — inactive tab panels were overlaying the top of the page and swallowing clicks on the Cardano/Ethereum labels.
- ApiCard button height was silently ignored (Tailwind purged the dynamically-built class).
- Provider "used outside provider" guards never triggered (checked the wrong default).
- NFT metadata chunking could exceed the 64-byte limit on non-ASCII text — now byte-correct.
🔧 Changed (internal)
- Renamed
yoroiProvider→cardanoProvider(useYoroi→useCardano). - Shared connection-state machine (
useConnectionState) across all chains + documented provider contract. - Large DRY pass:
runApiCall(22 cards),InputWithLabel(~22 inputs),useResponseState(7 subtabs),buildCert(8 governance panels), shared address/UTxO/credential/64-byte helpers, and shared UI (ChainStatusMessage,AccessButtonShell). - Memoized the Cardano provider; production builds ship with logging off.
2.3.0: CIP-20
CIP-20 tab for message sending with optional input picker
Guard all
v2.2.4
🐛 Bug Fixes — wallet data & credential parsing
Hardened handling of data returned from the wallet so empty/invalid values no longer crash with opaque Cardano-serialization-lib errors.
-
Wallet array guards — added a shared
firstOrThrow(arr, message)helper and applied it to previously unchecked[0]accesses that could receive an empty array:- Reward address & registered stake key (Withdraw card)
- Used address (Token mint, NFT mint)
Prevents
TypeError: The first argument must be one of type string, Buffer, ...(Buffer.from(undefined)). -
Credential parsing —
handleInputCredsnow throws a clear "Invalid credential — not valid Hex or Bech32" error instead of returningnull. Fixes theexpected instance of Fecrash across all 7 governance-action panels (register/unregister stake key, DRep register/update/retire, vote delegation, CC authorization).
🔧 Maintenance
- Bumped version to 2.2.4.
- Reconciled a pre-existing
package-lock.jsonroot version drift (0.2.1→2.2.4).
PR: #50
SignData Guard
signdata-hotfix
🐛 Bug Fix
- CIP-30 signData card: Fixed an opaque
TypeError: ... Received type undefinedthat occurred when signing with the Address field left empty and the wallet returned no reward address.- Added a guard on the reward-address fallback with a clear message: "No reward address available — enter an address manually".
- Original errors are now rethrown directly instead of being double-wrapped (
Error: Error: ...), preserving the real message and stack.
PR: #49
2.2.2: Merge pull request #47 from Ryun1/fix-sign-tx
fix signTx serialisation to prevent tx hash from changing
2.2.1
Gotta Catch 'Em All!
I became lighter and prettier
2.1.0 Merge branch 'main' into chore/unify-codebase