Releases: dfinity/sdk
0.24.3
0.24.3
feat: Bitcoin support in PocketIC
dfx start --pocketic
is now compatible with --bitcoin-node
and --enable-bitcoin
.
feat: facade pull ICP, ckBTC, ckETH ledger canisters
The ledger canisters can be pulled even though they are not really "pullable".
The metadata like wasm_url and init_guide are hardcoded inside dfx deps pull
logic.
- ICP ledger:
ryjl3-tyaaa-aaaaa-aaaba-cai
- ckBTC ledger:
mxzaz-hqaaa-aaaar-qaada-cai
- ckETH ledger:
ss2fx-dyaaa-aaaar-qacoq-cai
chore: update agent version in frontend templates, and include resolve.dedupe
in Vite config
chore: improve error message when trying to use the local replica when it is not running
Frontend canister
Allow setting permissions lists in init arguments just like in upgrade arguments.
- Module hash: 2c24b5e1584890a7965011d5d1d827aca68c489c9a6308475730420fa53372e8
- #3965
Candid UI
- Module hash: f45db224b40fac516c877e3108dc809d4b22fa42d05ee8dfa5002536a3a3daed
- Bump agent-js to fix error code
chore!: improve the messages for the subcommands of dfx cycles
.
If users run subcommands of dfx cycles
without the --ic
flag, show below messages to indicate what to do next.
Error explanation:
Cycles ledger with canister ID 'um5iw-rqaaa-aaaaq-qaaba-cai' is not installed.
How to resolve the error:
Run the command with '--ic' flag if you want to manage the cycles on the mainnet.
chore: improve dfx start
messages.
For dfx start
, show below messages to users to indicate what to do next.
Success! The dfx server is running.
You must open a new terminal to continue developing. If you'd prefer to stop, quit with 'Ctrl-C'.
Dependencies
Motoko
Updated Motoko to 0.13.4
Replica
Updated replica to elected commit a62848817cec7ae50618a87a526c85d020283fd9.
This incorporates the following executed proposals:
0.24.3-beta.0
feat: Bitcoin support in PocketIC
dfx start --pocketic
is now compatible with --bitcoin-node
and --enable-bitcoin
.
feat: facade pull ICP, ckBTC, ckETH ledger canisters
The ledger canisters can be pulled even though they are not really "pullable".
The metadata like wasm_url and init_guide are hardcoded inside dfx deps pull
logic.
- ICP ledger:
ryjl3-tyaaa-aaaaa-aaaba-cai
- ckBTC ledger:
mxzaz-hqaaa-aaaar-qaada-cai
- ckETH ledger:
ss2fx-dyaaa-aaaar-qacoq-cai
chore: update agent version in frontend templates, and include resolve.dedupe
in Vite config
chore: improve error message when trying to use the local replica when it is not running
Frontend canister
Allow setting permissions lists in init arguments just like in upgrade arguments.
- Module hash: 2c24b5e1584890a7965011d5d1d827aca68c489c9a6308475730420fa53372e8
- #3965
Candid UI
- Module hash: f45db224b40fac516c877e3108dc809d4b22fa42d05ee8dfa5002536a3a3daed
- Bump agent-js to fix error code
chore!: improve the messages for the subcommands of dfx cycles
.
If users run subcommands of dfx cycles
without the --ic
flag, show below messages to indicate what to do next.
Error explanation:
Cycles ledger with canister ID 'um5iw-rqaaa-aaaaq-qaaba-cai' is not installed.
How to resolve the error:
Run the command with '--ic' flag if you want to manage the cycles on the mainnet.
chore: improve dfx start
messages.
For dfx start
, show below messages to users to indicate what to do next.
Success! The dfx server is running.
You must open a new terminal to continue developing. If you'd prefer to stop, quit with 'Ctrl-C'.
Dependencies
Motoko
Updated Motoko to 0.13.3
Replica
Updated replica to elected commit a62848817cec7ae50618a87a526c85d020283fd9.
This incorporates the following executed proposals:
0.24.2
0.24.2
feat: all commands will use the DFX_NETWORK from the environment
If DFX_NETWORK
is set in the environment, all commands will use that network by default.
The --network
parameter will take precedence if provided.
fix: dfx generate now honors the --network parameter
This fixes an issue where dfx deploy --playground
would fail if the project
had not been previously built for the local network.
feat: Support canister log allowed viewer list
Added support for the canister log allowed viewer list, enabling specified users to access a canister's logs without needing to be set as the canister's controller.
Valid settings are:
--add-log-viewer
,--remove-log-viewer
and--set-log-viewer
flags withdfx canister update-settings
--log-viewer
flag withdfx canister create
canisters[].initialization_values.log_visibility.allowed_viewers
indfx.json
feat: batch upload assets
The frontend canister sync now tries to batch multiple small content chunks into a single call using the create_chunks
method added earlier.
And for small amounts of uploaded data the asset sync can now skip chunk creation entirely.
This should lead to significantly faster upload times for frontends with many small files.
Dependencies
Motoko
Updated Motoko to 0.13.2
Frontend canister
SetAssetContentArguments
has a new field last_chunk: opt blob
which can be used in addition to chunk_ids
so that small assets can be uploaded as part of commit_batch
,
skipping the need to await a separate create_chunk
call.
Bumped api_version
to 2
for the previous addition of create_chunks
since the improved file sync relies on it.
0.24.2-beta.0
What's Changed
feat: Support canister log allowed viewer list
Added support for the canister log allowed viewer list, enabling specified users to access a canister's logs without needing to be set as the canister's controller.
Valid settings are:
--add-log-viewer
,--remove-log-viewer
and--set-log-viewer
flags withdfx canister update-settings
--log-viewer
flag withdfx canister create
canisters[].initialization_values.log_visibility.allowed_viewers
indfx.json
feat: batch upload assets
The frontend canister sync now tries to batch multiple small content chunks into a single call using the create_chunks
method added earlier.
And for small amounts of uploaded data the asset sync can now skip chunk creation entirely.
This should lead to significantly faster upload times for frontends with many small files.
Dependencies
Motoko
Updated Motoko to 0.13.2
Frontend canister
SetAssetContentArguments
has a new field last_chunk: opt blob
which can be used in addition to chunk_ids
so that small assets can be uploaded as part of commit_batch
,
skipping the need to await a separate create_chunk
call.
Bumped api_version
to 2
for the previous addition of create_chunks
since the improved file sync relies on it.
Commits
- chore: add link to dfx reference in README.md by @dfx-json in #3726
- feat: Update agent to dac18df and add
wasm_memory_limit
support by @adamspofford-dfinity in #3727 - ci: fix path on Windows by @lwshang in #3728
- feat: align, rather than indent, error causes by @ericswanson-dfinity in #3736
- fix: include error cause in PEM file decryption message by @ericswanson-dfinity in #3681
- chore: unpin mops by @ericswanson-dfinity in #3737
- chore: update replica version to 5e285dca by @dfinity-bot in #3739
- chore: add 0.20.1 changelog header by @dfx-json in #3741
- chore: break up ExtensionError into method-specific error types by @ericswanson-dfinity in #3740
- refactor: more idiomatic identity override by @ericswanson-dfinity in #3743
- ci: missing backslash by @lwshang in #3746
- chore: promote 0.20.0 by @dfx-json in #3744
- chore: document valid identity names by @sesi200 in #3747
- docs: mention DFX_DISABLE_QUERY_VERIFICATION by @ericswanson-dfinity in #3751
- refactor: fetch root key method names by @ericswanson-dfinity in #3750
- feat: add DfxInterface and builder for easier setup by @ericswanson-dfinity in #3752
- feat: add Candid UI URL to dfx info by @sesi200 in #3748
- chore: update to agent-rs 0.35.0 by @ericswanson-dfinity in #3753
- fix: Capitalization of "Wasm" by @ulan in #3756
- fix!: sync .well-known dir by default by @sesi200 in #3759
- feat: subaccount can be derived from principal in dfx ledger account-id by @mraszyk in #3755
- refactor: add host and artifical-delay only if not passed by @ericswanson-dfinity in #3757
- fix: Ledger create canister with
--next-to
transferring funds too early by @fxgst in #3760 - feat: PocketIC support by @adamspofford-dfinity in #3761
- perf: improve sync command performance by @olaszakos in #3766
- fix: --initial-margin for dfx canister delete by @sesi200 in #3769
- chore: update the help messages of
dfx wallet send
by @vincent-dfinity in #3771 - chore: update replica version to ec35ebd2 by @dfinity-bot in #3772
- chore: update changelog for 0.20.2 by @ericswanson-dfinity in #3773
- feat(icx-asset): add
--no-delete
option tosync
command by @olaszakos in #3768 - chore: Release 0.20.1 by @dfx-json in #3776
- chore: update CODEOWNERS by @dfx-json in #3778
- docs: fix link in CONTRIBUTING.md by @raymondk in #3779
- feat: dfx start doesn't require --clean when changing replica versions or options by @ericswanson-dfinity in #3777
- fix: url decoding in ic-certified-assets by @raymondk in #3767
- docs: remove reference to obsolete warning by @ericswanson-dfinity in #3780
- fix: reword confusing log message about default shared network config by @ericswanson-dfinity in #3781
- feat: add retry/backoff logic for get_assets_properties by @olaszakos in #3784
- fix: denote GetWasmMemoryLimitFailed error source by @ericswanson-dfinity in #3785
- feat: update agent and add log_visibility support by @sesi200 in #3782
- feat: add support for
dfx canister url <CANISTER>
by @vincent-dfinity in #3765 - chore!: improve error message about canister ranges by @sesi200 in #3786
- chore: update CONTRIBUTING.md by @dfx-json in #3787
- feat!: remove support for bitcoin query API by @lwshang in #3788
- docs: early forum post for betas by @ericswanson-dfinity in #3789
- fix: Improve error message for bad cycles wallet by @adamspofford-dfinity in #3790
- docs: deprecate and use the proper API domain by @r-birkner in #3783
- feat: killall command by @adamspofford-dfinity in #3351
- chore: pin binstall version so CI doent spontaneously break by @sesi200 in #3793
- feat: choose asset encodings that are synced to asset canister by @sesi200 in #3792
- feat: upload br encoding to asset canister by @sesi200 in #3791
- chore: update changelog for 0.21.0 by @THLO in #3798
- chore: update replica version to 246d0ce0 by @dfinity-bot in #3797
- feat: require all PRs to update JSON schema if changed by @ericswanson-dfinity in #3803
- feat: generate extension manifest schema by @ericswanson-dfinity in #3806
- feat!: enable cycles ledger unconditionally by @sesi200 in #3796
- chore!: rm
unsafe-eval
from default project CSP by @sesi200 in #3801 - chore!: enforce minimum password length by @sesi200 in #3808
- feat: type definitions for extension dependencies and dependencies.json by @ericswanson-dfinity in #3807
- fix: add context to dfx cache installation message by @ericswanson-dfinity in #3812
- fix: dfx build no longer requires a password by @sesi200 in #3813
- refactor: Prepare for auto-generation of extension.json by @anchpop in #3814
- refactor: convert extension install to async by @ericswanson-dfinity in #3815
- feat: extension install uses dependencies.json by @ericswanson-dfinity in #3816
- chore!: --with-cycles requires --wallet is enforced earlier by @sesi200 in #3817
- feat: Enable threshold signatures for Bip340Secp256k1 by @eichhorl in #3809
- fix: Build the canister dependency graph only for the requested canisters by @anchpop in #3818
- fix: retry certain http errors reported by replica during asset uploads by @ericswanson-dfinity in #3822
- chore: update replica version to 5849c6da by @dfinity-bot in #3821
- chore: update Motoko version to 0.11.2 by @dfinity-bot in #3823
- chore: add the 0.22.0 header to the changelog by @lwshang in #3824
- chore: Add tool check to update script by @adamspofford-dfinity in #3826
- chore: upgrade ic-wasm/walrus to build memory64 by @lwshang in #3827
- refactor: remove output_idl_path from CanisterInfo types by @ericswanson-dfinity in #3828
- fix: display reqwest::Error source by @ericswanson-dfinity in #3832
- chore: remove the deprecated --use-old-metering flag by @ulan in #3835
- chore: Promote 0.21.0 by @THLO in ht...
0.24.1
feat: More PocketIC flags supported
dfx start --pocketic
is now compatible with --artificial-delay
and the subnet_type
configuration option, and enables --enable-canister-http
by default.
Dependencies
Frontend canister
feat: Better error messages when proposing a batch
Add the batch id in the error messages of propose_commit_batch
.
Module hash: 2c9e30df9be951a6884c702a97bbb8c0b438f33d4208fa612b1de6fb1752db76
Motoko
Updated Motoko to 0.13.1
Replica
Updated replica to elected commit 0a6d829cddc1534c29e0d2c3c3ebd1024bff8d1a.
This includes the following notable features for local dev replicas:
- Canister panic backtraces
- Enhanced orthogonal persistence
This incorporates the following elected proposals:
- 133327
- 133310
- 133309
- 133144
- 133143
- 133142
- 133063
- 133062
- 133061
- 132548
- 132547
- 132507
- 132482
- 132481
- 132500
- 132416
- 132413
- 132414
- 132412
- 132376
- 132375
- 132223
- 132222
- 132149
- 132148
- 131787
- 131757
- 131697
Candid UI
Module hash 15da2adc4426b8037c9e716b81cb6a8cf1a835ac37589be2cef8cb3f4a04adaa
0.24.1-beta.1
0.24.1-beta.0
feat: More PocketIC flags supported
dfx start --pocketic
is now compatible with --artificial-delay
and the subnet_type
configuration option, and enables --enable-canister-http
by default.
Dependencies
Frontend canister
feat: Better error messages when proposing a batch
Add the batch id in the error messages of propose_commit_batch
.
Module hash: 2c9e30df9be951a6884c702a97bbb8c0b438f33d4208fa612b1de6fb1752db76
Motoko
Updated Motoko to 0.13.0
Replica
Updated replica to elected commit c43a4880199c00135c8415957851e823b3fb769e.
This incorporates the following executed proposals:
- 133144
- 133143
- 133142
- 133063
- 133062
- 133061
- 132548
- 132547
- 132507
- 132482
- 132481
- 132500
- 132416
- 132413
- 132414
- 132412
- 132376
- 132375
- 132223
- 132222
- 132149
- 132148
- 131787
- 131757
- 131697
Candid UI
Module hash 15da2adc4426b8037c9e716b81cb6a8cf1a835ac37589be2cef8cb3f4a04adaa
0.24.0
fix: bumps sveltekit starter dependency versions to prevent typescript config error
feat: expose canister upgrade options in CLI
dfx canister install
and dfx deploy
takes options --skip-pre-upgrade
and --wasm-memory-persistence
.
dfx deploy --mode
now takes the same possible values as dfx canister install --mode
: "install", "reinstall", "upgrade" and "auto".
In "auto" mode, the upgrade options are hints which only take effects when the actual install mode is "upgrade".
To maintain backward compatibility, a minor difference between the two commands remains.
If the --mode
is not set, dfx deploy
defaults to "auto", while dfx canister install
defaults to "install".
feat: Also report Motoko stable compatibility warnings
Report upgrade compatibility warnings for Motoko, such as deleted stable variables, in addition to compatibility errors.
feat: Support for Motoko's enhanced orthogonal persistence.
Support Motoko's enhanced orthogonal persistence by automatically setting the canister upgrade option wasm_memory_persistence
based on the Wasm metadata.
feat: PocketIC state
dfx start --pocketic
no longer requires --clean
, and can persist replica state between runs.
fix: Scripts always run with current directory set to the project root
Build scripts and other scripts now always run with the working directory
set to the project root (directory containing dfx.json).
This applies to the following:
- build scripts
- extension run
- tech stack value computation
- packtool (vessel, mops etc)
feat: dfx extension list
supports listing available extensions
dfx extension list
now support --available
flag to list available extensions from the
extension catalog.
The extension catalog can be overridden with the --catalog-url
parameter.
Dependencies
Frontend canister
Added create_chunks
. It has the same behavior as create_chunk
, except that it takes a vec blob
and returns a vec BatchId
instead of non-vec
variants.
Module hash: 3a533f511b3960b4186e76cf9abfbd8222a2c507456a66ec55671204ee70cae3
Motoko
Updated Motoko to 0.12.1
0.24.0-beta.0
fix: bumps sveltekit starter dependency versions to prevent typescript config error
feat: expose canister upgrade options in CLI
dfx canister install
and dfx deploy
takes options --skip-pre-upgrade
and --wasm-memory-persistence
.
dfx deploy --mode
now takes the same possible values as dfx canister install --mode
: "install", "reinstall", "upgrade" and "auto".
In "auto" mode, the upgrade options are hints which only take effects when the actual install mode is "upgrade".
To maintain backward compatibility, a minor difference between the two commands remains.
If the --mode
is not set, dfx deploy
defaults to "auto", while dfx canister install
defaults to "install".
feat: Also report Motoko stable compatibility warnings
Report upgrade compatibility warnings for Motoko, such as deleted stable variables, in addition to compatibility errors.
feat: Support for Motoko's enhanced orthogonal persistence.
Support Motoko's enhanced orthogonal persistence by automatically setting the canister upgrade option wasm_memory_persistence
based on the Wasm metadata.
feat: PocketIC state
dfx start --pocketic
no longer requires --clean
, and can persist replica state between runs.
fix: Scripts always run with current directory set to the project root
Build scripts and other scripts now always run with the working directory
set to the project root (directory containing dfx.json).
This applies to the following:
- build scripts
- extension run
- tech stack value computation
- packtool (vessel, mops etc)
feat: dfx extension list
supports listing available extensions
dfx extension list
now support --available
flag to list available extensions from the
extension catalog.
The extension catalog can be overridden with the --catalog-url
parameter.
Dependencies
Frontend canister
Added create_chunks
. It has the same behavior as create_chunk
, except that it takes a vec blob
and returns a vec BatchId
instead of non-vec
variants.
Module hash: 3a533f511b3960b4186e76cf9abfbd8222a2c507456a66ec55671204ee70cae3
Motoko
Updated Motoko to 0.12.1
0.23.0
fix: relax content security policy for sveltekit starter
We had to roll back part of the increased default security policy for the sveltekit starter due to the framework's use of inline scripts
feat: Add canister snapshots
The new dfx canister snapshot
command can be used to create, apply, and delete snapshots of stopped canisters.
feat: PocketIC HTTP gateway
icx-proxy's HTTP gateway has been replaced with PocketIC's. (This does not impact the meaning of --pocketic
in dfx start
.)
feat: Enable threshold schnorr signatures for Ed25519
Schnorr signature signing for Ed25519
is now enabled.
A test key id Ed25519:dfx_test_key
is ready to be used by locally created canisters.
feat: Added settings_digest field to the network-id file
feat: install extensions using the catalog
dfx extension install
now locates extensions using the
extension catalog.
This can be overridden with the --catalog-url
parameter.
Dependencies
Replica
Updated replica to elected commit 3d0b3f10417fc6708e8b5d844a0bac5e86f3e17d.
This incorporates the following executed proposals:
feat: generate .env files for Motoko canisters
feat: support "security_policy"
and "disable_security_policy_warning"
in .ic-assets.json5
This change has an accompanying migration guide. Please see the 0.23.0 migration guide for instructions on how to adapt your project to this feature.
It is now possible to specify a "security_policy"
field in .ic-assets.json5
for asset configurations.
Valid options are "disabled"
, "standard"
, and "hardened"
.
The security policy provides a set of standard headers to make frontends more secure.
Headers manually specified in the "headers"
field take precedence over the security policy headers.
If "security_policy"
is not specified or "disabled"
is set, then no headers are added. If "security_policy"
is not set at all, a warning is displayed that there is no security policy set.
If "standard"
is specified, a set of security headers is added to the asset. The headers can be displayed with dfx info security-policy
.
It is a set of security headers that will work for most dapps. A warning is displayed that the headers could be hardened.
If "hardened"
is set, the same headers as with "standard"
are added.
The asset sync expects that improved headers are set that would improve security where appropriate.
If no custom headers are present the asset sync will fail with an error.
All warnings regarding security policies can be disabled with ``"disable_security_policy_warning": true`. It needs to be set per asset.
The standard/hardened security policy headers can be seen with dfx info security-policy
.
It also contains a lot of suggestions on how to harden the policy.
Updated the starter projects to use "security_policy"
instead of including the whole security policy by defining individual headers.
feat: dfx info security-policy
Shows the headers that get applied to assets that are configured to "security_policy": "standard"
or "security_policy": "hardened"
in .ic-assets.json5
.
Produces output that can be directly pasted into a .json5
document.
feat: dfx extension install <url to extension.json>
It's now possible for dfx extension install
to install an extension from
somewhere other than https://github.com/dfinity/dfx-extensions, by passing
a URL to an extension.json file rather than an extension name.
For example, these are equivalent:
dfx extension install nns
dfx extension install https://raw.githubusercontent.com/dfinity/dfx-extensions/main/extensions/nns/extension.json
This update also adds the optional field download_url_template
to extension.json,
which dfx will use to locate an extension release archive.
fix: dfx extension install
no longer reports an error if the extension is already installed
However, if a version is specified with --version
, and the installed version is different,
then dfx extension install
will still report an error.
fix: dfx ledger create-canister
sets controller properly
A recent hotfix to the CMC changed how the arguments to notify_create_canister
need to be passed.
dfx
now again properly calls that function.
feat: display replica port in dfx start
This replaces the dashboard link, which is now shown only in verbose mode. This should hopefully be less confusing for new users.
feat!: add crate
field to dfx.json
It is now possible to specify a particular crate within a Rust package to use for a canister module, using the crate
field.
This enables specifying crates with different names than the package. In a few cases these were previously auto-detected
by dfx, you will need to add this field if you were using such a setup.
feat: the --wallet
parameter now accepts an identity name
The --wallet
parameter can now be either a principal or the name of an identity.
If the name of an identity, dfx looks up the associated wallet's principal.
This means --wallet <name>
is the equivalent of --wallet $(dfx identity get-wallet --identity <name>)
.
fix: display error cause of some http-related errors
Some commands that download http resources, for example dfx extension install
, will
once again display any error cause.