Skip to content

Version Packages - #655

Merged
kome12 merged 1 commit into
mainfrom
changeset-release/main
Sep 22, 2026
Merged

kome12 merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

nansen-cli@1.46.0

Minor Changes

  • #667 8dad3b9 Thanks @gulshngill! - trade execute and bridge execute now take --dry-run and --yes. --dry-run runs the sign-free preflight available from the cached quote, its public signer address, and read-only RPC calls; prints the trade or transfer that would be sent (chain, tokens, amounts, recipient, approvals, fees — plus the current allowance and revert simulation on EVM); and stops before wallet credentials or signing: no wallet password needed, the quote is not consumed, exit code 0. Real execution still resolves and revalidates the live signer. When stdin is an interactive terminal, both commands now print that plan and ask Broadcast this transaction? [y/N] before broadcasting; declining exits 1 with nothing signed. --yes (-y) or NANSEN_YES=1 skips the prompt. Non-interactive callers — agents, CI, pipes — are unchanged: they proceed without prompting, and --yes is accepted there as a no-op.

  • #501 5a79f9d Thanks @gulshngill! - Guard wallet export against accidental plaintext key disclosure. The default output is now redacted (addresses only — no decryption, no password needed). Printing private keys to stdout requires explicit acknowledgement via --reveal (which also warns on stderr when stdout is an interactive terminal), and the new --file <path> writes keys to a file created with 0600 permissions (refusing to overwrite) while keeping stdout clean. Scripts that parsed wallet export output must add --reveal or switch to --file. --file failures carry machine-readable codes: FILE_EXISTS when the path already exists, FILE_WRITE_FAILED for any other create/write error.

    This safety hardening is intentionally classified as a minor change rather than a major release: it changes an unsafe default to prevent accidental private-key disclosure while preserving explicit export through --reveal and --file.

  • #669 b821104 Thanks @gulshngill! - Show the real subcommand help for nansen research perp screener --help and nansen research perp leaderboard --help. Because perp is also a top-level trading command, the help lookup stopped at the trading command's subcommand list and fell back to printing the category listing — "Use: nansen research perp --help", the command that had just been run — so the parameters, credit cost and example were unreachable. nansen perp screener --help now resolves to the same help, with an example pointing at the research path. Boolean options now accept --flag=false and reject invalid or repeated values instead of silently falling back to the server default; value-taking options also accept the conventional --key=value spelling, while valueless switches reject inline values instead of creating unusable stale flags. Invalid changelog --since values now return a structured error and a non-zero exit status.

    The stricter validation intentionally rejects invalid, previously undocumented inputs that only appeared to succeed while being ignored; relying on that quiet fallback was relying on a bug, so this is classified as a minor change rather than a major breaking release.

