diff --git a/README.md b/README.md
index 681eb8a50b..220bf01d62 100644
--- a/README.md
+++ b/README.md
@@ -588,11 +588,11 @@ The [Ecosystem Helper](https://mvw4g-yiaaa-aaaam-abnva-cai.icp0.io/) is an oncha
### Asset guidelines
-| Asset | | Requirements | Format | Notes |
-|-------------|----------|--------------|--------------|-----------------------------------------------------------------------------------|
-| logo | required | 112x112px | webp/svg/png | Currently displayed 56x56px |
-| screenshots | optional | 1024x576px | webp/jpg | The schema supports multiple files, but only the first one will be displayed |
-| video | optional | max 10MB | webm/mp4 | If there is a video file specified, it will be displayed instead of a screenshot. |
+| Asset | | Requirements | Format | Notes |
+|-------------|----------|---------------------------------|---------------------------|----------------------------------------------------------------------------------------|
+| logo | required | 112x112px (1:1 aspect ratio) | svg(recommended)/png/webp | Optimize file size with [SVGOMG](https://svgomg.net) or [TinyPNG](https://tinypng.com) |
+| screenshots | optional | 1024x576px | webp/jpg | The schema supports multiple files, but only the first one will be displayed |
+| video | optional | max 10MB | webm/mp4 | If there is a video file specified, it will be displayed instead of a screenshot. |
### Tags
diff --git a/blog/features/vetkey-primer.md b/blog/features/vetkey-primer.md
index 47dbd496d3..224bc23bb3 100644
--- a/blog/features/vetkey-primer.md
+++ b/blog/features/vetkey-primer.md
@@ -63,7 +63,7 @@ Considering that blockchains are very public places where transparency has been
Note that we care most about the secret ***key derivation*** here, as that is the most sensitive part which we want to protect from one central (potentially untrusted, unauthorized, or compromised) party, and hence the **KD** in VETKD. To deal with the centralization point, we need to move into the distributed setting. Assuming there is no one trusted party, we distribute trust amongst multiple parties, and require that some *threshold* of them collaborate on shares of the master secret key to derive decryption keys.
How do parties **get shares** of the master secret key? This is done by leveraging a distributed key generation (DKG) protocol, where a threshold of honest parties (or nodes) work together to obtain a set of master key shares. Assuming no collusion between nodes, at no point does any one node hold the full private key.
-Click around to learn more about [threshold cryptography]( https://en.wikipedia.org/wiki/Threshold_cryptosystem), [DKG](https://en.wikipedia.org/wiki/Distributed_key_generation) and chapter 22 in the [Boneh-Shoup book](http://toc.cryptobook.us/).
+Click around to learn more about [threshold cryptography]( https://en.wikipedia.org/wiki/Threshold_cryptosystem), [DKG](https://en.wikipedia.org/wiki/Distributed_key_generation) and chapter 22 in the [Boneh-Shoup book](https://toc.cryptobook.us/).
It’s clear from above that we don't want a centralised key derivation process and this is why we need the **T** for the KD process, but what about **V** and **E**? Perhaps this is best highlighted by a scenario.
@@ -100,7 +100,7 @@ At a first glance, we could guess that we will need a distributed key generation
Crucially, An observation buried in [BF01] gives us the answer. Moni Naor noted that an IBE scheme can be directly converted into a signature scheme. Considering the key derivation of Boneh-Franklin IBE specifically, the resulting signature scheme happens to be BLS.
### BLS signatures
-Digital signatures are used everywhere in cryptography and in the blockchain world to attest to the authenticity of a message, transaction, or other pieces of information. As they are so prevalent, it’s really worth spending time getting to know them. You can get a high level view on wikipedia ([Digital Signatures](https://en.wikipedia.org/wiki/Digital_signature) and [BLS](https://en.wikipedia.org/wiki/BLS_digital_signature)), and dive into the [Boneh-Shoup book](http://toc.cryptobook.us/) when you want more formal details.
+Digital signatures are used everywhere in cryptography and in the blockchain world to attest to the authenticity of a message, transaction, or other pieces of information. As they are so prevalent, it’s really worth spending time getting to know them. You can get a high level view on wikipedia ([Digital Signatures](https://en.wikipedia.org/wiki/Digital_signature) and [BLS](https://en.wikipedia.org/wiki/BLS_digital_signature)), and dive into the [Boneh-Shoup book](https://toc.cryptobook.us/) when you want more formal details.
BLS signatures are a particular type of digital signature introduced in by Dan Boneh, Ben Lynn, and Hovav Shacham in 2001.
@@ -132,7 +132,7 @@ This page contains a high level view and description of VETKD and its building b
It also shows one possible way of building VETKD, there are others, some with fancy features, that are described more in the paper. There are many use cases and motivations for building VETKD, these are discussed in [the video](https://youtu.be/baM6jHnmMq8) and can be written up if you like. There are also extensions that could be built depending on what is needed in the community. Finally, note that this page is hosted onchain.
## References
-* [BS23](http://toc.cryptobook.us/) - The Boneh-Shoup Book.
+* [BS23](https://toc.cryptobook.us/) - The Boneh-Shoup Book.
* [BF01](https://crypto.stanford.edu/~dabo/papers/bfibe.pdf) - The IBE paper.
* [BLS01](https://www.iacr.org/archive/asiacrypt2001/22480516.pdf) - The BLS paper.
* [DH76](https://ee.stanford.edu/~hellman/publications/24.pdf) - Diffie and Hellman's New Directions paper.
diff --git a/blog/news-and-updates/2023-12-06-update.mdx b/blog/news-and-updates/2023-12-06-update.mdx
index 9932cab04c..da5a0ab057 100644
--- a/blog/news-and-updates/2023-12-06-update.mdx
+++ b/blog/news-and-updates/2023-12-06-update.mdx
@@ -15,7 +15,7 @@ Hello developers and welcome back to developer weekly! This week, we have some v
On Friday, December 1st, the NNS proposals to enable ckETH on ICP went live. We're excited to announce that all proposals were passed by the NNS, and ckETH is now live on the mainnet!
-ckETH has been added to the ICP dashboard, which you can view [here](http://dashboard.internetcomputer.org/ethereum). You can learn how to interact with ckETH by reviewing the ckETH minter documentation [here](https://github.com/dfinity/ic/blob/master/rs/ethereum/cketh/minter/README.adoc).
+ckETH has been added to the ICP dashboard, which you can view [here](https://dashboard.internetcomputer.org/ethereum). You can learn how to interact with ckETH by reviewing the ckETH minter documentation [here](https://github.com/dfinity/ic/blob/master/rs/ethereum/cketh/minter/README.adoc).
ckETH support is also live in the ICRC-1 wallet, which includes ckETH has a pre-defined token. The index canister has been integrated, allowing you to mint directly to your principal. The ICRC-1 wallet canister can be found [here](https://e4hv6-7yaaa-aaaao-a2ida-cai.icp0.io/)
diff --git a/blog/news-and-updates/2024-08-14-update.mdx b/blog/news-and-updates/2024-08-14-update.mdx
index 326605868f..19a6175e1a 100644
--- a/blog/news-and-updates/2024-08-14-update.mdx
+++ b/blog/news-and-updates/2024-08-14-update.mdx
@@ -27,7 +27,7 @@ The digital assets section of the developer docs has gotten an overhaul! Before,
- [Token standards](/docs/current/developer-docs/defi/tokens/token-standards)
-- [Asset flow](/docs/current/developer-docs/defi/tokens/asset_flow/)
+- [Asset flow](/docs/current/developer-docs/defi/overview)
- [Ledger integration options](/docs/current/developer-docs/defi/tokens/advanced/direct_integration)
diff --git a/blog/news-and-updates/2024-10-09-update.mdx b/blog/news-and-updates/2024-10-09-update.mdx
index dbd6623103..40e3630da4 100644
--- a/blog/news-and-updates/2024-10-09-update.mdx
+++ b/blog/news-and-updates/2024-10-09-update.mdx
@@ -40,7 +40,7 @@ Developer office hours are back in the ICP developer Discord server! Every Wedne
Be sure to drop in to the session and ask questions, share your project, or simply listen in on the discussion.
-[Join the ICP developer Discord server](https://discord.gg/RMZNkGMp8N).
+[Join the ICP developer Discord server](https://discord.internetcomputer.org).
## Community spotlight: KongSwap
@@ -50,4 +50,4 @@ You can [try KongSwap yourself](https://www.kongswap.io/?viewtab=swap&pool=ICP_c
That'll wrap up this week. Tune back in next week for more developer updates!
--DFINITY
\ No newline at end of file
+-DFINITY
diff --git a/blog/news-and-updates/2024-12-04-update.mdx b/blog/news-and-updates/2024-12-04-update.mdx
new file mode 100644
index 0000000000..e4f2792748
--- /dev/null
+++ b/blog/news-and-updates/2024-12-04-update.mdx
@@ -0,0 +1,42 @@
+---
+title: Developer weekly update December 4, 2024
+description: This week we have a new release of dfx, an important update about the Bitcoin integration, and an update from the community project Juno.
+tags: [Devs]
+image: /img/blog/dev-update-blog-dec-4.jpg
+---
+
+# Developer weekly update December 4, 2024
+
+![December 4 2024](../../static/img/blog/dev-update-blog-dec-4.jpg)
+
+Hello developers, and welcome to this week's developer weekly update! This week we have a new release of `dfx`, an important update about the Bitcoin integration, and an update from the community project Juno. Let's get started!
+
+## dfx v0.24.3
+
+The latest version of `dfx` is now promoted! This latest update includes new features such as:
+
+- PocketIC now supports Bitcoin through the `--enable-bitcoin` and `--bitcoin-node` flags.
+
+- The canisters for the ICP, ckBTC, and ckETH ledger canisters can now be pulled.
+
+- The frontend canister now supports setting canister permissions in the init arguments.
+
+- Output for `dfx start` and `dfx cycles` have been improved.
+
+[Read the full release notes](https://github.com/dfinity/sdk/releases/tag/0.24.3).
+
+## Bitcoin integration updates
+
+The Bitcoin Testnet API is being migrated from Testnet v3 to Testnet v4. To support this work, the ckTestBTC minter has been stopped and the Bitcoin Testnet API has been disabled. Once the migration has finished, these features will be re-enabled.
+
+You can stay up to date on the status via the [forum](https://forum.dfinity.org/t/direct-integration-with-bitcoin/6147/743?u=cryptoschindler).
+
+## Juno v0.0.39
+
+A new version of Juno has been released! This latest version introduces backups to Juno through the new ICP canister snapshot feature. Backups are available through both the Juno API and the Juno CLI tool.
+
+[Learn more in the Juno release notes](https://github.com/junobuild/juno/releases/tag/v0.0.39).
+
+That'll wrap up this week. Tune back in next week for more developer updates!
+
+-DFINITY
\ No newline at end of file
diff --git a/blog/news-and-updates/team-spotlight-sdk.mdx b/blog/news-and-updates/team-spotlight-sdk.mdx
index bc127d5054..6ffa92964b 100644
--- a/blog/news-and-updates/team-spotlight-sdk.mdx
+++ b/blog/news-and-updates/team-spotlight-sdk.mdx
@@ -67,7 +67,7 @@ Hey devs and welcome to this edition of ICP team spotlight! In this issue, we sa
**The SDK team is pretty involved with the dev community on the forum and Discord server, which I'm sure has lead to features derived as a result of community feedback. What are some of the improvements made as a direct result of developer feedback?**
-*Lots! We built the [developer feedback board](http://dx.internetcomputer.org) a while back, and every two weeks, our internal focus group meets to go over the latest items and check-in on the progress we’ve made addressing others. One thing that's come as a result of the feedback received is the `dfx` version manager. Developers expressed that they want a way to switch `dfx` versions easily. We spent some time working out how best to accomplish that, and the `dfx` version manager was born. Another example is the Cycles Ledger - we heard feedback that the Cycles Wallet was a pain to use and developers wanted a better solution. We are continuously looking for ways to improve our tooling, so keep the feedback coming!*
+*Lots! We built the [developer feedback board](https://dx.internetcomputer.org) a while back, and every two weeks, our internal focus group meets to go over the latest items and check-in on the progress we’ve made addressing others. One thing that's come as a result of the feedback received is the `dfx` version manager. Developers expressed that they want a way to switch `dfx` versions easily. We spent some time working out how best to accomplish that, and the `dfx` version manager was born. Another example is the Cycles Ledger - we heard feedback that the Cycles Wallet was a pain to use and developers wanted a better solution. We are continuously looking for ways to improve our tooling, so keep the feedback coming!*
**Where should developers look for the latest SDK updates?**
diff --git a/docs/developer-docs/defi/tokens/asset_flow/_category_.yml b/docs/developer-docs/defi/tokens/asset_flow/_category_.yml
deleted file mode 100644
index 947103ef9c..0000000000
--- a/docs/developer-docs/defi/tokens/asset_flow/_category_.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-label: 'Asset Flow'
-position: 7
-collapsed: true
\ No newline at end of file
diff --git a/docs/developer-docs/defi/tokens/asset_flow/index.mdx b/docs/developer-docs/defi/tokens/asset_flow/index.mdx
deleted file mode 100644
index 0750563296..0000000000
--- a/docs/developer-docs/defi/tokens/asset_flow/index.mdx
+++ /dev/null
@@ -1,146 +0,0 @@
----
-keywords: [intermediate, tokens, tutorial, ledger, asset flow]
----
-
-import TabItem from "@theme/TabItem";
-import { AdornedTabs } from "/src/components/Tabs/AdornedTabs";
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-
-
-# Asset flow
-
-
-
-## Overview
-
-When interacting with the [ICP or ICRC-1 ledgers](/docs/developer-docs/defi/tokens/ledger/overview.mdx), there are different asset flow operations that can be executed. These operations are:
-
-* **Transfer**: A simple transfer between two entities.
-* **Approve**: Approving tokens to be spent by another entity.
-* **Mint**: Creating new tokens (**Requires minting account privileges**).
-* **Burn**: Destroying tokens.
-* **TransferFrom**: Spend approved tokens on behalf of another entity.
-
-Both ledger types support these operations. There are several ways on how to create transactions corresponding to each asset flow operation. This guide will demonstrate how to use `dfx` using `Rust` code.
-
-### Prerequisites
-
-* Download and install [`dfx`](/docs/current/developer-docs/developer-tools/cli-tools/cli-reference/dfx-parent).
-
-* Setup an [ICP Rust agent](https://crates.io/crates/ic-agent).
-
-## Transfer tokens
-
-To transfer tokens, your transaction will need the following required fields:
-
-* `to`: The account that will receive the tokens.
-* `amount`: The amount of tokens to be sent.
-
-Additionally, the transaction takes the following optional fields:
-
-* `from_subaccount`: The subaccount of the approver.
-* `fee`: The fee paid by the sender for the transfer. If not set, the default fee will have to be paid.
-* `memo`: An arbitrary 32 bytes array to ensure transaction hash uniqueness.
-* `created_at_time`: A timestamp that is used to trigger the [deduplication mechanism](https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-1/README.md#transaction_deduplication).
-
-### dfx
-Here is an example command for a `Transfer` transaction using `dfx`:
-```bash
-dfx canister call icrc1_ledger_canister icrc1_transfer "(record { to = record { owner = principal \"sckqo-e2vyl-4rqqu-5g4wf-pqskh-iynjm-46ixm-awluw-ucnqa-4sl6j-mqe\";}; amount = 10_000;})"
-```
-
-### Rust
-Here is an example Rust code snippet for making a `Transfer` transaction:
-```bash
-let to = icrc_ledger_types::icrc1::account::Account{ owner:ic_principal::Principal::from_slice(&[1, 2, 3, 4]) , subaccount: None};
-let amount = candid::Nat::from(500u64);
-let transfer_arg = icrc_ledger_types::icrc1::transfer::TransferArg{
- from_subaccount: None,
- to,
- amount,
- fee: None,
- memo: : None,
- created_at_time: : None,
-}
-candid::Decode!(&ic_agent.update("icrc1_transfer", &candid::Encode!(&transfer_arg)?).await.unwrap(), Result).unwrap();
-```
-:::info
-Mint and burn operations are technically speaking also transfers. They work exactly like regular transfers with certain conditions that have to be met. They are the following:
-* For **mint** operations, the sender of the transfer has to be the minter account. This means that if you want to make mint transactions, you will need to know the private key of the minter account. The recipient will receive the newly minted tokens.
-* For **burn** operations, the receiver needs to be set to the mint account while the sender can be any account. You can request the minter account by calling the `icrc1_minting_account` endpoint of the ledger.
-:::
-
-## Approve tokens
-To approve tokens, your transaction will need the following required fields:
-
-* `spender`: The account that is allowed to spend the tokens.
-* `amount`: The maximum amount of tokens to be spent by the spender.
-
-Additionally, the transaction takes the following optional fields:
-
-* `from_subaccount`: The subaccount of the approver.
-* `expected_allowance`: If set, this field serves as a guarantee that before the new approved amount is set, the expected allowance reflects the previously set approved amount.
-* `expires_at`: The timestamp at which the allowance will expire.
-* `fee`: The fee paid by the approver for the approval. If not set, the default fee will have to be paid.
-* `memo`: An arbitrary 32 bytes array to ensure transaction hash uniqueness.
-* `created_at_time`: A timestamp that is used to trigger the [deduplication mechanism](https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-1/README.md#transaction_deduplication).
-
-### dfx
-Here is an example command for an `Approve` transaction using `dfx`:
-```bash
-dfx canister call icrc1_ledger_canister icrc2_approve "(record { amount = 500; spender = record{owner = principal \"sckqo-e2vyl-4rqqu-5g4wf-pqskh-iynjm-46ixm-awluw-ucnqa-4sl6j-mqe\";} })"
-```
-
-### Rust
-Here is an example Rust code snippet for making an `Approve` transaction:
-```bash
-let spender = icrc_ledger_types::icrc1::account::Account{ owner:ic_principal::Principal::from_slice(&[1, 2, 3, 4]) , subaccount: None};
-let amount = candid::Nat::from(500u64);
-let approve_args = icrc_ledger_types::icrc1::approve::ApproveArgs{
- from_subaccount: None,
- spender,
- amount,
- expected_allowance: None,
- expires_at: None,
- fee: None,
- memo: : None,
- created_at_time: : None,
-}
-candid::Decode!(&ic_agent.update("icrc2_approve", &candid::Encode!(&approve_args)?).await.unwrap(), Result).unwrap();
-```
-
-## Transferring approved tokens
-To transfer approved tokens, your transaction will need the following required fields:
-* `to`: The account that will receive the tokens.
-* `from`: The approvers account who's tokens will be transferred.
-* `amount`: The amount of tokens to be sent.
-Additionally, the transaction takes the following optional fields:
-* `spender_subaccount`: The subaccount of the spender.
-* `fee`: The fee paid by the sender for the transfer. If not set the default fee will have to be paid.
-* `memo`: An arbitrary 32 bytes array to ensure transaction hash uniqueness.
-* `created_at_time`: A timestamp that is used to trigger the [deduplication mechanism](https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-1/README.md#transaction_deduplication).
-
-### dfx
-Here is an example command for a `TransferFrom` transaction using `dfx`:
-```bash
-dfx canister call icrc1_ledger_canister icrc2_transfer_from "(record { from = record { owner = principal \"ltyfs-qiaaa-aaaak-aan3a-cai\";}; to = record { owner = principal \"sckqo-e2vyl-4rqqu-5g4wf-pqskh-iynjm-46ixm-awluw-ucnqa-4sl6j-mqe\";}; amount = 500;})"
-```
-
-### Rust
-Here is an example Rust code snippet for making a `TransferFrom` transaction:
-```bash
-let to = icrc_ledger_types::icrc1::account::Account{ owner:ic_principal::Principal::from_slice(&[1, 2, 3, 4]) , subaccount: None};
-let from = icrc_ledger_types::icrc1::account::Account{ owner:ic_principal::Principal::from_slice(&[5, 6, 7, 8]) , subaccount: None};
-let amount = candid::Nat::from(500u64);
-let transfer_from_arg = icrc_ledger_types::icrc1::transfer_from::TransferFromArgs{
- spender_subaccount: None,
- from,
- to,
- amount,
- fee: None,
- memo: : None,
- created_at_time: : None,
-}
-candid::Decode!(&ic_agent.update("icrc2_transfer_from", &candid::Encode!(&transfer_from_arg)?).await.unwrap(), Result).unwrap();
-```
\ No newline at end of file
diff --git a/docs/developer-docs/defi/tokens/ledger/overview.mdx b/docs/developer-docs/defi/tokens/ledger/overview.mdx
deleted file mode 100644
index 3700da07a1..0000000000
--- a/docs/developer-docs/defi/tokens/ledger/overview.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-keywords: [intermediate, rosetta, tutorial, accountidentifier]
----
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# Ledger overview
-
-In this section, you will learn about the different types of ledgers that exist on the Internet Computer. This guide will go into detail about what the different ledgers are, what their purposes are, and how they differ from ledgers you may be familiar with from other blockchains.
-
-## ICP ledger
-The ICP ledger is a canister that is responsible for keeping track of ICP balances, processing new transactions, and providing clients with data about the history of transactions. It stores all data onchain. For every transaction, a single block is created, which points to its parent block by storing the parent block's hash.
-
-The ICP ledger uses `AccountIdentifiers` as its internal account representation. It is compatible with the ICRC-1 standard; however, due to the fact that it uses `AccountIdentifiers` instead of `Accounts'` it stores information in a different block format than ICRC-1 ledgers. The same is true for the minting account of the ICP ledger.
-
-It runs on the NNS subnet, as it is part of the NNS, and its controller is the governance canister. Upgrades to the ICP ledger have to be approved by the NNS, making the process decentralized.
-
-## ICRC-1 ledgers
-ICRC-1 ledgers are a standardized version of ledgers on the Internet Computer. While [ICRC-1](/docs/current/developer-docs/defi/tokens/token-standards) is the network standard defining how ledger canisters should behave, an ICRC-1 ledger is a single implementation of the ICRC-1 standard. It differs from the ICP ledger as it uses `Accounts` as its internal representation.
-
-ICRC-1 ledgers are stand-alone implementations, but in many cases, they are part of a larger software structure, such as an SNS or chain-key token implementation.
-
-## Differences from other blockchains
-One of the biggest differences between ledgers deployed on ICP and ledgers deployed on other blockchains is that most account-based blockchains have the balances of accounts baked into their base protocol (e.g., Ethereum). This is not the case with either the ICP or ICRC-1 ledgers.
-
-The ICP ledger canister sits on the application layer of the network rather than the protocol level. Consensus on the Internet Computer is independent of the existence of the ICP ledger. Nevertheless, the ICP ledger is fundamentally important to the way the network functions, especially due to its importance as a part of the NNS.
-
-Since the ICP ledger runs on the application layer, transfers of the ICP token do not happen at the protocol level as they do on other chains. All ICP token transactions go through this canister. Any information gathered about historic ICP token transactions originates from the ICP ledger canister. This includes the ICP index canister, which fetches blocks periodically from the ICP ledger canister.
-
-ICRC-1 ledgers are very similar in this regard; however, they resemble tokens that can often be found on other blockchains more closely. They are also run by a canister that runs the ICRC-1 ledger code, and all transactions of the ICRC-1 token go through an ICRC-1 ledger canister.
-
-
diff --git a/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx b/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx
index 313893e937..19b9dfc9a6 100644
--- a/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx
+++ b/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx
@@ -33,11 +33,11 @@ If using `dfx` version 0.17.1 or newer, choose 'Motoko' for the backend language
### Step 3: Determine ledger file locations.
-Go to the [releases overview](https://dashboard.internetcomputer.org/releases) and copy the latest replica binary revision. At the time of writing, this is `aba60ffbc46acfc8990bf4d5685c1360bd7026b9`.
+Search for [ledger-suite-icrc releases](https://github.com/dfinity/ic/releases?q=ledger-suite-icrc&expanded=false) and select the latest ICRC ledger suite release. At the time of writing, this is [`ledger-suite-icrc-2024-11-28`](https://github.com/dfinity/ic/releases/tag/ledger-suite-icrc-2024-11-28).
-The URL for the ledger Wasm module is `https://download.dfinity.systems/ic//canisters/ic-icrc1-ledger.wasm.gz`, so with the above revision it would be `https://download.dfinity.systems/ic/aba60ffbc46acfc8990bf4d5685c1360bd7026b9/canisters/ic-icrc1-ledger.wasm.gz`.
+The URL for the ledger Wasm module is `https://github.com/dfinity/ic/releases/download//ic-icrc1-ledger.wasm.gz`, so with the above release it would be `https://github.com/dfinity/ic/releases/download/ledger-suite-icrc-2024-11-28/ic-icrc1-ledger.wasm.gz`.
-The URL for the ledger .did file is `https://raw.githubusercontent.com/dfinity/ic//rs/ledger_suite/icrc1/ledger/ledger.did`, so with the above revision it would be `https://raw.githubusercontent.com/dfinity/ic/aba60ffbc46acfc8990bf4d5685c1360bd7026b9/rs/ledger_suite/icrc1/ledger/ledger.did`.
+The URL for the ledger .did file is `https://github.com/dfinity/ic/releases/download//ledger.did`, so with the above release it would be `https://github.com/dfinity/ic/releases/download/ledger-suite-icrc-2024-11-28/ledger.did`.
#### Optional:
@@ -51,15 +51,15 @@ chmod +x download_latest_icrc1_ledger.sh
These files will be used by the `dfx.json` file as described in the next step.
### Step 4: Configure the `dfx.json` file.
-Open the `dfx.json` file in your project's directory. Replace the existing content with the following and make sure you replace `` in the `candid` and `wasm` URLs as shown in step 3:
+Open the `dfx.json` file in your project's directory. Replace the existing content with the following and make sure you replace `` in the `candid` and `wasm` URLs as shown in step 3:
``` json
{
"canisters": {
"icrc1_ledger_canister": {
"type": "custom",
- "candid": "https://raw.githubusercontent.com/dfinity/ic//rs/ledger_suite/icrc1/ledger/ledger.did",
- "wasm": "https://download.dfinity.systems/ic//canisters/ic-icrc1-ledger.wasm.gz"
+ "candid": "https://github.com/dfinity/ic/releases/download//ledger.did",
+ "wasm": "https://github.com/dfinity/ic/releases/download//ic-icrc1-ledger.wasm.gz"
}
},
"defaults": {
diff --git a/docs/developer-docs/defi/tokens/ledger/setup/overview.mdx b/docs/developer-docs/defi/tokens/ledger/setup/overview.mdx
deleted file mode 100644
index e466f691fc..0000000000
--- a/docs/developer-docs/defi/tokens/ledger/setup/overview.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
----
-keywords: [intermediate, rosetta, tutorial, accountidentifier]
----
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# Ledger setup
-
-## Overview
-
-In this section you will learn how to setup a local instance of a ledger. This guide will go into depth on how to install, deploy and initialize two types of ledgers:
-* [ICP Ledger Setup](/docs/developer-docs/defi/tokens/ledger/setup/icp_ledger_setup.mdx)
-* [ICRC-1 Ledger Setup](/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx)
diff --git a/docs/developer-docs/defi/tokens/ledger/usage/overview.mdx b/docs/developer-docs/defi/tokens/ledger/usage/overview.mdx
deleted file mode 100644
index 50b8f356e2..0000000000
--- a/docs/developer-docs/defi/tokens/ledger/usage/overview.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
----
-keywords: [intermediate, rosetta, tutorial, accountidentifier]
----
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# Ledger usage
-
-## Overview
-
-In this section you will learn how to use a ledger. This guide will go into depth on how to interact with two types of ledgers:
-* [Using the ICP ledger](/docs/developer-docs/defi/tokens/ledger/usage/icp_ledger_usage.mdx)
-* [Using the ICRC-1 ledger](/docs/developer-docs/defi/tokens/ledger/usage/icrc1_ledger_usage.mdx)
diff --git a/docs/developer-docs/getting-started/tokens-and-cycles.mdx b/docs/developer-docs/getting-started/tokens-and-cycles.mdx
index 14f2fef3d2..e773172e10 100644
--- a/docs/developer-docs/getting-started/tokens-and-cycles.mdx
+++ b/docs/developer-docs/getting-started/tokens-and-cycles.mdx
@@ -50,9 +50,9 @@ The Internet Computer supports creating and deploying custom fungible or non-fun
## What is a ledger?
-A [**ledger**](/docs/current/developer-docs/defi/tokens/ledger/overview) is a system canister used to store accounts and their transactions. Each token on the Internet Computer has its **own** ledger. This means that there are separate ledgers for ICP tokens, cycles, and every ICRC token that has been deployed on the network.
+A [**ledger**](/docs/current/developer-docs//defi/overview) is a system canister used to store accounts and their transactions. Each token on the Internet Computer has its **own** ledger. This means that there are separate ledgers for ICP tokens, cycles, and every ICRC token that has been deployed on the network.
-[Learn more about ledgers](/docs/current/developer-docs/defi/tokens/ledger/overview).
+[Learn more about ledgers](/docs/current/developer-docs//defi/overview).
## Obtaining cycles
diff --git a/docs/developer-docs/identity/authentication/email-password.mdx b/docs/developer-docs/identity/authentication/email-password.mdx
deleted file mode 100644
index 0f8dd90b6f..0000000000
--- a/docs/developer-docs/identity/authentication/email-password.mdx
+++ /dev/null
@@ -1,25 +0,0 @@
----
-keywords: [intermediate, tutorial, user sign in, user login, email password, nfid]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# Email & password
-
-
-
-## Overview
-
-For some dapps, authenticating with a traditional email and password method may be desired. To support this workflow, [NFID](https://nfid.one/) can be used. NFID is a form of digital identity with a backend built entirely on ICP. It supports authentication with dapps through an email and password login or an existing Google account.
-
-[Learn how to use NFID](nfid.mdx).
-
-## Resources
-
-- [How NFID works](https://docs.nfid.one/embed/how-it-works/overview).
-
-- [NFID documentation](https://docs.nfid.one/embed/integration/quickstart).
-
-- [NFID playground](https://playground.nfid.one/).
-
-- [NFID Medium blog post](https://medium.com/dfinity/nfid-the-digital-identity-protocol-7d8a39f7ac85).
\ No newline at end of file
diff --git a/docs/developer-docs/identity/authentication/msq.mdx b/docs/developer-docs/identity/authentication/msq.mdx
deleted file mode 100644
index 6e9cd8b6ef..0000000000
--- a/docs/developer-docs/identity/authentication/msq.mdx
+++ /dev/null
@@ -1,140 +0,0 @@
----
-keywords: [authentication, msq, integration]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# MSQ
-
-
-
-## Overview
-
-[MSQ](https://icp.msq.tech/) is a [MetaMask Snap](https://metamask.io/snaps/) designed to allow users to use Metamask to authenticate with dapps deployed on ICP. MSQ uses a scoped-identity architecture, meaning each user gets a unique and dedicated identity for each domain they interact with. Scoped-identity architectures help protect users from signature-stealing attacks.
-
-I'll let you decide what is the best way to explain this!
-
-Response from MSQ team: https://forum.dfinity.org/t/msq-hits-the-metamask-snap-store/30499/23
-
-It provides two primary features:
-
-- User authorization: Web services can sign arbitrary data with a user's scoped key pair.
-
-- ICRC-1 payments: Users can request to perform ICRC-1 transfers to pay for goods or services.
-
-## Installation
-
-Insall the `msq` package with the command:
-
-```
-npm install @fort-major/msq-client
-```
-
-Then, import it into your project's `package.json` file:
-
-```json title="package.json"
-"dependencies": {
- ...
- "@fort-major/msq-client": "^0.3",
- ...
-}
-```
-
-Users will need to connect to MetaMask and the MSQ Snap.
-
-The MSQ client library does this using the following function. For example, a user who interacts with a frontend element (e.g., button) that triggers the function will be prompted to connect using Metamask and install the MSQ Snap.
-
-```typescript title="src/frontend/index.tsx"
-const result = await MsqClient.create();
-
-if (!("Ok" in result)) {
- // handle possible errors
-}
-```
-
-Then, retrieve the client with the following code:
-
-```typescript title="src/frontend/index.tsx"
-import { TMsqCreateOk, MsqClient } from "@fort-major/msq-client";
-
-const msq: MsqClient = (result as TMsqCreateOk).Ok;
-```
-
-The MSQ client library version correlates with the respective Snap version. For example, the client library version `0.2.4` works with Snap version `0.2.x` or `0.3.x`, but does not work with `1.x.x`.
-
-## User authorization
-
-To enable users to authorize with MSQ and interact with your dapp, you can call the `requestLogin()` function of the client:
-
-```typescript title="src/frontend/index.tsx"
-import { Identity } from "@dfinity/identity";
-
-const identity: Identity | null = await msq.requestLogin();
-
-if (identity === null) {
- // the user has rejected to log in
-}
-```
-
-This function returns an identity object which can then be supplied to an agent's `HttpAgent` constructor which can then be used to call canisters on a user's behalf:
-
-```typescript title="src/frontend/index.tsx"
-import { HttpAgent } from "@dfinity/agent";
-
-const agent = new HttpAgent({ identity });
-```
-
-Authorization for a user lasts indefinitely unless explicitly ended. The following code can be used to check if a user's session exists:
-
-```typescript title="src/frontend/index.tsx"
-if (msq.isAuthorized()) {
-}
-```
-
-To stop the user's session, use the `requestLogout()` function:
-
-```typescript title="src/frontend/index.tsx"
-if (await msq.requestLogout()) {
-} else {
-}
-```
-
-You can learn more about user authentication in the [MSQ documentation](https://github.com/fort-major/msq/blob/master/documentation/integration.md).
-
-## ICRC-1 payments
-
-MSQ enables users to make payments using a pre-defined ICRC-1 account through the `requestICRC1Payment()` function:
-
-```typescript
-const blockId: bigint | null = await msq.requestICRC1Payment({
- if (blockId === null) {
- renderErrorScreen("Payment failed");
- },
- // A canister ID of the valid `ICRC-1` token:
- tokenCanisterId,
- to: {
- // Payment recipient's `principal` ID
- owner,
- // Payment recipient's `subaccount` ID
- subaccount,
- },
- // An amount of tokens that the user needs to transfer to the recipient
- amount,
- // An optional ICRC-1 memo
- memo,
-});
-```
-
-This function returns either a `bigint` or `null`. A `bigint` response will indicate the block number of the executed ICRC-1 transaction and means that the payment was successful. That block number can then be used to query the token canister, verify the payment, and execute some business logic.
-
-MSQ supports ICRC-1 token payments by default through a series of whitelisted ICRC-1 tokens. If you accept payment of a whitelisted token, your workflow will execute as expected. However, if you accept a token that isn't currently whitelisted, the user will be prompted to add the token to their personal whitelist.
-
-[View the MSQ documentation for the full list of whitelisted ICRC-1 tokens](https://github.com/fort-major/msq/blob/master/documentation/integration.md#icrc-1-payments).
-
-## Resources
-
-- [MSQ GitHub repo](https://github.com/fort-major/msq/blob/master/)
-
-- [MSQ documentation](https://github.com/fort-major/msq/blob/master/documentation/integration.md)
-
-- [MSQ MetaMask Snap](https://snaps.metamask.io/snap/npm/fort-major/msq/)
diff --git a/docs/developer-docs/identity/authentication/nfid.mdx b/docs/developer-docs/identity/authentication/nfid.mdx
deleted file mode 100644
index e086bb819a..0000000000
--- a/docs/developer-docs/identity/authentication/nfid.mdx
+++ /dev/null
@@ -1,302 +0,0 @@
----
-keywords: [intermediate, tutorial, user sign in, user login, nfid]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-import '/src/components/CenterImages/center.scss';
-
-
-# NFID
-
-
-
-## Overview
-
-[NFID](https://nfid.one/) is a form of digital identity built on ICP. Similar to Internet Identity, NFID allows users to sign into services without downloading an app or extension and can be used across several different dapps.
-
-NFID is different from Internet Identity, however, in the fact that is allows you to sign in to a dapp using your email or Google account. With Internet Identity, these log in options aren't available. This makes NFID a great option for those that want to use email or Google authentication methods.
-
-NFID also supports signing in with a passkey stored on a mobile device or local keychain, which is the same method used by Internet Identity.
-
-## Using NFID
-
-### Prerequisites
-
-Before starting the guide, verify the following:
-
-- [x] You have `Node.js` `16.0.0` or newer installed for frontend development and can install packages using `npm install` in your project. For information about installing node for your local operating system and package manager, see the [Node](https://nodejs.org/en/) website.
-
-- [x] You have downloaded and installed the IC SDK package as described in the [download and install](/docs/current/developer-docs/getting-started/install) page.
-
-Check out the [GitHub repo for this project](https://github.com/internet-identity-labs/motoko-bootcamp/tree/main) to clone and deploy the project quickly.
-
-### Create a new project
-
-First, create a new project with the `dfx new` command:
-
-```
-dfx new NFID_project
-```
-
-If using `dfx` v0.17.0 and newer, select 'Motoko' and 'Vanilla JS' when prompted.
-
-### Edit the backend canister
-
-Replace the default Motoko backend canister code (`src/NFID_backend/main.mo`) with the following:
-
-```motoko title="src/NFID_backend/main.mo"
-import Principal "mo:base/Principal";
-
-actor {
- public shared query({caller}) func greet(name : Text) : async Text {
- return "Hello, " # name # "! " # "Your PrincipalId is: " # Principal.toText(caller);
- };
-};
-```
-
-### Update the project's `dfx.json` file.
-
-Replace the `dfx.json` file's content with the following configuration:
-
-```json title="dfx.json"
-{
- "canisters": {
- "NFID_backend": {
- "main": "src/NFID_backend/main.mo",
- "type": "motoko"
- },
- "NFID_frontend": {
- "dependencies": [
- "NFID_backend"
- ],
- "frontend": {
- "entrypoint": "src/NFID_frontend/src/index.html"
- },
- "source": [
- "src/NFID_frontend/assets"
- ],
- "type": "assets"
- }
- },
- "defaults": {
- "build": {
- "args": "",
- "packtool": ""
- }
- },
- "version": 1
-}
-```
-
-### Install the `auth-client` package.
-
-Install the DFINITY `auth-client` package with the command:
-
-```
-npm install --save @dfinity/auth-client
-```
-
-### Create a file called `index.html` in the subdirectory `src/NFID_frontend/src/`.
-
-Insert the following code into the `index.html` file:
-
-```html title="src/NFID_frontend/src/index.html"
-
-
-
-
-
- NFID example
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### Create an `index.js` file in the `src/NFID_frontend/src` subdirectory.
-
-Insert the following code into this new `index.js` file:
-
-```javascript title="src/NFID_frontend/src/index.js"
-import { Actor } from "@dfinity/agent";
-import { AuthClient } from "@dfinity/auth-client";
-import { NFID_backend } from "../../declarations/NFID_backend";
-
-let authClient = null;
-
-async function init() {
- authClient = await AuthClient.create();
-}
-
-document.querySelector("form").addEventListener("submit", async (e) => {
- e.preventDefault();
- const button = e.target.querySelector("button");
-
- const name = document.getElementById("name").value.toString();
-
- button.setAttribute("disabled", true);
-
- // Interact with foo actor, calling the greet method
- const greeting = await NFID_backend.greet(name);
-
- button.removeAttribute("disabled");
-
- document.getElementById("greeting").innerText = greeting;
-
- return false;
-});
-
-function handleSuccess() {
- const principalId = authClient.getIdentity().getPrincipal().toText();
-
- document.getElementById(
- "principalId"
- ).innerText = `Your PrincipalId: ${principalId}`;
-}
-
-document.getElementById("login").addEventListener("click", async (e) => {
- if (!authClient) throw new Error("AuthClient not initialized");
-
- authClient.login({
- onSuccess: handleSuccess,
- });
-});
-
-init();
-```
-
-### Deploy your project
-
-Deploy the project with the command:
-
-```bash
-dfx deploy
-```
-
-You will receive the URL for the frontend and backend canisters running locally:
-
-```bash
-Deployed canisters.
-URLs:
- Frontend canister via browser
- NFID_frontend: http://127.0.0.1:4943/?canisterId=br5f7-7uaaa-aaaaa-qaaca-cai
- Backend canister via Candid interface:
- NFID_backend: http://127.0.0.1:4943/?canisterId=bw4dl-smaaa-aaaaa-qaacq-cai&id=be2us-64aaa-aaaaa-qaabq-cai
-```
-
-Open the `NFID_frontend` URL in your web browser. You'll see the following UI:
-
-![UI](../_attachments/default-ui.png)
-
-### Configure NFID
-
-Currently, the `Log me in` button doesn't have any functionality when clicked. Let's configure it to use NFID.
-
-Replace the existing `index.js` code with the following:
-
-```javascript title="src/NFID_frontend/src/index.js"
-import { Actor } from "@dfinity/agent";
-import { AuthClient } from "@dfinity/auth-client";
-import { NFID_backend } from "../../declarations/NFID_backend";
-
-let authClient = null;
-
-async function init() {
- authClient = await AuthClient.create();
-}
-
-document.querySelector("form").addEventListener("submit", async (e) => {
- e.preventDefault();
- const button = e.target.querySelector("button");
-
- const name = document.getElementById("name").value.toString();
-
- button.setAttribute("disabled", true);
-
- // Interact with foo actor, calling the greet method
- const greeting = await NFID_backend.greet(name);
-
- button.removeAttribute("disabled");
-
- document.getElementById("greeting").innerText = greeting;
-
- return false;
-});
-
-function handleSuccess() {
- const principalId = authClient.getIdentity().getPrincipal().toText();
-
- document.getElementById(
- "principalId"
- ).innerText = `Your PrincipalId: ${principalId}`;
-
- Actor.agentOf(NFID_backend).replaceIdentity(
- authClient.getIdentity()
- );
-}
-
-document.getElementById("login").addEventListener("click", async (e) => {
- if (!authClient) throw new Error("AuthClient not initialized");
-
- const APP_NAME = "NFID example";
- const APP_LOGO = "https://nfid.one/icons/favicon-96x96.png";
- const CONFIG_QUERY = `?applicationName=${APP_NAME}&applicationLogo=${APP_LOGO}`;
-
- const identityProvider = `https://nfid.one/authenticate${CONFIG_QUERY}`;
-
- authClient.login({
- identityProvider,
- onSuccess: handleSuccess,
- windowOpenerFeatures: `
- left=${window.screen.width / 2 - 525 / 2},
- top=${window.screen.height / 2 - 705 / 2},
- toolbar=0,location=0,menubar=0,width=525,height=705
- `,
- });
-});
-
-init();
-```
-
-
-### Redeploy the canisters
-
-To implement the changes, redeploy the canisters with `dfx deploy`.
-
-Now, when you click 'Log me in', you'll get an NFID login prompt:
-
-![NFID login](../_attachments/nfid-ui.png)
-
-## Resources
-
-- [GitHub repo for this project](https://github.com/internet-identity-labs/motoko-bootcamp/tree/main).
-
-- [Video tutorial for this project](https://www.youtube.com/watch?v=jqNQQf6V6zg).
-
-- [How NFID works](https://docs.nfid.one/embed/how-it-works/overview).
-
-- [NFID documentation](https://docs.nfid.one/embed/integration/quickstart).
-
-- [NFID playground](https://playground.nfid.one/).
-
-- [NFID Medium blog post](https://medium.com/dfinity/nfid-the-digital-identity-protocol-7d8a39f7ac85).
-
-
diff --git a/docs/developer-docs/identity/authentication/overview.mdx b/docs/developer-docs/identity/authentication/overview.mdx
index 69a38f69fb..0531a84618 100644
--- a/docs/developer-docs/identity/authentication/overview.mdx
+++ b/docs/developer-docs/identity/authentication/overview.mdx
@@ -20,9 +20,9 @@ Authentication methods available on ICP include:
- [Internet Identity](/docs/current/developer-docs/identity/internet-identity/overview): ICP's native identity service that uses a cryptographic public/private key pair for authentication.
-- [Email and password](email-password.mdx): Authentication with an email and password.
+- [Email and password](https://nfid.one): Authentication with an email and password.
-- [NFID](nfid.mdx): A digital form of identity that allows users to use an email and password or their Google account.
+- [NFID](https://nfid.one/): A digital form of identity that allows users to use an email and password or their Google account.
- [`ic-auth`](https://github.com/id-daniel-mccoy/ic-auth): A modular tool to integrate wallet providers into ICP apps. Supports Stoic, Plug, Internet Identity, and NFID.
@@ -30,12 +30,12 @@ Authentication methods available on ICP include:
The following tools enable authenticating with ICP dapps using wallet addresses from other chains and ecosystems:
-- [Sign in with Bitcoin](siwb.mdx): An authentication standard that enables Bitcoin wallet-based authentication for ICP applications.
+- [Sign in with Bitcoin](https://github.com/AstroxNetwork/ic-siwb): An authentication standard that enables Bitcoin wallet-based authentication for ICP applications.
-- [Sign in with Ethereum](siwe.mdx): An authentication standard that enables Ethereum wallet-based authentication for ICP applications.
+- [Sign in with Ethereum](https://github.com/kristoferlund/ic-siwe-react-demo-rust): An authentication standard that enables Ethereum wallet-based authentication for ICP applications.
-- [Sign in with Solana](siws.mdx): An authentication standard that enables Solana wallet-based authentication for ICP applications.
+- [Sign in with Solana](https://github.com/kristoferlund/ic-siws): An authentication standard that enables Solana wallet-based authentication for ICP applications.
-- [MSQ library](msq.mdx): A client library for dapps to enable user interaction with ICP solely via their existing MetaMask wallet using the [Metamask Snaps](https://metamask.io/snaps/) feature.
+- [MSQ library](https://icp.msq.tech/): A client library for dapps to enable user interaction with ICP solely via their existing MetaMask wallet using the [Metamask Snaps](https://metamask.io/snaps/) feature.
diff --git a/docs/developer-docs/identity/authentication/siwb.mdx b/docs/developer-docs/identity/authentication/siwb.mdx
deleted file mode 100644
index db240c12a0..0000000000
--- a/docs/developer-docs/identity/authentication/siwb.mdx
+++ /dev/null
@@ -1,131 +0,0 @@
----
-keywords: [advanced, bitcoin, sign in, bitcoin sign in]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# Sign in with Bitcoin
-
-
-
-## Overview
-
-Sign in with Bitcoin (SIWB) is a fork of the [sign in with Ethereum](siwe.mdx) package that enables dapps to provide users with the option to authenticate with their Bitcoin wallet address.
-
-SIWB supports the popular BTC wallets [Wizz](https://wizzwallet.io/) and [Unisat](https://unisat.io/).
-
-### Key features
-
-- Consistent principal generation: Ensures that logging in with a BTC wallet will produce the same principal consistently.
-
-- Session identity uniqueness: Each session identity is specific to the application's context, avoiding cross-app identity exploits.
-
-- Direct BTC-to-principal mapping: Each BTC address has a 1:1 correlation with a principal.
-
-- Timebound sessions: Developers can set session expiration times for control and security enhancement.
-
-- Prebuilt identity provider: A prebuilt canister to integrate into any existing ICP dapp.
-
-## Usage
-
-The SIWB package can be downloaded from its [GitHub repo](https://github.com/AstroxNetwork/ic-siwb.git) which includes an example integration.
-
-To use the example integration, clone the repo, then deploy the included pre-built canisters:
-
-```
-git clone https://github.com/AstroxNetwork/ic-siwb.git
-cd ic-siwb
-dfx start --clean --background
-npm install
-dfx deploy
-```
-
-This example deploys the prebuild `ic_siwb_provider` canister alongside an example `ic_siwb_test_canister`.
-
-:::caution
-
-If you are deploying on a Mac OS X machine and receive an error such as:
-
-```
-secp256k1-sys@0.8.1: error: unable to create target: 'No available targets are compatible with triple "wasm32-unknown-unknown"'
-error: failed to run custom build command for `secp256k1-sys v0.8.1`
-```
-
-This is due to the default Mac OS X clang compiler not supporting compiling to target wasm32-unknown-unknown.
-
-You can remedy this error by installing another compiler using `brew` that does support wasm32-unknown-unknown:
-
-```
-brew install llvm
-export PATH="/opt/homebrew/opt/llvm/bin:$PATH" && export LDFLAGS="-L/opt/homebrew/opt/llvm/lib" && export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
-cargo build --target wasm32-unknown-unknown --release
-```
-:::
-
-
-As part of the canisters' deployment, both will require initialization arguments. The first is the `ic_siwb_provider` canister. Before initialization, this canister's ID will be printed on the terminal in a line such as:
-
-```
-Installing canisters...
-Installing code for canister ic_siwb_provider, with canister ID bkyz2-fmaaa-aaaaa-qaaaq-cai
-This canister requires an initialization argument.
-```
-
-Copy the canister's ID. Then, configure the initialization arguments as prompted:
-
-- URI: The full URL, such as `http://localhost:3000`.
-- Salt: A string used to generate seed that uniquely identifies each user principal.
-- Domain: The domain name, such as `localhost`.
-- Optional runtime feature enabled: Select yes to enable and no to disable.
-- Optional statement: A message presented to the user by the Bitcoin wallet.
-- Optional scheme: The scheme used to serve the frontend that uses SIWB. Defaults to "https".
-- Optional network: Defaults to the Bitcoin mainnet.
-- Optional session expiration time: Time to live for a session in nanoseconds.
-- Optional target: All canisters for which the identity delegation is allowed. Defaults to None.
-- Optional sign in expiration time: Time to live for a sign in message in nanoseconds.
-
-An example of the canister's initialization configuration can be found below:
-
-```
-(
- record {
- uri = "http://localhost:3000";
- runtime_features = null;
- domain = "localhost";
- statement = null;
- scheme = null;
- salt = "test";
- network = null;
- session_expires_in = null;
- targets = null;
- sign_in_expires_in = null;
- },
-)
-```
-
-Next, you will need to pass the canister ID for `ic_siwb_provider` to the `ic_siwb_test_canister` as its initialization argument when prompted:
-
-```
-Installing code for canister ic_siwb_test_canister, with canister ID bd3sg-teaaa-aaaaa-qaaba-cai
-This canister requires an initialization argument.
-✔ Enter a text (type :e to use editor) · bkyz2-fmaaa-aaaaa-qaaaq-cai
-Sending the following argument:
-("bkyz2-fmaaa-aaaaa-qaaaq-cai")
-```
-
-Once both canisters have been installed, initialized, and deployed, you will receive the local URLs for both canisters:
-
-```
-URLs:
- Backend canister via Candid interface:
- ic_siwb_provider: http://127.0.0.1:4943/?canisterId=be2us-64aaa-aaaaa-qaabq-cai&id=bkyz2-fmaaa-aaaaa-qaaaq-cai
- ic_siwb_test_canister: http://127.0.0.1:4943/?canisterId=be2us-64aaa-aaaaa-qaabq-cai&id=bd3sg-teaaa-aaaaa-qaaba-cai
-```
-
-You can view the full frontend example in the [project's repo](https://github.com/AstroxNetwork/ic-siwb/tree/main/examples/frontend).
-
-## Resources
-
-- [View this project on GitHub](https://github.com/AstroxNetwork/ic-siwb/tree/main)
-
-- [Join the forum conversation for this project](https://forum.dfinity.org/t/sign-in-with-bitcoin-on-icp/32734)
diff --git a/docs/developer-docs/identity/authentication/siwe.mdx b/docs/developer-docs/identity/authentication/siwe.mdx
deleted file mode 100644
index 2241ad0234..0000000000
--- a/docs/developer-docs/identity/authentication/siwe.mdx
+++ /dev/null
@@ -1,39 +0,0 @@
----
-keywords: [advanced, ethereum, sign in, ethereum sign in]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# Sign in with Ethereum
-
-
-
-## Overview
-
-The [SIWE](https://eips.ethereum.org/EIPS/eip-4361) standard defines a protocol for off-chain authentication of Ethereum accounts. This protocol is designed to enable Ethereum wallet-based authentication for applications on other platforms, such as the Internet Computer (ICP).
-
-By integrating the third party library [ic_siwe](https://github.com/kristoferlund/ic-siwe/tree/main/packages/ic_siwe) or adding the pre-built [ic_siwe_provider](https://github.com/kristoferlund/ic-siwe/tree/main/packages/ic_siwe_provider) canister to your project, you can enable users to sign into your application using their Ethereum wallets.
-
-The goal of the `ic_siwe` project is to enhance the interoperability between Ethereum and ICP, enabling developers to build applications that leverage the strengths of both platforms.
-
-### Key features
-
-- **Ethereum Wallet Sign-In**: Enables Ethereum wallet sign-in for ICP applications. Sign in with any Ethereum wallet to generate an ICP identity and session.
-- **Session identity uniqueness**: Ensures that session identities are specific to each application's context, preventing cross-app identity misuse.
-- **Consistent principal generation**: Guarantees that logging in with an Ethereum wallet consistently produces the same principal, irrespective of the client used.
-- **Direct Ethereum address to principal mapping**: Creates a 1:1 correlation between Ethereum addresses and principals within the scope of the current application.
-- **Timebound sessions**: Allows developers to set expiration times for sessions, enhancing security and control.
-
-## Usage
-
-While the `ic_siwe` library can be integrated with any Rust-based ICP project, using the pre-built [ic-siwe-provider](https://github.com/kristoferlund/ic-siwe/tree/main/packages/ic_siwe_provider) canister is the easiest way to integrate Ethereum wallet authentication into an ICP app built using any language.
-
-The canister is designed as a plug-and-play solution for developers, enabling easy integration into existing ICP applications with minimal coding requirements. By adding the pre built `ic_siwe_provider` canister to the `dfx.json` of an ICP project, developers can quickly enable Ethereum wallet-based authentication for their applications. The canister simplifies the authentication flow by managing the creation and verification of SIWE messages and handling user session management.
-
-## React demo application
-
-A demo application that uses the `ic_siwe_provider` canister to demonstrate the full login flow is available in two versions:
-- [ic-siwe-react-demo-rust](https://github.com/kristoferlund/ic-siwe-react-demo-rust)
-- [ic-siwe-react-demo-ts](https://github.com/kristoferlund/ic-siwe-react-demo-ts)
-
-The demo uses another package from the `ic-siwe` project, [ic-use-siwe-identity](https://github.com/kristoferlund/ic-siwe/tree/main/packages/ic-use-siwe-identity), a React hook and context provider for easy frontend integration with SIWE enabled ICP canisters.
\ No newline at end of file
diff --git a/docs/developer-docs/identity/authentication/siws.mdx b/docs/developer-docs/identity/authentication/siws.mdx
deleted file mode 100644
index ca1fe8472e..0000000000
--- a/docs/developer-docs/identity/authentication/siws.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-keywords: [advanced, solana sign in, solana sign in]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# Sign in with Solana
-
-
-
-## Overview
-
-The `ic-siws` (SIWS) project provides ICP dapps with a way to enable Solana-based authentication. The project's goal is to enhance the interoperability between ICP and Solana by enabling developers to build dapps that can use both chains.
-
-The [`ic-siwe` (SIWE)](siwe.mdx) project is also available for enabling Ethereum-based authentication.
-
-You can try the deployed demo here: https://guidq-3qaaa-aaaal-qiteq-cai.icp0.io
-
-### Key features
-
-- **Solana Wallet Sign-In**: Enables any Solana wallet to generate an ICP identity and sign into ICP dapps.
-
-- **Prebuilt identity solution**: Provides a prebuilt canister that can be integrated into any ICP project, independent of the project's programming language.
-
-- **Direct Solana wallet address to `Principal` mapping**: Uses a 1:1 correlation between Solana addresses and `Principals`.
-
-- **Consistent principal generation**: Ensures each Solana wallet produces the same `Principal`.
-
-- **Session identity uniqueness**: Verifies that each session identity is specific to each application's context.
-
-- **Timebound sessions**: Developers can set expiration times for sessions to enhance control and security.
-
-
-## Usage
-
-To use SIWS, developers have two possible workflows:
-
-1. Use the prebuilt [ic_siws_provider](https://github.com/kristoferlund/ic-siws/tree/main/packages/ic_siws_provider)**: The pre-built identity provider canister can be integrated with any ICP project by adding the canister's information to the project's `dfx.json` file. When using the pre-built canister solution, the following login workflow is used:
-
-- An ICP dapp requests a SIWS message on behalf of a user from the `ic_siws_provider` canister.
-
-- The dapp displays the SIWS message to the user who must sign it with their Solana wallet.
-
-- The dapp sends the signed SIWS message to the `ic_siws_provider` canister. The canister verifies the signature and creates an ICP Principal for the user.
-
-- The dapp retrieves the Principal from the `ic_siws_provider` canister and can now use the new Principal to make authenticated calls for the user.
-
-2. **Use the [ic_siws](https://crates.io/crates/ic_siws) Rust library directly**: Provides developers with full control over the SIWS integration through the `ic_swis` library.
-
-## Resources
-
-- [ic_siws Rust library](https://github.com/kristoferlund/ic-siws/tree/main/packages/ic_siws)
-
-- [`ic-siws-provider` prebuilt canister](https://github.com/kristoferlund/ic-siws/tree/main/packages/ic_siws_provider)
-
-- [ic-siws-react-demo-rust](https://github.com/kristoferlund/ic-siws-react-demo-rust): A demo dapp written in Rust that demonstrates how to integrate SIWS.
-
-- [ic-use-siws-identity](https://github.com/kristoferlund/ic-siws/tree/main/packages/ic-use-siws-identity): A React hook and context provider for enabling frontend integration with SIWS-enabled canisters.
diff --git a/docs/developer-docs/multi-chain/ethereum/using-eth/eth-dev-workflow.mdx b/docs/developer-docs/multi-chain/ethereum/using-eth/eth-dev-workflow.mdx
index 6d676c3016..e1bd07ef5c 100644
--- a/docs/developer-docs/multi-chain/ethereum/using-eth/eth-dev-workflow.mdx
+++ b/docs/developer-docs/multi-chain/ethereum/using-eth/eth-dev-workflow.mdx
@@ -41,7 +41,7 @@ Additional sample projects can be found in the [EVM RPC](../evm-rpc/samples.mdx)
## Integrating with Ethereum
-The Ethereum integration can be incorporated into dapps for several purposes, such as authentication, as shown in the [Sign In With Ethereum (SIWE)](/docs/current/developer-docs/identity/authentication/siwe) example. The SIWE example showcases how to use an Ethereum wallet to sign into ICP applications. It creates a 1:1 correlation between Ethereum addresses and ICP principals within the scope of the application. It also guarantees that logging in with an Ethereum wallet will consistently produce the same principal regardless of the client used.
+The Ethereum integration can be incorporated into dapps for several purposes, such as authentication, as shown in the [Sign In With Ethereum (SIWE)](https://github.com/kristoferlund/ic-siwe) example. The SIWE example showcases how to use an Ethereum wallet to sign into ICP applications. It creates a 1:1 correlation between Ethereum addresses and ICP principals within the scope of the application. It also guarantees that logging in with an Ethereum wallet will consistently produce the same principal regardless of the client used.
## Using ckETH
diff --git a/docs/developer-docs/security/security-best-practices/inter-canister-calls.mdx b/docs/developer-docs/security/security-best-practices/inter-canister-calls.mdx
index 939b722ae8..5f4796e3b2 100644
--- a/docs/developer-docs/security/security-best-practices/inter-canister-calls.mdx
+++ b/docs/developer-docs/security/security-best-practices/inter-canister-calls.mdx
@@ -153,7 +153,7 @@ To address issues around message ordering that can lead to bugs, one usually emp
The locks would usually be released in the callback. That bears the risk that the lock may never be released in case the callback traps, as we discussed in [securely handle traps in callbacks](#securely-handle-traps-in-callbacks). The code examples below shows how one can securely implement a lock per caller.
- In Rust, one can use the drop pattern where each caller lock (`CallerGuard` struct) implementats the `Drop` trait to release the lock. From Rust CDK version `0.5.1`, any local variables still go out of scope if the callback traps, so the lock on the caller is released even in that case. Technically, the CDK calls into the `ic0.call_on_cleanup` API to release these resources. Recall that `ic0.call_on_cleanup` is executed if the `reply` or the `reject` callback executed and trapped.
-- In Motoko, one can use the [`try`/`finally`](docs/current/motoko/main/reference/language-manual/#try) control flow construct. This construct guarantees that the lock is released in the `finally` block regardless of any errors or traps in the `try` or `catch` blocks.
+- In Motoko, one can use the [`try`/`finally`](/docs/current/motoko/main/reference/language-manual/#try) control flow construct. This construct guarantees that the lock is released in the `finally` block regardless of any errors or traps in the `try` or `catch` blocks.
diff --git a/docs/developer-docs/smart-contracts/best-practices/troubleshooting.mdx b/docs/developer-docs/smart-contracts/best-practices/troubleshooting.mdx
index 1fd17a237b..123fa74c0d 100644
--- a/docs/developer-docs/smart-contracts/best-practices/troubleshooting.mdx
+++ b/docs/developer-docs/smart-contracts/best-practices/troubleshooting.mdx
@@ -28,9 +28,9 @@ If your canister is running on a subnet that has a consistently high load and th
### Recommendation: Use query calls instead of update calls when possible.
-[Query calls](/docs/current/developer-docs/web-apps/design-dapps#using-query-calls) are executed on a single node within a subnet and do not go through consensus, therefore they can be returned much faster than an update call. For some applications, query calls can be used in place of update calls to reduce latency.
+[Query calls](/docs/current/developer-docs/smart-contracts/call/overview/#query-calls) are executed on a single node within a subnet and do not go through consensus, therefore they can be returned much faster than an update call. For some applications, query calls can be used in place of update calls to reduce latency.
-However, the security trade-offs of query calls must be considered. Since query calls do not go through consensus, it is not recommended that they are used for retrieving sensitive information that requires data assurance. For example, returning financial data on a decentralized exchange dapp should not use basic query calls, as it is important the call return data that has been validated through the subnet's consensus. As an alternative, [certified queries](/docs/current/developer-docs/web-apps/design-dapps#using-query-calls) may be used.
+However, the security trade-offs of query calls must be considered. Since query calls do not go through consensus, it is not recommended that they are used for retrieving sensitive information that requires data assurance. For example, returning financial data on a decentralized exchange dapp should not use basic query calls, as it is important the call return data that has been validated through the subnet's consensus. As an alternative, [certified queries](/docs/current/developer-docs/smart-contracts/call/overview/#query-calls) may be used.
### Recommendation: Use efficient query calls.
diff --git a/docs/developer-docs/smart-contracts/write/overview.mdx b/docs/developer-docs/smart-contracts/write/overview.mdx
index fdc353021e..fb24557f70 100644
--- a/docs/developer-docs/smart-contracts/write/overview.mdx
+++ b/docs/developer-docs/smart-contracts/write/overview.mdx
@@ -58,7 +58,7 @@ The typical development workflow of the frontend is:
3. The developer deploys the project. `dfx` will compile the frontend asset files into an asset canister.
4. Users open the application in the browser by navigating to the URL `https://.icp0.io` or a [custom domain](/docs/current/developer-docs/web-apps/custom-domains/using-custom-domains) if one has been registered for the canister.
5. The canister serves the web assets to the browser via its `http_request` endpoint that gets invoked for each HTTP request.
-6. When the JS code runs in the browser, it can call the backend canister endpoints using the [ICP JavaScript agent](/docs/current/developer-docs/web-apps/browser-js/js-request-api) library, which is analogous to `web3.js` and `ethers.js` of Ethereum.
+6. When the JS code runs in the browser, it can call the backend canister endpoints using the [ICP JavaScript agent](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent) library, which is analogous to `web3.js` and `ethers.js` of Ethereum.
#### Limitations
Server-side rendering (SSR) does not work in canisters because they require JS code that is not built into canisters.
@@ -107,7 +107,7 @@ Navigate into your project directory:
cd hello
```
-For projects created with `dfx new`, the project structure will resemble the following. If you are using an ICP Ninja project or other sample project, project structure may vary.
+For projects created with `dfx new`, the project structure will resemble the following. If you are using an ICP Ninja project or other sample project, project structure may vary.
@@ -226,7 +226,7 @@ In this directory, the following files and directories are notable:
### Reviewing the default program code
-Open the backend canister source code file in your code editor. The backend canister's code will be located in the `src/hello_backend` subdirectory. For projects created with `dfx new`, the default backend code will resemble the following. If you are using an ICP Ninja project or other sample project, program code will vary.
+Open the backend canister source code file in your code editor. The backend canister's code will be located in the `src/hello_backend` subdirectory. For projects created with `dfx new`, the default backend code will resemble the following. If you are using an ICP Ninja project or other sample project, program code will vary.
diff --git a/docs/developer-docs/web-apps/application-frontends/overview.mdx b/docs/developer-docs/web-apps/application-frontends/overview.mdx
index e2283a9d12..3c88956dad 100644
--- a/docs/developer-docs/web-apps/application-frontends/overview.mdx
+++ b/docs/developer-docs/web-apps/application-frontends/overview.mdx
@@ -21,7 +21,7 @@ Application frontends exist in the following forms:
- A frontend canister that communicates with backend canister(s) to provide a full-stack dapp.
-- Backend canisters that communicate with an external frontend application that isn't hosted on ICP. To facilitate this communication, [the ICP JavaScript agent](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent) can be used. [Learn more about the JS request API](/docs/current/developer-docs/web-apps/browser-js/js-request-api).
+- Backend canisters that communicate with an external frontend application that isn't hosted on ICP. To facilitate this communication, [the ICP JavaScript agent](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent) can be used. [Learn more about the JS request API](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent).
- A frontend canister that doesn't communicate with any backend canisters and only provides web assets.
diff --git a/docs/developer-docs/web-apps/browser-js/js-request-api.mdx b/docs/developer-docs/web-apps/browser-js/js-request-api.mdx
deleted file mode 100644
index 2e27a28d9a..0000000000
--- a/docs/developer-docs/web-apps/browser-js/js-request-api.mdx
+++ /dev/null
@@ -1,78 +0,0 @@
----
-keywords: [intermediate, browser js, javascript, ICP JavaScript agent, agents]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# JavaScript request API
-
-
-
-## Overview
-
-To make API calls to ICP endpoints and canisters from a JavaScript program, the ICP JavaScript agent can be used. It provides call, query, and readState methods to an actor.
-
-## Install the ICP JavaScript agent
-
-To install the [ICP JavaScript agent](https://www.npmjs.com/package/@dfinity/agent) with `npm`, use the command:
-
-```
-npm i --save @dfinity/agent
-```
-
-## Import the ICP JavaScript agent in the browser
-
-To import the [ICP JavaScript agent](https://www.npmjs.com/package/@dfinity/agent) in the browser, use the import statement:
-
-```
-import * as agent from "@dfinity/agent";
-```
-
-You can also use individual exports:
-
-```
-import { Actor, HttpAgent } from '@dfinity/agent';
-```
-
-## Making API calls
-
-To make API calls, the [ICP JavaScript agent](https://www.npmjs.com/package/@dfinity/agent) uses the [`fetch`](https://www.npmjs.com/package/isomorphic-fetch) API. Here is an example:
-
-```javascript
-import fetch from 'isomorphic-fetch';
-import { HttpAgent } from '@dfinity/agent';
-
-const host = process.env.DFX_NETWORK === 'local' ? 'http://127.0.0.1:4943' : 'https://icp-api.io';
-
-const agent = new HttpAgent({ fetch, host });
-```
-
-This example includes a `host` option, since the agent will not be able to determine the host using the global context.
-
-You can also pass `fetchOptions` to the agent's constructor, such as a custom header:
-
-```javascript
-import fetch from 'isomorphic-fetch';
-import { HttpAgent } from '@dfinity/agent';
-
-const host = process.env.DFX_NETWORK === 'local' ? 'http://127.0.0.1:4943' : 'https://ic0.app';
-
-/**
- * @type {RequestInit}
- */
-const fetchOptions = {
- headers: {
- 'X-Custom-Header': 'value',
- },
-};
-
-const agent = new HttpAgent({ fetch, host, fetchOptions });
-```
-## ICP JavaScript agent documentation
-
-To learn more about the [ICP JavaScript agent](https://www.npmjs.com/package/@dfinity/agent), check out the [ICP JavaScript agent documentation page](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent).
-
-
-## Resources
-
-You can learn more about using the ICP JavaScript agent to make API calls in the [API documentation](https://agent-js.icp.xyz/agent/index.html).
\ No newline at end of file
diff --git a/docs/developer-docs/web-apps/custom-domains/dns-setup.mdx b/docs/developer-docs/web-apps/custom-domains/dns-setup.mdx
index cdc3f73de0..d5ab678687 100644
--- a/docs/developer-docs/web-apps/custom-domains/dns-setup.mdx
+++ b/docs/developer-docs/web-apps/custom-domains/dns-setup.mdx
@@ -58,7 +58,7 @@ The resulting configuration should look similar to the following screenshot:
![DNS Configuration for `example.ic-domain.live` on Namecheap](namecheap-subdomain.png)
-Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](using-custom-domains#custom-domains-on-the-boundary-nodes).
+Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](./using-custom-domains#custom-domains-on-the-boundary-nodes).
## GoDaddy
@@ -171,7 +171,7 @@ The resulting configuration should look similar to the following screenshot:
![DNS Configuration for `example.ic-domain.live` on GoDaddy](godaddy-subdomain.png)
-Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](using-custom-domains#custom-domains-on-the-boundary-nodes).
+Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](./using-custom-domains#custom-domains-on-the-boundary-nodes).
## Amazon Route 53
@@ -201,4 +201,4 @@ The resulting configuration should look similar to the following screenshot:
![DNS Configuration for `example.ic-domain.live` on Amazon Route 53](route53-subdomain.png)
-Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](using-custom-domains#custom-domains-on-the-boundary-nodes).
+Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](./using-custom-domains#custom-domains-on-the-boundary-nodes).
diff --git a/docs/developer-docs/web-apps/design-dapps.mdx b/docs/developer-docs/web-apps/design-dapps.mdx
deleted file mode 100644
index 8709825343..0000000000
--- a/docs/developer-docs/web-apps/design-dapps.mdx
+++ /dev/null
@@ -1,45 +0,0 @@
----
-keywords: [beginner, concept, dapp design, design considerations]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# Dapp design considerations
-
-
-
-## Overview
-
-As you come up with ideas for dapps, you are going to make many design decisions about how to structure and organize your project. On the Internet Computer, there are a few design decisions that you should pay particular attention to as you plan the implementation for your app.
-
-## Single or multiple canister architecture
-
-One of the first decisions you might want to consider when designing your dapp is whether it should be encapsulated in a single canister or consist of multiple canisters.
-
-For example, if you are writing a simple service with no frontend, you might want to use a single canister to simplify project management and maintenance and focus on adding features. If your dapp has both frontend assets and backend business logic, your project is likely to consist of at least two canisters, with one canister for managing user interface components and another canister for the backend services the application provides.
-
-In planning, you might also consider placing some common reusable services in their own canister so that they can be imported and called from other more-specialized canisters or made available for other developers to use. The [LinkedUp](https://github.com/dfinity/linkedup) sample dapp illustrates this approach by splitting the professional service dapp into two canisters. In the LinkedUp example, the functions that establish social connections are defined in the `connectd` canister and separate from the functions used to set up professional profiles that are defined in the `linkedup` canister. It is easy to imagine extending the dapp with a third canister, for example to schedule events based on profile attributes or shared connections.
-
-## Segregating actors from types and utilities
-
-In planning the architecture for your project, one common practice is to place the code for the main actor in one file with separate additional files for defining the types you program uses and utility functions that don’t require an actor.
-
-For example, you might set up the backend logic for your dapp to consist of the following files:
-
-- `Main.mo` or `main.rs` with the functions that require an actor to send query and update calls.
-
-- `Util.mo` or `util.rs` with helper functions that can be imported for the actor to use.
-
-- `Types.mo` or `types.rs` with all of the data type definitions for your dapp.
-
-## Using query calls
-
-As discussed in [query and update methods](/docs/current/concepts/canisters-code#query-update), queries return results faster than update calls. Therefore, explicitly marking a function as a `query` is an effective strategy for improving application performance. In the planning and design phase, you should consider how best to use query calls instead of functions that can perform queries or updates.
-
-That is a good general rule to follow and can be applied broadly to most categories of dapps. However, you should also consider the security and performance trade-off that queries don’t go through consensus and do not appear on the blockchain. For some dapps, that trade-off might be appropriate. For example, if you are developing a blogging platform, queries that retrieve articles matching a tag probably don’t warrant going through consensus to ensure that a majority of nodes agree on the results. However, if your dapp is retrieving sensitive information—like financial data—you might want more assurance about your results than a basic query provides.
-
-As an alternative to basic queries, the Internet Computer also supports **certified queries**. Certified queries enable you to receive **authenticated responses** that end users can trust. Using certified queries is an advanced technique that is not covered in the tutorials or other developer-focused documentation, but you can learn about how the authentication works and what you need to do to configure your program to return certified data in response to queries in the [IC interface specification](/references/ic-interface-spec.md).
-
-## Data storage and retrieval
-
-The Internet Computer enables you to use **stable memory** to handle long-term data storage—often referred to as orthogonal persistence—and to use **query calls** to retrieve your data. Efficiently retrieving data using one or more keys can typically be achieved by using data structures like hash tables. It is also possible to implement a more traditional database inside a canister.
diff --git a/docs/developer-docs/web-apps/independently-verifying-ic-signatures.mdx b/docs/developer-docs/web-apps/independently-verifying-ic-signatures.mdx
index fb53b2f504..4136775964 100644
--- a/docs/developer-docs/web-apps/independently-verifying-ic-signatures.mdx
+++ b/docs/developer-docs/web-apps/independently-verifying-ic-signatures.mdx
@@ -44,17 +44,17 @@ The call is calculated using the content record, which allows the signature to b
A transaction's signature can be delegated from one key to another. If delegation is used, the `sender_delegation` field contains an array of delegations with the following fields:
-- `delegation` (`map`): A map containing the fields:
+`delegation` (`map`): A map containing the fields:
- - `pubkey` (`blob`): A public key.
+ - `pubkey` (`blob`): A public key.
- - `expiration` (`nat`): The delegation's expiration, defined in nanoseconds analogously to the `ingress_expiry`.
+ - `expiration` (`nat`): The delegation's expiration, defined in nanoseconds analogously to the `ingress_expiry`.
- - `targets` (`array` of `CanisterId`, optional): Sets the delegation to apply only for requests sent to the canisters within the canister list; has a maximum of 1000 canisters.
+ - `targets` (`array` of `CanisterId`, optional): Sets the delegation to apply only for requests sent to the canisters within the canister list; has a maximum of 1000 canisters.
- - `senders` (`array` of `Principal`, optional): Sets the delegation to only apply for requests originating from the principals in the list.
+ - `senders` (`array` of `Principal`, optional): Sets the delegation to only apply for requests originating from the principals in the list.
- - `signature` (`blob`): The signature for the `32-byte` delegation field map, using the 27 bytes `\x1Aic-request-auth-delegation` as the domain separator.
+ - `signature` (`blob`): The signature for the `32-byte` delegation field map, using the 27 bytes `\x1Aic-request-auth-delegation` as the domain separator.
The first delegation in the array has a signature created using the public key corresponding to the `sender_pubkey` field. All subsequent delegations are signed with the public key corresponding to the key contained in the preceding delegation.
@@ -64,15 +64,9 @@ The `sender_sig` field is calculated by concatenating the domain separator, `\x0
To verify a signature with an agent, an accepted identity is required. The following are accepted identity and signature types:
-- Ed25519 and ECDSA signatures.
+- Ed25519 and ECDSA signatures: Plain signatures are supported for these schemes.
- - Plain signatures are supported for the schemes.
-
-- Ed25519 or ECDSA on curve P-256 (also known as secp256r1).
-
- - Using SHA-256 as a hash function.
-
- - Using the Koblitz curve in secp256k1.
+- Ed25519 or ECDSA on curve P-256 (also known as secp256r1): Support for using SHA-256 as a hash function or using the Koblitz curve in secp256k1.
When these identities are encoded as a `Principal`, an agent will attach a suffix byte, which indicates whether the identity is anonymous or self-authenticating.
@@ -125,7 +119,7 @@ match result {
[Reference the crate's implementation logic](https://sourcegraph.com/github.com/dfinity/ic/-/blob/rs/validator/src/ingress_validation.rs?L605) for additional context.
-## Verifying signatures with the library `@dfinity/standalone-sig-verifier-web`
+## Verifying signatures with the JavaScript/TypeScript wrapper `@dfinity/standalone-sig-verifier-web`
An `npm` library has been created as a JavaScript/TypeScript wrapper for the [`ic-standalone-sig-verifier`](https://github.com/dfinity/ic/tree/master/rs/crypto/standalone-sig-verifier) Rust crate.
diff --git a/docs/developer-docs/web-apps/obtain-verify-ic-pubkey.mdx b/docs/developer-docs/web-apps/obtain-verify-ic-pubkey.mdx
deleted file mode 100644
index f973f38922..0000000000
--- a/docs/developer-docs/web-apps/obtain-verify-ic-pubkey.mdx
+++ /dev/null
@@ -1,40 +0,0 @@
----
-keywords: [intermediate, tutorial, verifying public key, obtaining public key, public key, ic public key]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-
-# Verifying the public key
-
-
-
-## Overview
-
-When a user or canister receives a response from ICP, that response will have a certificate that validates the response has not been altered or changed. This certificate is signed by the root of trust, which is the ICP root public key. This public key can be used to additionally verify that a user or canister is interacting with a version of ICP that has not been tampered with, verifying that the response's certificate is valid.
-
-### Local
-
-In a local canister execution environment, the key can be fetched via the [`/api/v2/status`](/docs/current/references/ic-interface-spec#api-status) endpoint.
-
-### Mainnet
-
-On the mainnet, you can use [the ICP JavaScript agent](https://github.com/dfinity/agent-js) or [agent-rs](https://github.com/dfinity/agent-rs) to fetch the public key, as these agents have the root key [hard-coded](https://github.com/dfinity/agent-js/blob/main/packages/agent/src/agent/proxy.ts#L244C1-L250C2).
-
-## Verifying the public key
-
-Once you have obtained the public key, you can validate it is correct by using `dfx` to ping the network you're using, such as:
-
-```bash
-dfx ping ic // mainnet
-dfx ping local // local canister execution
-```
-
-This ping command will return the public root key of the network specified:
-
-```json
-{
- "ic_api_version": "0.18.0" "replica_health_status": "healthy" "root_key": [48, 129, 130, 48, 29, 6, 13, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 1, 2, 1, 6, 12, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 2, 1, 3, 97, 0, 129, 76, 14, 110, 199, 31, 171, 88, 59, 8, 189, 129, 55, 60, 37, 92, 60, 55, 27, 46, 132, 134, 60, 152, 164, 241, 224, 139, 116, 35, 93, 20, 251, 93, 156, 12, 213, 70, 217, 104, 95, 145, 58, 12, 11, 44, 197, 52, 21, 131, 191, 75, 67, 146, 228, 103, 219, 150, 214, 91, 155, 180, 203, 113, 113, 18, 248, 71, 46, 13, 90, 77, 20, 80, 95, 253, 116, 132, 176, 18, 145, 9, 28, 95, 135, 185, 136, 131, 70, 63, 152, 9, 26, 11, 170, 174]
-}
-```
-
-
diff --git a/docs/other/updates/release-notes/0.9.2-rn.md b/docs/other/updates/release-notes/0.9.2-rn.md
index 0eb30dbd45..0a29147c98 100644
--- a/docs/other/updates/release-notes/0.9.2-rn.md
+++ b/docs/other/updates/release-notes/0.9.2-rn.md
@@ -2,7 +2,7 @@
An overview of the 0.9.2 release:
-Be sure to see the [0.9.0 Release Notes](0.9.0-rn) and follow the instructions due to breaking changes since dfx 0.8.4.
+Be sure to see the [0.9.0 Release Notes](./0.9.0-rn) and follow the instructions due to breaking changes since dfx 0.8.4.
## Changes to DFX
diff --git a/docs/references/id-encoding-spec.mdx b/docs/references/id-encoding-spec.mdx
index 2b0d3ba3ff..f758d88d5d 100644
--- a/docs/references/id-encoding-spec.mdx
+++ b/docs/references/id-encoding-spec.mdx
@@ -57,10 +57,10 @@ Links describing our CRC32 function (resp. the polynomial used therein):
* Table entry “CRC-32” on [Wikipedia](https://en.wikipedia.org/wiki/Cyclic_redundancy_check).
* Row “IEEE 802.3; CRC-32” in [Koopman's database](https://users.ece.cmu.edu/~koopman/crc/crc32.html).
-* Entry “CRC-32/ISO-HDLC” in the [CRC catalogue](http://reveng.sourceforge.net/crc-catalogue/all.htm).
+* Entry “CRC-32/ISO-HDLC” in the [CRC catalogue](https://reveng.sourceforge.net/crc-catalogue/all.htm).
* Row labeled “CRC-32” in this [online calculator](https://crccalc.com/).
-Our CRC32 function is defined by the following parameters in the [CRC catalogue](http://reveng.sourceforge.net/crc-catalogue/all.htm) and [online calculator](https://crccalc.com/):
+Our CRC32 function is defined by the following parameters in the [CRC catalogue](https://reveng.sourceforge.net/crc-catalogue/all.htm) and [online calculator](https://crccalc.com/):
```
diff --git a/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx b/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx
index 394d081e66..cbfb3be778 100644
--- a/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx
+++ b/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx
@@ -148,7 +148,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx b/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx
index 567d03bc8a..dcfd9fffdd 100644
--- a/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx
+++ b/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx
@@ -108,7 +108,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-0/03-dev-env.mdx b/docs/tutorials/developer-journey/level-0/03-dev-env.mdx
index 21aaca9694..9c0d9e6fca 100644
--- a/docs/tutorials/developer-journey/level-0/03-dev-env.mdx
+++ b/docs/tutorials/developer-journey/level-0/03-dev-env.mdx
@@ -144,7 +144,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx b/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx
index 96cfc37437..ef433d13b7 100644
--- a/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx
+++ b/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx
@@ -110,7 +110,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx b/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx
index a32c27562a..64942b9790 100644
--- a/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx
+++ b/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx
@@ -140,7 +140,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx b/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx
index b20ca4c355..9363851f66 100644
--- a/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx
+++ b/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx
@@ -273,7 +273,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-1/1.1-live-demo.mdx b/docs/tutorials/developer-journey/level-1/1.1-live-demo.mdx
index 19ade8ec07..45048c1422 100644
--- a/docs/tutorials/developer-journey/level-1/1.1-live-demo.mdx
+++ b/docs/tutorials/developer-journey/level-1/1.1-live-demo.mdx
@@ -187,7 +187,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-1/1.2-motoko-lvl1.mdx b/docs/tutorials/developer-journey/level-1/1.2-motoko-lvl1.mdx
index fc9780c46a..1bd3fa8fe4 100644
--- a/docs/tutorials/developer-journey/level-1/1.2-motoko-lvl1.mdx
+++ b/docs/tutorials/developer-journey/level-1/1.2-motoko-lvl1.mdx
@@ -326,9 +326,9 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- [Upcoming hackathons](https://dfinity.org/hackathons/).
-- [Weekly developer office hours](https://discord.gg/4a7SZzRk?event=1164114241893187655) to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
+- Weekly developer office hours, hosted on the [ICP Discord](https://discord.internetcomputer.org) server to ask questions, get clarification, and chat with other developers live via voice chat.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx b/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx
index bf3df76b22..6c600cf950 100644
--- a/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx
+++ b/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx
@@ -1035,7 +1035,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-1/1.4-using-cycles.mdx b/docs/tutorials/developer-journey/level-1/1.4-using-cycles.mdx
index 0b751df45e..3e860517f8 100644
--- a/docs/tutorials/developer-journey/level-1/1.4-using-cycles.mdx
+++ b/docs/tutorials/developer-journey/level-1/1.4-using-cycles.mdx
@@ -252,7 +252,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx b/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx
index c15abce0e1..a7908ef799 100644
--- a/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx
+++ b/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx
@@ -153,7 +153,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-1/1.6-managing-canisters.mdx b/docs/tutorials/developer-journey/level-1/1.6-managing-canisters.mdx
index bc3408e826..ed868ae122 100644
--- a/docs/tutorials/developer-journey/level-1/1.6-managing-canisters.mdx
+++ b/docs/tutorials/developer-journey/level-1/1.6-managing-canisters.mdx
@@ -429,7 +429,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-2/2.1-storage-persistence.mdx b/docs/tutorials/developer-journey/level-2/2.1-storage-persistence.mdx
index c569b1273e..1fdb682f73 100644
--- a/docs/tutorials/developer-journey/level-2/2.1-storage-persistence.mdx
+++ b/docs/tutorials/developer-journey/level-2/2.1-storage-persistence.mdx
@@ -266,7 +266,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-2/2.2-advanced-canister-calls.mdx b/docs/tutorials/developer-journey/level-2/2.2-advanced-canister-calls.mdx
index c08daf44e4..a33395e8bb 100644
--- a/docs/tutorials/developer-journey/level-2/2.2-advanced-canister-calls.mdx
+++ b/docs/tutorials/developer-journey/level-2/2.2-advanced-canister-calls.mdx
@@ -284,7 +284,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-2/2.3-third-party-canisters.mdx b/docs/tutorials/developer-journey/level-2/2.3-third-party-canisters.mdx
index a89f1576bd..08f6bb4838 100644
--- a/docs/tutorials/developer-journey/level-2/2.3-third-party-canisters.mdx
+++ b/docs/tutorials/developer-journey/level-2/2.3-third-party-canisters.mdx
@@ -220,7 +220,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx b/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx
index d732fae54f..aff7247042 100644
--- a/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx
+++ b/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx
@@ -378,7 +378,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx b/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx
index d8f5710824..2f17abc20b 100644
--- a/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx
+++ b/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx
@@ -477,7 +477,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-2/2.6-motoko-lvl2.mdx b/docs/tutorials/developer-journey/level-2/2.6-motoko-lvl2.mdx
index 68b9daf376..fd256620d3 100644
--- a/docs/tutorials/developer-journey/level-2/2.6-motoko-lvl2.mdx
+++ b/docs/tutorials/developer-journey/level-2/2.6-motoko-lvl2.mdx
@@ -451,7 +451,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-3/3.1-package-managers.mdx b/docs/tutorials/developer-journey/level-3/3.1-package-managers.mdx
index 670751d230..62aa662f97 100644
--- a/docs/tutorials/developer-journey/level-3/3.1-package-managers.mdx
+++ b/docs/tutorials/developer-journey/level-3/3.1-package-managers.mdx
@@ -236,7 +236,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-3/3.2-https-outcalls.mdx b/docs/tutorials/developer-journey/level-3/3.2-https-outcalls.mdx
index 9c1a657229..2252d3bf31 100644
--- a/docs/tutorials/developer-journey/level-3/3.2-https-outcalls.mdx
+++ b/docs/tutorials/developer-journey/level-3/3.2-https-outcalls.mdx
@@ -847,7 +847,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-3/3.3-certified-data.mdx b/docs/tutorials/developer-journey/level-3/3.3-certified-data.mdx
index 162459fd29..54cf4234af 100644
--- a/docs/tutorials/developer-journey/level-3/3.3-certified-data.mdx
+++ b/docs/tutorials/developer-journey/level-3/3.3-certified-data.mdx
@@ -380,7 +380,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-3/3.4-intro-to-agents.mdx b/docs/tutorials/developer-journey/level-3/3.4-intro-to-agents.mdx
index 8163f35a1c..f69860c7a2 100644
--- a/docs/tutorials/developer-journey/level-3/3.4-intro-to-agents.mdx
+++ b/docs/tutorials/developer-journey/level-3/3.4-intro-to-agents.mdx
@@ -274,7 +274,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-3/3.5-identities-and-auth.mdx b/docs/tutorials/developer-journey/level-3/3.5-identities-and-auth.mdx
index e592315991..74e931c1e3 100644
--- a/docs/tutorials/developer-journey/level-3/3.5-identities-and-auth.mdx
+++ b/docs/tutorials/developer-journey/level-3/3.5-identities-and-auth.mdx
@@ -386,7 +386,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-3/3.6-motoko-lvl3.mdx b/docs/tutorials/developer-journey/level-3/3.6-motoko-lvl3.mdx
index 417aaa827b..1381c7e081 100644
--- a/docs/tutorials/developer-journey/level-3/3.6-motoko-lvl3.mdx
+++ b/docs/tutorials/developer-journey/level-3/3.6-motoko-lvl3.mdx
@@ -640,7 +640,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-4/4.1-icp-ledger.mdx b/docs/tutorials/developer-journey/level-4/4.1-icp-ledger.mdx
index b15fe0ce6b..1de4aa6288 100644
--- a/docs/tutorials/developer-journey/level-4/4.1-icp-ledger.mdx
+++ b/docs/tutorials/developer-journey/level-4/4.1-icp-ledger.mdx
@@ -348,7 +348,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-4/4.2-icrc-tokens.mdx b/docs/tutorials/developer-journey/level-4/4.2-icrc-tokens.mdx
index 3edcdd6ce0..a23fdeb212 100644
--- a/docs/tutorials/developer-journey/level-4/4.2-icrc-tokens.mdx
+++ b/docs/tutorials/developer-journey/level-4/4.2-icrc-tokens.mdx
@@ -511,7 +511,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-4/4.3-ckbtc-and-bitcoin.mdx b/docs/tutorials/developer-journey/level-4/4.3-ckbtc-and-bitcoin.mdx
index 7acc981d66..38d44f0ecb 100644
--- a/docs/tutorials/developer-journey/level-4/4.3-ckbtc-and-bitcoin.mdx
+++ b/docs/tutorials/developer-journey/level-4/4.3-ckbtc-and-bitcoin.mdx
@@ -362,7 +362,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-4/4.4-nns-governance.mdx b/docs/tutorials/developer-journey/level-4/4.4-nns-governance.mdx
index c1263b3ff6..c50a3b4068 100644
--- a/docs/tutorials/developer-journey/level-4/4.4-nns-governance.mdx
+++ b/docs/tutorials/developer-journey/level-4/4.4-nns-governance.mdx
@@ -305,7 +305,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-4/4.5-using-quill.mdx b/docs/tutorials/developer-journey/level-4/4.5-using-quill.mdx
index 811d8d9991..35f5ba8437 100644
--- a/docs/tutorials/developer-journey/level-4/4.5-using-quill.mdx
+++ b/docs/tutorials/developer-journey/level-4/4.5-using-quill.mdx
@@ -457,7 +457,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-4/4.6-motoko-lvl4.mdx b/docs/tutorials/developer-journey/level-4/4.6-motoko-lvl4.mdx
index 9b1294ef31..6a306ce0eb 100644
--- a/docs/tutorials/developer-journey/level-4/4.6-motoko-lvl4.mdx
+++ b/docs/tutorials/developer-journey/level-4/4.6-motoko-lvl4.mdx
@@ -641,7 +641,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-5/5.1-vetKeys-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.1-vetKeys-tutorial.mdx
index e44b24c627..15aa03d90e 100644
--- a/docs/tutorials/developer-journey/level-5/5.1-vetKeys-tutorial.mdx
+++ b/docs/tutorials/developer-journey/level-5/5.1-vetKeys-tutorial.mdx
@@ -780,7 +780,7 @@ Then, you can see the note has been saved in the 'Your notes' section:
- [The first Community Conversation](https://youtu.be/baM6jHnmMq8).
-- [vetKeys primer blog post](ttps://internetcomputer.org/blog/features/vetkey-primer).
+- [vetKeys primer blog post](https://internetcomputer.org/blog/features/vetkey-primer).
- [vetKeys research paper](https://eprint.iacr.org/2023/616.pdf).
@@ -807,7 +807,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-5/5.2-ICP-ETH-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.2-ICP-ETH-tutorial.mdx
index 4156d4d955..16c6e83584 100644
--- a/docs/tutorials/developer-journey/level-5/5.2-ICP-ETH-tutorial.mdx
+++ b/docs/tutorials/developer-journey/level-5/5.2-ICP-ETH-tutorial.mdx
@@ -377,7 +377,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-5/5.3-token-swap-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.3-token-swap-tutorial.mdx
index c18f873932..3cb68ccaf7 100644
--- a/docs/tutorials/developer-journey/level-5/5.3-token-swap-tutorial.mdx
+++ b/docs/tutorials/developer-journey/level-5/5.3-token-swap-tutorial.mdx
@@ -828,7 +828,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-5/5.4-NFT-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.4-NFT-tutorial.mdx
index 0fa48340e9..3b994efeae 100644
--- a/docs/tutorials/developer-journey/level-5/5.4-NFT-tutorial.mdx
+++ b/docs/tutorials/developer-journey/level-5/5.4-NFT-tutorial.mdx
@@ -593,7 +593,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-5/5.5-auction-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.5-auction-tutorial.mdx
index 93dbb9dbe9..4de9493fde 100644
--- a/docs/tutorials/developer-journey/level-5/5.5-auction-tutorial.mdx
+++ b/docs/tutorials/developer-journey/level-5/5.5-auction-tutorial.mdx
@@ -390,7 +390,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
## Next steps
diff --git a/docs/tutorials/developer-journey/level-5/5.6-next-steps.mdx b/docs/tutorials/developer-journey/level-5/5.6-next-steps.mdx
index 31e72e963a..7f54573111 100644
--- a/docs/tutorials/developer-journey/level-5/5.6-next-steps.mdx
+++ b/docs/tutorials/developer-journey/level-5/5.6-next-steps.mdx
@@ -106,4 +106,4 @@ Several of ICP's repositories are open-source, and external contributions are en
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server.
-- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org).
+- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org).
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 3dc633f7ff..ca75c2206d 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -38,6 +38,14 @@ const snsDataPlugin = require("./plugins/sns-data");
const airtablePlugin = require("./plugins/airtable");
const youtubePlugin = require("./plugins/youtube");
+const remarkPlugins = [
+ math,
+ simplePlantUML,
+ require("remark-code-import"),
+ require("./plugins/remark/validate-links.js"),
+];
+const rehypePlugins = [katex];
+
const isDeployPreview = !!process.env.PREVIEW_CANISTER_ID;
if (process.env.PREVIEW_CANISTER_ID) {
@@ -86,17 +94,6 @@ const subnavItems = [
},
],
},
- {
- type: "dropdown",
- position: "left",
- label: "Frameworks",
- items: [
- {
- label: "Juno",
- href: "/docs/current/developer-docs/web-apps/frameworks/juno",
- },
- ],
- },
{
type: "dropdown",
position: "left",
@@ -654,16 +651,16 @@ const config = {
},
sidebarPath: require.resolve("./sidebars.js"),
- remarkPlugins: [math, simplePlantUML, require("remark-code-import")],
- rehypePlugins: [katex],
+ remarkPlugins,
+ rehypePlugins,
editUrl: "https://github.com/dfinity/portal/edit/master/",
},
blog: {
path: "blog",
blogSidebarCount: "ALL",
postsPerPage: "ALL",
- remarkPlugins: [math, simplePlantUML, require("remark-code-import")],
- rehypePlugins: [katex],
+ remarkPlugins,
+ rehypePlugins,
},
theme: {
customCss: require.resolve("./src/css/custom.scss"),
diff --git a/plugins/airtable.js b/plugins/airtable.js
index ac40986094..822eb98ff9 100644
--- a/plugins/airtable.js
+++ b/plugins/airtable.js
@@ -156,11 +156,21 @@ async function fetchAirtableRecords({ apiKey, baseId, tableName, viewId }) {
}
async function processEventsData(records) {
+ const endDateCutoff = new Date(Date.now() - 6 * 30 * 24 * 60 * 60 * 1000)
+ .toISOString()
+ .split("T")[0];
+
+ const today = new Date().toISOString().split("T")[0];
+
records = await Promise.all(
records.map(async (record) => {
const parsedRecord = parseAirtableData(record);
- let imageUrl = await fetchShareImage(parsedRecord.eventLink);
+ // Only fetch share image for current/future events
+ let imageUrl = null;
+ if (parsedRecord.endDate >= today) {
+ imageUrl = await fetchShareImage(parsedRecord.eventLink);
+ }
// If no share image is found, use a default image
if (!imageUrl) {
@@ -171,10 +181,6 @@ async function processEventsData(records) {
})
);
- const endDatecutoff = new Date(Date.now() - 6 * 30 * 24 * 60 * 60 * 1000)
- .toISOString()
- .split("T")[0];
-
records = records.filter((rec) => {
if (!rec.startDate || new Date(rec.startDate) == "Invalid Date") {
logger.warn("Invalid event, no start date: " + rec.eventName);
@@ -186,7 +192,7 @@ async function processEventsData(records) {
return false;
}
- if (rec.endDate < endDatecutoff) {
+ if (rec.endDate < endDateCutoff) {
// old event
return false;
}
diff --git a/plugins/remark/validate-links.js b/plugins/remark/validate-links.js
new file mode 100644
index 0000000000..c7fb6f2022
--- /dev/null
+++ b/plugins/remark/validate-links.js
@@ -0,0 +1,35 @@
+// Validate links for Kapa.ai
+
+const visit = require("unist-util-visit");
+
+function isExpectedLink(url) {
+ return (
+ url.startsWith("https://") ||
+ url.startsWith("http://localhost") ||
+ url.startsWith("http://127.0.0.1") ||
+ (url.startsWith("http://") && url.includes(".localhost")) ||
+ url.startsWith("chrome://") ||
+ url.startsWith("mailto:") ||
+ url.startsWith("/") ||
+ url.startsWith("#") ||
+ url.startsWith(".")
+ );
+}
+
+module.exports = function validateLinks() {
+ return async (ast) => {
+ visit(ast, "link", (node) => {
+ const url = node.url;
+ if (url.startsWith("docs/developer-docs/")) {
+ throw new Error(
+ `Link requires a leading \`/\` character: \`${url}\` (plugins/remark/validate-links.js)`
+ );
+ }
+ if (!isExpectedLink(url)) {
+ console.warn(
+ `Unexpected link: \`${url}\` (plugins/remark/validate-links.js)`
+ );
+ }
+ });
+ };
+};
diff --git a/plugins/utils/redirects.js b/plugins/utils/redirects.js
index c9b8f85822..3217b7a205 100644
--- a/plugins/utils/redirects.js
+++ b/plugins/utils/redirects.js
@@ -83,7 +83,7 @@ const redirects = `
/docs/current/developer-docs/build/languages/rust/* /docs/current/developer-docs/backend/rust/
/docs/current/developer-docs/build/project-setup/cycles-wallet /docs/current/developer-docs/defi/cycles/cycles-wallet
/docs/current/developer-docs/build/project-setup/manage-canisters /docs/current/developer-docs/smart-contracts/maintain/settings
- /docs/current/developer-docs/build/project-setup/design-dapps /docs/current/developer-docs/web-apps/design-dapps
+ /docs/current/developer-docs/build/project-setup/design-dapps /docs/current/developer-docs/smart-contracts/overview/introduction
/docs/current/developer-docs/build/troubleshooting /docs/current/developer-docs/getting-started/troubleshooting
/docs/current/developer-docs/build/agents/ /docs/current/developer-docs/developer-tools/off-chain/agents/overview
/docs/current/developer-docs/build/agents/javascript/javascript-intro /docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent
@@ -100,7 +100,7 @@ const redirects = `
/docs/developers-guide/concepts/concepts-intro /docs/current/developer-docs/getting-started/network-overview
/docs/developers-guide/customize-projects /docs/current/developer-docs/smart-contracts/compile
/docs/developers-guide/default-wallet /docs/current/developer-docs/defi/cycles/cycles-wallet
- /docs/developers-guide/design-apps /docs/current/developer-docs/web-apps/design-dapps
+ /docs/developers-guide/design-apps /docs/current/developer-docs/smart-contracts/overview/introduction
/docs/developers-guide/glossary /docs/current/references/glossary
/docs/developers-guide/install-upgrade-remove /docs/current/developer-docs/getting-started/install
/docs/developers-guide/lang-service-ide /docs/current/developer-docs/developer-tools/ide/vs-code
@@ -345,7 +345,7 @@ const redirects = `
/docs/current/developer-docs/frontend/existing-frontend /docs/current/developer-docs/web-apps/application-frontends/existing-frontend
/docs/current/developer-docs/production/custom-domain/ /docs/current/developer-docs/web-apps/custom-domains/using-custom-domains
/docs/current/developer-docs/production/custom-domain/dns-setup /docs/current/developer-docs/web-apps/custom-domains/dns-setup
- /docs/current/developer-docs/backend/design-dapps /docs/current/developer-docs/web-apps/design-dapps
+ /docs/current/developer-docs/backend/design-dapps /docs/current/developer-docs/smart-contracts/overview/introduction
/docs/current/developer-docs/integrations/independently-verifying-ic-signatures /docs/current/developer-docs/web-apps/independently-verifying-ic-signatures
/docs/current/developer-docs/integrations/internet-identity/overview /docs/current/developer-docs/identity/internet-identity/overview
/docs/current/developer-docs/integrations/internet-identity/creating-ii /docs/current/developer-docs/identity/internet-identity/creating-ii
@@ -419,7 +419,7 @@ const redirects = `
/docs/current/developer-docs/integrations/bitcoin/local-development /docs/current/developer-docs/multi-chain/bitcoin/using-btc/local-development
/docs/current/developer-docs/integrations/ethereum/overview /docs/current/developer-docs/multi-chain/ethereum/overview
/docs/current/developer-docs/integrations/ethereum/evm-rpc /docs/current/developer-docs/multi-chain/ethereum/evm-rpc/evm-rpc-canister
- /docs/current/developer-docs/integrations/ethereum/siwe /docs/current/developer-docs/identity/authentication/siwe
+ /docs/current/developer-docs/integrations/ethereum/siwe /docs/current/developer-docs/identity/authentication/overview
/docs/current/developer-docs/integrations/bitcoin/bitcoin-how-it-works /docs/current/references/bitcoin-how-it-works
/docs/current/developer-docs/integrations/bitcoin/ckbtc-reference /docs/current/references/ckbtc-reference
/docs/current/developer-docs/integrations/https-outcalls/https-outcalls-how-it-works /docs/current/references/https-outcalls-how-it-works
@@ -445,7 +445,7 @@ const redirects = `
/docs/current/developer-docs/smart-contracts/overview/development-cycle /docs/current/developer-docs/smart-contracts/overview/canister-lifecycle
/docs/current/developer-docs/web-apps/user-login/internet-identity/integrate-identity /docs/current/developer-docs/identity/internet-identity/integrate-internet-identity
/docs/current/developer-docs/multi-chain/ethereum/cketh /docs/current/developer-docs/multi-chain/chain-key-tokens/cketh/overview
- /docs/current/developer-docs/multi-chain/ethereum/siwe /docs/current/developer-docs/identity/authentication/siwe
+ /docs/current/developer-docs/multi-chain/ethereum/siwe /docs/current/developer-docs/identity/authentication/overview
/docs/current/developer-docs/multi-chain/bitcoin/ckbtc /docs/current/developer-docs/multi-chain/chain-key-tokens/ckbtc/overview
/docs/current/developer-docs/multi-chain/bitcoin/read-state /docs/current/developer-docs/multi-chain/bitcoin/using-btc/read-state
/docs/current/developer-docs/multi-chain/bitcoin/submit-transactions /docs/current/developer-docs/multi-chain/bitcoin/using-btc/submit-transactions
@@ -522,9 +522,9 @@ const redirects = `
/docs/current/developer-docs/web-apps/user-login/internet-identity/creating-ii /docs/current/developer-docs/identity/internet-identity/creating-ii
/docs/current/developer-docs/web-apps/user-login/internet-identity/integrate-internet-identity /docs/current/developer-docs/identity/internet-identity/integrate-internet-identity
/docs/current/developer-docs/web-apps/user-login/internet-identity/alternative-origins /docs/current/developer-docs/identity/internet-identity/alternative-origins
- /docs/current/developer-docs/web-apps/user-login/nfid /docs/current/developer-docs/identity/authentication/nfid
- /docs/current/developer-docs/web-apps/user-login/email-password /docs/current/developer-docs/identity/authentication/email-password
- /docs/current/developer-docs/multi-chain/ethereum/using-eth/siwe /docs/current/developer-docs/identity/authentication/siwe
+ /docs/current/developer-docs/web-apps/user-login/nfid /docs/current/developer-docs/identity/authentication/overview
+ /docs/current/developer-docs/web-apps/user-login/email-password /docs/current/developer-docs/identity/authentication/overview
+ /docs/current/developer-docs/multi-chain/ethereum/using-eth/siwe /docs/current/developer-docs/identity/authentication/overview
/docs/current/developer-docs/build/cdks/motoko-dfinity/motoko/ /docs/current/motoko/main/getting-started/motoko-introduction
/docs/current/developer-docs/defi/icrc-1/icrc1-index-setup /docs/current/developer-docs/defi/tokens/indexes
/docs/current/defi/icp-tokens/icp-index-local-setup /docs/current/developer-docs/defi/tokens/indexes
@@ -644,6 +644,19 @@ const redirects = `
/docs/current/developer-docs/smart-contracts/advanced-features/serving-http-request /docs/current/developer-docs/smart-contracts/advanced-features/handling-get-post-requests
/docs/current/developer-docs/smart-contracts/write/default-template /docs/current/developer-docs/smart-contracts/write/overview
/developers /docs/current/home
+ /docs/current/developer-docs/identity/authentication/email-password /docs/current/developer-docs/identity/authentication/overview
+ /docs/current/developer-docs/identity/authentication/nfid /docs/current/developer-docs/identity/authentication/overview
+ /docs/current/developer-docs/identity/authentication/siwb /docs/current/developer-docs/identity/authentication/overview
+ /docs/current/developer-docs/identity/authentication/siwe /docs/current/developer-docs/identity/authentication/overview
+ /docs/current/developer-docs/identity/authentication/siws /docs/current/developer-docs/identity/authentication/overview
+ /docs/current/developer-docs/identity/authentication/msq /docs/current/developer-docs/identity/authentication/overview
+ /docs/current/developer-docs/web-apps/browser-js/js-request-api /docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent
+ /docs/current/developer-docs/defi/tokens/asset_flow/index /docs/current/developer-docs/defi/overview
+ /docs/current/developer-docs/defi/tokens/ledger/overview /docs/current/developer-docs/defi/overview
+ /docs/current/developer-docs/defi/tokens/ledger/setup/overview /docs/current/developer-docs/defi/overview
+ /docs/current/developer-docs/defi/tokens/ledger/usage/overview /docs/current/developer-docs/defi/overview
+ /docs/current/developer-docs/web-apps/obtain-verify-ic-pubkey /docs/current/developer-docs/developer-tools/cli-tools/cli-reference/dfx-ping
+ /docs/current/developer-docs/web-apps/design-dapps /docs/current/developer-docs/smart-contracts/overview/introduction
`
.split(/[\r\n]+/)
.map((line) => line.trim().replace(/^#.*$/, "").trim())
diff --git a/roadmap/entries/data-decentralization.json b/roadmap/entries/data-decentralization.json
index d44f59a9b9..bf2f768e0e 100644
--- a/roadmap/entries/data-decentralization.json
+++ b/roadmap/entries/data-decentralization.json
@@ -14,21 +14,23 @@
"in_beta": false
},
{
- "title": "API Boundary Nodes (NNS controlled)",
- "overview": "In the new boundary-node architecture, API boundary nodes are placed under the full control of the NNS and function as the edge of the IC.",
- "status": "in_progress",
+ "title": "HTTP Gateways",
+ "overview": "The HTTP Gateway becomes a standalone component as part of the new Boundary Node architecture.",
"forum": "https://forum.dfinity.org/t/boundary-node-roadmap/15562",
"proposal": "https://dashboard.internetcomputer.org/proposal/35671",
"docs": "",
+ "eta": "",
+ "status": "in_progress",
"is_community": false,
"in_beta": false,
- "milestone_id": "Solenoid"
+ "milestone_id": "Solenoid",
+ "imported": true
},
{
- "title": "HTTP Gateways",
- "overview": "The HTTP Gateway becomes a standalone component as part of the new Boundary Node architecture.",
- "forum": "https://forum.dfinity.org/t/boundary-node-roadmap/15562",
- "proposal": "https://dashboard.internetcomputer.org/proposal/35671",
+ "title": "Incident Handling under the New Boundary Node Architecture",
+ "overview": "To protect the core of the Internet Computer, processes must be established to configure temporary rate limits at API boundary nodes during incidents.",
+ "forum": "https://forum.dfinity.org/t/incident-handling-with-the-new-boundary-node-architecture/36390",
+ "proposal": "https://dashboard.internetcomputer.org/proposal/134031",
"docs": "",
"eta": "",
"status": "in_progress",
@@ -42,9 +44,9 @@
"overview": "As part of the new boundary-node architecture, the HTTP gateway is turned into a standalone service, which is easily deployable by anyone, including end users.",
"forum": "https://forum.dfinity.org/t/boundary-node-roadmap/15562",
"proposal": "https://dashboard.internetcomputer.org/proposal/35671",
- "docs": "",
+ "docs": "https://github.com/dfinity/ic-gateway",
"eta": "",
- "status": "upcoming",
+ "status": "in_progress",
"is_community": false,
"in_beta": false,
"milestone_id": "Solenoid"
@@ -55,8 +57,8 @@
"description": "ICP is accessible through a decentralized edge infrastructure, which is split into NNS-controlled API Boundary Nodes and HTTP Gateways. The NNS will appoint node machines to run API Boundary Nodes and anyone will be able to run HTTP Gateways, enabling a much more decentralized ICP edge infrastructure with a diverse set of service providers.",
"milestone_id": "Solenoid",
"status": "in_progress",
- "eta": "Q2 2024",
- "eta_to_render": "December 2024"
+ "eta": "Q1 2025",
+ "eta_to_render": "January 2025"
},
{
"title": "SEV-SNP-protected API Boundary Nodes",
@@ -113,17 +115,6 @@
"is_community": false,
"in_beta": false
},
- {
- "title": "Public access to a subset of node metrics",
- "overview": "Giving node providers access to a subnet of node metrics to help them find out what is failing in case of node issues.",
- "forum": "",
- "proposal": "",
- "docs": "",
- "eta": "",
- "status": "in_progress",
- "is_community": false,
- "in_beta": false
- },
{
"title": "Off-chain observability stack for Node Providers",
"overview": "Observability solution for Node Providers to enable them to independently triage node health and take corrective action in case of problems.",
@@ -137,16 +128,15 @@
"imported": true
},
{
- "title": "Alerting of NP in case of Node Failure",
- "overview": "Alert Node Providers if one of their nodes starts misbehaving or underperforming.",
- "forum": "",
+ "title": "Performance-based node provider rewards",
+ "overview": "Node rewards are awarded according to the node's contributions to the protocol, based on trustworthy node metrics, which are provided and signed by the IC network itself. This creates a cryptoeconomic incentive to encourage honest node provider behaviour.",
+ "forum": "https://forum.dfinity.org/t/performance-based-node-rewards/35208",
"proposal": "",
"docs": "",
"eta": "",
"status": "in_progress",
- "is_community": true,
- "in_beta": false,
- "imported": true
+ "is_community": false,
+ "in_beta": false
},
{
"title": "HTTP Asset Caching",
@@ -218,18 +208,7 @@
{
"title": "Strengthened node provider checks and audits",
"overview": "Strengthening the checks of entities intending to join ICP as node providers. May also include node provider audits.",
- "forum": "",
- "proposal": "",
- "docs": "",
- "eta": "",
- "status": "",
- "is_community": false,
- "in_beta": false
- },
- {
- "title": "Penalties for non-compliant node providers",
- "overview": "Non-compliant node providers are penalized economically or excluded from future network participation. This creates a cryptoeconomic incentive to encourage honest node provider behaviour.",
- "forum": "",
+ "forum": "https://forum.dfinity.org/t/technical-working-group-node-providers/30255",
"proposal": "",
"docs": "",
"eta": "",
@@ -270,18 +249,6 @@
"is_community": false,
"in_beta": false
},
- {
- "title": "Decentralized virtual personhood validation",
- "overview": "Scalable, decentralized, virtual proof of personhood to distinguish people from machines.",
- "forum": "https://forum.dfinity.org/t/long-term-r-d-people-parties-proof-of-human-proposal/9636",
- "proposal": "https://dashboard.internetcomputer.org/proposal/35668",
- "docs": "",
- "eta": "",
- "status": "",
- "is_community": false,
- "in_beta": false,
- "imported": true
- },
{
"title": "Public contributions to IC repository",
"overview": "Allowing for contributions by the public to the IC source code repository.",
diff --git a/roadmap/entries/data-digital_assets.json b/roadmap/entries/data-digital_assets.json
index 83836b7ef8..4febddec6f 100644
--- a/roadmap/entries/data-digital_assets.json
+++ b/roadmap/entries/data-digital_assets.json
@@ -84,7 +84,7 @@
"milestone_id": "Poloidal",
"status": "in_progress",
"eta": "",
- "eta_to_render": "January 2025"
+ "eta_to_render": "February 2025"
},
{
"title": "Rosetta for ICRC ledgers",
diff --git a/roadmap/entries/data-governance.json b/roadmap/entries/data-governance.json
index 481bc3aa19..36a28319ba 100644
--- a/roadmap/entries/data-governance.json
+++ b/roadmap/entries/data-governance.json
@@ -9,7 +9,7 @@
"milestone_id": "Plasma",
"status": "in_progress",
"eta": "",
- "eta_to_render": "November 2024"
+ "eta_to_render": "January 2025"
},
{
@@ -132,7 +132,7 @@
"proposal": "",
"docs": "",
"eta": "",
- "status": "in_progress",
+ "status": "deployed",
"is_community": true,
"in_beta": false,
"milestone_id": "Plasma"
diff --git a/roadmap/entries/deployed-decentralization.json b/roadmap/entries/deployed-decentralization.json
index ea6d97aa36..7dd642dd7b 100644
--- a/roadmap/entries/deployed-decentralization.json
+++ b/roadmap/entries/deployed-decentralization.json
@@ -119,6 +119,40 @@
"is_community": false,
"in_beta": false,
"imported": true
+ },
+ {
+ "title": "Alerting of Node Providers in case of Node Failure",
+ "overview": "Alert Node Providers if one of their nodes starts misbehaving or underperforming.",
+ "forum": "",
+ "proposal": "",
+ "docs": "https://wiki.internetcomputer.org/wiki/Node_Provider_Alerting_Options",
+ "eta": "",
+ "status": "deployed",
+ "is_community": true,
+ "in_beta": false,
+ "imported": true
+ },
+ {
+ "title": "Public access to a subset of node metrics",
+ "overview": "Giving node providers access to a subset of node metrics to help them find out in a fully decentralized manner whether nodes are behaving well, and to roughly compare node performance.",
+ "forum": "https://forum.dfinity.org/t/public-internet-computer-ic-node-metrics-available-now/32961",
+ "proposal": "",
+ "docs": "https://github.com/dfinity/ic-observability-stack",
+ "eta": "",
+ "status": "deployed",
+ "is_community": false,
+ "in_beta": false
+ },
+ {
+ "title": "API Boundary Nodes (NNS controlled)",
+ "overview": "In the new boundary-node architecture, API boundary nodes are placed under the full control of the NNS and function as the edge of the IC.",
+ "status": "deployed",
+ "forum": "https://forum.dfinity.org/t/boundary-node-roadmap/15562",
+ "proposal": "https://dashboard.internetcomputer.org/proposal/35671",
+ "docs": "https://github.com/dfinity/ic/tree/master/rs/boundary_node/ic_boundary",
+ "is_community": false,
+ "in_beta": false,
+ "milestone_id": "Solenoid"
}
]
-}
\ No newline at end of file
+}
diff --git a/scripts/clean-showcase.sh b/scripts/clean-showcase.sh
new file mode 100755
index 0000000000..ee568cb178
--- /dev/null
+++ b/scripts/clean-showcase.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+
+# The objective of this script is to flag entries to be removed by a human reviewer.
+# An entry is flagged if it meets one of the next requirements:
+# 1. The `usesInternetIdentity` field is set to `true` and the `website` field is a GitHub URL.
+# 2. The website is unreachable (HTTP status code in the 4XX or 5XX range).
+
+# Input JSON file
+INPUT_FILE="showcase.json"
+
+# Temporary file to store intermediate results
+TEMP_FILE="temp.json"
+TEMP_FILE_2="temp2.json"
+
+# Substitute `usesInternetIdentity: true` with `usesInternetIdentity: false` for all entries with a GitHub URL instead of a website.
+jq '[.[] | if (.usesInternetIdentity == true) and ((.website // "") | test("^https://github.com/")) then .usesInternetIdentity = false else . end]' "$INPUT_FILE" > "$TEMP_FILE"
+
+# Function to check the status of a website
+check_canister_website() {
+ local url=$1
+ # Get the HTTP headers and extract the status code
+ local response_status
+ response_status=$(curl -s -o /dev/null -I -w "%{http_code}" "$url")
+
+ echo "HTTP status: $response_status"
+
+ # If the status is in the 4XX or 5XX range, return failure
+ if [[ "$response_status" -ge 400 && "$response_status" -lt 600 ]]; then
+ echo "HTTP $response_status error detected for $url"
+ return 1
+ fi
+
+ return 0
+}
+
+# Start output as an empty array
+echo "[" > "$TEMP_FILE_2"
+
+# Process each entry in the filtered JSON
+first_item=true
+jq -c '.[]' "$TEMP_FILE" | while read -r item; do
+ website=$(echo "$item" | jq -r '.website')
+ echo "Processing $website"
+
+ # Check if the header is present for the website
+ if check_canister_website "$website"; then
+ # Add valid entries to the output file, handling comma placement
+ if [ "$first_item" = true ]; then
+ first_item=false
+ echo "$item" >> "$TEMP_FILE_2"
+ else
+ echo ",$item" >> "$TEMP_FILE_2"
+ fi
+ fi
+done
+
+# Close the JSON array
+echo "]" >> "$TEMP_FILE_2"
+
+jq '.' "$TEMP_FILE_2" > "$INPUT_FILE"
+
+# Clean up temporary files
+rm -f "$TEMP_FILE"
+rm -f "$TEMP_FILE_2"
+
+echo "Showcase file has been cleaned up successfullly."
diff --git a/showcase.json b/showcase.json
index c3b18d15a8..038f2b67a8 100644
--- a/showcase.json
+++ b/showcase.json
@@ -372,28 +372,27 @@
],
"youtube": "https://www.youtube.com/@junobuild"
},
-
-{
- "id": "oisy",
- "name": "OISY Wallet",
- "oneLiner": "Browser-based multi-chain wallet",
- "website": "https://oisy.com",
- "github": "https://github.com/dfinity/oisy-wallet",
- "display": "Large",
- "tags": [
- "Ethereum",
- "DeFi",
- "Wallet",
- "Chain Fusion"
- ],
- "twitter": "https://x.com/oisy",
- "description": "OISY Wallet is a new browser-based multi-chain wallet, powered by Internet Computer’s chain fusion technology. It is fully on-chain and implements network custody, an innovative approach that leverages the Internet Computer’s advanced cryptography to eliminate the need for you to handle private keys directly.",
- "usesInternetIdentity": true,
- "logo": "/img/showcase/oisy_logo.svg",
- "screenshots": [
- "/img/showcase/oisy-preview.webp"
- ]
-},
+ {
+ "id": "oisy",
+ "name": "OISY Wallet",
+ "oneLiner": "Browser-based multi-chain wallet",
+ "website": "https://oisy.com",
+ "github": "https://github.com/dfinity/oisy-wallet",
+ "display": "Large",
+ "tags": [
+ "Ethereum",
+ "DeFi",
+ "Wallet",
+ "Chain Fusion"
+ ],
+ "twitter": "https://x.com/oisy",
+ "description": "OISY Wallet is a new browser-based multi-chain wallet, powered by Internet Computer’s chain fusion technology. It is fully on-chain and implements network custody, an innovative approach that leverages the Internet Computer’s advanced cryptography to eliminate the need for you to handle private keys directly.",
+ "usesInternetIdentity": true,
+ "logo": "/img/showcase/oisy_logo.svg",
+ "screenshots": [
+ "/img/showcase/oisy-preview.webp"
+ ]
+ },
{
"id": "kinic",
"name": "Kinic",
@@ -742,25 +741,6 @@
"/img/showcase/internetidentity_screenshot_0.gif"
]
},
- {
- "id": "Arth",
- "name": "Arth",
- "tags": [
- "DeFi",
- "Wallet",
- "Bitcoin",
- "Chain Fusion"
- ],
- "description": "The mobile payments app that combines the power of Bitcoin with the convenience of mobile payments. With ckBTC, you can easily swap ckBTC from Bitcoin, view balances, and seamlessly make payments using QR codes.",
- "usesInternetIdentity": true,
- "website": "https://play.google.com/store/apps/details?id=com.foo.arth&pli=1",
- "display": "Normal",
- "logo": "/img/showcase/arth_logo.png",
- "screenshots": [
- "/img/showcase/arth_ss.webp"
- ],
- "submittableId": "36143434"
- },
{
"id": "astrox",
"name": "AstroX ME",
@@ -1816,19 +1796,6 @@
"logo": "/img/showcase/dbox_logo.png",
"submittableId": "22737412"
},
- {
- "id": "icadashboard",
- "name": "ICA Dashboard",
- "website": "https://dashboard.internetcomputer.org/",
- "tags": [
- "Tools / Infrastructure"
- ],
- "description": "The Internet Computer Association maintains a public dashboard where anyone can track the latest statistics for the Internet Computer blockchain. Tracking everything from blocks per second, to NNS proposals and their information and voting record, as well the latest state of the network, and transaction data. ",
- "oneLiner": "ICA Official Dashboard",
- "display": "Normal",
- "logo": "/img/showcase/icadashboard_logo.webp",
- "screenshots": []
- },
{
"id": "icpcoins",
"name": "ICP Coins",
@@ -1920,19 +1887,6 @@
"/img/showcase/welcomeintothemetaverse_screenshot_0.webp"
]
},
- {
- "id": "lo-fiplayer",
- "name": "Lo-Fi Player",
- "website": "https://hl2zz-gyaaa-aaaad-qas3a-cai.raw.ic0.app/",
- "tags": [
- "Games"
- ],
- "description": "Lo-Fi Player is a dapp hosted on the Internet Computer that lets users listen to relaxing beats delivered by blockchain. The back-end is using machine learning to build and develop the AI produced tunes, and users can interact within the player to change the sound to their liking. ",
- "logo": "/img/showcase/lo-fiplayer_logo.webp",
- "screenshots": [
- "/img/showcase/lo-fiplayer_screenshot_0.webp"
- ]
- },
{
"id": "reversi",
"name": "Reversi",
@@ -2500,24 +2454,6 @@
"twitter": "https://twitter.com/Faceless_Proj",
"submittableId": "35639090"
},
- {
- "name": "Sama Network",
- "description": "SAMA network, with its original designed consensus and business sharding separation, builds a highly secure and private distributed computational system. It provides data security and computational power for the World Wide Web without altering users’ habits.",
- "website": "https://sama.network/",
- "logo": "/img/showcase/sama_network_logo.png",
- "display": "Normal",
- "id": "sama_network",
- "oneLiner": "A blockchain OS with high throughput, business data full-stack encryption, and distributed computing capabilities.",
- "stats": "Private alpha testnet has been launched; the network and user interface are ready for operation.",
- "tags": [
- "Tools / Infrastructure",
- "Enterprise"
- ],
- "usesInternetIdentity": false,
- "twitter": "https://twitter.com/sama_network",
- "youtube": "https://www.youtube.com/@sama_network",
- "submittableId": "40741075"
- },
{
"name": "221Bravo App",
"description": "Home for ICP Data-Detectives. Token Stats, Visual Explorer, Account Searching and more.",
@@ -2671,27 +2607,6 @@
"youtube": "https://www.youtube.com/channel/UCrCMtg7PhCHX1tKpw5NIU7g",
"submittableId": "44034269"
},
- {
- "id": "taxlint",
- "name": "TaxLint",
- "oneLiner": "A decentralised, private, and secure automated Tax Report aimed to help users to count ICP and ICRC1 token transactions.",
- "website": "https://www.taxlint.online/",
- "tags": [
- "DeFi",
- "Tools / Infrastructure"
- ],
- "description": "A decentralised, private, and secure automated Tax Report aimed to help users to count ICP and ICRC1 token transactions.",
- "usesInternetIdentity": true,
- "logo": "/img/showcase/taxlint_logo.png",
- "github": "https://github.com/TaxLintDAO/taxlint",
- "twitter": "https://twitter.com/taxlint",
- "display": "Normal",
- "stats": "150+ users",
- "screenshots": [
- "/img/showcase/taxlint_screenshot.png"
- ],
- "submittableId": "43956470"
- },
{
"name": "InheritX",
"description": "InheritX is a blockchain-based application developed on Internet Computer (ICP) that allows users to create a digital will and bequeath their assets to designated beneficiaries in the event of their death.",
@@ -2869,7 +2784,7 @@
],
"description": "POC of a decentralized secret management solution that leverages Internet Computer (IC) technology. It aims to provide a means for services to share secrets in a flexible, transparent, and secure way. It simplifies the flow of secret management between consumers in the cluster as well as rotate secrets based on config for added security.",
"stats": "100% on chain ACL",
- "usesInternetIdentity": true,
+ "usesInternetIdentity": false,
"github": "https://github.com/Zondax/vault-k8s-canister",
"youtube": "https://youtu.be/99MahI1SO7c",
"twitter": "https://twitter.com/_zondax_",
@@ -2921,7 +2836,7 @@
"Tools / Infrastructure"
],
"description": "POC of a decentralized mind and body data management tooling that leverages Internet Computer (IC) technology. This POC provides methods and interface to submit HTTP Outcall requests to a proxy API that interfaces with a Firebase FIrestore database. It provides an example front end react application that interacts with a motoko backend.",
- "usesInternetIdentity": true,
+ "usesInternetIdentity": false,
"github": "https://github.com/blueberryxtech/ic-mind-body-canister",
"submittableId": "44190088"
},
@@ -3450,22 +3365,6 @@
"logo": "/img/showcase/gamebloc_logo.png",
"submittableId": "44503915"
},
- {
- "id": "allkinds",
- "name": "AllKinds",
- "oneLiner": "A web3 social network where people find more meaningful connections.",
- "website": "https://allkinds.xyz/",
- "github": "https://github.com/AllKinds/AllkindsICP",
- "twitter": "https://twitter.com/Allkindsxyz",
- "tags": [
- "SocialFi"
- ],
- "description": "A web3 social network where people find more meaningful connections.",
- "usesInternetIdentity": true,
- "display": "Normal",
- "logo": "/img/showcase/allkinds_logo.svg",
- "submittableId": "43688836"
- },
{
"id": "dmail-network",
"name": "Dmail Network",
@@ -3553,23 +3452,6 @@
"logo": "/img/showcase/frontrow_logo.png",
"submittableId": "43814286"
},
- {
- "id": "myordinalsloan",
- "name": "MyOrdinals.Loan",
- "oneLiner": "Peer-to-peer Bitcoin lending using ckBTC. Users borrow or lend ckBTC, securing transactions with unique Ordinal Inscriptions (Ordinals) as collateral.",
- "website": "https://myordinals.loan/",
- "tags": [
- "Bitcoin",
- "DeFi",
- "Chain Fusion"
- ],
- "twitter": "https://twitter.com/MyOrdinalsLoan",
- "description": "Peer-to-peer Bitcoin lending using ckBTC. Users borrow or lend ckBTC, securing transactions with unique Ordinal Inscriptions (Ordinals) as collateral.",
- "usesInternetIdentity": false,
- "display": "Normal",
- "logo": "/img/showcase/myordinalsloan_logo.png",
- "submittableId": "41341564"
- },
{
"id": "icto",
"name": "ICTO",
@@ -4646,22 +4528,6 @@
"github": "https://github.com/NeutronStarDAO/icecube",
"twitter": "https://x.com/icecubeapp"
},
- {
- "id": "bridge-23-app",
- "name": "Bridge 23",
- "oneLiner": "Bridge 23 is a fully featured data marketplace running on ICP where everyone can sell their data directly to merchants, companies and institutions.",
- "description": "Bridge 23 is a fully featured data marketplace running on ICP where everyone can sell their data directly to merchants, companies and institutions.",
- "stats": "5000+ waitlist, 100+ users, 4000+ tokenized products",
- "website": "https://alpha.bridge23.app/login",
- "logo": "/img/showcase/bridge23_logo.png",
- "display": "Normal",
- "tags": [
- "Tools / Infrastructure"
- ],
- "usesInternetIdentity": true,
- "github": "https://github.com/bridge-23/Bridge23app.0.1.0-alpha",
- "twitter": "https://x.com/bridge23inc"
- },
{
"id": "event-hub-attention-dao",
"name": "Event Hub",
@@ -4822,28 +4688,6 @@
"github": "https://github.com/supaIC/Cipher-AI-Vault",
"website": "https://qehbq-rqaaa-aaaan-ql2iq-cai.icp0.io/"
},
- {
- "id": "scoge",
- "name": "SCOGÉ Universe",
- "oneLiner": "T.A.O.S City’s finest distributor of Luxury Fashion and Consumer goods",
- "website": "https://uqjdj-siaaa-aaaag-aaoxq-cai.icp0.io",
- "tags": [
- "NFT",
- "Metaverse",
- "Games"
- ],
- "description": "SCOGÉ is a cutting-edge fashion-centric gamified metaverse platform that revolutionizes the way styles are born, stories are told, and interaction between users. Users embark on an enthralling journey, wielding unique powers to craft thrilling experiences while discovering T.A.O.S City and the evolving SCOGÉ Universe.",
- "logo": "/img/showcase/scoge_logo.webp",
- "display": "Normal",
- "usesInternetIdentity": false,
- "twitter": "https://twitter.com/_scoge_",
- "screenshots": [
- "/img/showcase/scoge_screenshots.webp"
- ],
- "video": "/img/showcase/scoge_video.mp4",
- "videoContentType": "video/mp4",
- "submittableId": "34276514"
- },
{
"id": "zkLama",
"name": "zkLama",
@@ -4998,4 +4842,4 @@
"github": "https://github.com/tolgayayci/dfx-dashboard",
"website": "https://dfx-dashboard-docs.netlify.app/"
}
-]
\ No newline at end of file
+]
diff --git a/sidebars.js b/sidebars.js
index a2efbe15a6..bbff85da62 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -127,6 +127,17 @@ const sidebars = {
label: "Overview",
id: "developer-docs/smart-contracts/call/overview",
},
+ {
+ type: "doc",
+ label: "Async code & inter-canister calls",
+ id: "developer-docs/smart-contracts/advanced-features/async-code",
+ },
+ {
+ type: "doc",
+ label: "Composite queries",
+ id: "developer-docs/smart-contracts/advanced-features/composite-query",
+ },
+ "developer-docs/smart-contracts/advanced-features/query-stats",
{
type: "category",
label: "Candid",
@@ -191,55 +202,52 @@ const sidebars = {
type: "category",
label: "Advanced features",
items: [
- {
- type: "doc",
- label: "Async code & inter-canister calls",
- id: "developer-docs/smart-contracts/advanced-features/async-code",
- },
- {
- type: "doc",
- label: "Composite queries",
- id: "developer-docs/smart-contracts/advanced-features/composite-query",
- },
- {
- type: "doc",
- label: "HTTP gateways & incoming requests",
- id: "developer-docs/smart-contracts/advanced-features/handling-get-post-requests",
- },
- {
- type: "category",
- label: "HTTPS outcalls",
- items: [
- {
- label: "Overview",
- type: "doc",
- id: "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview",
- },
- "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-how-to-use",
- "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-get",
- "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-post",
- ],
- },
{
type: "category",
- label: "HTTP certification",
- items: [
+ label: "HTTP/HTTPS",
+ items:
+ [
{
type: "doc",
- id: "developer-docs/web-apps/http-compatible-canisters/custom-http-canisters",
- label: "Custom HTTP canisters",
+ label: "HTTP gateways & incoming requests",
+ id: "developer-docs/smart-contracts/advanced-features/handling-get-post-requests",
},
{
- type: "doc",
- id: "developer-docs/web-apps/http-compatible-canisters/serving-json-over-http",
- label: "Serving JSON over HTTP",
+ type: "category",
+ label: "HTTPS outcalls",
+ items: [
+ {
+ label: "Overview",
+ type: "doc",
+ id: "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview",
+ },
+ "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-how-to-use",
+ "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-get",
+ "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-post",
+ ],
},
{
- type: "doc",
- id: "developer-docs/web-apps/http-compatible-canisters/serving-static-assets-over-http",
- label: "Serving static assets over HTTP",
+ type: "category",
+ label: "HTTP certification",
+ items: [
+ {
+ type: "doc",
+ id: "developer-docs/web-apps/http-compatible-canisters/custom-http-canisters",
+ label: "Custom HTTP canisters",
+ },
+ {
+ type: "doc",
+ id: "developer-docs/web-apps/http-compatible-canisters/serving-json-over-http",
+ label: "Serving JSON over HTTP",
+ },
+ {
+ type: "doc",
+ id: "developer-docs/web-apps/http-compatible-canisters/serving-static-assets-over-http",
+ label: "Serving static assets over HTTP",
+ },
+ ],
},
- ],
+ ]
},
{
type: "doc",
@@ -273,12 +281,11 @@ const sidebars = {
"developer-docs/smart-contracts/signatures/signing-messages-t-schnorr",
],
},
+ "developer-docs/web-apps/independently-verifying-ic-signatures",
],
},
"developer-docs/smart-contracts/advanced-features/periodic-tasks",
- "developer-docs/smart-contracts/advanced-features/query-stats",
"developer-docs/smart-contracts/advanced-features/simd",
- "developer-docs/smart-contracts/advanced-features/system-canisters",
"developer-docs/smart-contracts/advanced-features/time-and-timestamps",
],
},
@@ -532,17 +539,9 @@ const sidebars = {
],
},
{
- type: "category",
- label: "Browser JS",
- items: [
- "developer-docs/web-apps/browser-js/js-frameworks",
- "developer-docs/web-apps/browser-js/js-request-api",
- ],
- },
- {
- type: "category",
- label: "Frameworks",
- items: ["developer-docs/web-apps/frameworks/juno"],
+ type: "doc",
+ label: "JS frameworks",
+ id: "developer-docs/web-apps/browser-js/js-frameworks",
},
{
type: "category",
@@ -552,9 +551,7 @@ const sidebars = {
"developer-docs/web-apps/custom-domains/using-custom-domains",
],
},
- "developer-docs/web-apps/design-dapps",
- "developer-docs/web-apps/independently-verifying-ic-signatures",
- "developer-docs/web-apps/obtain-verify-ic-pubkey",
+ "developer-docs/web-apps/frameworks/juno",
],
},
{
@@ -759,10 +756,6 @@ const sidebars = {
],
},
{
- type: "category",
- label: "Identity",
- items: [
- {
type: "category",
label: "Authentication",
items: [
@@ -771,7 +764,6 @@ const sidebars = {
type: "doc",
id: "developer-docs/identity/authentication/overview",
},
-
{
type: "category",
label: "Internet Identity (II)",
@@ -786,14 +778,6 @@ const sidebars = {
"developer-docs/identity/internet-identity/alternative-origins",
],
},
- "developer-docs/identity/authentication/email-password",
- "developer-docs/identity/authentication/nfid",
- "developer-docs/identity/authentication/siwb",
- "developer-docs/identity/authentication/siwe",
- "developer-docs/identity/authentication/siws",
- "developer-docs/identity/authentication/msq",
- ],
- },
{
type: "category",
label: "Verifiable credentials",
@@ -824,23 +808,13 @@ const sidebars = {
label: "Tokens",
items: [
"developer-docs/defi/tokens/token-standards",
- "developer-docs/defi/tokens/asset_flow/index",
{
type: "category",
label: "Ledgers",
items: [
- {
- type: "doc",
- label: "Overview",
- id: "developer-docs/defi/tokens/ledger/overview",
- },
{
type: "category",
label: "Setup",
- link: {
- type: "doc",
- id: "developer-docs/defi/tokens/ledger/setup/overview",
- },
items: [
"developer-docs/defi/tokens/ledger/setup/icp_ledger_setup",
"developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup"
@@ -849,10 +823,6 @@ const sidebars = {
{
type: "category",
label: "Usage",
- link: {
- type: "doc",
- id: "developer-docs/defi/tokens/ledger/usage/overview",
- },
items: [
"developer-docs/defi/tokens/ledger/usage/icp_ledger_usage",
"developer-docs/defi/tokens/ledger/usage/icrc1_ledger_usage"
@@ -875,7 +845,7 @@ const sidebars = {
},
{
type: "category",
- label: "Advanced",
+ label: "Rosetta",
items: [
{
type: "category",
@@ -1211,101 +1181,6 @@ const sidebars = {
},
],
},
- {
- type: "category",
- label: "Sample apps",
- items: [
- "samples/overview",
- {
- type: "category",
- label: "Hosting",
- items: [
- "references/samples/hosting/godot-html5-template/README",
- "references/samples/hosting/photo-storage/README",
- "references/samples/hosting/static-website/README",
- "references/samples/hosting/unity-webgl-template/README",
- ],
- },
- {
- type: "category",
- label: "Motoko",
- items: [
- "references/samples/motoko/basic_bitcoin/README",
- "references/samples/motoko/basic_dao/README",
- "references/samples/motoko/cert-var/README",
- "references/samples/motoko/classes/README",
- "references/samples/motoko/composite_query/README",
- "references/samples/motoko/counter/README",
- {
- type: "doc",
- label: "CRUD example",
- id: "references/samples/motoko/superheroes/README",
- },
- "references/samples/motoko/encrypted-notes-dapp-vetkd/README",
- "references/samples/motoko/encrypted-notes-dapp/README",
- "references/samples/motoko/life/README",
- "references/samples/motoko/hello_cycles/README",
- "references/samples/motoko/send_http_get/README",
- "references/samples/motoko/send_http_post/README",
- "references/samples/motoko/ic-pos/README",
- "references/samples/motoko/icrc2-swap/README",
- "references/samples/motoko/internet_identity_integration/README",
- "references/samples/motoko/minimal-counter-dapp/README",
- "references/samples/motoko/parallel_calls/README",
- "references/samples/motoko/pub-sub/README",
- "references/samples/motoko/random_maze/README",
- "references/samples/motoko/threshold-ecdsa/README",
- "references/samples/motoko/token_transfer/README",
- "references/samples/motoko/token_transfer_from/README",
- "references/samples/motoko/vetkd/README",
- ],
- },
- {
- type: "category",
- label: "Rust",
- items: [
- "references/samples/rust/basic_bitcoin/README",
- "references/samples/rust/basic_dao/README",
- "references/samples/rust/canister-info/README",
- "references/samples/rust/composite_query/README",
- "references/samples/rust/counter/README",
- "references/samples/rust/defi/src/frontend/README",
- "references/samples/rust/encrypted-notes-dapp-vetkd/README",
- "references/samples/rust/encrypted-notes-dapp/README",
- "references/samples/rust/icp_transfer/README",
- "references/samples/rust/nft-wallet/README",
- "references/samples/rust/parallel_calls/README",
- "references/samples/rust/performance_counters/README",
- "references/samples/rust/periodic_tasks/README",
- "references/samples/rust/pub-sub/README",
- "references/samples/rust/qrcode/README",
- "references/samples/rust/send_http_get/README",
- "references/samples/rust/send_http_post/README",
- "references/samples/rust/threshold-ecdsa/README",
- "references/samples/rust/token_transfer/README",
- "references/samples/rust/token_transfer_from/README",
- "references/samples/rust/vetkd/README",
- ],
- },
- {
- type: "category",
- label: "Native dapps",
- items: [
- "references/samples/native-apps/unity_ii_applink/README",
- "references/samples/native-apps/unity_ii_deeplink/README",
- "references/samples/native-apps/unity_ii_deeplink/ii_integration_dapp/README",
- ],
- },
- {
- type: "category",
- label: "Svelte",
- items: [
- "references/samples/svelte/svelte-motoko-starter/README",
- "references/samples/svelte/svelte-starter/README",
- ],
- },
- ],
- },
{
type: "category",
label: "References",
@@ -1407,6 +1282,7 @@ const sidebars = {
label: "Ingress messages",
id: "references/ingress-messages",
},
+ "developer-docs/smart-contracts/advanced-features/system-canisters",
{
type: "category",
label: "Node providers",
diff --git a/static/img/blog/dev-update-blog-dec-4.jpg b/static/img/blog/dev-update-blog-dec-4.jpg
new file mode 100644
index 0000000000..992ddfff82
Binary files /dev/null and b/static/img/blog/dev-update-blog-dec-4.jpg differ
diff --git a/static/img/showcase/Alphaday_logo.png b/static/img/showcase/Alphaday_logo.png
index 0fff6a39f9..1ac171036e 100644
Binary files a/static/img/showcase/Alphaday_logo.png and b/static/img/showcase/Alphaday_logo.png differ
diff --git a/static/img/showcase/Alphaday_screenshot.png b/static/img/showcase/Alphaday_screenshot.png
index 8af6981fee..e18e46e0f0 100644
Binary files a/static/img/showcase/Alphaday_screenshot.png and b/static/img/showcase/Alphaday_screenshot.png differ
diff --git a/static/img/showcase/Alphaday_video.mp4 b/static/img/showcase/Alphaday_video.mp4
index 1977dc82b7..8f368b64d0 100644
Binary files a/static/img/showcase/Alphaday_video.mp4 and b/static/img/showcase/Alphaday_video.mp4 differ
diff --git a/static/img/showcase/BR-DAO_logo.svg b/static/img/showcase/BR-DAO_logo.svg
index 83200a21b2..5addb51dc7 100644
--- a/static/img/showcase/BR-DAO_logo.svg
+++ b/static/img/showcase/BR-DAO_logo.svg
@@ -1,7 +1,4 @@
-
-
-
+VDA5OjI3OjE5LTA0OjAwFjPZAwAAAABJRU5ErkJggg=="/>
\ No newline at end of file
diff --git a/static/img/showcase/CaniPlay_logo.png b/static/img/showcase/CaniPlay_logo.png
index 5941583c88..d4a55a58e2 100644
Binary files a/static/img/showcase/CaniPlay_logo.png and b/static/img/showcase/CaniPlay_logo.png differ
diff --git a/static/img/showcase/DeVinci_logo.png b/static/img/showcase/DeVinci_logo.png
index e834be404c..a0a82eed98 100644
Binary files a/static/img/showcase/DeVinci_logo.png and b/static/img/showcase/DeVinci_logo.png differ
diff --git a/static/img/showcase/Gate23_logo.png b/static/img/showcase/Gate23_logo.png
index 0a8ad42d06..c0de38f755 100644
Binary files a/static/img/showcase/Gate23_logo.png and b/static/img/showcase/Gate23_logo.png differ
diff --git a/static/img/showcase/ICAP_logo.png b/static/img/showcase/ICAP_logo.png
index 27cf346a17..d505fd2ca8 100644
Binary files a/static/img/showcase/ICAP_logo.png and b/static/img/showcase/ICAP_logo.png differ
diff --git a/static/img/showcase/ICPulse_screenshot.jpg b/static/img/showcase/ICPulse_screenshot.jpg
index 9decc5bfa6..7e29637010 100644
Binary files a/static/img/showcase/ICPulse_screenshot.jpg and b/static/img/showcase/ICPulse_screenshot.jpg differ
diff --git a/static/img/showcase/ICSoccerWorld.png b/static/img/showcase/ICSoccerWorld.png
index 7286926caf..087df2ed5e 100644
Binary files a/static/img/showcase/ICSoccerWorld.png and b/static/img/showcase/ICSoccerWorld.png differ
diff --git a/static/img/showcase/Mapz_logo.png b/static/img/showcase/Mapz_logo.png
index b8b9de9ee7..7e6c2e4c10 100644
Binary files a/static/img/showcase/Mapz_logo.png and b/static/img/showcase/Mapz_logo.png differ
diff --git a/static/img/showcase/Mapz_screenshot.png b/static/img/showcase/Mapz_screenshot.png
index 18efd32572..c1801b962a 100644
Binary files a/static/img/showcase/Mapz_screenshot.png and b/static/img/showcase/Mapz_screenshot.png differ
diff --git a/static/img/showcase/Meddle_Logo.png b/static/img/showcase/Meddle_Logo.png
index f96b039601..1ef7978e87 100644
Binary files a/static/img/showcase/Meddle_Logo.png and b/static/img/showcase/Meddle_Logo.png differ
diff --git a/static/img/showcase/Outrank_logo.jpg b/static/img/showcase/Outrank_logo.jpg
index 1fe2b8c6bf..2f71241e9b 100644
Binary files a/static/img/showcase/Outrank_logo.jpg and b/static/img/showcase/Outrank_logo.jpg differ
diff --git a/static/img/showcase/PanoramaBlock_Logo.png b/static/img/showcase/PanoramaBlock_Logo.png
index f8706c7a4d..71b18725cd 100644
Binary files a/static/img/showcase/PanoramaBlock_Logo.png and b/static/img/showcase/PanoramaBlock_Logo.png differ
diff --git a/static/img/showcase/Raters_logo.png b/static/img/showcase/Raters_logo.png
index 423bff9972..a8280c3877 100644
Binary files a/static/img/showcase/Raters_logo.png and b/static/img/showcase/Raters_logo.png differ
diff --git a/static/img/showcase/Zoksh_logo.jpg b/static/img/showcase/Zoksh_logo.jpg
index 9ab415297e..7a2a3c569c 100644
Binary files a/static/img/showcase/Zoksh_logo.jpg and b/static/img/showcase/Zoksh_logo.jpg differ
diff --git a/static/img/showcase/aedile_screenshot_0.webp b/static/img/showcase/aedile_screenshot_0.webp
index 70dafa5b84..92a6b1a901 100644
Binary files a/static/img/showcase/aedile_screenshot_0.webp and b/static/img/showcase/aedile_screenshot_0.webp differ
diff --git a/static/img/showcase/agorapp-logo-small.svg b/static/img/showcase/agorapp-logo-small.svg
index 2b212f2606..4ae5fd9209 100644
--- a/static/img/showcase/agorapp-logo-small.svg
+++ b/static/img/showcase/agorapp-logo-small.svg
@@ -1,15 +1 @@
-
-
+
\ No newline at end of file
diff --git a/static/img/showcase/allkinds_logo.svg b/static/img/showcase/allkinds_logo.svg
index e15891a4ba..a47046d40d 100644
--- a/static/img/showcase/allkinds_logo.svg
+++ b/static/img/showcase/allkinds_logo.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/alpacafi_logo.png b/static/img/showcase/alpacafi_logo.png
index 50468898d4..f6ed43a404 100644
Binary files a/static/img/showcase/alpacafi_logo.png and b/static/img/showcase/alpacafi_logo.png differ
diff --git a/static/img/showcase/amplify_logo.png b/static/img/showcase/amplify_logo.png
index 619e7f0586..3fddd31eed 100644
Binary files a/static/img/showcase/amplify_logo.png and b/static/img/showcase/amplify_logo.png differ
diff --git a/static/img/showcase/arcmind_logo.svg b/static/img/showcase/arcmind_logo.svg
index 87c2617e85..6d5a44e9a7 100644
--- a/static/img/showcase/arcmind_logo.svg
+++ b/static/img/showcase/arcmind_logo.svg
@@ -1,14 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/argonstudio_logo.webp b/static/img/showcase/argonstudio_logo.webp
index 4845648be2..42bf106faa 100644
Binary files a/static/img/showcase/argonstudio_logo.webp and b/static/img/showcase/argonstudio_logo.webp differ
diff --git a/static/img/showcase/asset-app.jpg b/static/img/showcase/asset-app.jpg
index 54cecc29b3..1bfe62b74f 100644
Binary files a/static/img/showcase/asset-app.jpg and b/static/img/showcase/asset-app.jpg differ
diff --git a/static/img/showcase/asset-app_logo.png b/static/img/showcase/asset-app_logo.png
index 7b4fb4e960..1ae455f678 100644
Binary files a/static/img/showcase/asset-app_logo.png and b/static/img/showcase/asset-app_logo.png differ
diff --git a/static/img/showcase/astroxme_logo.webp b/static/img/showcase/astroxme_logo.webp
index ab638661c4..11a7b8e280 100644
Binary files a/static/img/showcase/astroxme_logo.webp and b/static/img/showcase/astroxme_logo.webp differ
diff --git a/static/img/showcase/autoroyale_video.mp4 b/static/img/showcase/autoroyale_video.mp4
index a839b64f38..566b78c1fa 100644
Binary files a/static/img/showcase/autoroyale_video.mp4 and b/static/img/showcase/autoroyale_video.mp4 differ
diff --git a/static/img/showcase/aviatelabs_logo.webp b/static/img/showcase/aviatelabs_logo.webp
index 8443c14d8f..8c23bf1aad 100644
Binary files a/static/img/showcase/aviatelabs_logo.webp and b/static/img/showcase/aviatelabs_logo.webp differ
diff --git a/static/img/showcase/azle_logo.svg b/static/img/showcase/azle_logo.svg
index b6f255bf13..8fe3cae810 100644
--- a/static/img/showcase/azle_logo.svg
+++ b/static/img/showcase/azle_logo.svg
@@ -1,66 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/azle_screenshot_0.jpg b/static/img/showcase/azle_screenshot_0.jpg
index b885ca97c6..5a9f90534f 100644
Binary files a/static/img/showcase/azle_screenshot_0.jpg and b/static/img/showcase/azle_screenshot_0.jpg differ
diff --git a/static/img/showcase/bioniq-logo.jpeg b/static/img/showcase/bioniq-logo.jpeg
index d175b3c382..96376e8f12 100644
Binary files a/static/img/showcase/bioniq-logo.jpeg and b/static/img/showcase/bioniq-logo.jpeg differ
diff --git a/static/img/showcase/bioniq-screenshot-min.png b/static/img/showcase/bioniq-screenshot-min.png
index bb7127fd7d..70beed99fe 100644
Binary files a/static/img/showcase/bioniq-screenshot-min.png and b/static/img/showcase/bioniq-screenshot-min.png differ
diff --git a/static/img/showcase/bipQuantum_logo.jpg b/static/img/showcase/bipQuantum_logo.jpg
index 82502effad..ec0fecd004 100644
Binary files a/static/img/showcase/bipQuantum_logo.jpg and b/static/img/showcase/bipQuantum_logo.jpg differ
diff --git a/static/img/showcase/bitfinity_evm.png b/static/img/showcase/bitfinity_evm.png
index db08327bb9..c7564c3dd0 100644
Binary files a/static/img/showcase/bitfinity_evm.png and b/static/img/showcase/bitfinity_evm.png differ
diff --git a/static/img/showcase/bitomni_screenshot.png b/static/img/showcase/bitomni_screenshot.png
index 8fc83872e1..de7f2ce835 100644
Binary files a/static/img/showcase/bitomni_screenshot.png and b/static/img/showcase/bitomni_screenshot.png differ
diff --git a/static/img/showcase/blocklist.png b/static/img/showcase/blocklist.png
index a5ff55f5e8..837e684662 100644
Binary files a/static/img/showcase/blocklist.png and b/static/img/showcase/blocklist.png differ
diff --git a/static/img/showcase/blueband_logo.png b/static/img/showcase/blueband_logo.png
index 25c83b64f0..e1fb77c13e 100644
Binary files a/static/img/showcase/blueband_logo.png and b/static/img/showcase/blueband_logo.png differ
diff --git a/static/img/showcase/bridge23_logo.png b/static/img/showcase/bridge23_logo.png
index 0845689fc9..944d61b47b 100644
Binary files a/static/img/showcase/bridge23_logo.png and b/static/img/showcase/bridge23_logo.png differ
diff --git a/static/img/showcase/brownfiamm_logo.jpg b/static/img/showcase/brownfiamm_logo.jpg
index 5189963d2c..4f8a665c70 100644
Binary files a/static/img/showcase/brownfiamm_logo.jpg and b/static/img/showcase/brownfiamm_logo.jpg differ
diff --git a/static/img/showcase/candb_logo.png b/static/img/showcase/candb_logo.png
index 9471a55244..7191f9d784 100644
Binary files a/static/img/showcase/candb_logo.png and b/static/img/showcase/candb_logo.png differ
diff --git a/static/img/showcase/canister-store_screenshot_0.png b/static/img/showcase/canister-store_screenshot_0.png
index e20a732e1e..7dd5f34e17 100644
Binary files a/static/img/showcase/canister-store_screenshot_0.png and b/static/img/showcase/canister-store_screenshot_0.png differ
diff --git a/static/img/showcase/canscale_logo.webp b/static/img/showcase/canscale_logo.webp
index c2d37b8c7d..26e67e2bf2 100644
Binary files a/static/img/showcase/canscale_logo.webp and b/static/img/showcase/canscale_logo.webp differ
diff --git a/static/img/showcase/catalyze_screenshot.png b/static/img/showcase/catalyze_screenshot.png
index 194fba1c44..4f96d5ce72 100644
Binary files a/static/img/showcase/catalyze_screenshot.png and b/static/img/showcase/catalyze_screenshot.png differ
diff --git a/static/img/showcase/chainsight_screenshot.png b/static/img/showcase/chainsight_screenshot.png
index 6ad69c38da..243ee3c8d8 100644
Binary files a/static/img/showcase/chainsight_screenshot.png and b/static/img/showcase/chainsight_screenshot.png differ
diff --git a/static/img/showcase/cipherAI_logo.jpeg b/static/img/showcase/cipherAI_logo.jpeg
index 3afa3a93d5..2b3a264bb6 100644
Binary files a/static/img/showcase/cipherAI_logo.jpeg and b/static/img/showcase/cipherAI_logo.jpeg differ
diff --git a/static/img/showcase/cipherproxy_logo.webp b/static/img/showcase/cipherproxy_logo.webp
index bcccc5a090..f6ca00b22e 100644
Binary files a/static/img/showcase/cipherproxy_logo.webp and b/static/img/showcase/cipherproxy_logo.webp differ
diff --git a/static/img/showcase/civic_logo.png b/static/img/showcase/civic_logo.png
index dd02969f65..8ea0a00863 100644
Binary files a/static/img/showcase/civic_logo.png and b/static/img/showcase/civic_logo.png differ
diff --git a/static/img/showcase/codebase_logo.webp b/static/img/showcase/codebase_logo.webp
index bc3f289775..e15e94dffd 100644
Binary files a/static/img/showcase/codebase_logo.webp and b/static/img/showcase/codebase_logo.webp differ
diff --git a/static/img/showcase/communities_ooo_logo.png b/static/img/showcase/communities_ooo_logo.png
index 4c0fd1d631..779531e390 100644
Binary files a/static/img/showcase/communities_ooo_logo.png and b/static/img/showcase/communities_ooo_logo.png differ
diff --git a/static/img/showcase/cosmicrafts_logo.svg b/static/img/showcase/cosmicrafts_logo.svg
index cc367e251c..5149426920 100644
--- a/static/img/showcase/cosmicrafts_logo.svg
+++ b/static/img/showcase/cosmicrafts_logo.svg
@@ -1,37 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/cosmicrafts_screenshot1.jpg b/static/img/showcase/cosmicrafts_screenshot1.jpg
index 3a3b50c093..0057abae5c 100644
Binary files a/static/img/showcase/cosmicrafts_screenshot1.jpg and b/static/img/showcase/cosmicrafts_screenshot1.jpg differ
diff --git a/static/img/showcase/crowdeats_logo.svg b/static/img/showcase/crowdeats_logo.svg
index 3ecc638e9d..0fac08534b 100644
--- a/static/img/showcase/crowdeats_logo.svg
+++ b/static/img/showcase/crowdeats_logo.svg
@@ -1,6 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/cycleops_logo.png b/static/img/showcase/cycleops_logo.png
index 53fe03c906..2dff4e9a86 100644
Binary files a/static/img/showcase/cycleops_logo.png and b/static/img/showcase/cycleops_logo.png differ
diff --git a/static/img/showcase/dappbox_logo.png b/static/img/showcase/dappbox_logo.png
index 88abbf5638..2447463908 100644
Binary files a/static/img/showcase/dappbox_logo.png and b/static/img/showcase/dappbox_logo.png differ
diff --git a/static/img/showcase/dappradar_logo.png b/static/img/showcase/dappradar_logo.png
index 0c17273330..33be903f8f 100644
Binary files a/static/img/showcase/dappradar_logo.png and b/static/img/showcase/dappradar_logo.png differ
diff --git a/static/img/showcase/datanome-logo.png b/static/img/showcase/datanome-logo.png
index d0e760595a..5db46b4ed1 100644
Binary files a/static/img/showcase/datanome-logo.png and b/static/img/showcase/datanome-logo.png differ
diff --git a/static/img/showcase/datanome-screenshot.png b/static/img/showcase/datanome-screenshot.png
index d4b739254e..332af75a2f 100644
Binary files a/static/img/showcase/datanome-screenshot.png and b/static/img/showcase/datanome-screenshot.png differ
diff --git a/static/img/showcase/dcm_logo.svg b/static/img/showcase/dcm_logo.svg
index b16bd01618..db71a943b5 100644
--- a/static/img/showcase/dcm_logo.svg
+++ b/static/img/showcase/dcm_logo.svg
@@ -1,3 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/deai_chat_logo.jpeg b/static/img/showcase/deai_chat_logo.jpeg
index 4ae4787bd7..94db71dbe4 100644
Binary files a/static/img/showcase/deai_chat_logo.jpeg and b/static/img/showcase/deai_chat_logo.jpeg differ
diff --git a/static/img/showcase/decideai_screenshot_0.png b/static/img/showcase/decideai_screenshot_0.png
index ef53908927..8875219393 100644
Binary files a/static/img/showcase/decideai_screenshot_0.png and b/static/img/showcase/decideai_screenshot_0.png differ
diff --git a/static/img/showcase/deland_labs.png b/static/img/showcase/deland_labs.png
index 3fe236ab3c..1706f613b5 100644
Binary files a/static/img/showcase/deland_labs.png and b/static/img/showcase/deland_labs.png differ
diff --git a/static/img/showcase/dflow_logo.png b/static/img/showcase/dflow_logo.png
index 9828e906ae..c9fe42130d 100644
Binary files a/static/img/showcase/dflow_logo.png and b/static/img/showcase/dflow_logo.png differ
diff --git a/static/img/showcase/dflow_screenshot.png b/static/img/showcase/dflow_screenshot.png
index c4530365d5..bbe5ca4609 100644
Binary files a/static/img/showcase/dflow_screenshot.png and b/static/img/showcase/dflow_screenshot.png differ
diff --git a/static/img/showcase/dfxdashboard_logo.svg b/static/img/showcase/dfxdashboard_logo.svg
index dee24516d7..04173bf51b 100644
--- a/static/img/showcase/dfxdashboard_logo.svg
+++ b/static/img/showcase/dfxdashboard_logo.svg
@@ -1,29 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/static/img/showcase/distrikt.png b/static/img/showcase/distrikt.png
index 7c1666c1bd..9c00424039 100644
Binary files a/static/img/showcase/distrikt.png and b/static/img/showcase/distrikt.png differ
diff --git a/static/img/showcase/dmail-network_screenshots_0.png b/static/img/showcase/dmail-network_screenshots_0.png
index 0dc0d2155b..22a24f3513 100644
Binary files a/static/img/showcase/dmail-network_screenshots_0.png and b/static/img/showcase/dmail-network_screenshots_0.png differ
diff --git a/static/img/showcase/dmail-network_screenshots_1.png b/static/img/showcase/dmail-network_screenshots_1.png
index a7cb577911..33fa6f1597 100644
Binary files a/static/img/showcase/dmail-network_screenshots_1.png and b/static/img/showcase/dmail-network_screenshots_1.png differ
diff --git a/static/img/showcase/dmail-network_screenshots_2.png b/static/img/showcase/dmail-network_screenshots_2.png
index 4364857d03..2cb3fceb50 100644
Binary files a/static/img/showcase/dmail-network_screenshots_2.png and b/static/img/showcase/dmail-network_screenshots_2.png differ
diff --git a/static/img/showcase/dmail-network_screenshots_3.png b/static/img/showcase/dmail-network_screenshots_3.png
index 81fd82a9f2..fad219d5c4 100644
Binary files a/static/img/showcase/dmail-network_screenshots_3.png and b/static/img/showcase/dmail-network_screenshots_3.png differ
diff --git a/static/img/showcase/dmail-network_screenshots_4.png b/static/img/showcase/dmail-network_screenshots_4.png
index 3ac4336a63..469cab7ba9 100644
Binary files a/static/img/showcase/dmail-network_screenshots_4.png and b/static/img/showcase/dmail-network_screenshots_4.png differ
diff --git a/static/img/showcase/dscvr-logo.png b/static/img/showcase/dscvr-logo.png
index 0d1a2e39c4..55f424637f 100644
Binary files a/static/img/showcase/dscvr-logo.png and b/static/img/showcase/dscvr-logo.png differ
diff --git a/static/img/showcase/dscvr.png b/static/img/showcase/dscvr.png
index 4d2cb6bd46..9d0ec49eec 100644
Binary files a/static/img/showcase/dscvr.png and b/static/img/showcase/dscvr.png differ
diff --git a/static/img/showcase/dwitter_logo.png b/static/img/showcase/dwitter_logo.png
index f8813094f6..0d8895b8ad 100644
Binary files a/static/img/showcase/dwitter_logo.png and b/static/img/showcase/dwitter_logo.png differ
diff --git a/static/img/showcase/eimolad_logo.webp b/static/img/showcase/eimolad_logo.webp
index 03136c10c5..fabd982122 100644
Binary files a/static/img/showcase/eimolad_logo.webp and b/static/img/showcase/eimolad_logo.webp differ
diff --git a/static/img/showcase/elnaai_logo.png b/static/img/showcase/elnaai_logo.png
index 265072a871..0cd59c6566 100644
Binary files a/static/img/showcase/elnaai_logo.png and b/static/img/showcase/elnaai_logo.png differ
diff --git a/static/img/showcase/ember-cli-dfinity.png b/static/img/showcase/ember-cli-dfinity.png
index 7b69e9a6c8..143e296a7f 100644
Binary files a/static/img/showcase/ember-cli-dfinity.png and b/static/img/showcase/ember-cli-dfinity.png differ
diff --git a/static/img/showcase/emc_logo.svg b/static/img/showcase/emc_logo.svg
index 0966bf6bfd..b160db7fa4 100644
--- a/static/img/showcase/emc_logo.svg
+++ b/static/img/showcase/emc_logo.svg
@@ -1,114 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/emc_screenshot.png b/static/img/showcase/emc_screenshot.png
index c9ef962ab8..4638f8210f 100644
Binary files a/static/img/showcase/emc_screenshot.png and b/static/img/showcase/emc_screenshot.png differ
diff --git a/static/img/showcase/expeera_logo.jpeg b/static/img/showcase/expeera_logo.jpeg
index 2d2b49ccf6..147e2bf19c 100644
Binary files a/static/img/showcase/expeera_logo.jpeg and b/static/img/showcase/expeera_logo.jpeg differ
diff --git a/static/img/showcase/faceless_logo.png b/static/img/showcase/faceless_logo.png
index 686b12dd9e..d273f47eef 100644
Binary files a/static/img/showcase/faceless_logo.png and b/static/img/showcase/faceless_logo.png differ
diff --git a/static/img/showcase/faefolk_logo.webp b/static/img/showcase/faefolk_logo.webp
index 780293f11c..1c08d21c34 100644
Binary files a/static/img/showcase/faefolk_logo.webp and b/static/img/showcase/faefolk_logo.webp differ
diff --git a/static/img/showcase/fleek.png b/static/img/showcase/fleek.png
index d47d7ce5f8..001145f0cb 100644
Binary files a/static/img/showcase/fleek.png and b/static/img/showcase/fleek.png differ
diff --git a/static/img/showcase/fort-major-dao_logo.svg b/static/img/showcase/fort-major-dao_logo.svg
index a820689e2f..55f3f4c89e 100644
--- a/static/img/showcase/fort-major-dao_logo.svg
+++ b/static/img/showcase/fort-major-dao_logo.svg
@@ -1,11 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/fpdao_screenshot.png b/static/img/showcase/fpdao_screenshot.png
index 104d7d2f9b..666cd6303f 100644
Binary files a/static/img/showcase/fpdao_screenshot.png and b/static/img/showcase/fpdao_screenshot.png differ
diff --git a/static/img/showcase/frontrow_logo.png b/static/img/showcase/frontrow_logo.png
index 973e0b198d..3ced6c03da 100644
Binary files a/static/img/showcase/frontrow_logo.png and b/static/img/showcase/frontrow_logo.png differ
diff --git a/static/img/showcase/gBridge_logo.png b/static/img/showcase/gBridge_logo.png
index 0f182b9c65..b98121c61f 100644
Binary files a/static/img/showcase/gBridge_logo.png and b/static/img/showcase/gBridge_logo.png differ
diff --git a/static/img/showcase/glue_logo.png b/static/img/showcase/glue_logo.png
index 3b5a83695e..1b26bf58d0 100644
Binary files a/static/img/showcase/glue_logo.png and b/static/img/showcase/glue_logo.png differ
diff --git a/static/img/showcase/goagent_logo.png b/static/img/showcase/goagent_logo.png
index d6d98c3bde..9abd118155 100644
Binary files a/static/img/showcase/goagent_logo.png and b/static/img/showcase/goagent_logo.png differ
diff --git a/static/img/showcase/golddao_logo.png b/static/img/showcase/golddao_logo.png
index a7ea77d33d..798211998b 100644
Binary files a/static/img/showcase/golddao_logo.png and b/static/img/showcase/golddao_logo.png differ
diff --git a/static/img/showcase/gotcha_logo.png b/static/img/showcase/gotcha_logo.png
index 276c7d721c..e9f4d3440e 100644
Binary files a/static/img/showcase/gotcha_logo.png and b/static/img/showcase/gotcha_logo.png differ
diff --git a/static/img/showcase/hashkeydid_logo.svg b/static/img/showcase/hashkeydid_logo.svg
index 1e5fe8e212..591adaa242 100644
--- a/static/img/showcase/hashkeydid_logo.svg
+++ b/static/img/showcase/hashkeydid_logo.svg
@@ -1,28 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/helix_screenshot.png b/static/img/showcase/helix_screenshot.png
index 4d26949e0d..1f67d2ff10 100644
Binary files a/static/img/showcase/helix_screenshot.png and b/static/img/showcase/helix_screenshot.png differ
diff --git a/static/img/showcase/hexGL.png b/static/img/showcase/hexGL.png
index b5a79441c4..928aebc106 100644
Binary files a/static/img/showcase/hexGL.png and b/static/img/showcase/hexGL.png differ
diff --git a/static/img/showcase/hobbi_screenshot.png b/static/img/showcase/hobbi_screenshot.png
index 46f34fa735..421437e404 100644
Binary files a/static/img/showcase/hobbi_screenshot.png and b/static/img/showcase/hobbi_screenshot.png differ
diff --git a/static/img/showcase/ic_nft_creater_logo.png b/static/img/showcase/ic_nft_creater_logo.png
index f17f141e90..90859c2342 100644
Binary files a/static/img/showcase/ic_nft_creater_logo.png and b/static/img/showcase/ic_nft_creater_logo.png differ
diff --git a/static/img/showcase/ic_siwe_logo.png b/static/img/showcase/ic_siwe_logo.png
index 9469819bcf..63028c3965 100644
Binary files a/static/img/showcase/ic_siwe_logo.png and b/static/img/showcase/ic_siwe_logo.png differ
diff --git a/static/img/showcase/ic_siwe_screenshot.png b/static/img/showcase/ic_siwe_screenshot.png
index ed55cad5a1..70aac2fa17 100644
Binary files a/static/img/showcase/ic_siwe_screenshot.png and b/static/img/showcase/ic_siwe_screenshot.png differ
diff --git a/static/img/showcase/icda_logo.png b/static/img/showcase/icda_logo.png
index 6af0531a5d..2790f60be1 100644
Binary files a/static/img/showcase/icda_logo.png and b/static/img/showcase/icda_logo.png differ
diff --git a/static/img/showcase/icdevs.org_logo.webp b/static/img/showcase/icdevs.org_logo.webp
index 0c6fde5577..daee7f5981 100644
Binary files a/static/img/showcase/icdevs.org_logo.webp and b/static/img/showcase/icdevs.org_logo.webp differ
diff --git a/static/img/showcase/icdragon_logo.png b/static/img/showcase/icdragon_logo.png
index 7ed6d75062..e518956af1 100644
Binary files a/static/img/showcase/icdragon_logo.png and b/static/img/showcase/icdragon_logo.png differ
diff --git a/static/img/showcase/icdragon_screenshot.png b/static/img/showcase/icdragon_screenshot.png
index 0893756d49..c10306d6ca 100644
Binary files a/static/img/showcase/icdragon_screenshot.png and b/static/img/showcase/icdragon_screenshot.png differ
diff --git a/static/img/showcase/icevent_logo_112x112.png b/static/img/showcase/icevent_logo_112x112.png
index c348191399..8ccb140c0b 100644
Binary files a/static/img/showcase/icevent_logo_112x112.png and b/static/img/showcase/icevent_logo_112x112.png differ
diff --git a/static/img/showcase/icevent_screenshot.PNG b/static/img/showcase/icevent_screenshot.PNG
index 934dc05c9f..f91194f492 100644
Binary files a/static/img/showcase/icevent_screenshot.PNG and b/static/img/showcase/icevent_screenshot.PNG differ
diff --git a/static/img/showcase/icghost.png b/static/img/showcase/icghost.png
index 17efd805c1..798ba17037 100644
Binary files a/static/img/showcase/icghost.png and b/static/img/showcase/icghost.png differ
diff --git a/static/img/showcase/ichub_screenshot_0.jpeg b/static/img/showcase/ichub_screenshot_0.jpeg
index fc9418231a..0a1dc57245 100644
Binary files a/static/img/showcase/ichub_screenshot_0.jpeg and b/static/img/showcase/ichub_screenshot_0.jpeg differ
diff --git a/static/img/showcase/ichub_screenshot_1.jpeg b/static/img/showcase/ichub_screenshot_1.jpeg
index e0d9f0b91c..01b2edba48 100644
Binary files a/static/img/showcase/ichub_screenshot_1.jpeg and b/static/img/showcase/ichub_screenshot_1.jpeg differ
diff --git a/static/img/showcase/ichub_screenshot_2.jpeg b/static/img/showcase/ichub_screenshot_2.jpeg
index a67dff9ed0..e7437caeeb 100644
Binary files a/static/img/showcase/ichub_screenshot_2.jpeg and b/static/img/showcase/ichub_screenshot_2.jpeg differ
diff --git a/static/img/showcase/iclighthouse_logo.webp b/static/img/showcase/iclighthouse_logo.webp
index 968c5522e7..d57d46a239 100644
Binary files a/static/img/showcase/iclighthouse_logo.webp and b/static/img/showcase/iclighthouse_logo.webp differ
diff --git a/static/img/showcase/icp_canister_bridge_logo.png b/static/img/showcase/icp_canister_bridge_logo.png
index 0fe5911624..d7015afde4 100644
Binary files a/static/img/showcase/icp_canister_bridge_logo.png and b/static/img/showcase/icp_canister_bridge_logo.png differ
diff --git a/static/img/showcase/icpcc_logo.png b/static/img/showcase/icpcc_logo.png
index de38a5d6e7..8cb293353d 100644
Binary files a/static/img/showcase/icpcc_logo.png and b/static/img/showcase/icpcc_logo.png differ
diff --git a/static/img/showcase/icpcoins_logo.png b/static/img/showcase/icpcoins_logo.png
index f51cf20bcf..55188d666d 100644
Binary files a/static/img/showcase/icpcoins_logo.png and b/static/img/showcase/icpcoins_logo.png differ
diff --git a/static/img/showcase/icpcoins_screenshot_0.jpg b/static/img/showcase/icpcoins_screenshot_0.jpg
index 7e1522bf29..7400474bf1 100644
Binary files a/static/img/showcase/icpcoins_screenshot_0.jpg and b/static/img/showcase/icpcoins_screenshot_0.jpg differ
diff --git a/static/img/showcase/icpkit_logo.png b/static/img/showcase/icpkit_logo.png
index adc289437d..612b8db7e6 100644
Binary files a/static/img/showcase/icpkit_logo.png and b/static/img/showcase/icpkit_logo.png differ
diff --git a/static/img/showcase/icpodcast_logo.png b/static/img/showcase/icpodcast_logo.png
index 22e50b9b09..e97f9a4367 100644
Binary files a/static/img/showcase/icpodcast_logo.png and b/static/img/showcase/icpodcast_logo.png differ
diff --git a/static/img/showcase/icpodcast_screenshot.png b/static/img/showcase/icpodcast_screenshot.png
index bccaebdda4..e2e7e364f4 100644
Binary files a/static/img/showcase/icpodcast_screenshot.png and b/static/img/showcase/icpodcast_screenshot.png differ
diff --git a/static/img/showcase/icpp-pro-screenshot.1024x576.png b/static/img/showcase/icpp-pro-screenshot.1024x576.png
index 74000f0b7e..089875f1e8 100644
Binary files a/static/img/showcase/icpp-pro-screenshot.1024x576.png and b/static/img/showcase/icpp-pro-screenshot.1024x576.png differ
diff --git a/static/img/showcase/icpsig_logo.png b/static/img/showcase/icpsig_logo.png
index 786be69c7d..cf611540b9 100644
Binary files a/static/img/showcase/icpsig_logo.png and b/static/img/showcase/icpsig_logo.png differ
diff --git a/static/img/showcase/icpsig_screenshot.png b/static/img/showcase/icpsig_screenshot.png
index 9fdf93df59..210bb7fa35 100644
Binary files a/static/img/showcase/icpsig_screenshot.png and b/static/img/showcase/icpsig_screenshot.png differ
diff --git a/static/img/showcase/icpulse_logo.svg b/static/img/showcase/icpulse_logo.svg
index 4d0ca7df64..dfc4172ed2 100644
--- a/static/img/showcase/icpulse_logo.svg
+++ b/static/img/showcase/icpulse_logo.svg
@@ -1,14 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/icto_screenshot_0.png b/static/img/showcase/icto_screenshot_0.png
index a31d3faccf..18c0cb98d4 100644
Binary files a/static/img/showcase/icto_screenshot_0.png and b/static/img/showcase/icto_screenshot_0.png differ
diff --git a/static/img/showcase/ictoolkit_logo.png b/static/img/showcase/ictoolkit_logo.png
index f95a6e3812..e9ac534ef0 100644
Binary files a/static/img/showcase/ictoolkit_logo.png and b/static/img/showcase/ictoolkit_logo.png differ
diff --git a/static/img/showcase/idempotent_proxy_logo.png b/static/img/showcase/idempotent_proxy_logo.png
index 43fcee9b91..a056be05ab 100644
Binary files a/static/img/showcase/idempotent_proxy_logo.png and b/static/img/showcase/idempotent_proxy_logo.png differ
diff --git a/static/img/showcase/ii-badge.svg b/static/img/showcase/ii-badge.svg
index abfab393ed..0759c4e1ae 100644
--- a/static/img/showcase/ii-badge.svg
+++ b/static/img/showcase/ii-badge.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/in_logo.jpg b/static/img/showcase/in_logo.jpg
index e47b5c2fb4..3d2da0ad53 100644
Binary files a/static/img/showcase/in_logo.jpg and b/static/img/showcase/in_logo.jpg differ
diff --git a/static/img/showcase/incheonuniverse_logo.png b/static/img/showcase/incheonuniverse_logo.png
index 9d62505007..ece852e44f 100644
Binary files a/static/img/showcase/incheonuniverse_logo.png and b/static/img/showcase/incheonuniverse_logo.png differ
diff --git a/static/img/showcase/internetidentity_screenshot_0.gif b/static/img/showcase/internetidentity_screenshot_0.gif
index af3ea5ad34..fabd1c3385 100644
Binary files a/static/img/showcase/internetidentity_screenshot_0.gif and b/static/img/showcase/internetidentity_screenshot_0.gif differ
diff --git a/static/img/showcase/itoka_logo.svg b/static/img/showcase/itoka_logo.svg
index 684ade9b20..90a9a5b063 100644
--- a/static/img/showcase/itoka_logo.svg
+++ b/static/img/showcase/itoka_logo.svg
@@ -1,10 +1 @@
-
+
\ No newline at end of file
diff --git a/static/img/showcase/itoka_screanshot.svg b/static/img/showcase/itoka_screanshot.svg
index b1a76bafd7..e96b9ac89d 100644
--- a/static/img/showcase/itoka_screanshot.svg
+++ b/static/img/showcase/itoka_screanshot.svg
@@ -1,12 +1 @@
-
+