Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions bin/fetch-warp-releases.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import fs from "fs";
import YAML from "yaml";
import { marked } from "marked";

const tracks = ["windows/ga", "windows/beta", "macos/ga", "macos/beta"];

const linesToRemove = [
"For related Cloudflare for Teams documentation please see: https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp",
"For Zero Trust documentation please see: https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp",
"For related Consumer documentation please see: https://developers.cloudflare.com/warp-client/",
"For Consumer documentation please see: https://developers.cloudflare.com/warp-client/",
];

for (const track of tracks) {
fetch(`https://downloads.cloudflareclient.com/v1/update/json/${track}`)
.then((res) => res.json())
.then((data) => {
data.items.forEach((item) => {
const path = `./src/content/warp-releases/${track}/${item.version}.yaml`;

if (fs.existsSync(path)) {
console.log(`${track} ${item.version} already exists.`);
return;
}

console.log(`Saving ${track} ${item.version}.`);

let markdown = item.releaseNotes;

markdown.replace(/\r\n/g, "\n");

for (const line of linesToRemove) {
markdown = markdown.replace(line, "");
}

markdown = markdown.trim();

const tokens = marked.lexer(markdown);

marked.walkTokens(tokens, (token) => {
if (token.type === "heading") {
token.type = "strong";
token.raw = `**${token.text}**\n`;

delete token.depth;
}
});

const releaseNotes = tokens.reduce((s, t) => s + t.raw, "");

fs.writeFileSync(
`./src/content/warp-releases/${track}/${item.version}.yaml`,
YAML.stringify({
...item,
releaseNotes,
platformName: data.platformName,
}),
"utf-8",
);
});
});
}
14 changes: 14 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
"playwright": "^1.49.1",
"prettier": "^3.4.2",
"prettier-plugin-astro": "^0.14.1",
"pretty-bytes": "6.1.1",
"prettier-plugin-tailwindcss": "^0.6.9",
"puppeteer": "^24.0.0",
"react": "^18.3.1",
Expand Down
50 changes: 50 additions & 0 deletions src/components/WARPRelease.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
import Details from "./Details.astro";
import { marked } from "marked";
import { z } from "astro:schema";
import prettyBytes from "pretty-bytes";
import { warpReleasesSchema } from "~/schemas";

type Props = z.infer<typeof props>;

const props = z.object({
header: z.string(),
open: z.boolean().optional(),
release: warpReleasesSchema,
});

const { header, open, release } = props.parse(Astro.props);
---

<Details header={header} open={open}>
<p>
<div class="flex gap-2">
<span>
<strong>Version: </strong>
{release.platformName}
{release.version}
</span>
<span>
<strong>Date: </strong>
{release.releaseDate.toISOString().split("T")[0]}
</span>
{
release.packageSize && (
<span>
<strong>Size: </strong>
{prettyBytes(release.packageSize)}
</span>
)
}
</div>
<span>
<a href={release.packageURL}>Download</a>
</span>
</p>
<p>
<span>
<h4>Release notes</h4>
</span>
<Fragment set:html={marked.parse(release.releaseNotes)} />
</p>
</Details>
64 changes: 64 additions & 0 deletions src/components/WARPReleases.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
import WARPRelease from "./WARPRelease.astro";
import Details from "./Details.astro";
import { getCollection } from "astro:content";
import { z } from "astro:schema";
import { sub } from "date-fns";

type Props = z.infer<typeof props>;

const props = z.object({
track: z.enum([
"windows/ga",
"windows/beta",
"macos/ga",
"macos/beta",
"linux/ga",
]),
});

const { track } = props.parse(Astro.props);

const sortByDate = (a: any, b: any) =>
b.releaseDate.getTime() - a.releaseDate.getTime();

const entries = await getCollection("warp-releases", (release) => {
if (!release.id.startsWith(track)) return false;

const oneYearAgo = sub(new Date(), {
years: 1,
});

if (release.data.releaseDate.getTime() < oneYearAgo.getTime()) return false;

return true;
});

const releases = entries.map((x) => x.data);

releases.sort(sortByDate);

const latestRelease = releases.at(0);

if (!latestRelease) {
throw new Error();
}

const platform = latestRelease.platformName;
---

<WARPRelease header="Latest release" open={true} release={latestRelease} />

