0.17.0
feat: new starter templates
dfx new
now has a new set of customizable project templates and an interactive menu for selecting them. Supports the Svelte, Vue, and React frameworks, and Azle and Kybra backends.
fix: --no-frontend no longer creates a frontend
Previously dfx new --no-frontend
still created a frontend canister. This behavior is now accessed via --frontend simple-assets
.
feat: dfx cycles redeem-faucet-coupon
It is now possible to redeem faucet coupons to cycles ledger accounts.
feat: specified_id in dfx.json
In addition to passing --specified-id
in dfx deploy
and dfx canister create
, specified_id
can be set in dfx.json
.
If it is set in both places, the specified ID from the command line takes precedence over the one in dfx.json.
feat: create canister on same subnet as other canisters
dfx deploy
, dfx canister create
, and dfx ledger create-canister
now support the option --next-to <canister principal>
to create canisters on the same subnet as other canisters.
The registry canister is used as the source of truth to figure out the subnet id.
feat: init_arg in dfx.json
In addition to passing --argument
or --argument-file
in dfx deploy
and dfx canister install
, init_arg
can be set in dfx.json
.
If it is set in both places, the argument from the command line takes precedence over the one in dfx.json.
feat(deps): init_arg in pullable metadata
Providers can set an optional init_arg
field in pullable
metadata.
When consumers run dfx deps init
without --argument
, the value in init_arg
will be used automatically.
Consumers won't have to figure out the init argument by themselves. It can be overwritten by dfx deps init --argument
.
fix(deps): dfx deps init will try to set "(null)" init argument
For pulled canisters which have no init_arg
in pullable
metadata, dfx deps init
without --argument
will try to set "(null)"
automatically.
This works for canisters with top-level opt
in init argument. This behavior is consistent with dfx deploy
and dfx canister install
.
The init argument can be overwritten by dfx deps init --argument
.
fix(deps): content of wasm_hash_url can have extra fields than the hash
It is natural to point wasm_hash_url
to the <FILE>.sha256
file generated by shasum
or sha256sum
which consists of the hash and the file name.
Now when dfx deps pull
, such content will be accept properly.
feat: dfx upgrade will direct the user to install dfxvm if it has been released.
If the latest release of https://github.com/dfinity/dfxvm is >= 1.0, dfx upgrade
will
direct the user to install dfxvm and then exit.
feat: fetch did file from canister metadata when making canister calls
dfx canister call
will always fetch the .did
file from the canister metadata. If the canister doesn't have the candid:service
metadata, dfx will fallback to the current behavior of reading the .did
file from the local build artifact. This fallback behavior is deprecated and we will remove it in a future release. This should not affect Motoko and Rust canisters built from dfx, as dfx build
automatically writes the Candid metadata into the canister.
If you build with custom canister type, add the following into dfx.json
:
"metadata": [
{
"name": "candid:service"
}
]
If you build the canister without using dfx
, you can use ic-wasm to store the metadata:
ic-wasm canister.wasm -o canister.wasm metadata candid:service -f service.did -v public
fix: removed the dfx toolchain
command
Please use the dfx version manager instead.
feat: allow dfxvm install script to bypass confirmation
The dfxvm install script now accepts DFXVM_INIT_YES=<non empty string>
to skip confirmation.