Patch Changes

  • #682 3e172f2 Thanks @Bruce039! - alerts update no longer resends a PATCH through the retry loop after a transient failure, matching alerts create

  • #649 66152af Thanks @kriss39! - research profiler compare no longer turns failed API requests into an empty comparison. When every request fails the command errors with the underlying code (for example UNAUTHORIZED or RATE_LIMITED); when some fail the result carries incomplete: true, an errors list, and null for the fields that could not be computed. Shared tokens are now matched on the token address when both wallets report one, falling back to the symbol when either side omits it, so two different contracts with the same symbol are no longer reported as shared.

  • #674 ad178db Thanks @0xShadowX! - A repeated list option whose values are themselves comma-separated (--tags defi,nft --tags sports) is now flattened to defi, nft, sports. Previously the first value was kept as the literal defi,nft, so the same list was read differently depending on whether it was passed once or as repeated flags.

  • #652 d0433d4 Thanks @Bruce039! - Resolve ENS names when the profiler chain is all. The profiler commands default --chain to all, but the resolver only accepted explicit EVM chains, so research profiler labels --address vitalik.eth (and every other profiler subcommand except first-funder) failed with ENS names can only be resolved on EVM chains, not all unless --chain ethereum was passed.

  • #654 0aad196 Thanks @Bruce039! - --fields now supports dotted paths. --fields data.results.address selects that field at that position only (array elements do not add a segment), while a bare name such as --fields address keeps matching at any depth. Dotted paths were mentioned in the code but matched nothing, so --fields data.results returned an empty object.

  • #672 b10dc31 Thanks @0xShadowX! - --filters is validated as a JSON object before the request is sent. A value such as --filters '[]', --filters abc or a repeated --filters flag used to be forwarded to the API as-is and only failed there with a 422; it now fails with an INVALID_PARAMS error that shows the expected form.

  • #660 42db750 Thanks @Ahmett101! - Parse SSE data: fields with or without the optional space after the colon so standards-compliant agent streams do not produce an empty response.

  • #651 ab784a3 Thanks @kriss39! - Respect the server's Retry-After header when retrying rate-limited (429) requests. The wait was capped at the local backoff ceiling (30s), so a Retry-After: 60 led to a retry after 30s that could only hit the limiter again. The client now waits at least as long as the header asks, and if the server asks for more than maxRetryAfterMs (default 120s) it fails immediately with the retryAfterMs in the error details instead of retrying too early. A Retry-After on a 5xx response is still treated as advisory and capped at the backoff ceiling as before.

  • #663 bc4ecc8 Thanks @gulshngill! - Option values that spell a JSON keyword (--sort true, --search false, --label null) are now kept as the literal strings true/false/null instead of being converted to a boolean or null, so string options no longer crash or silently drop the value; --filters '{}' and --order-by '[...]' still parse as JSON, and --sort now rejects a repeated or non-text value with --sort must be "field" or "field:direction".

  • #671 8a4e98f Thanks @0xShadowX! - Keep the body of a non-JSON error response (gateway HTML, plain text) in the error details instead of reporting body: null, and apply the same retry policy to it as to a JSON error: a plain-text 429 is now retried, with its Retry-After respected, instead of failing on the first attempt.

  • #676 0112fa1 Thanks @0xShadowX! - Refuse to sign EVM approval, revoke, and Privy swap transactions when the quote carries no gas price, instead of defaulting to an unmineable 0.001 gwei fee that left the wallet's nonce stuck

  • #681 c82492d Thanks @kriss39! - wallet send and trade limit-order create reject an amount of zero, or one that truncates to zero base units at the token's precision, instead of broadcasting a transfer of nothing or creating a limit order with inputAmount: "0"

  • #650 d4b4925 Thanks @kriss39! - research token screener --search now honours --page. The search filter runs client-side, and previously every page returned the same first slice of matches; the candidate fetch is now widened to cover the requested page and the filtered list is sliced at the page offset.

  • #661 fe5b294 Thanks @gulshngill! - Recognise the API's full set of structured error codes. A 401 unauthenticated response once again shows Not logged in. Run: nansen login, insufficient_credits gets its do-not-retry hint, and codes that previously leaked through as raw server strings now surface as CLI codes, including the new PLAN_UPGRADE_REQUIRED, GEO_BLOCKED, QUERY_TOO_LARGE, PAYLOAD_TOO_LARGE, METHOD_NOT_ALLOWED, and CONFLICT. Retry behaviour is unchanged: it stays keyed on the HTTP status.

  • #679 5c8d22b Thanks @0xShadowX! - Fail with an actionable error when a Solana RPC cannot return an SPL mint's decimals, instead of silently assuming 9 and building a transfer or limit order with a mis-scaled amount

  • #675 938a011 Thanks @kome12! - Reject malformed or negative profiler --delay and token top-tokens --limit values instead of partially parsing them.

  • #646 3290e3c Thanks @gulshngill! - --table and --format csv error output now includes the error code, HTTP status, and details instead of only the message. CSV errors are emitted as a header row plus one record; table errors keep the leading Error: line and add one key: value line per field.

  • #662 7fd923f Thanks @gulshngill! - Sync the chains list reported by nansen schema (and mirrored in --help and the README) with the chains the Nansen API actually accepts. Drops scroll and ronin, which no endpoint serves any more, and adds the chains that were missing: algorand, aptos, arc, bitcoin, bitlayer, chiliz, citrea, gravity, hyperliquid, injective, mantra, near, robinhood, stacks, starknet, stellar, sui, ton, tron, viction. Not every chain is served by every endpoint; the API still validates --chain per endpoint.

  • #664 d034ae1 Thanks @gulshngill! - trade quote and trade execute now screen the signing wallet (and any distinct --to-wallet destination) against the compliance blocklist before requesting a quote or signing — the same fail-closed check bridge and perp already run — so a flagged address, or a screening call that fails, aborts the command before anything is signed or broadcast. Both commands now require API access for this check; authenticate with nansen login or NANSEN_API_KEY before trading.

  • #653 337271d Thanks @Bruce039! - --sort now rejects a direction other than asc/desc and an empty field name with an INVALID_PARAMS error. Previously --sort pnl_usd:sideways was uppercased and sent to the API as direction: SIDEWAYS, which only failed later with an upstream 422.

  • #648 0514c76 Thanks @kriss39! - Validate token screener --search and token who-bought-sold --buy-or-sell before the request is sent, so a JSON array/object or a repeated flag (--search '[]', --buy-or-sell '{}') and values outside the BUY/SELL enum produce an actionable INVALID_PARAMS error instead of a raw .toLowerCase()/.toUpperCase() TypeError.

  • #666 6539558 Thanks @gulshngill! - Make every wallet subcommand discoverable from the places agents look first. nansen --help now lists send, forget-password and secure on the wallet line (previously only seven of the nine were shown) and the full perp subcommand set (transfer, approve-builder-fee, orders, account, meta, screener and leaderboard were missing). It also stops describing the combined top-level perp command as a deprecated analytics alias. README lists the same wallet set, and nansen schema wallet now documents forget-password and secure with descriptions plus an example for every wallet subcommand. Help text, README, runtime command help and schema are pinned together by a new drift-guard test.

  • #677 b91e108 Thanks @0xShadowX! - Read a pretty-printed WalletConnect sign-typed-data result on the x402 payment path instead of failing after the user has already approved the payment in their wallet

  • #673 05a2056 Thanks @0xShadowX! - web search --num-results now rejects a malformed value (5abc, 2.5, abc, a repeated or valueless flag) with INVALID_PARAMS. Previously 5abc was silently truncated to 5, 2.5 to 2, and a non-numeric value fell back to the API default instead of reporting the mistake.