<Details header=`Previous version history (${releases.length - 1})`>
{
releases
.slice(1)
.sort(sortByDate)
.map((release) => (
<WARPRelease
header={`${platform} ${release.version}`}
release={release}
/>
))
}
</Details>
1 change: 1 addition & 0 deletions src/components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ export { default as TunnelCalculator } from "./TunnelCalculator.astro";
export { default as Type } from "./Type.astro";
export { default as TypeScriptExample } from "./TypeScriptExample.astro";
export { default as WranglerConfig } from "./WranglerConfig.astro";
export { default as WARPReleases } from "./WARPReleases.astro";
export { default as WorkersArchitectureDiagram } from "./WorkersArchitectureDiagram.astro";
export { default as WorkersIsolateDiagram } from "./WorkersIsolateDiagram.astro";
export { default as WorkerStarter } from "./WorkerStarter.astro";
Expand Down
5 changes: 5 additions & 0 deletions src/content/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
glossarySchema,
learningPathsSchema,
videosSchema,
warpReleasesSchema,
workersAiSchema,
changelogsNextSchema,
fieldsSchema,
Expand Down Expand Up @@ -77,6 +78,10 @@ export const collections = {
schema: appsSchema,
type: "data",
}),
"warp-releases": defineCollection({
schema: warpReleasesSchema,
type: "data",
}),
"changelogs-next": defineCollection({
schema: changelogsNextSchema,
}),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
pcx_content_type: reference
title: Beta releases
sidebar:
order: 3
---

import { Render, Details, WARPReleases } from "~/components";

Cloudflare tests new WARP features and improvements in an unstable beta release before adding them to the stable release. To get early access to new features, download the latest beta client from the links below.

## Windows

<Render file="warp/system-requirements/windows" />

<WARPReleases track="windows/beta" />

## macOS

<Render file="warp/system-requirements/macos" />

<WARPReleases track="macos/beta" />
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,30 @@ pcx_content_type: reference
title: Download WARP
sidebar:
order: 2
label: Stable releases
---

import { Render } from "~/components";
import { Render, Details, WARPReleases } from "~/components";

You can download the WARP client from Zero Trust. To do that, go to **Settings** > **Resources** and scroll down to **Download the WARP client**.

Alternatively, download the client from one of the following links after checking requirements:
Download the WARP client from one of the following links after checking requirements.

## Windows

<Render file="warp/system-requirements/windows" />

