Skip to content

Releases: dfinity/sdk

0.15.0-beta.0: chore: update replica version to release candidate 0ab9178c (#3236)

13 Jul 01:40
5f47169
Compare
Choose a tag to compare

DFX

feat!: Removed dfx nns and dfx sns commands

Both have now been turned into the dfx extensions. In order to obtain them, please run dfx extension install nns and dfx extension install sns respectively. After the installation, you can use them as you did before: dfx nns ..., and dfx sns ....

feat!: Removed dfx replica and dfx bootstrap commands

Use dfx start instead. If you have a good reason why we should keep these commands, please contribute to the discussion at https://github.com/dfinity/sdk/discussions/3163

fix: Wait for new module hash when installing wallet

A previous change made dfx wait after installing a canister until the replica updated its reported module hash, but this change did not affect wallets. Now dfx waits for wallets too, to eliminate a class of wallet installation errors.

fix: Ctrl-C right after dfx start will hang for minutes and panics

Early break out from actors starting procedure.

feat: can disable the warnings about using an unencrypted identity on mainnet

It's now possible to suppress warnings of this form:

WARN: The <identity> identity is not stored securely. Do not use it to control a lot of cycles/ICP. Create a new identity with `dfx identity new` and use it in mainnet-facing commands with the `--identity` flag

To do so, export the environment variable DFX_WARNING with the value -mainnet_plaintext_identity.

export DFX_WARNING="-mainnet_plaintext_identity"

Note that this can be combined to also disable the dfx version check warning:

export DFX_WARNING="-version_check,-mainnet_plaintext_identity"

fix!: restrict dfx identity new to safe characters

New identities like dfx identity new my/identity or dfx identity new 'my identity' can easily lead to problems, either for dfx internals or for usability.
New identities are now restricted to the characters ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_@0123456789.
Existing identities are not affected by this change.

Dependencies

Motoko

Updated Motoko to 0.9.5

Updated candid to 0.9.0

Candid UI

  • Updated Candid UI canister to dfinity/candid#449
  • Module hash: 32cf0e528ee7a4fc0ac2028c985ce3bbf5af264e802a9473f72ba332eff32185

Frontend canister

  • Module hash: e50dfb318c8eb3dfb70fc3276b014302adaa0a26b5d8b4537bac033ad8d934c2
  • #3227

Replica

Updated replica to release candidate commit 0ab9178c6684f122ae713928b3664c33a697e9c4.

This incorporates these elected proposals up to commit a17247bd86c7aa4e87742bf74d108614580f216d:

0.14.3-beta.0

13 Jul 21:48
0ef733e
Compare
Choose a tag to compare
0.14.3-beta.0 Pre-release
Pre-release

Dependencies

Replica

Updated replica to non-elected release candidate 0ab9178c6684f122ae713928b3664c33a697e9c4.

This removes a dependency on OpenSSL in order to avoid spurious errors that reference "Invalid delegation: Invalid public key: Malformed EcdsaP256 public key".

0.14.2

30 Jun 18:44
3817fde
Compare
Choose a tag to compare

DFX

feat: deprecate dfx bootstrap and dfx replica commands

Please use dfx start instead, which is a combination of the two commands.

If you have a good reason why we should keep these commands, please contribute to the discussion at https://github.com/dfinity/sdk/discussions/3163

feat: add optional custom build command for asset canisters

The custom build command can be set in dfx.json the same way it is set for custom type canisters. If the command is not provided, DFX will fallback to the default npm run build command.

{
  "canisters": {
    "ui": {
      "type": "assets",
      "build": ["<custom build command>"]
    }
  }
}

fix: Diagnose duplicate assets and display upgrade steps

If dfx deploy detects duplicate assets in the dist/ and frontend assets/ directories, it will now suggest upgrade steps.

fix: motoko canisters can import other canisters with service constructor

After specific canister builder output wasm and candid file, dfx will do some post processing on the candid file.

The complete IDL will be copied into .dfx folder with name constructor.did.
It will be used for type checking during canister installation.

Then it is separated into two parts: service.did and init_args.txt, corresponding to canister metadata candid:service and candid:args.

service.did will be imported during dependent canisters building. And it will also be used by the Motoko LSP to provide IDE support.

fix: dfx start now respects the network replica port configuration in dfx.json or networks.json

Frontend canister

NOTE: We've disabled response verification v2 in the asset canister while we improve test coverage.

The redirect from .raw.ic0.app now redirects to .ic0.app instead of .icp0.io

The validate_commit_proposed_batch() method no longer requires any permission to call.

The asset canister now enforces limits during upload. These limits to not apply to assets already uploaded.

Unconditional limits:

  • create_batch() now fails if dfx deploy --by-proposal got as far as calling propose_commit_batch(), and the batch has not since been committed or deleted.

Configurable limits:

  • max_batches: limits number of batches being uploaded.
  • max_chunks: limits total number of chunks across all batches being uploaded.
  • max_bytes: limits total size of content bytes across all chunks being uploaded.

Added methods:

  • configure() to set limits
  • validate_configure(): companion method for SNS
  • get_configuration(): to view limits

Suggestions for configured limits:

  • dapps controlled by SNS: max_batches=1; max_chunks and max_bytes based on asset composition.
  • dapps not controlled by SNS: unlimited (which is the default)

Note that as always, if dfx deploy does not completely upload and commit a batch, the asset canister will retain the batch until 5 minutes have passed since the last chunk was uploaded. If you have configured limits and the combination of an unsuccessful deployment and a subsequent attempt would exceed those limits, you can either wait 5 minutes before running dfx deploy again, or delete the incomplete batch with delete_batch().

fix: return the correct expr_path for index.html fallback routes

Previously, the requested path was used to construct the expr_path for the index.html fallback route. This was incorrect, as the expr_path should be the path of the index.html file itself in this case.

Frontend canister assets synchronization

fix: now retries failed create_chunk() calls

Previously, it would only retry when waiting for the request to complete.

fix: now considers fewer error types to be retryable

Previously, errors were assumed to be retryable, except for a few specific error messages and 403/unauthorized responses. This could cause deployment to appear to hang until timeout.

Now, only transport errors and timeout errors are considered retryable.

Dependencies

Frontend canister

ic-ref

Updated ic-ref to 0.0.1-a9f73dba

Cycles wallet

Updated cycles wallet to 20230530 release:

Motoko

Updated Motoko to 0.9.3

Replica

Updated replica to elected commit ef8ca68771baa20a14af650ab89c9b31b1dc9a5e.
This incorporates the following executed proposals:

0.14.2-beta.2

30 Jun 03:46
024cb51
Compare
Choose a tag to compare
0.14.2-beta.2 Pre-release
Pre-release
Release: 0.14.2-beta.2

0.14.2-beta.1

28 Jun 21:35
1e5b29c
Compare
Choose a tag to compare
0.14.2-beta.1 Pre-release
Pre-release
Release: 0.14.2-beta.1

0.14.2-beta.0

26 Jun 23:05
1a1fd8f
Compare
Choose a tag to compare
0.14.2-beta.0 Pre-release
Pre-release
Release: 0.14.2-beta.0

0.14.1

05 Jun 13:50
dde32aa
Compare
Choose a tag to compare

0.14.1

DFX

fix: dfx canister delete without stopping first

When running dfx canister delete on a canister that has not been stopped, dfx will now confirm the deletion instead of erroring.

feat: gzip option in dfx.json

dfx can gzip wasm module as the final step in building canisters.

This behavior is disabled by default.

You can enable it in dfx.json:

{
  "canisters" : {
    "app" : {
      "gzip" : true
    }
  }
}

You can still specify .wasm.gz file for custom canisters directly. If any metadata/optimize/shrink options are set in dfx.json, the .wasm.gz file will be decompressed, applied all the wasm modifications, and compressed as .wasm.gz in the end.

fix: prevented using --argument with --all in canister installation

Removed dfx deploy's behavior of providing the same argument to all canisters, and dfx canister install's behavior of providing an empty argument to all canisters regardless of what was specified. Now installing multiple canisters and providing an installation argument is an error in both commands.

chore: make sns subcommands visible in dfx help

chore: upgraded to clap v4

Updated the command-parsing library to v4. Some colors may be different.

feat: dfx deps subcommands

This feature was named dfx pull before. To make a complete, intuitive user experience, we present a set of subcommands under dfx deps:

  • dfx deps pull: pull the dependencies from mainnet and generate deps/pulled.json, the candid files of direct dependencies will also be put into deps/candid/;
  • dfx deps init: set the init arguments for the pulled dependencies and save the data in deps/init.json;
  • dfx deps deploy: deploy the pulled dependencies on local replica with the init arguments recorded in deps/init.json;

All generated files in deps/ are encouraged to be version controlled.

chore: Add the nns-dapp and internet_identity to the local canister IDs set by dfx nns import

dfx nns install installs a set of canisters in a local replica. dfx nns import complements this by setting the canister IDs so that they can be queried by the user. But dfx nns import is incomplete. Now it will also provide the IDs of the nns-dapp and internet_identity canisters.

feat: .env file includes all created canister IDs

Previously the .env file only included canister IDs for canisters that were listed as explicit dependencies during the build process.
Now all canisters that have a canister ID for the specified network are included in .env.

feat!: Ask for user consent when removing themselves as principal

Removing oneself (or the wallet one uses) can result in the loss of control over a canister.
Therefore dfx canister update-settings now asks for extra confirmation when removing the currently used principal/wallet from the list of controllers.
To skip this check in CI, use either the --yes/-y argument or use echo "yes" | dfx canister update-settings <...>.

fix: dfx start will restart replica if it does not report healthy after launch

If the replica does not report healthy at least once after launch,
dfx will terminate and restart it.

fix: dfx start now installs the bitcoin canister when bitcoin support is enabled

This is required for future replica versions.

Adds a new field canister_init_arg to the bitcoin configuration in dfx.json and networks.json. Its default is documented in the JSON schema and is appropriate for the canister wasm bundled with dfx.

fix: no longer enable the bitcoin_regtest feature

docs: cleanup of documentation

Cleaned up documentation of IC SDK.

Asset Canister Synchronization

feat: Added more detailed logging to ic-asset.

Now, dfx deploy -v (or -vv) will print the following information:

  • The count for each BatchOperationKind in CommitBatchArgs
  • The number of chunks uploaded and the total bytes
  • The API version of both the ic-asset and the canister
  • (Only for -vv) The value of CommitBatchArgs

fix: Commit batches incrementally in order to account for more expensive v2 certification calculation

In order to allow larger changes without exceeding the per-message instruction limit, the sync process now:

  • sets properties of assets already in the canister separately from the rest of the batch.
  • splits up the rest of the batch into groups of up to 500 operations.

fix: now retries failed create_chunk() calls

Previously, it would only retry when waiting for the request to complete.

fix: now considers fewer error types to be retryable

Previously, errors were assumed to be retryable, except for a few specific error messages and 403/unauthorized responses. This could cause deployment to appear to hang until timeout.

Now, only transport errors and timeout errors are considered retryable.

Dependencies

Frontend canister

The asset canister now properly removes the v2-certified response when /index.html is deleted.

Fix: The fallback file (/index.html) will now be served when using certification v2 if the requested path was not found.

The HttpResponse type now explicitly mentions the upgrade : Option<bool> field instead of implicitly returning None all the time.

The asset canister no longer needs to use await for access control checks. This will speed up certain operations.

  • Module hash: 651425d92d3796ddae581191452e0e87484eeff4ff6352fe9a59c7e1f97a2310
  • #3120
  • #3112

Motoko

Updated Motoko to 0.8.8

Replica

Updated replica to elected commit b3b00ba59c366384e3e0cd53a69457e9053ec987.
This incorporates the following executed proposals:

0.14.0

25 Apr 19:58
760b047
Compare
Choose a tag to compare

See also: migration guide

DFX

fix: stop dfx deploy from creating a wallet if all canisters exist

feat: expose wasm-opt optimizer in ic-wasm to users

Add option to specify an "optimize" field for canisters to invoke the wasm-opt optimizer through ic-wasm.

This behavior is disabled by default.

If you want to enable this behavior, you can do so in dfx.json:

"canisters" : {
    "app" : {
        "optimize" : "cycles"
    }
}

The options are "cycles", "size", "O4", "O3", "O2", "O1", "O0", "Oz", and "Os". The options starting with "O" are the optimization levels that wasm-opt provides. The "cycles" and "size" options are recommended defaults for optimizing for cycle usage and binary size respectively.

feat: updates the dfx new starter project for env vars

  • Updates the starter project for env vars to use the new dfx build & dfx deploy environment variables
  • Changes the format of the canister id env vars to be CANISTER_ID_<canister_name_uppercase>, for the frontend declaraction file to be consistent with the dfx environment variables. CANISTER_ID as both a prefix and suffix are supported for backwards compatibility.

fix!: --clean required when network configuration changes

If the network configuration has changed since last time dfx start was run, dfx start will now error if you try to run it without --clean, to avoid spurious errors. You can provide the --force flag if you are sure you want to start it without cleaning state.

feat: --artificial-delay flag

The local replica uses a 600ms delay by default when performing update calls. With dfx start --artificial-delay <ms>, you can decrease this value (e.g. 100ms) for faster integration tests, or increase it (e.g. 2500ms) to mimick mainnet latency for e.g. UI responsiveness checks.

fix: make sure assetstorage did file is created as writeable.

feat: specify id when provisional create canister

When creating a canister on non-mainnet replica, you can now specify the canister ID.

dfx canister create <CANISTER_NAME> --specified-id <PRINCIPAL>

dfx deploy <CANISTER_NAME> --specified-id <PRINCIPAL>

You can specify the ID in the range of [0, u64::MAX / 2].
If not specify the ID, the canister will be created in the range of [u64::MAX / 2 + 1, u64::MAX].
This canister ID allocation behavior only applies to the replica, not the emulator (ic-ref).

feat: dfx nns install --ledger-accounts

dfx nns install now takes an option --ledger-accounts to initialize the ledger canister with these accounts.

fix: update Rust canister template.

ic-cdk-timers is included in the dependencies.

chore: change the default Internet Computer gateway domain to icp0.io

By default, DFX now uses the icp0.io domain to connect to Internet Computer as opposed to using ic0.app.
Canisters communicating with ic0.app will continue to function nominally.

feat: --no-asset-upgrade

feat: confirmation dialogues are no longer case sensitive and accept 'y' in addition to 'yes'

fix: dfx generate no longer requires canisters to have a canister ID

Previously, canisters required that the canister was created before dfx generate could be called.

As a result, the --network parameter does not have an impact on the result of dfx generate anymore.
This means that dfx generate now also generates type declarations for remote canisters.

fix: Make build field optional in dfx.json

The build field in custom canisters was already optional in code, but this fixes it in the schema.

By specifying the --no-asset-upgrade flag in dfx deploy or dfx canister install, you can ensure that the asset canister itself is not upgraded, but instead only the assets themselves are installed.

feat: Get identity from env var if present

The identity may be specified using the environment variable DFX_IDENTITY.

feat: Add DFX_ASSETS_WASM

Added the ability to configure the WASM module used for assets canisters through the environment variable DFX_ASSETS_WASM.

feat: dfx pull can download wasm

fix: dfx deploy and icx-asset no longer retry on permission failure

feat: --created-at-time for the ledger functions: transfer, create-canister, and top-up

fix: ledger transfer duplicate transaction prints the duplicate transaction response before returning success to differentiate between a new transaction response and between a duplicate transaction response.

Before it was possible that a user could send 2 ledger transfers with the same arguments at the same timestamp and both would show success but there would have been only 1 ledger transfer. Now dfx prints different messages when the ledger returns a duplicate transaction response and when the ledger returns a new transaction response.

chore: clarify dfx identity new help text

chore: Add a message that redeem_faucet_coupon may take a while to complete

feat: dfx deploy --by-proposal

This supports asset updates through SNS proposal.

Uploads asset changes to an asset canister (propose_commit_batch()), but does not commit them.

The SNS will call commit_proposed_batch() to commit the changes. If the proposal fails, the caller of dfx deploy --by-proposal should call delete_batch().

feat: dfx deploy --compute-evidence

Builds the specified asset canister, determines the batch operations required to synchronize the assets, and computes a hash ("evidence") over those batch operations. This evidence will match the evidence computed by dfx deploy --by-proposal, and which will be specified in the update proposal.

No permissions are required to compute evidence, so this can be called with --identity anonymous or any other identity.

Asset Canister

Added validate_take_ownership() method so that an SNS is able to add a custom call to take_ownership().

Added is_aliased field to get_asset_properties and set_asset_properties.

Added partial support for proposal-based asset updates:

  • Batch ids are now stable. With upcoming changes to support asset updates by proposal,
    having the asset canister not reuse batch ids will make it easier to verify that a particular
    batch has been proposed.
  • Added methods:
    • propose_commit_batch() stores batch arguments for later commit
    • delete_batch() deletes a batch, intended for use after compute_evidence if cancellation needed
    • compute_evidence() computes a hash ("evidence") over the proposed batch arguments. Once evidence computation is complete, batch will not expire.
    • commit_proposed_batch() commits batch previously proposed (must have evidence computed)
    • validate_commit_proposed_batch() required validation method for SNS

Added api_version endpoint. With upcoming changes we will introduce breaking changes to asset canister's batch upload process. New endpoint will help ic-asset with differentiation between API version, and allow it to support all versions of the asset canister.

Added support for v2 asset certification. In comparison to v1, v2 asset certification not only certifies the http response body, but also the headers. The v2 spec is first published in this PR

Added canister metadata field supported_certificate_versions, which contains a comma-separated list of all asset certification protocol versions. You can query it e.g. using dfx canister --network ic metadata <canister name or id> supported_certificate_versions. In this release, the value of this metadata field value is 1,2 because certification v1 and v2 are supported.

Fixed a bug in http_request that served assets with the wrong certificate. If no encoding specified in the Accept-Encoding header is available with a certificate, an available encoding is returned without a certificate (instead of a wrong certificate, which was the case previously). Otherwise, nothing changed.
For completeness' sake, the new behavior is as follows:

  • If one of the encodings specified in the Accept-Encoding header is available with certification, it now is served with the correct certificate.
  • If no requested encoding is available with certification, one of the requested encodings is returned without a certificate (instead of a wrong certificate, which was the case previously).
  • If no encoding specified in the Accept-Encoding header is available, a certified encoding that is available is returned instead.

Added support for API versioning of the asset canister in ic-asset.

Added functionality that allows you to set asset properties during dfx deploy, even if the asset has already been deployed to a canister in the past. This eliminates the need to delete and re-deploy assets to modify properties - great news! This feature is also available when deploying assets using the --by-proposal flag. As a result, the API version of the frontend canister has been incremented from 0 to 1. The updated ic-asset version (which is what is being used during dfx deploy) will remain compatible with frontend canisters implementing both API 0 and 1. However, please note that the new frontend canister version (with API v1) will not work with tooling from before the dfx release (0.14.0).

Dependencies

Frontend canister

Read more

0.13.1

10 Feb 10:37
7f6b37f
Compare
Choose a tag to compare

Asset Canister

Added validate_grant_permission() and validate_revoke_permission() methods per SNS requirements.

Dependencies

Frontend canister

  • Module hash: 98863747bb8b1366ae5e3c5721bfe08ce6b7480fe4c3864d4fec3d9827255480
  • #2958

0.13.0

07 Feb 09:50
d55f661
Compare
Choose a tag to compare

DFX

feat: Add dfx sns download

This allows users to download SNS canister WASMs.

fix: fixed error text

  • dfx nns install had the wrong instructions for setting up the local replica type

fix: creating an identity with --force no longer switches to the newly created identity

feat(frontend-canister)!: reworked to use permissions-based access control

The permissions are as follows:

  • ManagePermissions: Can grant and revoke permissions to any principal. Controllers implicitly have this permission.
  • Prepare: Can call create_batch and create_chunk
  • Commit: Can call commit_batch and methods that manipulate assets directly, as well as any method permitted by Prepare.

For upgraded frontend canisters, all authorized principals will be granted the Commit permission.
For newly deployed frontend canisters, the initializer (first deployer of the canister) will be granted the Commit permission.

Added three new methods:

  • list_permitted: lists principals with a given permission.
    • Callable by anyone.
  • grant_permission: grants a single permission to a principal
    • Callable by Controllers and principals with the ManagePermissions permission.
  • revoke_permission: removes a single permission from a principal
    • Any principal can revoke its own permissions.
    • Only Controllers and principals with the ManagePermissions permission can revoke the permissions of other principals.

Altered the behavior of the existing authorization-related methods to operate only on the "Commit" permission. In this way, they are backwards-compatible.

  • authorize(principal): same as grant_permission(principal, Commit)
  • deauthorize(principal): same as revoke_permission(permission, Commit)
  • list_authorized(): same as list_permitted(Commit)

fix(frontend-canister)!: removed ability of some types of authorized principals to manage the ACL

It used to be the case that any authorized principal could authorize and deauthorize any other principal.
This is no longer the case. See rules above for grant_permission and revoke_permission.

feat(frontend-canister)!: default secure configuration for assets in frontend project template

  • Secure HTTP headers, preventing several typical security vulnerabilities (e.g. XSS, clickjacking, and many more). For more details, see comments in headers section in default .ic-assets.json5.
  • Configures allow_raw_access option in starter .ic-assets.json5 config files, with the value set to its default value (which is false). We are showing that configuration in the default starter projects for the sake of easier discoverability, even though its value is set to the default.

feat(frontend-canister)!: add allow_raw_access config option

By default, the frontend canister will now restrict the access of traffic to the <canister-id>.raw.ic0.app domain, and will automatically redirect all requests to the certified domain (<canister-id>.ic0.app), unless configured explicitly. Below is an example configuration to allow access to the robots.txt file from the "raw" domain:

[
  {
    "match": "robots.txt",
    "allow_raw_access": true
  }
]

Important: Note that any assets already uploaded to an asset canister will be protected by this redirection, because at present the asset synchronization process does not update the allow_raw_access property, or any other properties, after creating an asset. This also applies to assets that are deployed without any configuration, and later configured to allow raw access.
At the present time, there are two ways to reconfigure an existing asset:

  1. re-create the asset
    1. delete the asset in your project's directory
    2. execute dfx deploy
    3. re-create the asset in your project's directory
    4. modify .ic-assets.json acordingly
    5. execute dfx deploy
  2. via manual candid call
    dfx canister call PROJECT_NAME_frontend set_asset_properties '( record { key="/robots.txt"; allow_raw_access=opt(opt(true)) })'
    

feat(frontend-canister): pretty print asset properties when deploying assets to the canister

feat(frontend-canister): add take_ownership() method

Callable only by a controller. Clears list of authorized principals and adds the caller (controller) as the only authorized principal.

feat(ic-ref):

  • effective_canister_id used for provisional_create_canister_with_cycles is passed as an command-line argument (defaults to rwlgt-iiaaa-aaaaa-aaaaa-cai if not provided or upon parse failure)

feat(frontend-canister): add get_asset_properties and set_asset_properties to frontend canister

As part of creating the support for future work, it's now possible to get and set AssetProperties for assets in frontend canister.

feat: write canister metadata sections for dfx pull

feat: add --argument-file argument to the dfx canister sign command

Similar to how this argument works in dfx canister call, this argument allows providing arguments for the request from a file.

feat: Add support for a default network key

A remote canister ID can now be specified for the __default network. If specified, dfx will assume that the canister is remote at the specified canister ID for all networks that don't have a dedicated entry.

feat: use OS-native keyring for pem file storage

If keyring integration is available, PEM files (except for the default identity) are now by default stored in the OS-provided keyring.
If it is not available, it will fall back on the already existing password-encrypted PEM files.
Plaintext PEM files are still available (e.g. for use in non-interactive situations like CI), but not recommended for use since they put the keys at risk.

To force the use of one specific storage mode, use the --storage-mode flag with either --storage-mode password-protected or --storage-mode plaintext.
This works for both dfx identity new and dfx identity import.

The flag --disable-encryption is deprecated in favour of --storage-mode plaintext. It has the same behavior.

feat: dfx pull

  • write canister metadata for dfx pull.
  • dfx pull can fetch dfx:deps metadata and resolve dependencies recursively.

feat(frontend-canister): better control and overview for asset canister authorized principals

The asset canister now has two new functions:

  • Query function list_authorized displays a list of all principals that are currently authorized to change assets and the list of authorized principals.
  • Update function deauthorize that removes a principal from the list of authorized principals. It can be called by authorized principals and cotrollers of the canister.

In addition, the update function authorize has new behavior:
Now, controllers of the asset canister are always allowed to authorize new principals (including themselves).

fix: add retry logic to dfx canister delete

dfx canister delete tries to withdraw as many cycles as possible from a canister before deleting it.
To do so, dfx has to manually send all cycles in the canister, minus some margin.
The margin was previously hard-coded, meaning that withdrawals can fail if the margin is not generous enough.
Now, upon failure with some margin, dfx will retry withdrawing cycles with a continuously larger margin until withdrawing succeeds or the margin becomes larger than the cycles balance.

fix: dfx deploy --mode reinstall for a single Motoko canister fails to compile

The Motoko compiler expects all imported canisters' .did files to be in one folder when it compiles a canister.
dfx failed to organize the .did files correctly when running dfx deploy <single Motoko canister> in combintaion with the --mode reinstall flag.

fix: give more cycles margin when deleting canisters

There have been a few reports of people not being able to delete canisters.
The error happens if the temporary wallet tries to transfer out too many cycles.
The number of cycles left in the canister is bumped a little bit so that people can again reliably delete their canisters.

Dependencies

Updated candid to 0.8.4

  • Bug fix in TS bindings
  • Pretty print numbers

Frontend canister

  • Module hash: d12e4493878911c21364c550ca90b81be900ebde43e7956ae1873c51504a8757
  • #2942

ic-ref

Updated ic-ref to master commit 3cc51be5

Motoko

Updated Motoko to 0.7.6

Replica

Updated replica to elected commit b5a1a8c0e005216f2d945f538fc27163bafc3bf7.
This incorporates the following executed proposals: