Skip to content

Commit bda17c8

Browse files
dwightjlkhadni
andauthored
Changelog JSON and single-sourced release notes (smartcontractkit#1934)
* Single-source release notes * Add TS interface for changelog entries * Add anchor links to changelog entry headers * Enforce network validity * Add a Chainlink Local general release note --------- Co-authored-by: Karim <[email protected]>
1 parent 1512747 commit bda17c8

File tree

9 files changed

+1151
-1511
lines changed

9 files changed

+1151
-1511
lines changed

public/changelog.json

Lines changed: 1060 additions & 0 deletions
Large diffs are not rendered by default.

src/components/ReleaseNotes.astro

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
import changelogData from "../../public/changelog.json"
3+
import { chainNames } from "./QuickLinks/data/productChainLinks"
4+
import { marked } from "marked"
5+
6+
export type Props = {
7+
topic: string
8+
subTopic?: string
9+
}
10+
11+
export interface ChangelogEntry {
12+
category: string
13+
changes?: string[]
14+
date: string
15+
description: string
16+
relatedNetworks?: RelatedNetwork[]
17+
relatedTokens?: string[]
18+
title: string
19+
topic: string
20+
subTopic?: string
21+
urls?: string[]
22+
}
23+
24+
type RelatedNetwork = keyof typeof chainNames
25+
26+
function isValidNetwork(entry: any): entry is ChangelogEntry {
27+
if (entry.relatedNetworks) {
28+
if (!Array.isArray(entry.relatedNetworks)) {
29+
throw new Error(
30+
`Invalid type for field "relatedNetworks" in entry "${
31+
entry.title
32+
}": expected array, received ${typeof entry.relatedNetworks}`
33+
)
34+
}
35+
for (const network of entry.relatedNetworks) {
36+
if (!(network in chainNames)) {
37+
throw new Error(
38+
`Invalid relatedNetwork "${network}" in entry "${entry.title}". Must be one of: ${Object.keys(
39+
chainNames
40+
).join(", ")}`
41+
)
42+
}
43+
}
44+
}
45+
return true
46+
}
47+
48+
let changelog: ChangelogEntry[] = []
49+
50+
if (Array.isArray(changelogData)) {
51+
changelog = changelogData.filter(isValidNetwork)
52+
} else {
53+
console.error("Changelog data is not an array.")
54+
}
55+
56+
const { topic, subTopic } = Astro.props as Props
57+
58+
const entries = changelog.filter(
59+
(entry) => (entry.topic === topic && !subTopic) || (subTopic && entry.subTopic === subTopic)
60+
)
61+
---
62+
63+
{
64+
entries.map((entry) => (
65+
<section>
66+
<h2 id={entry.date + "-" + entry.title.toLowerCase().replace(/ /g, "-")}>
67+
<a href={`#${entry.date}-${entry.title.toLowerCase().replace(/ /g, "-")}`}>
68+
{entry.date} - {entry.title}
69+
</a>
70+
</h2>
71+
<article set:html={marked.parse(entry.description)} />
72+
</section>
73+
))
74+
}

src/components/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export { default as CodeSample } from "./CodeSample/CodeSample.astro"
1111
export { default as Address } from "./Address"
1212
export { default as CopyText } from "./CopyText"
1313
export { default as Aside } from "./Aside.astro"
14+
export { default as ReleaseNotes } from "./ReleaseNotes.astro"
1415
export { default as Icon } from "./Icon.astro"
1516
export { default as ClickToZoom } from "./ClickToZoom.astro"
1617
export { default as PackageManagerTabs } from "./Tabs/PackageManagerTabs.astro"

src/content/ccip/release-notes.mdx

Lines changed: 2 additions & 197 deletions
Original file line numberDiff line numberDiff line change
@@ -4,201 +4,6 @@ date: Last Modified
44
title: "Chainlink CCIP Release Notes"
55
---
66

7-
import { Aside } from "@components"
7+
import { ReleaseNotes } from "@components"
88

9-
## Metis - 2024-08-08
10-
11-
Chainlink CCIP is publicly available on Metis mainnet and testnet.
12-
13-
## Blast - 2024-07-09
14-
15-
Chainlink CCIP is publicly available on Blast mainnet and Sepolia testnet.
16-
17-
## Mode - 2024-06-19
18-
19-
Chainlink CCIP is publicly available on Mode mainnet and Sepolia testnet.
20-
21-
## Gnosis mainnet - 2024-06-05
22-
23-
Chainlink CCIP is publicly available on Gnosis mainnet.
24-
25-
## Celo - 2024-05-29
26-
27-
Chainlink CCIP is publicly available on Celo mainnet and Alfajores testnet.
28-
29-
## Polygon Amoy - 2024-05-08
30-
31-
Chainlink CCIP is publicly available on Polygon Amoy.
32-
33-
See the [CCIP testnet configuration page](/ccip/supported-networks/testnet) for more information.
34-
35-
## Chainlink CCIP is GA - 2024-04-24
36-
37-
Chainlink CCIP is now Generally Available (GA) on mainnet and testnet.
38-
39-
To support your development and implementation needs, we encourage you to reach out to our team of experts for guidance and support. For expert advice, visit the [Chainlink CCIP Contact form](https://chain.link/ccip-contact).
40-
41-
Additionally, the [Chainlink CCIP local
42-
simulator](https://github.com/smartcontractkit/chainlink-local) is available to enhance your development workflow with CCIP. This tool allows you to simulate Chainlink CCIP functionality locally within your Hardhat and Foundry projects. The simulator is designed so you can test your contracts locally and transition smoothly to test networks without any modifications.
43-
44-
## Support for WETH transfers and gas limit mainnet increase - 2024-04-11
45-
46-
### WETH and support of _Lock and Unlock_ mechanism
47-
48-
Chainlink's CCIP now supports WETH (Wrapped Ether) transfers through the _Lock and Unlock_ token mechanism. This feature allows CCIP to securely lock tokens on the source blockchain and subsequently release an equivalent amount of tokens on the destination blockchain, facilitating seamless cross-chain transfers of WETH.
49-
50-
The introduction of this mechanism enables WETH transfers across several key lanes:
51-
52-
- Ethereum Mainnet to/from Arbitrum Mainnet.
53-
- Ethereum Mainnet to/from Optimism Mainnet.
54-
- Arbitrum Mainnet to/from Optimism Mainnet.
55-
56-
For a specific lane configuration, go to the [Mainnet Supported Networks](/ccip/supported-networks/v1_2_0/mainnet) page. For more detailed information on the _Lock and Unlock_ mechanism and its applications, read the [Token Pools](/ccip/architecture#token-pools) section.
57-
58-
### Gas limit increase on mainnet
59-
60-
The maximum [gasLimit](/ccip/api-reference/client#evmextraargsv1) that you can set for CCIP messages on mainnet has been increased to 3,000,000 gas units. The change has been documented in the [Service Limits](/ccip/service-limits) page.
61-
62-
## v1.0.0 deprecated on mainnet - 2024-04-01
63-
64-
CCIP v1.0.0 is no longer supported on **mainnet**. You must use the new router addresses listed in the [CCIP v1.2.0 configuration page](/ccip/supported-networks/v1_2_0/mainnet).
65-
66-
## Wemix and Kroma - 2024-03-11
67-
68-
Chainlink CCIP is publicly available on Wemix and Kroma for both mainnet and testnet.
69-
70-
## v1.0.0 deprecated on testnet - 2024-02-07
71-
72-
CCIP v1.0.0 is no longer supported on **testnet**. You must use the new router addresses listed in the [CCIP v1.2.0
73-
configuration page](/ccip/supported-networks/v1_2_0/testnet).
74-
75-
## v1.2.0 release on mainnet - 2024-01-15
76-
77-
<Aside type="caution" title="Deprecation Notice for CCIP v1.0.0 on Mainnet">
78-
CCIP v1.0.0 has been deprecated on mainnet. You must use the new router addresses listed in this page **before March
79-
31st, 2024**. Please note that there is no change to the router interface. The CCIP v1.0.0 mainnet routers will
80-
continue to function in parallel **until March 31st, 2024**, but we highly recommend switching to the v1.2.0 routers
81-
as soon as possible. If you currently use CCIP v1.0.0, use the [@chainlink/contracts-ccip npm package version
82-
0.7.6](https://www.npmjs.com/package/@chainlink/contracts-ccip/v/0.7.6). To migrate to v1.2.0, use [version 1.2.1 of
83-
the npm package](https://www.npmjs.com/package/@chainlink/contracts-ccip/v/1.2.1) or later. Please refer to the
84-
[release notes](/ccip/release-notes) for a comprehensive overview of the enhancements and new features in v1.2.0.
85-
</Aside>
86-
87-
- There is no change to the router interface, but you must use the new router addresses listed in the [CCIP v1.2.0
88-
configuration page](/ccip/supported-networks/v1_2_0/mainnet).
89-
- Added support for USDC transfers. USDC transfers are currently supported on the following lanes:
90-
91-
- From Ethereum Mainnet to Avalanche Mainnet.
92-
- From Ethereum Mainnet to Arbitrum Mainnet.
93-
- From Ethereum Mainnet to Base Mainnet.
94-
- From Ethereum Mainnet to Optimism Mainnet.
95-
- From Optimism Mainnet to Base Mainnet.
96-
- From Optimism Mainnet to Ethereum Mainnet.
97-
- From Avalanche Mainnet to Ethereum Mainnet.
98-
- From Base Mainnet to Arbitrum Mainnet.
99-
- From Base Mainnet to Optimism Mainnet.
100-
- From Base Mainnet to Ethereum Mainnet.
101-
102-
Refer to the [Supported Networks](/ccip/supported-networks/v1_2_0/mainnet) to get a specific lane's token addresses and rate limits.
103-
104-
- We've simplified the message sequencing process in our CCIP message handling by removing the `strict` sequencing flag from the [extraArgs](/ccip/api-reference/client#evmextraargsv1) field in [CCIP messages](/ccip/api-reference/client#evm2anymessage).
105-
106-
- The gas limit and maximum message data length for CCIP messages have been adjusted on mainnets. These changes are detailed in the [Service Limits](/ccip/service-limits) documentation.
107-
108-
- To interact with CCIP v1.2.0 , use the [@chainlink/contract-ccip](https://www.npmjs.com/package/@chainlink/contracts-ccip) npm package.
109-
110-
## Arbitrum Sepolia - 2023-12-15
111-
112-
Chainlink CCIP is publicly available on Arbitrum Sepolia.
113-
114-
See the [CCIP testnet configuration page](/ccip/supported-networks/testnet) for more information.
115-
116-
## v1.2.0 release on testnet - 2023-12-08
117-
118-
<Aside type="caution" title="Deprecation Notice for CCIP v1.0.0 on Testnet">
119-
CCIP v1.0.0 has been deprecated on testnet. You must use the new router addresses listed in the [CCIP v1.2.0
120-
configuration page](/ccip/supported-networks/v1_2_0/testnet) **before January 31st, 2024**. Please note that there is
121-
no change to the router interface. The CCIP v1.0.0 testnet routers will continue to function in parallel **until
122-
January 31st, 2024**, but we highly recommend switching to the v1.2.0 routers as soon as possible. If you currently
123-
use CCIP v1.0.0, use the [@chainlink/contracts-ccip npm package version
124-
0.7.6](https://www.npmjs.com/package/@chainlink/contracts-ccip/v/0.7.6). To migrate to v1.2.0, use [version 1.2.1 of
125-
the npm package](https://www.npmjs.com/package/@chainlink/contracts-ccip/v/1.2.1) or later.
126-
</Aside>
127-
128-
- There is no change to the router interface, but you must use the new router addresses listed in the [CCIP v1.2.0
129-
configuration page](/ccip/supported-networks/v1_2_0/testnet).
130-
- Added support for USDC transfers. USDC transfers are currently supported on the following lanes:
131-
132-
- From Optimism Goerli to Avalanche Fuji.
133-
- From Optimism Goerli to Base Goerli.
134-
- From Avalanche Fuji to Optimism Goerli.
135-
- From Avalanche Fuji to Base Goerli.
136-
- From Base Goerli to Optimism Goerli.
137-
- From Base Goerli to Avalanche Fuji.
138-
139-
Refer to the [Supported Networks](/ccip/supported-networks/v1_2_0/testnet) to get a specific lane's token addresses and rate limits.
140-
141-
- We've simplified the message sequencing process in our CCIP message handling by removing the `strict` sequencing flag from the [extraArgs](/ccip/api-reference/client#evmextraargsv1) field in [CCIP messages](/ccip/api-reference/client#evm2anymessage).
142-
143-
- The gas limit and maximum message data length for CCIP messages have been adjusted on testnets. These changes are detailed in the [Service Limits](/ccip/service-limits) documentation.
144-
145-
- To interact with CCIP v1.2.0 , use the [@chainlink/contract-ccip](https://www.npmjs.com/package/@chainlink/contracts-ccip) npm package.
146-
147-
## Arbitrum Goerli - 2023-11-17
148-
149-
Arbitrum Goerli is no longer supported.
150-
151-
Arbitrum Sepolia support will be added at a later date.
152-
153-
## New mainnets - 2023-09-27
154-
155-
Added BNB and Base mainnets:
156-
157-
- BNB mainnet.
158-
- Base mainnet.
159-
160-
See the [supported networks](/ccip/supported-networks) page for more information.
161-
162-
## New mainnet - 2023-09-21
163-
164-
Added Arbitrum mainnet:
165-
166-
- Arbitrum mainnet.
167-
168-
See the [supported networks](/ccip/supported-networks) page for more information.
169-
170-
## New testnets - 2023-08-25
171-
172-
Added BNB and Base testnets:
173-
174-
- BNB testnet.
175-
- Base Goerli.
176-
177-
See the [supported networks](/ccip/supported-networks) page for more information.
178-
179-
## Testnet GA release - 2023-07-20
180-
181-
Chainlink CCIP is publicly available on the following testnet chains:
182-
183-
- Ethereum Sepolia.
184-
- Optimism Goerli.
185-
- Avalanche Fuji.
186-
- Arbitrum Goerli.
187-
- Polygon Mumbai.
188-
189-
See the [supported networks](/ccip/supported-networks) page for more information.
190-
191-
## Mainnet Early Access - 2023-07-17
192-
193-
<Aside type="note" title="Mainnet Access">
194-
[Apply for Mainnet Early Access](https://chainlinkcommunity.typeform.com/ccip-form?#ref_id=ccip_docs) to get started.
195-
</Aside>
196-
197-
Chainlink CCIP is available on the following networks:
198-
199-
- Ethereum mainnet.
200-
- Optimism mainnet.
201-
- Avalanche mainnet.
202-
- Polygon mainnet.
203-
204-
See the [supported networks](/ccip/supported-networks) page for more information.
9+
<ReleaseNotes topic="ccip"></ReleaseNotes>

0 commit comments

Comments
 (0)