**[Latest Windows Release](https://downloads.cloudflareclient.com/v1/download/windows/ga)**

**[Latest Windows Beta](https://downloads.cloudflareclient.com/v1/download/windows/beta)**
<WARPReleases track="windows/ga" />

## macOS

<Render file="warp/system-requirements/macos" />

**[Latest macOS Release](https://downloads.cloudflareclient.com/v1/download/macos/ga)**

**[Latest macOS Beta](https://downloads.cloudflareclient.com/v1/download/macos/beta)**
<WARPReleases track="macos/ga" />

## Linux

<Render file="warp/system-requirements/linux" />

**[Package repository](https://pkg.cloudflareclient.com/)**
<WARPReleases track="linux/ga" />

## iOS

Expand All @@ -44,6 +39,7 @@ Alternatively, download the client from one of the following links after checkin
:::note[Migrate from 1.1.1.1]

The legacy iOS client, [1.1.1.1: Faster Internet](https://apps.apple.com/us/app/1-1-1-1-faster-internet/id1423538627), has been replaced by the Cloudflare One Agent. Learn more in our [migration guide](/cloudflare-one/connections/connect-devices/warp/download-warp/cloudflare-one-agent-migration/).

:::

## Android
Expand All @@ -57,6 +53,7 @@ The legacy iOS client, [1.1.1.1: Faster Internet](https://apps.apple.com/us/app/
:::note[Migrate from 1.1.1.1]

The legacy Android client, [1.1.1.1 + WARP: Safer Internet](https://play.google.com/store/apps/details?id=com.cloudflare.onedotonedotonedotone), has been replaced by the Cloudflare One Agent. Learn more in our [migration guide](/cloudflare-one/connections/connect-devices/warp/download-warp/cloudflare-one-agent-migration/).

:::

## ChromeOS
Expand All @@ -65,4 +62,4 @@ The legacy Android client, [1.1.1.1 + WARP: Safer Internet](https://play.google.
| -------------- | ----------------------------------- |
| **OS version** | Chromebooks manufactured after 2019 |

Chromebooks are supported by our Android app. All Chromebooks made after 2019 should fully support our Android app. If you have a Chromebook made before 2019, [refer to this list](https://www.chromium.org/chromium-os/chrome-os-systems-supporting-android-apps/) to verify that your device is supported.
Chromebooks are supported by our [Android app](#android). All Chromebooks made after 2019 should fully support our Android app. If you have a Chromebook made before 2019, [refer to this list](https://www.chromium.org/chromium-os/chrome-os-systems-supporting-android-apps/) to verify that your device is supported.
17 changes: 17 additions & 0 deletions src/content/warp-releases/linux/ga/2024.11.309.0.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
releaseNotes: |
This release contains reliability improvements and general bug fixes.

**Changes and improvements**
- Fixed an issue where SSH sessions and other connections ould drop when a device that is using MASQUE changes its primary network interface.
- Device posture client certificate checks now support PKCS#1.
- Fixed an issue to ensure the Cloudflare root certificate (or custom certificate) is installed in the trust store if not already there.
- Reduced unnecessary log messages when `resolv.conf` has no owner.
- Fixed an issue with `warp-diag` printing benign TLS certificate errors.
- Fixed an issue with the WARP client becoming unresponsive during startup.
- Extended diagnostics collection time in `warp-diag` to ensure logs are captured reliably.
- Fixed an issue that was preventing proper operation of DNS-over-TLS (DoT) for consumer users.

version: 2024.11.309.0
releaseDate: 2024-11-18
packageURL: https://pkg.cloudflareclient.com/
platformName: Linux
18 changes: 18 additions & 0 deletions src/content/warp-releases/linux/ga/2024.12.554.0.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
releaseNotes: |
This release includes fixes and minor improvements.

**Changes and improvements**
- Consumers can now set the tunnel protocol using `warp-cli tunnel protocol set <protocol>`.
- Extended diagnostics collection time in `warp-diag` to ensure logs are captured reliably.
- Improved captive portal support by disabling the firewall during captive portal login flows.
- Improved reliability of connection establishment logic under degraded network conditions.
- Improved reconnection speed when a Cloudflare server is in a degraded state.
- Improved captive portal detection on certain public networks.
- Reduced connectivity interruptions on WireGuard Split Tunnel Include mode configurations.
- Fixed connectivity issues switching between managed network profiles with different configured protocols.
- QLogs are now disabled by default and can be enabled with `warp-cli debug qlog enable`. The QLog setting from previous releases will no longer be respected.

version: 2024.12.554.0
releaseDate: 2024-12-19
packageURL: https://pkg.cloudflareclient.com/
platformName: Linux
25 changes: 25 additions & 0 deletions src/content/warp-releases/linux/ga/2024.6.497.0.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
releaseNotes: |
This release includes some exciting new features. It also includes additional fixes and minor improvements.

**New features**
- The WARP client now supports operation on Ubuntu 24.04.
- Admins can now elect to have ZT WARP clients connect using the MASQUE protocol; this setting is in Device Profiles. Note: before MASQUE can be used, the global setting for Override local interface IP must be enabled. For more detail, refer to [Device tunnel protocol](/cloudflare-one/connections/connect-devices/warp/configure-warp/warp-settings/#device-tunnel-protocol). This feature will be rolled out to customers in stages over approximately the next month.
- The Device Posture [client certificate check](/cloudflare-one/identity/devices/warp-client-checks/client-certificate/) has been substantially enhanced. The primary enhancement is the ability to check for client certificates that have unique common names, made unique by the inclusion of the device serial number or host name (for example, CN = `123456.mycompany`, where 123456 is the device serial number).
- TCP MSS clamping is now used where necessary to meet the MTU requirements of the tunnel interface. This will be especially helpful in Docker use cases.

**Warning**
- Ubuntu 16.04 and 18.04 are not supported by this version of the client.
- This is the last GA release that will be supporting older, deprecated `warp-cli` commands. There are two methods to identify these commands. One, when used in this release, the command will work but will also return a deprecation warning. And two, the deprecated commands do not appear in the output of `warp-cli -h`.

**Known issues**
- There are certain known limitations preventing the use of the MASQUE tunnel protocol in certain scenarios. Do not use the MASQUE tunnel protocol if:
- A Magic WAN integration is on the account and does not have the latest packet flow path for WARP traffic. To check the migration status, contact your account team.
- Your account has Regional Services enabled.
- The Linux client GUI does not yet support all GUI features found in the Windows and macOS clients. Future releases of the Linux client will be adding these GUI features.
- The Zero Trust team name is not visible in the GUI if you upgraded from the previous GA release using an MDM tool.
- Sometimes the WARP icon will remain gray (disconnected state) while in dark mode.

version: 2024.6.497.0
releaseDate: 2024-08-15
packageURL: https://pkg.cloudflareclient.com/
platformName: Linux
Loading
Loading