@github-actions
github-actions Bot force-pushed the changeset-release/main branch from c945b29 to 45deedf Compare September 18, 2026 16:26
@nansen-pr-reviewer

nansen-pr-reviewer Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

pr-reviewer Summary for #62dd378

✅ No issues found

The code review completed successfully with no findings.

Review effort: 1/5 (Trivial)

Summary

This is an automated Changesets release PR bumping nansen-cli from 1.45.0 → 1.46.0.

The diff is exactly what is expected from the Changesets GitHub Action:

  • 27 consumed .changeset/*.md files deleted
  • CHANGELOG.md updated with the full 1.46.0 release notes (3 minor + 16 patch entries)
  • package.json and package-lock.json version fields updated

The semver bump is correct: 3 of the consumed changesets were typed minor (for trade execute/bridge execute --dry-run/--yes, wallet export redaction, and research perp help fixes), which correctly drives a minor version increment. The package name (nansen-cli) matches throughout. The CHANGELOG entries are consistent with the PR description. No production code is modified in this PR.


Token usage: 118 input, 2,093 output, 213,241 cache read, 26,641 cache write | Usage Guide

New pushes are reviewed automatically with a 10-minute cooldown between reviews. To request a review at any time, comment @nansen-pr-reviewer re-review.

@nansen-pr-reviewer

Copy link
Copy Markdown

pr-reviewer Summary for #45deedf

📝 1 finding

Review completed. Please address the findings below.

Findings by Severity

Severity Count
🟡 Medium 1

Review effort: 1/5 (Trivial)

Summary

This is a standard Changesets-generated release PR bumping nansen-cli from 1.45.0 → 2.0.0. The version bump and changeset deletion are correct. One issue worth addressing before merge is noted below.

Findings (1)

CHANGELOG.md — Missing Patch Changes entry for PR #646 (medium)

What's wrong: Two changeset files existed on main when this PR was generated:

  • .changeset/guard-wallet-export.md — major (consumed ✅, appears in CHANGELOG)
  • .changeset/structured-csv-table-errors.md — patch (consumed ✅, but absent from CHANGELOG)

The PR branch's .changeset/ directory is empty (both files were consumed), yet the CHANGELOG.md diff only adds a ### Major Changes section with the wallet export entry. The patch from PR #646 — `--table` and `--format csv` error output now includes the error `code`, HTTP `status`, and `details` — does not appear anywhere in the 2.0.0 CHANGELOG entry.

The PR description correctly lists both changes, which suggests the Changesets action may have mis-generated the CHANGELOG, or the patch changeset was merged to main after the release PR was opened and the PR was not refreshed.

Impact: Users upgrading to 2.0.0 who rely on --table or --format csv error output will not know about the changed format from the CHANGELOG. The patch change is a behavioural change to CLI output — omitting it from the release notes is misleading.

Fix: Before merging, verify whether the Changesets action will regenerate the CHANGELOG correctly. If not, manually add a ### Patch Changes section to the 2.0.0 entry in CHANGELOG.md:

### Patch Changes

- [#646](https://github.com/nansen-ai/nansen-cli/pull/646) [`3290e3c`](https://github.com/nansen-ai/nansen-cli/commit/[REDACTED_AWS_SECRET]) Thanks [@gulshngill](https://github.com/gulshngill)! - `--table` and `--format csv` error output now includes the error `code`, HTTP `status`, and `details` instead of only the message. CSV errors are emitted as a header row plus one record; table errors keep the leading `Error:` line and add one `key: value` line per field.

Alternatively, close this PR and let the Changesets action regenerate it now that both changesets are present on main.


Token usage: 2,783 input, 3,878 output, 248,009 cache read, 20,055 cache write | Usage Guide

New pushes are reviewed automatically with a 10-minute cooldown between reviews. To request a review at any time, comment @nansen-pr-reviewer re-review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 18, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected
  • Review comment contains non-blocking feedback

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 20, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 20, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 21, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 21, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 21, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 21, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 21, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 21, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 8022f6b to 9376519 Compare September 21, 2026 15:59
nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 21, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 22, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 22, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 22, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 22, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 22, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

@gulshngill

Copy link
Copy Markdown
Contributor

@nansen-pr-reviewer re-review

nansen-pr-reviewer[bot]
nansen-pr-reviewer Bot previously approved these changes Sep 22, 2026

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

@nansen-pr-reviewer nansen-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved

This PR was automatically approved because:

  • Claude recommends approval
  • Claude assessed this as a minimal effort change
  • The effort level is within the auto-approval threshold of 2
  • No high or critical issues were detected

If you have any concerns, please request a manual review.

@gulshngill

Copy link
Copy Markdown
Contributor

Resolved by Changesets regeneration at 62dd378 after #688 merged. The current release is 1.46.0, and CHANGELOG.md contains a ### Patch Changes section with the complete #646 table/CSV error-output entry. The quoted finding references obsolete head 45deedf; the exact-head reviewer check is now green.

@kome12
kome12 merged commit 0f8ccde into main Sep 22, 2026
9 checks passed
@kome12
kome12 deleted the changeset-release/main branch September 22, 2026 04:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants