Repository navigation
Conversation
- receipt --event <sig> (repeatable) decodes logs against cast-style event signatures; unmatched logs pass through raw, selector matches with the wrong topic count warn on stderr (closes #11) - wallet balance prints SBC:, RUSD: and Total: on separate lines (closes #7) - wallet password re-encrypts the keystore under a new password, keeping the key; the auto-create notice points to it instead of wallet new --force, and keystores are written via temp file + rename. Creation stays non-interactive (closes #1) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0168UCoE4YkJyyaAW9RdKdLo
Contributor
🦋 Changeset detectedLatest commit: fd04a56 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Contributor
erikzrekz
marked this pull request as ready for review
October 27, 2026 19:58
azf20
reviewed
Oct 28, 2026
azf20
left a comment
Contributor
There was a problem hiding this comment.
Review notes inline — the main ones are receipt --event hiding reverts and the RADIUS_NEW_PASSWORD empty-value path.
…e writes - receipt --event prints Status and exits 1 on a reverted transaction - wallet password: RADIUS_NEW_PASSWORD needs 8+ characters, --remove is the only way to strip the password, a passwordless keystore decrypts with '' even when RADIUS_PASSWORD is exported, decrypt failures name the source - saveKeystore: unique tmp name opened 'wx' at 0o600, fsync before rename, writes through a symlinked path to its target, tmp cleaned up on failure - wallet balance: amount plus asset per line, SBC error kept to one line - events: reuse findMatchingClose (rejects trailing content), errDetail helper, RawLogEntry = RawLog, document the indexed-position caveat Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0168UCoE4YkJyyaAW9RdKdLo
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses all three open issues.
#11 —
receipt --event <sig>src/lib/events.ts:parseEventSignatureanddecodeLogs.eventprefix.findMatchingClosefromsignature.ts, so trailing content and malformed signatures fail with a clear error.topics[0]equals the event's selector and its topic count matches the number ofindexedparams. That count also separates ERC-20Transferfrom ERC-721Transfer, which share a selector.indexed), or the data doesn't decode, the log stays raw and a warning goes to stderr. Logs that match no signature pass through raw and are never dropped.--jsonprints an array:{address, logIndex, eventName, args}for decoded logs and{address, logIndex, topics, data}for raw ones. Args follow signature order; unnamed params are keyed by position; bigints are decimal strings.Status:. On a reverted transaction the command writes an error to stderr and exits 1, so a revert never reads as "no matching events".#7 — greppable balance
wallet balancewithout--jsonnow prints one line per asset, each written as amount plus asset:If the SBC read fails, that line shows only the first line of the error.
--jsonis unchanged. The changeset marks this as Breaking for scripts that parse human output. The now-unusedformatUsdShortis removed.#1 — password for the auto-created wallet
Following the discussion on the issue, creating a keystore still never prompts, so agents don't block. The gap was the recovery path: the notice and README pointed to
wallet new --force, which replaces the key and strands any funds on the old address. This PR adds:wallet password: re-encrypts the keystore under a new password and keeps the same key and address.RADIUS_NEW_PASSWORD, at least 8 characters, makes it non-interactive. An empty value is rejected.--removeis the only way to strip the password.''even whenRADIUS_PASSWORDis exported. A decrypt failure names the source of the wrong password.wallet passwordand toRADIUS_PASSWORD.saveKeystorewrites a uniquely named temp file (opened'wx'at0o600), fsyncs it, then renames it into place. If the keystore path is a symlink, it writes to the link's target and keeps the link.Docs, changeset, skills
docs/pages/reference/radius-cli.mdxupdated.radius-climinor.wallet balance --jsonandreceipt <tx>, and neither changed. The new commands aren't on npm yet, so the skills don't name them and the plugin version isn't bumped.Validation
pnpm build,pnpm typecheck,pnpm test(cli: 85 tests, covering event decoding, balance formatting, keystore password changes, symlinks and temp-file cleanup)format:check,lint,typecheck:docs,docs:validate,test:skills,docs:markdown-audit,build,docs:agent-check,docs:sitemap-checkreceipt --eventoutput, the missing-indexedwarning and the exit code on a revert.wallet passwordpath end to end on a throwawayRADIUS_HOME: empty env value, exportedRADIUS_PASSWORD, wrong current password,--remove. Nothing was spent from a funded wallet.Closes #11
Closes #7
Closes #1
🤖 Generated with Claude Code
https://claude.ai/code/session_0168UCoE4YkJyyaAW9RdKdLo