diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index aea5379ee54f06c..d2859db799cde3d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -26,13 +26,19 @@ # Developer platform /content/d1/ @elithrar @rozenmd @cloudflare/pcx-technical-writing +/data/changelogs/d1.yaml @elithrar @rozenmd @cloudflare/pcx-technical-writing /content/images/ @GregBrimble @cloudflare/pcx-technical-writing /content/pages/ @cloudflare/workers-docs @GregBrimble @WalshyDev @cloudflare/pcx-technical-writing +/data/changelogs/pages.yaml @cloudflare/workers-docs @GregBrimble @WalshyDev @cloudflare/pcx-technical-writing /content/pub-sub/ @CharlieBurnett @elithrar @cloudflare/pcx-technical-writing /content/queues/ @CharlieBurnett @elithrar @cloudflare/pcx-technical-writing +/data/changelogs/queues.yaml @CharlieBurnett @elithrar @cloudflare/pcx-technical-writing /content/r2/ @cloudflare/workers-docs @cloudflare/pcx-technical-writing +/data/changelogs/r2.yaml @cloudflare/workers-docs @cloudflare/pcx-technical-writing /content/stream/ @tsmith512 @cloudflare/pcx-technical-writing +/data/changelogs/stream.yaml @tsmith512 @cloudflare/pcx-technical-writing /content/workers/ @cloudflare/workers-docs @GregBrimble @WalshyDev @cloudflare/pcx-technical-writing +/data/changelogs/workers.yaml @cloudflare/workers-docs @GregBrimble @WalshyDev @cloudflare/pcx-technical-writing /content/zaraz/ @bjesus @cloudflare/pcx-technical-writing /content/workers/runtime-apis/ @irvinebroque @jasnell @cloudflare/pcx-technical-writing /content/workers/configuration/bindings/ @irvinebroque @cloudflare/pcx-technical-writing diff --git a/config.toml b/config.toml index bb446b7e36b99cc..d98246bdb630cc9 100644 --- a/config.toml +++ b/config.toml @@ -21,10 +21,14 @@ org = "cloudflareproduction7iy98g48" token = "xx2b20a6dc-ce86-41cb-ad18-90bd2568dcdb" tutorial_token = "xxa5a7d4c9-db72-424d-860d-ae68ff7f60ac" +[outputs] + home = ['html'] + page = ['html'] + section = ['html'] + [sitemap] - changefreq = "daily" + changefreq = "weekly" filename = "sitemap.xml" - priority = 0.7 [markup] [markup.goldmark] diff --git a/content/_index.html b/content/_index.html index 9be61b72dc134ad..a2b1736734642dd 100644 --- a/content/_index.html +++ b/content/_index.html @@ -25,7 +25,7 @@
{{}} - [Cloudflare Status](https://www.cloudflarestatus.com/) + [Changelog](/changelog/) {{}}
diff --git a/content/changelog.html b/content/changelog.html new file mode 100644 index 000000000000000..b947a3591abc7af --- /dev/null +++ b/content/changelog.html @@ -0,0 +1,19 @@ +--- +title: Changelog +type: developers-site +layout: home +outputs: + - html + - rss +meta: + description: View updates to various Cloudflare products. +--- + +
+
+

Changelog

+

Subscribe to all Changelog posts via RSS.

+
+
+ +{{}} \ No newline at end of file diff --git a/content/d1/changelog.md b/content/d1/changelog.md index 7e2453839651df5..6faa61d575ad8e5 100644 --- a/content/d1/changelog.md +++ b/content/d1/changelog.md @@ -2,109 +2,15 @@ pcx_content_type: changelog title: Changelog weight: 11 -rss: file +layout: changelog +changelog_file_name: d1 +outputs: + - html + - rss --- # Changelog -## 2023-08-19 + -### Row count now returned per query - -D1 now returns a count of `rows_written` and `rows_read` for every query executed, allowing you to assess the cost of query for both [pricing](/d1/platform/pricing/) and [index optimization](/d1/learning/using-indexes/) purposes. - -The `meta` object returned in [D1's Client API](/d1/platform/client-api/) contains a total count of the rows read (`rows_read`) and rows written (`rows_written`) by that query. For example, a query that performs a full table scan (for example, `SELECT * FROM users`) from a table with 5000 rows would return a `rows_read` value of `5000`: - -```json -"meta": { - "duration": 0.20472300052642825, - "size_after": 45137920, - "rows_read": 5000, - "rows_written": 0 -} -``` - -Refer to [D1 pricing documentation](/d1/platform/pricing/) to understand how reads and writes are measured. D1 remains free to use during the alpha period. - -## 2023-08-09 - -### Bind D1 from the Cloudflare dashboard - -You can now [bind a D1 database](/d1/get-started/#3-bind-your-worker-to-your-d1-database) to your Workers directly in the [Cloudflare dashboard](https://dash.cloudflare.com). To bind D1 from the Cloudflare dashboard, select your Worker project -> **Settings** -> **Variables** -> and select **D1 Database Bindings**. - -Note: If you have previously deployed a Worker with a D1 database binding with a version of `wrangler` prior to `3.5.0`, you must upgrade to [`wrangler v3.5.0`](https://github.com/cloudflare/workers-sdk/releases/tag/wrangler%403.5.0) first before you can edit your D1 database bindings in the Cloudflare dashboard. New Workers projects do not have this limitation. - -Legacy D1 alpha users who had previously prefixed their database binding manually with `__D1_BETA__` should remove this as part of this upgrade. Your Worker scripts should call your D1 database via `env.BINDING_NAME` only. Refer to the latest [D1 getting started guide](/d1/get-started/#3-bind-your-worker-to-your-d1-database) for best practices. - -We recommend all D1 alpha users begin using wrangler `3.5.0` (or later) to benefit from improved TypeScript types and future D1 API improvements. - -## 2023-08-01 - -### Per-database limit now 500 MB - -Databases using D1's [new storage subsystem](/d1/changelog/#new-default-storage-subsystem) can now grow to 500 MB each, up from the previous 100 MB limit. This applies to both existing and newly created databases. - -Refer to [Limits](/d1/platform/limits/) to learn about D1's limits. - - -## 2023-07-27 - -### New default storage subsystem - -Databases created via the Cloudflare dashboard and Wrangler (as of `v3.4.0`) now use D1's new storage subsystem by default. The new backend can [be 6 - 20x faster](https://blog.cloudflare.com/d1-turning-it-up-to-11/) than D1's original alpha backend. - -To understand which storage subsystem your database uses, run `wrangler d1 info YOUR_DATABASE` and inspect the version field in the output. - -Databases with `version: beta` use the new storage backend and support the [Time Travel](/d1/learning/time-travel/) API. Databases with `version: alpha` only use D1's older, legacy backend. - -### Time Travel - -[Time Travel](/d1/learning/time-travel/) is now available. Time Travel allows you to restore a D1 database back to any minute within the last 30 days (Workers Paid plan) or 7 days (Workers Free plan), at no additional cost for storage or restore operations. - -Refer to the [Time Travel](/d1/learning/time-travel/) documentation to learn how to travel backwards in time. - -Databases using D1's [new storage subsystem](https://blog.cloudflare.com/d1-turning-it-up-to-11/) can use Time Travel. Time Travel replaces the [snapshot-based backups](/d1/learning/backups/) used for legacy alpha databases. - -## 2023-06-28 - -### Metrics and analytics - -You can now view [per-database metrics](/d1/platform/metrics-analytics/) via both the [Cloudflare dashboard](https://dash.cloudflare.com/) and the [GraphQL Analytics API](/analytics/graphql-api/). - -D1 currently exposes read & writes per second, query response size, and query latency percentiles. - -## 2023-06-16 - -### Generated columns documentation - -New documentation has been published on how to use D1's support for [generated columns](/d1/learning/generated-columns/) to define columns that are dynamically generated on write (or read). Generated columns allow you to extract data from [JSON objects](/d1/learning/querying-json/) or use the output of other SQL functions. - -## 2023-06-12 - -### Deprecating Error.cause - -As of [`wrangler v3.1.1`](https://github.com/cloudflare/workers-sdk/releases/tag/wrangler%403.1.1) the [D1 client API](/d1/platform/client-api/) now returns [detailed error messages](/d1/platform/client-api/#errors) within the top-level `Error.message` property, and no longer requires developers to inspect the `Error.cause.message` property. - -To facilitate a transition from the previous `Error.cause` behaviour, detailed error messages will continue to be populated within `Error.cause` as well as the top-level `Error` object until approximately July 14th, 2023. Future versions of both `wrangler` and the D1 client API will no longer populate `Error.cause` after this date. - -## 2023-05-19 - -### New experimental backend - -D1 has a new experimental storage back end that dramatically improves query throughput, latency and reliability. The experimental back end will become the default back end in the near future. To create a database using the experimental backend, use `wrangler` and set the `--experimental-backend` flag when creating a database: - -```sh -$ wrangler d1 create your-database --experimental-backend -``` - -Read more about the experimental back end in the [announcement blog](https://blog.cloudflare.com/d1-turning-it-up-to-11/). - -### Location hints - -You can now provide a [location hint](/d1/learning/data-location/) when creating a D1 database, which will influence where the leader (writer) is located. By default, D1 will automatically create your database in a location close to where you issued the request to create a database. In most cases this allows D1 to choose the optimal location for your database on your behalf. - -## 2023-05-17 - -### Query JSON - -[New documentation](/d1/learning/querying-json/) has been published that covers D1's extensive JSON function support. JSON functions allow you to parse, query and modify JSON directly from your SQL queries, reducing the number of round trips to your database, or data queried. +{{}} \ No newline at end of file diff --git a/content/pages/platform/changelog.md b/content/pages/platform/changelog.md index ac7b2932dd91327..b57fb91db4bbce7 100644 --- a/content/pages/platform/changelog.md +++ b/content/pages/platform/changelog.md @@ -1,96 +1,15 @@ --- pcx_content_type: changelog title: Changelog -rss: file +layout: changelog +changelog_file_name: pages +outputs: + - html + - rss --- # Changelog -## 2023-02-14 + -* Added support for [Analytics Engine](/analytics/analytics-engine/) in Functions. - -## 2023-01-05 - -* Added support for [Queues](/queues/) producer in Functions. - -## 2022-12-15 - -* Updated all API messaging to be more helpful. - -## 2022-12-01 - -* Aliased deployments can now be deleted. - * If using the API, you will need to add the query parameter `force=true`. - -## 2022-11-19 - -* You can now deep-link to a Pages deployment in the dashboard with `:pages-deployment`. - * Example: `https://dash.cloudflare.com?to=/:account/pages/view/:pages-project/:pages-deployment`. - -## 2022-11-17 - -* Functions GA - * Blog post: https://blog.cloudflare.com/pages-function-goes-ga/ -* Functions metrics are now available in the dashboard. - * You can [view them here](https://dash.cloudflare.com?to=/:account/pages/view/:pages-project/analytics/production). -* Functions billing is now available. - * You can [view details here](/pages/platform/functions/pricing). -* The [Unbound usage model](/workers/platform/limits/#response-limits) is now available for Functions. -* [Secrets](/pages/platform/functions/bindings/#secrets) are now available. -* Functions tailing is now available. - * You can tail within the dash here: https://dash.cloudflare.com?to=/:account/pages/view/:pages-project/:pages-deployment/functions. - * Or with Wrangler - `wrangler pages deployment tail`. - -## 2022-11-15 - -* Service bindings are now available in Functions. - * [Documentation available here](/pages/platform/functions/bindings/#service-bindings). - -## 2022-11-03 - -* Build log now supports ansi color codes. - -## 2022-10-05 - -* You can now deep-link to a Pages project in the dashboard with `:pages-project`. - * Example: `https://dash.cloudflare.com?to=/:account/pages/view/:pages-project`. - -## 2022-09-12 - -* Increased domain limits. - * Before increase, all plans had a maximum of 10 custom domains per project. - * New limits: - * Free - 100 custom domains - * Pro - 250 custom domains - * Business/Enterprise - 500 custom domains - -## 2022-09-08 - -* Support `_routes.json`. - * Documentation [available here](/pages/platform/functions/routing/#functions-invocation-routes). - -## 2022-08-25 - -* Build log expiration time increased from 2 weeks to 1 year. - -## 2022-08-08 - -* R2 and D1 bindings are now supported. - -## 2022-07-05 - -* Added support for `.dev.vars` in `wrangler pages`. - * This allows you to use environmental variables during your local development without chaining `--env`s. - * Requires Wrangler v2.0.16 or higher. - -## 2022-06-13 - -* Added deltas to `wrangler pages publish`. - * We now keep track of the files that make up each deployment and intelligently only upload the files that we have not seen. This means that similar subsequent deployments should only need to upload a minority of files and this will hopefully make uploads even faster. - * Requires Wrangler v2.0.11 or higher. - -## 2022-06-08 - -* Added branch alias in PR comments. -![Branch alias in PR comment](/images/pages/platform/branch_alias_pr_comment.png) +{{}} \ No newline at end of file diff --git a/content/queues/changelog.md b/content/queues/changelog.md index 6c6e24e7abf5294..c064b024538cc5f 100644 --- a/content/queues/changelog.md +++ b/content/queues/changelog.md @@ -1,50 +1,15 @@ --- pcx_content_type: changelog title: Changelog -weight: 11 -rss: file +layout: changelog +changelog_file_name: queues +outputs: + - html + - rss --- # Changelog -## 2023-03-28 + -### Consumer concurrency (enabled) - -Queue consumers will now [automatically scale up](/queues/learning/consumer-concurrency/) based on the number of messages being written to the queue. To control or limit concurrency, you can explicitly define a [`max_concurrency`](/queues/platform/configuration/#consumer) for your consumer. - -## 2023-03-15 - -### Consumer concurrency (upcoming) - -Queue consumers will soon automatically scale up concurrently as a queues' backlog grows in order to keep overall message processing latency down. Concurrency will be enabled on all existing queues by 2023-03-28. - -**To opt-out, or to configure a fixed maximum concurrency**, set `max_concurrency = 1` in your `wrangler.toml` file or via [the queues dashboard](https://dash.cloudflare.com/?to=/:account/queues). - -**To opt-in, you do not need to take any action**: your consumer will begin to scale out as needed to keep up with your message backlog. It will scale back down as the backlog shrinks, and/or if a consumer starts to generate a higher rate of errors. To learn more about how consumers scale, refer to the [consumer concurrency](/queues/learning/consumer-concurrency/) documentation. - -## 2023-03-02 - -### Explicit acknowledgement (new feature) - -You can now [acknowledge individual messages with a batch](/queues/learning/batching-retries/#explicit-acknowledgement) by calling `.ack()` on a message. - -This allows you to mark a message as delivered as you process it within a batch, and avoids the entire batch from being redelivered if your consumer throws an error during batch processing. This can be particularly useful when you are calling external APIs, writing messages to a database, or otherwise performing non-idempotent actions on individual messages within a batch. - -## 2023-03-01 - -### Higher per-queue throughput - -The per-queue throughput limit has now been [raised to 400 messages per second](/queues/platform/limits/). - -## 2022-12-12 - -### Increased per-account limits - -Queues now allows developers to create up to 100 queues per account, up from the initial beta limit of 10 per account. This limit will continue to increase over time. - -## 2022-12-13 - -### sendBatch support - -The JavaScript API for Queue producers now includes a `sendBatch` method which supports sending up to 100 messages at a time. +{{}} diff --git a/content/r2/reference/changelog.md b/content/r2/reference/changelog.md index 55564583653b90a..8112eecf4a0e7fb 100644 --- a/content/r2/reference/changelog.md +++ b/content/r2/reference/changelog.md @@ -1,259 +1,15 @@ --- pcx_content_type: changelog title: Changelog -rss: file +layout: changelog +changelog_file_name: r2 +outputs: + - html + - rss --- # Changelog -## 2023-07-05 + -- Improved performance for ranged reads on very large files. Previously ranged reads near the end of very large files would be noticeably slower than ranged reads on smaller files. Performance should now be consistently good independent of filesize. - -## 2023-06-21 - -- [Multipart ETags](/r2/objects/multipart-objects/#etags) are now MD5 hashes. - -## 2023-06-16 - -- Fixed a bug where calling [GetBucket](/api/operations/r2-get-bucket) on a non-existent bucket would return a 500 instead of a 404. -- Improved S3 compatibility for ListObjectsV1, now nextmarker is only set when truncated is true. -- The R2 worker bindings now support parsing conditional headers with multiple etags. These etags can now be strong, weak or a wildcard. Previously the bindings only accepted headers containing a single strong etag. -- S3 putObject now supports sha256 and sha1 checksums. These were already supported by the R2 worker bindings -- CopyObject in the S3 compatible api now supports Cloudflare specific headers which allow the copy operation to be conditional on the state of the destination object. - -## 2023-04-01 - -- [GetBucket](/api/operations/r2-get-bucket) is now available for use through the Cloudflare API. -- [Location hints](https://developers.cloudflare.com/r2/buckets/data-location/) can now be set when creating a bucket, both through the S3 API, and the dashboard. - -## 2023-03-16 - -- The ListParts API has been implemented and is available for use. -- HTTP2 is now enabled by default for new custom domains linked to R2 buckets. -- Object Lifecycles are now available for use. -- Bug fix: Requests to public buckets will now return the `Content-Encoding` header for gzip files when `Accept-Encoding: gzip` is used - -## 2023-01-27 - -- R2 authentication tokens created via the R2 token page are now scoped to a single account by default. - -## 2022-12-07 - -- Fix CORS preflight requests for the S3 API, which allows using the S3 SDK in the browser. -- Passing a range header to the `get` operation in the R2 bindings API should now work as expected. - -## 2022-11-30 - -- Requests with the header `x-amz-acl: public-read` are no longer rejected. -- Fixed issues with wildcard CORS rules and presigned URLs. -- Fixed an issue where `ListObjects` would time out during delimited listing of unicode-normalized keys. -- S3 API's `PutBucketCors` now rejects requests with unknown keys in the XML body. -- Signing additional headers no longer breaks CORS preflight requests for presigned URLs. - -## 2022-11-21 - -- Fixed a bug in `ListObjects` where `startAfter` would skip over objects with keys that have numbers right after the `startAfter` prefix. -- Add worker bindings for multipart uploads. - -## 2022-11-17 - -- Unconditionally return HTTP 206 on ranged requests to match behavior of other S3 compatible implementations. -- Fixed a CORS bug where `AllowedHeaders` in the CORS config were being treated case-sensitively. - -## 2022-11-08 - -- Copying multipart objects via `CopyObject` is re-enabled. -- `UploadPartCopy` is re-enabled. - -## 2022-10-28 - -- Multipart upload part sizes are always expected to be of the same size, but this enforcement is now done when you complete an upload instead of being done very time you upload a part. -- Fixed a performance issue where concurrent multipart part uploads would get rejected. - -## 2022-10-26 - -- Fixed ranged reads for multipart objects with part sizes unaligned to 64KiB. - -## 2022-10-19 - -- `HeadBucket` now sets `x-amz-bucket-region` to `auto` in the response. - -## 2022-10-06 - -- Temporarily disabled `UploadPartCopy` while we investigate an issue. - -## 2022-09-29 - -- Fixed a CORS issue where `Access-Control-Allow-Headers` was not being set for preflight requests. - -## 2022-09-28 - -- Fixed a bug where CORS configuration was not being applied to S3 endpoint. -- No-longer render the `Access-Control-Expose-Headers` response header if `ExposeHeader` is not defined. -- Public buckets will no-longer return the `Content-Range` response header unless the response is partial. -- Fixed CORS rendering for the S3 `HeadObject` operation. -- Fixed a bug where no matching CORS configuration could result in a `403` response. -- Temporarily disable copying objects that were created with multipart uploads. -- Fixed a bug in the Workers bindings where an internal error was being returned for malformed ranged `.get` requests. - -## 2022-09-27 - -- CORS preflight responses and adding CORS headers for other responses is now implemented for S3 and public buckets. Currently, the only way to configure CORS is via the S3 API. -- Fixup for bindings list truncation to work more correctly when listing keys with custom metadata that have `"` or when some keys/values contain certain multi-byte UTF-8 values. -- The S3 `GetObject` operation now only returns `Content-Range` in response to a ranged request. - -## 2022-09-19 - -- The R2 `put()` binding options can now be given an `onlyIf` field, similar to `get()`, that performs a conditional upload. -- The R2 `delete()` binding now supports deleting multiple keys at once. -- The R2 `put()` binding now supports user-specified SHA-1, SHA-256, SHA-384, SHA-512 checksums in options. -- User-specified object checksums will now be available in the R2 `get()` and `head()` bindings response. MD5 is included by default for non-multipart uploaded objects. - -## 2022-09-06 - -- The S3 `CopyObject` operation now includes `x-amz-version-id` and `x-amz-copy-source-version-id` in the response headers for consistency with other methods. -- The `ETag` for multipart files uploaded until shortly after Open Beta uploaded now include the number of parts as a suffix. - -## 2022-08-17 - -- The S3 `DeleteObjects` operation no longer trims the space from around the keys before deleting. This would result in files with leading / trailing spaces not being able to be deleted. Additionally, if there was an object with the trimmed key that existed it would be deleted instead. The S3 `DeleteObject` operation was not affected by this. -- Fixed presigned URL support for the S3 `ListBuckets` and `ListObjects` operations. - -## 2022-08-06 - -- Uploads will automatically infer the `Content-Type` based on file body if one is not explicitly set in the `PutObject` request. This functionality will come to multipart operations in the future. - -## 2022-07-30 - -- Fixed S3 conditionals to work properly when provided the `LastModified` date of the last upload, bindings fixes will come in the next release. -- `If-Match` / `If-None-Match` headers now support arrays of ETags, Weak ETags and wildcard (`*`) as per the HTTP standard and undocumented AWS S3 behavior. - -## 2022-07-21 - -- Added dummy implementation of the following operation that mimics the response that a basic AWS S3 bucket will return when first created: - - `GetBucketAcl` - -## 2022-07-20 - -- Added dummy implementations of the following operations that mimic the response that a basic AWS S3 bucket will return when first created: - - `GetBucketVersioning` - - `GetBucketLifecycleConfiguration` - - `GetBucketReplication` - - `GetBucketTagging` - - `GetObjectLockConfiguration` - -## 2022-07-19 - -- Fixed an S3 compatibility issue for error responses with MinIO .NET SDK and any other tooling that expects no `xmlns` namespace attribute on the top-level `Error` tag. -- List continuation tokens prior to 2022-07-01 are no longer accepted and must be obtained again through a new `list` operation. -- The `list()` binding will now correctly return a smaller limit if too much data would otherwise be returned (previously would return an `Internal Error`). - -## 2022-07-14 - -- Improvements to 500s: we now convert errors, so things that were previously concurrency problems for some operations should now be `TooMuchConcurrency` instead of `InternalError`. We've also reduced the rate of 500s through internal improvements. -- `ListMultipartUpload` correctly encodes the returned `Key` if the `encoding-type` is specified. - -## 2022-07-13 - -- S3 XML documents sent to R2 that have an XML declaration are not rejected with `400 Bad Request` / `MalformedXML`. -- Minor S3 XML compatibility fix impacting Arq Backup on Windows only (not the Mac version). Response now contains XML declaration tag prefix and the xmlns attribute is present on all top-level tags in the response. -- Beta `ListMultipartUploads` support. - -## 2022-07-06 - -- Support the `r2_list_honor_include` compat flag coming up in an upcoming runtime release (default behavior as of 2022-07-14 compat date). Without that compat flag/date, list will continue to function implicitly as `include: ['httpMetadata', 'customMetadata']` regardless of what you specify. -- `cf-create-bucket-if-missing` can be set on a `PutObject`/`CreateMultipartUpload` request to implicitly create the bucket if it does not exist. -- Fix S3 compatibility with MinIO client spec non-compliant XML for publishing multipart uploads. Any leading and trailing quotes in `CompleteMultipartUpload` are now optional and ignored as it seems to be the actual non-standard behavior AWS implements. - -## 2022-07-01 - -- Unsupported search parameters to `ListObjects`/`ListObjectsV2` are now rejected with `501 Not Implemented`. -- Fixes for Listing: - - Fix listing behavior when the number of files within a folder exceeds the limit (you'd end up seeing a CommonPrefix for that large folder N times where N = number of children within the CommonPrefix / limit). - - Fix corner case where listing could cause objects with sharing the base name of a "folder" to be skipped. - - Fix listing over some files that shared a certain common prefix. - - `DeleteObjects` can now handle 1000 objects at a time. -- S3 `CreateBucket` request can specify `x-amz-bucket-object-lock-enabled` with a value of `false` and not have the requested rejected with a `NotImplemented` error. A value of `true` will continue to be rejected as R2 does not yet support object locks. - -## 2022-06-17 - -- Fixed a regression for some clients when using an empty delimiter. -- Added support for S3 pre-signed URLs. - -## 2022-06-16 - -- Fixed a regression in the S3 API `UploadPart` operation where `TooMuchConcurrency` & `NoSuchUpload` errors were being returned as `NoSuchBucket`. - -## 2022-06-13 - -- Fixed a bug with the S3 API `ListObjectsV2` operation not returning empty folder/s as common prefixes when using delimiters. -- The S3 API `ListObjectsV2` `KeyCount` parameter now correctly returns the sum of keys and common prefixes rather than just the keys. -- Invalid cursors for list operations no longer fail with an `InternalError` and now return the appropriate error message. - -## 2022-06-10 - -- The `ContinuationToken` field is now correctly returned in the response if provided in a S3 API `ListObjectsV2` request. -- Fixed a bug where the S3 API `AbortMultipartUpload` operation threw an error when called multiple times. - -## 2022-05-27 - -- Fixed a bug where the S3 API's `PutObject` or the `.put()` binding could fail but still show the bucket upload as successful. -- If [conditional headers](https://datatracker.ietf.org/doc/html/rfc7232) are provided to S3 API `UploadObject` or `CreateMultipartUpload` operations, and the object exists, a `412 Precondition Failed` status code will be returned if these checks are not met. - -## 2022-05-20 - -- Fixed a bug when `Accept-Encoding` was being used in `SignedHeaders` when sending requests to the S3 API would result in a `SignatureDoesNotMatch` response. - -## 2022-05-17 - -- Fixed a bug where requests to the S3 API were not handling non-encoded parameters used for the authorization signature. -- Fixed a bug where requests to the S3 API where number-like keys were being parsed as numbers instead of strings. - -## 2022-05-16 - -- Add support for S3 [virtual-hosted style paths](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html), such as `..r2.cloudflarestorage.com` instead of path-based routing (`.r2.cloudflarestorage.com/`). -- Implemented `GetBucketLocation` for compatibility with external tools, this will always return a `LocationConstraint` of `auto`. - -## 2022-05-06 - -- S3 API `GetObject` ranges are now inclusive (`bytes=0-0` will correctly return the first byte). -- S3 API `GetObject` partial reads return the proper `206 Partial Content` response code. -- Copying from a non-existent key (or from a non-existent bucket) to another bucket now returns the proper `NoSuchKey` / `NoSuchBucket` response. -- The S3 API now returns the proper `Content-Type: application/xml` response header on relevant endpoints. -- Multipart uploads now have a `-N` suffix on the etag representing the number of parts the file was published with. -- `UploadPart` and `UploadPartCopy` now return proper error messages, such as `TooMuchConcurrency` or `NoSuchUpload`, instead of 'internal error'. -- `UploadPart` can now be sent a 0-length part. - -## 2022-05-05 - -- When using the S3 API, an empty string and `us-east-1` will now alias to the `auto` region for compatibility with external tools. -- `GetBucketEncryption`, `PutBucketEncryption` and `DeleteBucketEncrypotion` are now supported (the only supported value currently is `AES256`). -- Unsupported operations are explicitly rejected as unimplemented rather than implicitly converting them into `ListObjectsV2`/`PutBucket`/`DeleteBucket` respectively. -- S3 API `CompleteMultipartUploads` requests are now properly escaped. - -## 2022-05-03 - -- Pagination cursors are no longer returned when the keys in a bucket is the same as the `MaxKeys` argument. -- The S3 API `ListBuckets` operation now accepts `cf-max-keys`, `cf-start-after` and `cf-continuation-token` headers behave the same as the respective URL parameters. -- The S3 API `ListBuckets` and `ListObjects` endpoints now allow `per_page` to be 0. -- The S3 API `CopyObject` source parameter now requires a leading slash. -- The S3 API `CopyObject` operation now returns a `NoSuchBucket` error when copying to a non-existent bucket instead of an internal error. -- Enforce the requirement for `auto` in SigV4 signing and the `CreateBucket` `LocationConstraint` parameter. -- The S3 API `CreateBucket` operation now returns the proper `location` response header. - -## 2022-04-14 - -- The S3 API now supports unchunked signed payloads. -- Fixed `.put()` for the Workers R2 bindings. -- Fixed a regression where key names were not properly decoded when using the S3 API. -- Fixed a bug where deleting an object and then another object which is a prefix of the first could result in errors. -- The S3 API `DeleteObjects` operation no longer returns an error even though an object has been deleted in some cases. -- Fixed a bug where `startAfter` and `continuationToken` were not working in list operations. -- The S3 API `ListObjects` operation now correctly renders `Prefix`, `Delimiter`, `StartAfter` and `MaxKeys` in the response. -- The S3 API `ListObjectsV2` now correctly honors the `encoding-type` parameter. -- The S3 API `PutObject` operation now works with `POST` requests for `s3cmd` compatibility. - -## 2022-04-04 - -- The S3 API `DeleteObjects` request now properly returns a `MalformedXML` error instead of `InternalError` when provided with more than 128 keys. +{{}} diff --git a/content/stream/changelog.md b/content/stream/changelog.md index 8748e8f39037f4a..9705a92ad2c8ddd 100644 --- a/content/stream/changelog.md +++ b/content/stream/changelog.md @@ -2,363 +2,15 @@ pcx_content_type: changelog title: Changelog weight: 11 -rss: file +layout: changelog +changelog_file_name: stream +outputs: + - html + - rss --- # Changelog -## 2023-08-08 + -### Scheduled Deletion - -Stream now supports adding a scheduled deletion date to new and existing videos. Live inputs support deletion policies for automatic recording deletion. - -For more, refer to the [video on demand](/stream/uploading-videos/) or [live input](/stream/stream-live/) docs. - -## 2023-05-16 - -### Multiple audio tracks now generally available - -Stream supports adding multiple audio tracks to an existing video. - -For more, refer to the [documentation](https://developers.cloudflare.com/stream/edit-videos/adding-additional-audio-tracks/) to get started. - -## 2023-04-26 - -### Player Enhancement Properties - -Cloudflare Stream now supports player enhancement properties. - -With player enhancements, you can modify your video player to incorporate elements of your branding, such as your logo, and customize additional options to present to your viewers. - -For more, refer to the [documentation](https://developers.cloudflare.com/stream/edit-videos/player-enhancements/) to get started. - -## 2023-03-21 - -### Limits for downloadable MP4s for live recordings - -Previously, generating a download for a live recording exceeding four hours resulted in failure. - -To fix the issue, now video downloads are only available for live recordings under four hours. Live recordings exceeding four hours can still be played but cannot be downloaded. - -## 2023-01-04 - -### Earlier detection (and rejection) of non-video uploads - -Cloudflare Stream now detects non-video content on upload using [the POST API](/stream/uploading-videos/upload-video-file/) and returns a 400 Bad Request HTTP error with code `10059`. - -Previously, if you or one of your users attempted to upload a file that is not a video (ex: an image), the request to upload would appear successful, but then fail to be encoded later on. - -With this change, Stream responds to the upload request with an error, allowing you to give users immediate feedback if they attempt to upload non-video content. - -## 2022-12-08 - -### Faster mp4 downloads of live recordings - -Generating MP4 downloads of live stream recordings is now significantly faster. For more, refer to [the docs](/stream/stream-live/download-stream-live-videos/). - -## 2022-11-29 - -### Multiple audio tracks (closed beta) - -Stream now supports adding multiple audio tracks to an existing video upload. This allows you to: - -- Provide viewers with audio tracks in multiple languages -- Provide dubbed audio tracks, or audio commentary tracks (ex: Director’s Commentary) -- Allow your users to customize the customize the audio mix, by providing separate audio tracks for music, speech or other audio tracks. -- Provide Audio Description tracks to ensure your content is accessible. ([WCAG 2.0 Guideline 1.2 1](https://www.w3.org/TR/WCAG20/#media-equiv-audio-desc-only)) - -To request an invite to the beta, refer to [this post](https://community.cloudflare.com/t/new-in-beta-support-for-multiple-audio-tracks/439629). - -## 2022-11-22 - -### VP9 support for WebRTC live streams (beta) - -Cloudflare Stream now supports [VP9](https://developers.google.com/media/vp9) when streaming using [WebRTC (WHIP)](/stream/webrtc-beta/), currently in beta. - -## 2022-11-08 - -### Reduced time to start WebRTC streaming and playback with Trickle ICE - -Cloudflare Stream's [WHIP](https://datatracker.ietf.org/doc/draft-ietf-wish-whip/) and [WHEP](https://www.ietf.org/archive/id/draft-murillo-whep-01.html) implementations now support [Trickle ICE](https://datatracker.ietf.org/doc/rfc8838/), reducing the time it takes to initialize WebRTC connections, and increasing compatibility with WHIP and WHEP clients. - -For more, refer to [the docs](/stream/webrtc-beta/). - -## 2022-11-07 - -### Deprecating the "per-video" Analytics API - -The “per-video” analytics API is being deprecated. If you still use this API, you will need to switch to using the [GraphQL Analytics API](/stream/getting-analytics/fetching-bulk-analytics/) by February 1, 2023. After this date, the per-video analytics API will be no longer available. - -The GraphQL Analytics API provides the same functionality and more, with additional filters and metrics, as well as the ability to fetch data about multiple videos in a single request. Queries are faster, more reliable, and built on a shared analytics system that you can [use across many Cloudflare products](/analytics/graphql-api/features/data-sets/). - -For more about this change and how to migrate existing API queries, refer to [this post](https://community.cloudflare.com/t/migrate-to-the-stream-graphql-analytics-api-by-feb-1st-2023/433252) and the [GraphQL Analytics API docs](/stream/getting-analytics/fetching-bulk-analytics/). - -## 2022-11-01 - -### Create an unlimited number of live inputs - -Cloudflare Stream now has no limit on the number of [live inputs](/api/operations/stream-live-inputs-retrieve-a-live-input) you can create. Stream is designed to allow your end-users to go live — live inputs can be created quickly on-demand via a single API request for each of user of your platform or app. - -For more on creating and managing live inputs, get started with the [docs](/stream/stream-live/). - -## 2022-10-20 - -### More accurate bandwidth estimates for live video playback - -When playing live video, Cloudflare Stream now provides significantly more accurate estimates of the bandwidth needs of each quality level to client video players. This ensures that live video plays at the highest quality that viewers have adequate bandwidth to play. - -As live video is streamed to Cloudflare, we transcode it to make it available to viewers at mulitple quality levels. During transcoding, we learn about the real bandwidth needs of each segment of video at each quality level, and use this to provide an estimate of the bandwidth requirements of each quality level the in HLS (`.m3u8`) and DASH (`.mpd`) manifests. - -If a live stream contains content with low visual complexity, like a slideshow presentation, the bandwidth estimates provided in the HLS manifest will be lower, ensuring that the most viewers possible view the highest quality level, since it requires relatively little bandwidth. Conversely, if a live stream contains content with high visual complexity, like live sports with motion and camera panning, the bandwidth estimates provided in the HLS manifest will be higher, ensuring that viewers with inadequate bandwidth switch down to a lower quality level, and their playback does not buffer. - -This change is particularly helpful if you're building a platform or application that allows your end users to create their own live streams, where these end users have their own streaming software and hardware that you can't control. Because this new functionality adapts based on the live video we receive, rather than just the configuration advertised by the broadcaster, even in cases where your end users' settings are less than ideal, client video players will not receive excessively high estimates of bandwidth requirements, causing playback quality to decrease unnecessarily. Your end users don't have to be OBS Studio experts in order to get high quality video playback. - -No work is required on your end — this change applies to all live inputs, for all customers of Cloudflare Stream. For more, refer to the [docs](/stream/stream-live/#bitrate-estimates-at-each-quality-level-bitrate-ladder). - -## 2022-10-05 - -### AV1 Codec support for live streams and recordings (beta) - -Cloudflare Stream now supports playback of live videos and live recordings using the [AV1 codec](https://aomedia.org/av1/), which uses 46% less bandwidth than H.264. - -For more, read the [blog post](https://blog.cloudflare.com/av1-cloudflare-stream-beta) or the get started with the [docs](/stream/viewing-videos/av1-playback). - -## 2022-09-27 - -### WebRTC live streaming and playback (beta) - -Cloudflare Stream now supports live video streaming over WebRTC, with sub-second latency, to unlimited concurrent viewers. - -For more, read the [blog post](https://blog.cloudflare.com/webrtc-whip-whep-cloudflare-stream) or the get started with example code in the [docs](/stream/webrtc-beta). - -## 2022-09-15 - -### Manually control when you start and stop simulcasting - -You can now enable and disable individual live outputs via the API or Stream dashboard, allowing you to control precisely when you start and stop simulcasting to specific destinations like YouTube and Twitch. For more, [read the docs](/stream/stream-live/simulcasting/#control-when-you-start-and-stop-simulcasting). - -## 2022-08-15 - -### Unique subdomain for your Stream Account - -URLs in the Stream Dashboard and Stream API now use a subdomain specific to your Cloudflare Account: `customer-{CODE}.cloudflarestream.com`. This change allows you to: - -1. Use [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) (CSP) directives specific to your Stream subdomain, to ensure that only videos from your Cloudflare account can be played on your website. -2. Allowlist only your Stream account subdomain at the network-level to ensure that only videos from a specific Cloudflare account can be accessed on your network. - -No action is required from you, unless you use Content Security Policy (CSP) on your website. For more on CSP, read the docs [here](/stream/faq/#i-use-content-security-policy-csp-on-my-website-what-domains-do-i-need-to-add-to-which-directives). - -## 2022-08-02 - -### Clip videos using the Stream API - -You can now change the start and end times of a video uploaded to Cloudflare Stream. For more information, refer to [Clip videos](/stream/edit-videos/video-clipping/). - -## 2022-07-26 - -### Live inputs - -The Live Inputs API now supports optional pagination, search, and filter parameters. For more information, refer to the [Live Inputs API documentation](/api/operations/stream-live-inputs-list-live-inputs). - -## 2022-05-24 - -### Picture-in-Picture support - -The [Stream Player](/stream/viewing-videos/using-the-stream-player/) now displays a button to activate Picture-in-Picture mode, if the viewer's web browser supports the [Picture-in-Picture API](https://developer.mozilla.org/en-US/docs/Web/API/Picture-in-Picture_API). - -## 2022-05-13 - -### Creator ID property - -During or after uploading a video to Stream, you can now specify a value for a new field, `creator`. This field can be used to identify the creator of the video content, linking the way you identify your users or creators to videos in your Stream account. For more, read the [blog post](https://blog.cloudflare.com/stream-creator-management/) - -## 2022-03-17 - -### Analytics panel in Stream Dashboard - -The Stream Dashboard now has an analytics panel that shows the number of minutes of both live and recorded video delivered. This view can be filtered by **Creator ID**, **Video UID**, and **Country**. For more in-depth analytics data, refer to the [bulk analytics documentation](/stream/getting-analytics/fetching-bulk-analytics/) - -## 2022-03-16 - -### Custom letterbox color configuration option for Stream Player - -The Stream Player can now be configured to use a custom letterbox color, displayed around the video ("letterboxing" or "pillarboxing") when the video's aspect ratio does not match the player's aspect ratio. Refer to the documentation on configuring the Stream Player [here](/stream/viewing-videos/using-the-stream-player/#basic-options). - -## 2022-03-10 - -### Support for SRT live streaming protocol - -Cloudflare Stream now supports the SRT live streaming protocol. SRT is a modern, actively maintained streaming video protocol that delivers lower latency, and better resilience against unpredictable network conditions. SRT supports newer video codecs and makes it easier to use accessibility features such as captions and multiple audio tracks. - -For more, read the [blog post](https://blog.cloudflare.com/stream-now-supports-srt-as-a-drop-in-replacement-for-rtmp/). - -## 2022-02-17 - -### Faster video quality switching in Stream Player - -When viewers manually change the resolution of video they want to receive in the Stream Player, this change now happens immediately, rather than once the existing resolution playback buffer has finished playing. - -## 2022-02-09 - -### Volume and playback controls accessible during playback of VAST Ads - -When viewing ads in the [VAST format](https://www.iab.com/guidelines/vast/#:~:text=VAST%20is%20a%20Video%20Ad,of%20the%20digital%20video%20marketplace.) in the Stream Player, viewers can now manually start and stop the video, or control the volume. - -## 2022-01-25 - -### DASH and HLS manifest URLs accessible in Stream Dashboard - -If you choose to use a third-party player with Cloudflare Stream, you can now easily access HLS and DASH manifest URLs from within the Stream Dashboard. For more about using Stream with third-party players, read the docs [here](/stream/viewing-videos/using-own-player/). - -## 2022-01-22 - -### Input health status in the Stream Dashboard - -When a live input is connected, the Stream Dashboard now displays technical details about the connection, which can be used to debug configuration issues. - -## 2022-01-06 - -### Live viewer count in the Stream Player - -The [Stream Player](/stream/viewing-videos/using-the-stream-player/) now shows the total number of people currently watching a video live. - -## 2022-01-04 - -### Webhook notifications for live stream connections events - -You can now configure Stream to send webhooks each time a live stream connects and disconnects. For more information, refer to the [Webhooks documentation](/stream/stream-live/webhooks). - -## 2021-12-07 - -### FedRAMP Support - -The Stream Player can now be served from a [FedRAMP](https://www.cloudflare.com/press-releases/2021/cloudflare-hits-milestone-in-fedramp-approval/) compliant subdomain. - -## 2021-11-23 - -### 24/7 Live streaming support - -You can now use Cloudflare Stream for 24/7 live streaming. - -## 2021-11-17 - -### Persistent Live Stream IDs - -You can now start and stop live broadcasts without having to provide a new video UID to the Stream Player (or your own player) each time the stream starts and stops. [Read the docs](/stream/stream-live/watch-live-stream/#view-by-live-input-id). - -## 2021-10-14 - -### MP4 video file downloads for live videos - -Once a live video has ended and been recorded, you can now give viewers the option to download an MP4 video file of the live recording. For more, read the docs [here](/stream/stream-live/download-stream-live-videos/). - -## 2021-09-30 - -### Serverless Live Streaming - -Stream now supports live video content! For more information, read the [blog post](https://blog.cloudflare.com/stream-live/) and get started by reading the [docs](/stream/stream-live/). - -## 2021-07-26 - -### Thumbnail previews in Stream Player seek bar - -The Stream Player now displays preview images when viewers hover their mouse over the seek bar, making it easier to skip to a specific part of a video. - -### MP4 video file downloads (GA) - -All Cloudflare Stream customers can now give viewers the option to download videos uploaded to Stream as an MP4 video file. For more, read the docs [here](/stream/viewing-videos/download-videos/). - -## 2021-07-10 - -### Stream Connect (open beta) - -You can now opt-in to the Stream Connect beta, and use Cloudflare Stream to restream live video to any platform that accepts RTMPS input, including Facebook, YouTube and Twitch. - -For more, read the [blog post](https://blog.cloudflare.com/restream-with-stream-connect/) or the [docs](/stream/stream-live/simulcasting/). - -## 2021-06-10 - -### Simplified signed URL token generation - -You can now obtain a signed URL token via a single API request, without needing to generate signed tokens in your own application. [Read the docs](/stream/viewing-videos/securing-your-stream) - -## 2021-06-08 - -### Stream Connect (closed beta) - -You can now use Cloudflare Stream to restream or simulcast live video to any platform that accepts RTMPS input, including Facebook, YouTube and Twitch. - -For more, read the [blog post](https://blog.cloudflare.com/restream-with-stream-connect/) or the [docs](/stream/stream-live/simulcasting/). - -## 2021-05-03 - -### MP4 video file downloads (beta) - -You can now give your viewers the option to download videos uploaded to Stream as an MP4 video file. For more, read the docs [here](/stream/viewing-videos/download-videos/). - -## 2021-03-10 - -### Stream Player 2.0 (preview) - -A brand new version of the Stream Player is now available for preview. New features include: - -- Unified controls across desktop and mobile devices -- Keyboard shortcuts -- Intelligent mouse cursor interactions with player controls -- Phased out support for Internet Explorer 11 - -For more, refer to [this post](https://community.cloudflare.com/t/announcing-the-preview-build-for-stream-player-2-0/243095) on the Cloudflare Community Forum. - -## 2021-03-04 - -### Faster video encoding - -Videos uploaded to Cloudflare Stream are now available to view 5x sooner, reducing the time your users wait between uploading and viewing videos. - -## 2021-03-29 - -### Picture quality improvements - -Cloudflare Stream now encodes videos with fewer artifacts, resulting in improved video quality for your viewers. - -## 2021-03-25 - -### Improved client bandwidth hints for third-party video players - -If you use Cloudflare Stream with a third party player, and send the `clientBandwidthHint` parameter in requests to fetch video manifests, Cloudflare Stream now selects the ideal resolution to provide to your client player more intelligently. This ensures your viewers receive the ideal resolution for their network connection. - -## 2021-03-17 - -### Less bandwidth, identical video quality - -Cloudflare Stream now delivers video using 3-10x less bandwidth, with no reduction in quality. This ensures faster playback for your viewers with less buffering, particularly when viewers have slower network connections. - -## 2021-01-17 - -### Removed weekly upload limit, increased max video upload size - -- You can now upload videos up to 30GB in size to Cloudflare Stream -- You can now upload an unlimited number of videos to Cloudflare Stream each week - -## 2020-12-14 - -### Tus support for direct creator uploads - -You can now use the [tus protocol](/stream/uploading-videos/direct-creator-uploads/#advanced-upload-flow-using-tus-for-large-videos) when allowing creators (your end users) to upload their own videos directly to Cloudflare Stream. - -In addition, all uploads to Cloudflare Stream made using tus are now faster and more reliable as part of this change. - -## 2020-12-09 - -### Multiple audio track mixdown - -Videos with multiple audio tracks (ex: 5.1 surround sound) are now mixed down to stereo when uploaded to Stream. The resulting video, with stereo audio, is now playable in the Stream Player. - -## 2020-12-02 - -### Storage limit notifications - -Cloudflare now emails you if your account is using 75% or more of your prepaid video storage, so that you can take action and plan ahead. - -... +{{}} \ No newline at end of file diff --git a/content/style-guide/documentation-content-strategy/content-types/changelog.md b/content/style-guide/documentation-content-strategy/content-types/changelog.md index 8bcee519466c9ed..efb1e91e8c610a5 100644 --- a/content/style-guide/documentation-content-strategy/content-types/changelog.md +++ b/content/style-guide/documentation-content-strategy/content-types/changelog.md @@ -18,33 +18,7 @@ instructional, straightforward `changelog` -## Structure - -### Required components - -[**Title**](/style-guide/documentation-content-strategy/component-attributes/titles/): If the changelog is listed on one page, the title should be "Changelog." If the changes are split into multiple pages, the top-level navigation page should be titled "Changelog" and titles of the nested pages should be the date of change listed in year-month-day. - -**Description of change**: What changed? - -### Optional components - -**IDs**: Rule ID, Legacy Rule ID - -**Actions (previous or new)**: What action changed? What was the previous action? - -**Version**: previous version → new version - -**Related links**: Links to related examples, tutorials, code - -**RSS feed** → More details. - -## Examples - -[WAF Changelog](/waf/change-log) - -[Web Analytics Changelog](/analytics/web-analytics/changelog/) - -## Additional information +## Ownership Developers and engineers maintain changelogs manually or via an automated process that their team owns. PCX provides a review but should not own creating or writing changelogs. @@ -56,56 +30,115 @@ Do not use the following terms: change log (two words), release notes, what's ne "What's New" is a specific [content type](https://www.cloudflare.com/whats-new/) for marketing communication. {{}} -## RSS feeds +## Structure -GitHub already maintains an RSS feed for commits affecting a specific file or all files within a folder. +When creating a changelog, you need a Markdown page file and a corresponding YAML file in the [`/data/changelogs` folder](https://github.com/cloudflare/cloudflare-docs/tree/production/data/changelogs). -If you want to make this RSS feed visible on your page – both through a link in the HTML `head` and an RSS feed icon in the top toolbar – add one of the following key-value pairs to the frontmatter of your changelog page. +The combination of these files allows us to: -{{}} +- Render traditional changelog content on an [HTML page](/stream/changelog/). +- Programmatically create an [RSS feed](/stream/changelog/index.xml) with the changelog content. +- Pull all our changelog content into a [Cloudflare-wide changelog](/changelog/). -## File RSS feed +### Markdown file -For changes pertaining just to the current file, which means a new entry is created any time a PR is merged that involves changes to the file. - -You would use this with a single-page changelog. +Your Markdown file needs to have several special values to pull in the changelog information. These values are highlighted in the sample page. ``` +--- +header: /queues/changelog.md +highlight: [5-9, 14] +--- --- pcx_content_type: changelog -title: Test page -weight: 3 -rss: file +title: Changelog +weight: 11 +layout: changelog +changelog_file_name: (for example, queues) +outputs: + - html + - rss --- + +# Changelog + +{{}} ``` -For initial implementation reasons, this will not work if the file is named `_index.md`. +### YAML file -## Folder RSS feed +The `product-changelog` component renders data that lives in a file within the [`/data/changelogs` folder](https://github.com/cloudflare/cloudflare-docs/tree/production/data/changelogs). -For changes pertaining to all files within the current folder, which means a new entry is created any time a PR is merged that involves changes to any files in the folder. +{{}} -You would use this with a changelog that creates new pages for each change. +- `link` {{}}string{{}} {{}}required{{}} -``` + - Relative path to the changelog page, such as `"/queues/changelog/"`. ---- -pcx_content_type: tutorial -title: Test page -weight: 3 -rss: folder ---- -``` +- `productName` {{}}string{{}} {{}}required{{}} -## PR title and commit standards + - Product name to display on the [changelog](/changelog/) product filter list, as well as other areas of the template. -Since these RSS feeds are updated with any update to the file (link fixes, formatting), we should be very diligent about our PR titles when making changelog updates. +- `entries` {{}}object{{}} {{}}required{{}} + - `publish_date` {{}}string{{}} {{}}required{{}} -Those should likely be structured as following: + - Date of published change, formatted as `YYYY-MM-DD`. + - `title` {{}}string{{}} {{}}optional{{}} + + - Name of published change. Optional, but highly encouraged. + + - `description` {{}}string{{}} {{}}required{{}} + + - Markdown string that also follows YAML conventions. For multi-line strings, start the entry with `|-` and then type on an indented new line. + +{{}} + +```yml +--- +header: /data/changelogs/queues.yaml +--- +--- +link: "/queues/changelog/" +productName: Queues +entries: +- publish_date: '2023-03-28' + title: Consumer concurrency (enabled) + description: Queue consumers will now [automatically scale up](/queues/learning/consumer-concurrency/) + based on the number of messages being written to the queue. To control or limit + concurrency, you can explicitly define a [`max_concurrency`](/queues/platform/configuration/#consumer) + for your consumer. +- publish_date: '2023-03-15' + title: Consumer concurrency (upcoming) + description: |- + Queue consumers will soon automatically scale up concurrently as a queues' backlog grows in order to keep overall message processing latency down. Concurrency will be enabled on all existing queues by 2023-03-28. + + **To opt-out, or to configure a fixed maximum concurrency**, set `max_concurrency = 1` in your `wrangler.toml` file or via [the queues dashboard](https://dash.cloudflare.com/?to=/:account/queues). + + **To opt-in, you do not need to take any action**: your consumer will begin to scale out as needed to keep up with your message backlog. It will scale back down as the backlog shrinks, and/or if a consumer starts to generate a higher rate of errors. To learn more about how consumers scale, refer to the [consumer concurrency](/queues/learning/consumer-concurrency/) documentation. +- publish_date: '2023-03-02' + title: Explicit acknowledgement (new feature) + description: |- + You can now [acknowledge individual messages with a batch](/queues/learning/batching-retries/#explicit-acknowledgement) by calling `.ack()` on a message. + + This allows you to mark a message as delivered as you process it within a batch, and avoids the entire batch from being redelivered if your consumer throws an error during batch processing. This can be particularly useful when you are calling external APIs, writing messages to a database, or otherwise performing non-idempotent actions on individual messages within a batch. +- publish_date: '2023-03-01' + title: Higher per-queue throughput + description: The per-queue throughput limit has now been [raised to 400 messages + per second](/queues/platform/limits/). +- publish_date: '2022-12-12' + title: Increased per-account limits + description: Queues now allows developers to create up to 100 queues per account, + up from the initial beta limit of 10 per account. This limit will continue to + increase over time. +- publish_date: '2022-12-13' + title: sendBatch support + description: The JavaScript API for Queue producers now includes a `sendBatch` method + which supports sending up to 100 messages at a time. ``` -[Product] - [Changelog] - [Date] - [Summary of change] -``` + +## Examples + +- [Stream Changelog](/stream/changelog/) +- [Pages Changelog](/pages/platform/changelog/) diff --git a/content/turnstile/changelog.md b/content/turnstile/changelog.md index 107bd4718da5cfd..fabfaddcbfcab85 100644 --- a/content/turnstile/changelog.md +++ b/content/turnstile/changelog.md @@ -1,64 +1,16 @@ --- pcx_content_type: changelog title: Changelog -weight: 10 -rss: file +weight: 11 +layout: changelog +changelog_file_name: turnstile +outputs: + - html + - rss --- # Changelog -## 2023-08-24 -- Added [Client-side errors](/turnstile/reference/client-side-errors). + -## 2023-07-31 - -- Added [`[turnstile.isExpired]`](/turnstile/get-started/client-side-rendering/#access-a-widgets-state). -- Added `uk` language. - -## 2023-05-25 - -- Added idempotency support for `POST /siteverify` requests via the `idempotency_key` parameter. - -## 2023-04-17 - -- Added references to Turnstile Public API. -- Added references for [`[after-interactive-callback]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget), [`[before-interactive-callback]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget), and [`[unsupported-callback]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget). - -## 2023-03-06 - -- Added [`[execution]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget) and [`[appearance]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget). - -## 2023-02-15 - -- Added the [`[turnstile.ready]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget) callback. - -## 2023-02-01 - -- Added the [`[data-]language`](/turnstile/get-started/client-side-rendering/#configurations) parameter. - -## 2022-12-12 - -- [`POST /siteverify`](/turnstile/get-started/server-side-validation/) supports JSON requests now. - -## 2022-11-11 - -- Added [`retry` and `retry-interval`](/turnstile/get-started/client-side-rendering/#configurations) for controlling retry behavior. - -## 2022-10-28 - -- Renamed the `[data-]expired-callback` callback to [`[data-]timeout-callback`](/turnstile/get-started/client-side-rendering/#configurations) (called when the challenge times out). -- Added the [`[data-]expired-callback`](/turnstile/get-started/client-side-rendering/#configurations) callback (called when the token expires). - -## 2022-10-24 - -- Added [`response-field` and `response-field-name`](/turnstile/get-started/client-side-rendering/#configurations) for controlling the input element created by Turnstile. -- Added option for changing the [size of the Turnstile widget](/turnstile/get-started/client-side-rendering/#widget-size). - -## 2022-10-13 - -- Added validation for action: `/^[a-z0-9_-]{0,32}$/i` -- Added validation for cData: `/^[a-z0-9_-]{0,255}$/i` - -## 2022-10-11 - -- Added [`turnstile.remove`](/turnstile/get-started/client-side-rendering/#remove-a-widget) +{{}} diff --git a/content/workers/platform/changelog.md b/content/workers/platform/changelog.md index 6f7848f47923e1f..38bad08d3aafc1f 100644 --- a/content/workers/platform/changelog.md +++ b/content/workers/platform/changelog.md @@ -3,96 +3,18 @@ pcx_content_type: changelog title: Changelog meta: description: Review recent changes to Cloudflare Workers. -rss: file +layout: changelog +changelog_file_name: workers +outputs: + - html + - rss --- # Changelog -## 2023-07-14 +{{}} -- An implementation of the [`util.MIMEType`](https://nodejs.org/api/util.html#class-utilmimetype) API from Node.js is now available when the [`nodejs_compat` compatibility flag](https://developers.cloudflare.com/workers/runtime-apis/nodejs/) is enabled. - -## 2023-07-07 - -- An implementation of the [`process.env`](/workers/runtime-apis/nodejs/process) API from Node.js is now available when using the `nodejs_compat` compatibility flag. -- An implementation of the [`diagnostics_channel`](/workers/runtime-apis/nodejs/diagnostics-channel) API from Node.js is now available when using the `nodejs_compat` compatibility flag. - -## 2023-06-22 - -- Added the [`strict_crypto_checks`](/workers/configuration/compatibility-dates/#strict-crypto-error-checking) compatibility flag to enable additional [Web Crypto API](/workers/runtime-apis/web-crypto/) error and security checking. -- Fixes regression in the [TCP Sockets API](/workers/runtime-apis/tcp-sockets/) where `connect("google.com:443")` would fail with a `TypeError`. - -## 2023-06-19 - -- The [TCP Sockets API](/workers/runtime-apis/tcp-sockets/) now reports clearer errors when a connection cannot be established. -- Updated V8 to 11.5. - -## 2023-06-09 - -- `AbortSignal.any()` is now available. -- Updated V8 to 11.4. -- Following an update to the [WHATWG URL spec](https://url.spec.whatwg.org/#interface-urlsearchparams), the `delete()` and `has()` methods of the `URLSearchParams` class now accept an optional second argument to specify the search parameter’s value. This is potentially a breaking change, so it is gated behind the new `urlsearchparams_delete_has_value_arg` and [`url_standard`](/workers/configuration/compatibility-dates/#new-url-parser-implementation) compatibility flags. -- Added the [`strict_compression_checks`](/workers/configuration/compatibility-dates/#strict-compression-error-checking) compatibility flag for additional [`DecompressionStream`](/workers/runtime-apis/web-standards/#compression-streams) error checking. - -## 2023-05-26 - -- A new [Hibernatable WebSockets API](/durable-objects/api/hibernatable-websockets-api/) (beta) has been added to [Durable Objects](/durable-objects/). The Hibernatable WebSockets API allows a Durable Object that is not currently running an event handler (for example, processing a WebSocket message or alarm) to be removed from memory while keeping its WebSockets connected (“hibernation”). A Durable Object that hibernates will not incur billable Duration (GB-sec) charges. - -## 2023-05-16 - -- The [new `connect()` method](/workers/runtime-apis/tcp-sockets/) allows you to connect to any TCP-speaking services directly from your Workers. To learn more about other protocols supported on the Workers platform, visit the [new Protocols documentation](/workers/learning/protocols/). -- We have added new [native database integrations](/workers/databases/native-integrations/) for popular serverless database providers, including Neon, PlanetScale, and Supabase. Native integrations automatically handle the process of creating a connection string and adding it as a Secret to your Worker. -- You can now also connect directly to databases over TCP from a Worker, starting with [PostgreSQL](/workers/databases/connect-to-postgres/). Support for PostgreSQL is based on the popular `pg` driver, and allows you to connect to any PostgreSQL instance over TLS from a Worker directly. -- The [R2 Migrator](/r2/data-migration/) (Super Slurper), which automates the process of migrating from existing object storage providers to R2, is now Generally Available. - -## 2023-05-15 - -- [Cursor](/workers/ai/), an experimental AI assistant, trained to answer questions about Cloudflare's Developer Platform, is now available to preview! Cursor can answer questions about Workers and the Cloudflare Developer Platform, and is itself built on Workers. You can read more about Cursor in the [announcement blog](https://blog.cloudflare.com/introducing-cursor-the-ai-assistant-for-docs/). - -## 2023-05-12 - -- The [`performance.now()`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) and [`performance.timeOrigin`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/timeOrigin) APIs can now be used in Cloudflare Workers. Just like `Date.now()`, for [security reasons](/workers/learning/security-model/) time only advances after I/O. - -## 2023-05-05 - -- The new `nodeJsCompatModule` type can be used with a Worker bundle to emulate a Node.js environment. Common Node.js globals such as `process` and `Buffer` will be present, and `require('...')` can be used to load Node.js built-ins without the `node:` specifier prefix. -- Fixed an issue where websocket connections would be disconnected when updating workers. Now, only websockets connected to Durable Object instances are disconnected by updates to that Durable Object’s code. - -## 2023-04-28 - -- The Web Crypto API now supports curves Ed25519 and X25519 defined in the Secure Curves specification. -- The global `connect` method has been moved to a `cloudflare:sockets` module. - -## 2023-04-14 - -- No externally-visible changes this week. - -## 2023-04-10 - -- `URL.canParse(...)` is a new standard API for testing that an input string can be parsed successfully as a URL without the additional cost of creating and throwing an error. -- The Workers-specific `IdentityTransformStream` and `FixedLengthStream` classes now support specifying a `highWaterMark` for the writable-side that is used for backpressure signaling using the standard `writer.desiredSize`/`writer.ready` mechanisms. - -## 2023-03-24 - -- Fixed a bug in Wrangler tail and and live logs on the dashboard that prevented the Administrator Read-Only and Workers Tail Read roles from successfully tailing Workers. - -## 2023-03-09 - -- No externally-visible changes - -## 2023-03-06 - -- [Workers Logpush](/workers/observability/logpush/#limits) now supports 300 characters per log line. This is an increase from the previous limit of 150 characters per line. - -## 2023-02-06 - -- Fixed a bug where transferring large request bodies to a Durable Object was unexpectedly slow. -- Previously, an error would be thrown when trying to access unimplemented standard `Request` and `Response` properties. Now those will be left as `undefined`. - -## 2023-01-13 - -- Durable Objects can now use jurisdictions with `idFromName` via a new subnamespace API. -- V8 updated to 10.9. + ## 2022-12-16 diff --git a/data/changelogs/d1.yaml b/data/changelogs/d1.yaml new file mode 100644 index 000000000000000..c8c3a6f41d51dac --- /dev/null +++ b/data/changelogs/d1.yaml @@ -0,0 +1,93 @@ +--- +link: "/d1/changelog/" +productName: D1 +entries: +- publish_date: '2023-08-19' + title: Row count now returned per query + description: |- + D1 now returns a count of `rows_written` and `rows_read` for every query executed, allowing you to assess the cost of query for both [pricing](/d1/platform/pricing/) and [index optimization](/d1/learning/using-indexes/) purposes. + + The `meta` object returned in [D1's Client API](/d1/platform/client-api/) contains a total count of the rows read (`rows_read`) and rows written (`rows_written`) by that query. For example, a query that performs a full table scan (for example, `SELECT * FROM users`) from a table with 5000 rows would return a `rows_read` value of `5000`: + ```json + "meta": { + "duration": 0.20472300052642825, + "size_after": 45137920, + "rows_read": 5000, + "rows_written": 0 + } + ``` + + Refer to [D1 pricing documentation](/d1/platform/pricing/) to understand how reads and writes are measured. D1 remains free to use during the alpha period. +- publish_date: '2023-08-09' + title: Bind D1 from the Cloudflare dashboard + description: |- + You can now [bind a D1 database](/d1/get-started/#3-bind-your-worker-to-your-d1-database) to your Workers directly in the [Cloudflare dashboard](https://dash.cloudflare.com). To bind D1 from the Cloudflare dashboard, select your Worker project -> **Settings** -> **Variables** -> and select **D1 Database Bindings**. + + Note: If you have previously deployed a Worker with a D1 database binding with a version of `wrangler` prior to `3.5.0`, you must upgrade to [`wrangler v3.5.0`](https://github.com/cloudflare/workers-sdk/releases/tag/wrangler%403.5.0) first before you can edit your D1 database bindings in the Cloudflare dashboard. New Workers projects do not have this limitation. + + Legacy D1 alpha users who had previously prefixed their database binding manually with `__D1_BETA__` should remove this as part of this upgrade. Your Worker scripts should call your D1 database via `env.BINDING_NAME` only. Refer to the latest [D1 getting started guide](/d1/get-started/#3-bind-your-worker-to-your-d1-database) for best practices. + + We recommend all D1 alpha users begin using wrangler `3.5.0` (or later) to benefit from improved TypeScript types and future D1 API improvements. +- publish_date: '2023-08-01' + title: Per-database limit now 500 MB + description: |- + Databases using D1's [new storage subsystem](/d1/changelog/#new-default-storage-subsystem) can now grow to 500 MB each, up from the previous 100 MB limit. This applies to both existing and newly created databases. + + Refer to [Limits](/d1/platform/limits/) to learn about D1's limits. +- publish_date: '2023-07-27' + title: New default storage subsystem + description: |- + Databases created via the Cloudflare dashboard and Wrangler (as of `v3.4.0`) now use D1's new storage subsystem by default. The new backend can [be 6 - 20x faster](https://blog.cloudflare.com/d1-turning-it-up-to-11/) than D1's original alpha backend. + + To understand which storage subsystem your database uses, run `wrangler d1 info YOUR_DATABASE` and inspect the version field in the output. + + Databases with `version: beta` use the new storage backend and support the [Time Travel](/d1/learning/time-travel/) API. Databases with `version: alpha` only use D1's older, legacy backend. +- publish_date: '2023-07-27' + title: Time Travel + description: |- + [Time Travel](/d1/learning/time-travel/) is now available. Time Travel allows you to restore a D1 database back to any minute within the last 30 days (Workers Paid plan) or 7 days (Workers Free plan), at no additional cost for storage or restore operations. + + Refer to the [Time Travel](/d1/learning/time-travel/) documentation to learn how to travel backwards in time. + + Databases using D1's [new storage subsystem](https://blog.cloudflare.com/d1-turning-it-up-to-11/) can use Time Travel. Time Travel replaces the [snapshot-based backups](/d1/learning/backups/) used for legacy alpha databases. +- publish_date: '2023-06-28' + title: Metrics and analytics + description: |- + You can now view [per-database metrics](/d1/platform/metrics-analytics/) via both the [Cloudflare dashboard](https://dash.cloudflare.com/) and the [GraphQL Analytics API](/analytics/graphql-api/). + + D1 currently exposes read & writes per second, query response size, and query latency percentiles. +- publish_date: '2023-06-16' + title: Generated columns documentation + description: New documentation has been published on how to use D1's support for + [generated columns](/d1/learning/generated-columns/) to define columns that are + dynamically generated on write (or read). Generated columns allow you to extract + data from [JSON objects](/d1/learning/querying-json/) or use the output of other + SQL functions. +- publish_date: '2023-06-12' + title: Deprecating Error.cause + description: |- + As of [`wrangler v3.1.1`](https://github.com/cloudflare/workers-sdk/releases/tag/wrangler%403.1.1) the [D1 client API](/d1/platform/client-api/) now returns [detailed error messages](/d1/platform/client-api/#errors) within the top-level `Error.message` property, and no longer requires developers to inspect the `Error.cause.message` property. + + To facilitate a transition from the previous `Error.cause` behaviour, detailed error messages will continue to be populated within `Error.cause` as well as the top-level `Error` object until approximately July 14th, 2023. Future versions of both `wrangler` and the D1 client API will no longer populate `Error.cause` after this date. +- publish_date: '2023-05-19' + title: New experimental backend + description: |- + D1 has a new experimental storage back end that dramatically improves query throughput, latency and reliability. The experimental back end will become the default back end in the near future. To create a database using the experimental backend, use `wrangler` and set the `--experimental-backend` flag when creating a database: + ```sh + $ wrangler d1 create your-database --experimental-backend + ``` + + Read more about the experimental back end in the [announcement blog](https://blog.cloudflare.com/d1-turning-it-up-to-11/). +- publish_date: '2023-05-19' + title: Location hints + description: You can now provide a [location hint](/d1/learning/data-location/) + when creating a D1 database, which will influence where the leader (writer) is + located. By default, D1 will automatically create your database in a location + close to where you issued the request to create a database. In most cases this + allows D1 to choose the optimal location for your database on your behalf. +- publish_date: '2023-05-17' + title: Query JSON + description: "[New documentation](/d1/learning/querying-json/) has been published + that covers D1's extensive JSON function support. JSON functions allow you to + parse, query and modify JSON directly from your SQL queries, reducing the number + of round trips to your database, or data queried." diff --git a/data/changelogs/pages.yaml b/data/changelogs/pages.yaml new file mode 100644 index 000000000000000..6c22f5ddcd7a699 --- /dev/null +++ b/data/changelogs/pages.yaml @@ -0,0 +1,88 @@ +--- +link: "/pages/platform/changelog/" +productName: Pages +entries: +- publish_date: '2023-02-14' + title: Analytics Engine now available in Functions + description: Added support for [Analytics Engine](/analytics/analytics-engine/) + in Functions. +- publish_date: '2023-01-05' + title: Queues now available in Functions + description: Added support for [Queues](/queues/) producer in Functions. +- publish_date: '2022-12-15' + title: API messaging update + description: Updated all API messaging to be more helpful. +- publish_date: '2022-12-01' + title: Ability to delete aliased deployments + description: |- + Aliased deployments can now be deleted. + + If using the API, you will need to add the query parameter `force=true`. +- publish_date: '2022-11-19' + title: Deep linking to a Pages deployment + description: |- + You can now deep-link to a Pages deployment in the dashboard with `:pages-deployment`. + + An example would be `https://dash.cloudflare.com?to=/:account/pages/view/:pages-project/:pages-deployment`. +- publish_date: '2022-11-17' + title: Functions GA and other updates + description: |- + Pages functions are now GA. For more information, refer to the [blog post](https://blog.cloudflare.com/pages-function-goes-ga/). + + We also made the following updates to Functions: + + - [Functions metrics](https://dash.cloudflare.com?to=/:account/pages/view/:pages-project/analytics/production) are now available in the dashboard. + - [Functions billing](/pages/platform/functions/pricing) is now available. + - The [Unbound usage model](/workers/platform/limits/#response-limits) is now available for Functions. + - [Secrets](/pages/platform/functions/bindings/#secrets) are now available. + - Functions tailing is now available via the [dashboard](https://dash.cloudflare.com?to=/:account/pages/view/:pages-project/:pages-deployment/functions) or with Wrangler (`wrangler pages deployment tail`). +- publish_date: '2022-11-15' + title: Service bindings now available in Functions + description: Service bindings are now available in Functions. For more details, + refer to the [docs](/pages/platform/functions/bindings/#service-bindings). +- publish_date: '2022-11-03' + title: Ansi color codes in build logs + description: Build log now supports ansi color codes. +- publish_date: '2022-10-05' + title: Deep linking to a Pages project + description: |- + You can now deep-link to a Pages project in the dashboard with `:pages-project`. + + An example would be `https://dash.cloudflare.com?to=/:account/pages/view/:pages-project`. +- publish_date: '2022-09-12' + title: Increased domain limits + description: |- + Previously, all plans had a maximum of 10 [custom domains](/pages/platform/custom-domains/) per project. + + Now, the limits are: + + - **Free**: 100 custom domains. + - **Pro**: 250 custom domains. + - **Business** and **Enterprise**: 500 custom domains. +- publish_date: '2022-09-08' + title: Support for _routes.json + description: Pages now offers support for `_routes.json`. For more details, refer + to the [documentation](/pages/platform/functions/routing/#functions-invocation-routes). +- publish_date: '2022-08-25' + title: Increased build log expiration time + description: Build log expiration time increased from 2 weeks to 1 year. +- publish_date: '2022-08-08' + title: New bindings supported + description: R2 and D1 [bindings](/pages/platform/functions/bindings/) are now supported. +- publish_date: '2022-07-05' + title: Added support for .dev.vars in wrangler pages + description: |- + Pages now supports `.dev.vars` in `wrangler pages`, which allows you to use use environmental variables during your local development without chaining `--env`s. + + This functionality requires Wrangler v2.0.16 or higher. +- publish_date: '2022-06-13' + title: Added deltas to wrangler pages publish + description: |- + Pages has added deltas to `wrangler pages publish`. + + We now keep track of the files that make up each deployment and intelligently only upload the files that we have not seen. This means that similar subsequent deployments should only need to upload a minority of files and this will hopefully make uploads even faster. + + This functionality requires Wrangler v2.0.11 or higher. +- publish_date: '2022-06-08' + title: Added branch alias to PR comments + description: PR comments for Pages previews now include the branch alias. diff --git a/data/changelogs/queues.yaml b/data/changelogs/queues.yaml new file mode 100644 index 000000000000000..1ba0b45b987cc80 --- /dev/null +++ b/data/changelogs/queues.yaml @@ -0,0 +1,37 @@ +--- +link: "/queues/changelog/" +productName: Queues +entries: +- publish_date: '2023-03-28' + title: Consumer concurrency (enabled) + description: Queue consumers will now [automatically scale up](/queues/learning/consumer-concurrency/) + based on the number of messages being written to the queue. To control or limit + concurrency, you can explicitly define a [`max_concurrency`](/queues/platform/configuration/#consumer) + for your consumer. +- publish_date: '2023-03-15' + title: Consumer concurrency (upcoming) + description: |- + Queue consumers will soon automatically scale up concurrently as a queues' backlog grows in order to keep overall message processing latency down. Concurrency will be enabled on all existing queues by 2023-03-28. + + **To opt-out, or to configure a fixed maximum concurrency**, set `max_concurrency = 1` in your `wrangler.toml` file or via [the queues dashboard](https://dash.cloudflare.com/?to=/:account/queues). + + **To opt-in, you do not need to take any action**: your consumer will begin to scale out as needed to keep up with your message backlog. It will scale back down as the backlog shrinks, and/or if a consumer starts to generate a higher rate of errors. To learn more about how consumers scale, refer to the [consumer concurrency](/queues/learning/consumer-concurrency/) documentation. +- publish_date: '2023-03-02' + title: Explicit acknowledgement (new feature) + description: |- + You can now [acknowledge individual messages with a batch](/queues/learning/batching-retries/#explicit-acknowledgement) by calling `.ack()` on a message. + + This allows you to mark a message as delivered as you process it within a batch, and avoids the entire batch from being redelivered if your consumer throws an error during batch processing. This can be particularly useful when you are calling external APIs, writing messages to a database, or otherwise performing non-idempotent actions on individual messages within a batch. +- publish_date: '2023-03-01' + title: Higher per-queue throughput + description: The per-queue throughput limit has now been [raised to 400 messages + per second](/queues/platform/limits/). +- publish_date: '2022-12-12' + title: Increased per-account limits + description: Queues now allows developers to create up to 100 queues per account, + up from the initial beta limit of 10 per account. This limit will continue to + increase over time. +- publish_date: '2022-12-13' + title: sendBatch support + description: The JavaScript API for Queue producers now includes a `sendBatch` method + which supports sending up to 100 messages at a time. diff --git a/data/changelogs/r2.yaml b/data/changelogs/r2.yaml new file mode 100644 index 000000000000000..62148a9c17130eb --- /dev/null +++ b/data/changelogs/r2.yaml @@ -0,0 +1,231 @@ +--- +link: "/r2/reference/changelog/" +productName: R2 +entries: +- publish_date: '2023-07-05' + description: |- + - Improved performance for ranged reads on very large files. Previously ranged reads near the end of very large files would be noticeably slower than + ranged reads on smaller files. Performance should now be consistently good independent of filesize. +- publish_date: '2023-06-21' + description: |- + - [Multipart ETags](/r2/objects/multipart-objects/#etags) are now MD5 + hashes. +- publish_date: '2023-06-16' + description: |- + - Fixed a bug where calling [GetBucket](/api/operations/r2-get-bucket) on a non-existent bucket would return a 500 instead of a 404. + - Improved S3 compatibility for ListObjectsV1, now nextmarker is only set when truncated is true. + - The R2 worker bindings now support parsing conditional headers with multiple etags. These etags can now be strong, weak or a wildcard. Previously the bindings only accepted headers containing a single strong etag. + - S3 putObject now supports sha256 and sha1 checksums. These were already supported by the R2 worker bindings. + - CopyObject in the S3 compatible api now supports Cloudflare specific headers which allow the copy operation to be conditional on the state of the destination object. +- publish_date: '2023-04-01' + description: |- + - [GetBucket](/api/operations/r2-get-bucket) is now available for use through the Cloudflare API. + - [Location hints](https://developers.cloudflare.com/r2/buckets/data-location/) can now be set when creating a bucket, both through the S3 API, and the dashboard. +- publish_date: '2023-03-16' + description: |- + - The ListParts API has been implemented and is available for use. + - HTTP2 is now enabled by default for new custom domains linked to R2 buckets. + - Object Lifecycles are now available for use. + - Bug fix: Requests to public buckets will now return the `Content-Encoding` header for gzip files when `Accept-Encoding: gzip` is used. +- publish_date: '2023-01-27' + description: |- + - R2 authentication tokens created via the R2 token page are now scoped + to a single account by default. +- publish_date: '2022-12-07' + description: |- + - Fix CORS preflight requests for the S3 API, which allows using the S3 SDK in the browser. + - Passing a range header to the `get` operation in the R2 bindings API should now work as expected. +- publish_date: '2022-11-30' + description: |- + - Requests with the header `x-amz-acl: public-read` are no longer rejected. + - Fixed issues with wildcard CORS rules and presigned URLs. + - Fixed an issue where `ListObjects` would time out during delimited listing of unicode-normalized keys. + - S3 API's `PutBucketCors` now rejects requests with unknown keys in the XML body. + - Signing additional headers no longer breaks CORS preflight requests for presigned URLs. +- publish_date: '2022-11-21' + description: |- + - Fixed a bug in `ListObjects` where `startAfter` would skip over objects with keys that have numbers right after the `startAfter` prefix. + - Add worker bindings for multipart uploads. +- publish_date: '2022-11-17' + description: |- + - Unconditionally return HTTP 206 on ranged requests to match behavior of other S3 compatible implementations. + - Fixed a CORS bug where `AllowedHeaders` in the CORS config were being treated case-sensitively. +- publish_date: '2022-11-08' + description: |- + - Copying multipart objects via `CopyObject` is re-enabled. + - `UploadPartCopy` is re-enabled. +- publish_date: '2022-10-28' + description: |- + - Multipart upload part sizes are always expected to be of the same size, but this enforcement is now done when you complete an upload instead of being done very time you upload a part. + - Fixed a performance issue where concurrent multipart part uploads would get rejected. +- publish_date: '2022-10-26' + description: |- + - Fixed ranged reads for multipart objects with part sizes unaligned + to 64KiB. +- publish_date: '2022-10-19' + description: |- + - `HeadBucket` now sets `x-amz-bucket-region` to `auto` in the response. +- publish_date: '2022-10-06' + description: |- + - Temporarily disabled `UploadPartCopy` while we investigate an issue. +- publish_date: '2022-09-29' + description: |- + - Fixed a CORS issue where `Access-Control-Allow-Headers` was not being + set for preflight requests. +- publish_date: '2022-09-28' + description: |- + - Fixed a bug where CORS configuration was not being applied to S3 endpoint. + - No-longer render the `Access-Control-Expose-Headers` response header if `ExposeHeader` is not defined. + - Public buckets will no-longer return the `Content-Range` response header unless the response is partial. + - Fixed CORS rendering for the S3 `HeadObject` operation. + - Fixed a bug where no matching CORS configuration could result in a `403` response. + - Temporarily disable copying objects that were created with multipart uploads. + - Fixed a bug in the Workers bindings where an internal error was being returned for malformed ranged `.get` requests. +- publish_date: '2022-09-27' + description: |- + - CORS preflight responses and adding CORS headers for other responses is now implemented for S3 and public buckets. Currently, the only way to configure CORS is via the S3 API. + - Fixup for bindings list truncation to work more correctly when listing keys with custom metadata that have `"` or when some keys/values contain certain multi-byte UTF-8 values. + - The S3 `GetObject` operation now only returns `Content-Range` in response to a ranged request. +- publish_date: '2022-09-19' + description: |- + - The R2 `put()` binding options can now be given an `onlyIf` field, similar to `get()`, that performs a conditional upload. + - The R2 `delete()` binding now supports deleting multiple keys at once. + - The R2 `put()` binding now supports user-specified SHA-1, SHA-256, SHA-384, SHA-512 checksums in options. + - User-specified object checksums will now be available in the R2 `get()` and `head()` bindings response. MD5 is included by default for non-multipart uploaded objects. +- publish_date: '2022-09-06' + description: |- + - The S3 `CopyObject` operation now includes `x-amz-version-id` and `x-amz-copy-source-version-id` in the response headers for consistency with other methods. + - The `ETag` for multipart files uploaded until shortly after Open Beta uploaded now include the number of parts as a suffix. +- publish_date: '2022-08-17' + description: |- + - The S3 `DeleteObjects` operation no longer trims the space from around the keys before deleting. This would result in files with leading / trailing spaces not being able to be deleted. Additionally, if there was an object with the trimmed key that existed it would be deleted instead. The S3 `DeleteObject` operation was not affected by this. + - Fixed presigned URL support for the S3 `ListBuckets` and `ListObjects` operations. +- publish_date: '2022-08-06' + description: |- + - Uploads will automatically infer the `Content-Type` based on file body + if one is not explicitly set in the `PutObject` request. This functionality will + come to multipart operations in the future. +- publish_date: '2022-07-30' + description: |- + - Fixed S3 conditionals to work properly when provided the `LastModified` date of the last upload, bindings fixes will come in the next release. + - `If-Match` / `If-None-Match` headers now support arrays of ETags, Weak ETags and wildcard (`*`) as per the HTTP standard and undocumented AWS S3 behavior. +- publish_date: '2022-07-21' + description: |- + - Added dummy implementation of the following operation that mimics + the response that a basic AWS S3 bucket will return when first created: `GetBucketAcl`. +- publish_date: '2022-07-20' + description: |- + - Added dummy implementations of the following operations that mimic the response that a basic AWS S3 bucket will return when first created: + + - `GetBucketVersioning` + - `GetBucketLifecycleConfiguration` + - `GetBucketReplication` + - `GetBucketTagging` + - `GetObjectLockConfiguration` +- publish_date: '2022-07-19' + description: |- + - Fixed an S3 compatibility issue for error responses with MinIO .NET SDK and any other tooling that expects no `xmlns` namespace attribute on the top-level `Error` tag. + - List continuation tokens prior to 2022-07-01 are no longer accepted and must be obtained again through a new `list` operation. + - The `list()` binding will now correctly return a smaller limit if too much data would otherwise be returned (previously would return an `Internal Error`). +- publish_date: '2022-07-14' + description: |- + - Improvements to 500s: we now convert errors, so things that were previously concurrency problems for some operations should now be `TooMuchConcurrency` instead of `InternalError`. We've also reduced the rate of 500s through internal improvements. + - `ListMultipartUpload` correctly encodes the returned `Key` if the `encoding-type` is specified. +- publish_date: '2022-07-13' + description: |- + - S3 XML documents sent to R2 that have an XML declaration are not rejected with `400 Bad Request` / `MalformedXML`. + - Minor S3 XML compatibility fix impacting Arq Backup on Windows only (not the Mac version). Response now contains XML declaration tag prefix and the xmlns attribute is present on all top-level tags in the response. + - Beta `ListMultipartUploads` support. +- publish_date: '2022-07-06' + description: |- + - Support the `r2_list_honor_include` compat flag coming up in an upcoming runtime release (default behavior as of 2022-07-14 compat date). Without that compat flag/date, list will continue to function implicitly as `include: ['httpMetadata', 'customMetadata']` regardless of what you specify. + - `cf-create-bucket-if-missing` can be set on a `PutObject`/`CreateMultipartUpload` request to implicitly create the bucket if it does not exist. + - Fix S3 compatibility with MinIO client spec non-compliant XML for publishing multipart uploads. Any leading and trailing quotes in `CompleteMultipartUpload` are now optional and ignored as it seems to be the actual non-standard behavior AWS implements. +- publish_date: '2022-07-01' + description: |- + - Unsupported search parameters to `ListObjects`/`ListObjectsV2` are + now rejected with `501 Not Implemented`. + - Fixes for Listing: + - Fix listing behavior when the number of files within a folder exceeds the limit (you'd end + up seeing a CommonPrefix for that large folder N times where N = number of children + within the CommonPrefix / limit). + - Fix corner case where listing could cause + objects with sharing the base name of a \"folder\" to be skipped. + - Fix listing over some files that shared a certain common prefix. + - `DeleteObjects` can now handle 1000 objects at a time. + - S3 `CreateBucket` request can specify `x-amz-bucket-object-lock-enabled` with a value of `false` and not have the requested rejected with a `NotImplemented` + error. A value of `true` will continue to be rejected as R2 does not yet support + object locks. +- publish_date: '2022-06-17' + description: |- + - Fixed a regression for some clients when using an empty delimiter. + - Added support for S3 pre-signed URLs. +- publish_date: '2022-06-16' + description: |- + - Fixed a regression in the S3 API `UploadPart` operation where `TooMuchConcurrency` + & `NoSuchUpload` errors were being returned as `NoSuchBucket`. +- publish_date: '2022-06-13' + description: |- + - Fixed a bug with the S3 API `ListObjectsV2` operation not returning empty folder/s as common prefixes when using delimiters. + - The S3 API `ListObjectsV2` `KeyCount` parameter now correctly returns the sum of keys and common prefixes rather than just the keys. + - Invalid cursors for list operations no longer fail with an `InternalError` and now return the appropriate error message. +- publish_date: '2022-06-10' + description: |- + - The `ContinuationToken` field is now correctly returned in the response if provided in a S3 API `ListObjectsV2` request. + - Fixed a bug where the S3 API `AbortMultipartUpload` operation threw an error when called multiple times. +- publish_date: '2022-05-27' + description: |- + - Fixed a bug where the S3 API's `PutObject` or the `.put()` binding could fail but still show the bucket upload as successful. + - If [conditional headers](https://datatracker.ietf.org/doc/html/rfc7232) are provided to S3 API `UploadObject` or `CreateMultipartUpload` operations, and the object exists, a `412 Precondition Failed` status code will be returned if these checks are not met. +- publish_date: '2022-05-20' + description: |- + - Fixed a bug when `Accept-Encoding` was being used in `SignedHeaders` + when sending requests to the S3 API would result in a `SignatureDoesNotMatch` + response. +- publish_date: '2022-05-17' + description: |- + - Fixed a bug where requests to the S3 API were not handling non-encoded parameters used for the authorization signature. + - Fixed a bug where requests to the S3 API where number-like keys were being parsed as numbers instead of strings. +- publish_date: '2022-05-16' + description: |- + - Add support for S3 [virtual-hosted style paths](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html), such as `..r2.cloudflarestorage.com` instead of path-based routing (`.r2.cloudflarestorage.com/`). + - Implemented `GetBucketLocation` for compatibility with external tools, this will always return a `LocationConstraint` of `auto`. +- publish_date: '2022-05-06' + description: |- + - S3 API `GetObject` ranges are now inclusive (`bytes=0-0` will correctly return the first byte). + - S3 API `GetObject` partial reads return the proper `206 Partial Content` response code. + - Copying from a non-existent key (or from a non-existent bucket) to another bucket now returns the proper `NoSuchKey` / `NoSuchBucket` response. + - The S3 API now returns the proper `Content-Type: application/xml` response header on relevant endpoints. + - Multipart uploads now have a `-N` suffix on the etag representing the number of parts the file was published with. + - `UploadPart` and `UploadPartCopy` now return proper error messages, such as `TooMuchConcurrency` or `NoSuchUpload`, instead of 'internal error'. + - `UploadPart` can now be sent a 0-length part. +- publish_date: '2022-05-05' + description: |- + - When using the S3 API, an empty string and `us-east-1` will now alias to the `auto` region for compatibility with external tools. + - `GetBucketEncryption`, `PutBucketEncryption` and `DeleteBucketEncrypotion` are now supported (the only supported value currently is `AES256`). + - Unsupported operations are explicitly rejected as unimplemented rather than implicitly converting them into `ListObjectsV2`/`PutBucket`/`DeleteBucket` respectively. + - S3 API `CompleteMultipartUploads` requests are now properly escaped. +- publish_date: '2022-05-03' + description: |- + - Pagination cursors are no longer returned when the keys in a bucket is the same as the `MaxKeys` argument. + - The S3 API `ListBuckets` operation now accepts `cf-max-keys`, `cf-start-after` and `cf-continuation-token` headers behave the same as the respective URL parameters. + - The S3 API `ListBuckets` and `ListObjects` endpoints now allow `per_page` to be 0. + - The S3 API `CopyObject` source parameter now requires a leading slash. + - The S3 API `CopyObject` operation now returns a `NoSuchBucket` error when copying to a non-existent bucket instead of an internal error. + - Enforce the requirement for `auto` in SigV4 signing and the `CreateBucket` `LocationConstraint` parameter. + - The S3 API `CreateBucket` operation now returns the proper `location` response header. +- publish_date: '2022-04-14' + description: |- + - The S3 API now supports unchunked signed payloads. + - Fixed `.put()` for the Workers R2 bindings. + - Fixed a regression where key names were not properly decoded when using the S3 API. + - Fixed a bug where deleting an object and then another object which is a prefix of the first could result in errors. + - The S3 API `DeleteObjects` operation no longer returns an error even though an object has been deleted in some cases. + - Fixed a bug where `startAfter` and `continuationToken` were not working in list operations. + - The S3 API `ListObjects` operation now correctly renders `Prefix`, `Delimiter`, `StartAfter` and `MaxKeys` in the response. + - The S3 API `ListObjectsV2` now correctly honors the `encoding-type` parameter. + - The S3 API `PutObject` operation now works with `POST` requests for `s3cmd` compatibility. +- publish_date: '2022-04-04' + description: |- + - The S3 API `DeleteObjects` request now properly returns a `MalformedXML` + error instead of `InternalError` when provided with more than 128 keys. diff --git a/data/changelogs/stream.yaml b/data/changelogs/stream.yaml new file mode 100644 index 000000000000000..fc3d5fe803d7484 --- /dev/null +++ b/data/changelogs/stream.yaml @@ -0,0 +1,285 @@ +--- +link: "/stream/changelog/" +productName: Stream +entries: +- publish_date: '2023-08-08' + title: Scheduled Deletion + description: |- + Stream now supports adding a scheduled deletion date to new and existing videos. Live inputs support deletion policies for automatic recording deletion. + + For more, refer to the [video on demand](/stream/uploading-videos/) or [live input](/stream/stream-live/) docs. +- publish_date: '2023-05-16' + title: Multiple audio tracks now generally available + description: |- + Stream supports adding multiple audio tracks to an existing video. + + For more, refer to the [documentation](https://developers.cloudflare.com/stream/edit-videos/adding-additional-audio-tracks/) to get started. +- publish_date: '2023-04-26' + title: Player Enhancement Properties + description: |- + Cloudflare Stream now supports player enhancement properties. + + With player enhancements, you can modify your video player to incorporate elements of your branding, such as your logo, and customize additional options to present to your viewers. + + For more, refer to the [documentation](https://developers.cloudflare.com/stream/edit-videos/player-enhancements/) to get started. +- publish_date: '2023-03-21' + title: Limits for downloadable MP4s for live recordings + description: |- + Previously, generating a download for a live recording exceeding four hours resulted in failure. + + To fix the issue, now video downloads are only available for live recordings under four hours. Live recordings exceeding four hours can still be played but cannot be downloaded. +- publish_date: '2023-01-04' + title: Earlier detection (and rejection) of non-video uploads + description: |- + Cloudflare Stream now detects non-video content on upload using [the POST API](/stream/uploading-videos/upload-video-file/) and returns a 400 Bad Request HTTP error with code `10059`. + + Previously, if you or one of your users attempted to upload a file that is not a video (ex: an image), the request to upload would appear successful, but then fail to be encoded later on. + + With this change, Stream responds to the upload request with an error, allowing you to give users immediate feedback if they attempt to upload non-video content. +- publish_date: '2022-12-08' + title: Faster mp4 downloads of live recordings + description: Generating MP4 downloads of live stream recordings is now significantly + faster. For more, refer to [the docs](/stream/stream-live/download-stream-live-videos/). +- publish_date: '2022-11-29' + title: Multiple audio tracks (closed beta) + description: |- + Stream now supports adding multiple audio tracks to an existing video upload. This allows you to: + + - Provide viewers with audio tracks in multiple languages + - Provide dubbed audio tracks, or audio commentary tracks (ex: Director’s Commentary) + - Allow your users to customize the customize the audio mix, by providing separate audio tracks for music, speech or other audio tracks. + - Provide Audio Description tracks to ensure your content is accessible. ([WCAG 2.0 Guideline 1.2 1](https://www.w3.org/TR/WCAG20/#media-equiv-audio-desc-only)) + + To request an invite to the beta, refer to [this post](https://community.cloudflare.com/t/new-in-beta-support-for-multiple-audio-tracks/439629). +- publish_date: '2022-11-22' + title: VP9 support for WebRTC live streams (beta) + description: Cloudflare Stream now supports [VP9](https://developers.google.com/media/vp9) + when streaming using [WebRTC (WHIP)](/stream/webrtc-beta/), currently in beta. +- publish_date: '2022-11-08' + title: Reduced time to start WebRTC streaming and playback with Trickle ICE + description: |- + Cloudflare Stream's [WHIP](https://datatracker.ietf.org/doc/draft-ietf-wish-whip/) and [WHEP](https://www.ietf.org/archive/id/draft-murillo-whep-01.html) implementations now support [Trickle ICE](https://datatracker.ietf.org/doc/rfc8838/), reducing the time it takes to initialize WebRTC connections, and increasing compatibility with WHIP and WHEP clients. + + For more, refer to [the docs](/stream/webrtc-beta/). +- publish_date: '2022-11-07' + title: Deprecating the 'per-video' Analytics API + description: |- + The “per-video” analytics API is being deprecated. If you still use this API, you will need to switch to using the [GraphQL Analytics API](/stream/getting-analytics/fetching-bulk-analytics/) by February 1, 2023. After this date, the per-video analytics API will be no longer available. + + The GraphQL Analytics API provides the same functionality and more, with additional filters and metrics, as well as the ability to fetch data about multiple videos in a single request. Queries are faster, more reliable, and built on a shared analytics system that you can [use across many Cloudflare products](/analytics/graphql-api/features/data-sets/). + + For more about this change and how to migrate existing API queries, refer to [this post](https://community.cloudflare.com/t/migrate-to-the-stream-graphql-analytics-api-by-feb-1st-2023/433252) and the [GraphQL Analytics API docs](/stream/getting-analytics/fetching-bulk-analytics/). +- publish_date: '2022-11-01' + title: Create an unlimited number of live inputs + description: |- + Cloudflare Stream now has no limit on the number of [live inputs](/api/operations/stream-live-inputs-retrieve-a-live-input) you can create. Stream is designed to allow your end-users to go live — live inputs can be created quickly on-demand via a single API request for each of user of your platform or app. + + For more on creating and managing live inputs, get started with the [docs](/stream/stream-live/). +- publish_date: '2022-10-20' + title: More accurate bandwidth estimates for live video playback + description: |- + When playing live video, Cloudflare Stream now provides significantly more accurate estimates of the bandwidth needs of each quality level to client video players. This ensures that live video plays at the highest quality that viewers have adequate bandwidth to play. + + As live video is streamed to Cloudflare, we transcode it to make it available to viewers at mulitple quality levels. During transcoding, we learn about the real bandwidth needs of each segment of video at each quality level, and use this to provide an estimate of the bandwidth requirements of each quality level the in HLS (`.m3u8`) and DASH (`.mpd`) manifests. + + If a live stream contains content with low visual complexity, like a slideshow presentation, the bandwidth estimates provided in the HLS manifest will be lower, ensuring that the most viewers possible view the highest quality level, since it requires relatively little bandwidth. Conversely, if a live stream contains content with high visual complexity, like live sports with motion and camera panning, the bandwidth estimates provided in the HLS manifest will be higher, ensuring that viewers with inadequate bandwidth switch down to a lower quality level, and their playback does not buffer. + + This change is particularly helpful if you're building a platform or application that allows your end users to create their own live streams, where these end users have their own streaming software and hardware that you can't control. Because this new functionality adapts based on the live video we receive, rather than just the configuration advertised by the broadcaster, even in cases where your end users' settings are less than ideal, client video players will not receive excessively high estimates of bandwidth requirements, causing playback quality to decrease unnecessarily. Your end users don't have to be OBS Studio experts in order to get high quality video playback. + + No work is required on your end — this change applies to all live inputs, for all customers of Cloudflare Stream. For more, refer to the [docs](/stream/stream-live/#bitrate-estimates-at-each-quality-level-bitrate-ladder). +- publish_date: '2022-10-05' + title: AV1 Codec support for live streams and recordings (beta) + description: |- + Cloudflare Stream now supports playback of live videos and live recordings using the [AV1 codec](https://aomedia.org/av1/), which uses 46% less bandwidth than H.264. + + For more, read the [blog post](https://blog.cloudflare.com/av1-cloudflare-stream-beta) or the get started with the [docs](/stream/viewing-videos/av1-playback). +- publish_date: '2022-09-27' + title: WebRTC live streaming and playback (beta) + description: |- + Cloudflare Stream now supports live video streaming over WebRTC, with sub-second latency, to unlimited concurrent viewers. + + For more, read the [blog post](https://blog.cloudflare.com/webrtc-whip-whep-cloudflare-stream) or the get started with example code in the [docs](/stream/webrtc-beta). +- publish_date: '2022-09-15' + title: Manually control when you start and stop simulcasting + description: You can now enable and disable individual live outputs via the API + or Stream dashboard, allowing you to control precisely when you start and stop + simulcasting to specific destinations like YouTube and Twitch. For more, [read + the docs](/stream/stream-live/simulcasting/#control-when-you-start-and-stop-simulcasting). +- publish_date: '2022-08-15' + title: Unique subdomain for your Stream Account + description: |- + URLs in the Stream Dashboard and Stream API now use a subdomain specific to your Cloudflare Account: `customer-{CODE}.cloudflarestream.com`. This change allows you to: + + 1. Use [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) (CSP) directives specific to your Stream subdomain, to ensure that only videos from your Cloudflare account can be played on your website. + + 2. Allowlist only your Stream account subdomain at the network-level to ensure that only videos from a specific Cloudflare account can be accessed on your network. + + No action is required from you, unless you use Content Security Policy (CSP) on your website. For more on CSP, read the [docs](/stream/faq/#i-use-content-security-policy-csp-on-my-website-what-domains-do-i-need-to-add-to-which-directives). +- publish_date: '2022-08-02' + title: Clip videos using the Stream API + description: You can now change the start and end times of a video uploaded to Cloudflare + Stream. For more information, refer to [Clip videos](/stream/edit-videos/video-clipping/). +- publish_date: '2022-07-26' + title: Live inputs + description: The Live Inputs API now supports optional pagination, search, and filter + parameters. For more information, refer to the [Live Inputs API documentation](/api/operations/stream-live-inputs-list-live-inputs). +- publish_date: '2022-05-24' + title: Picture-in-Picture support + description: The [Stream Player](/stream/viewing-videos/using-the-stream-player/) + now displays a button to activate Picture-in-Picture mode, if the viewer's web + browser supports the [Picture-in-Picture API](https://developer.mozilla.org/en-US/docs/Web/API/Picture-in-Picture_API). +- publish_date: '2022-05-13' + title: Creator ID property + description: During or after uploading a video to Stream, you can now specify a + value for a new field, `creator`. This field can be used to identify the creator + of the video content, linking the way you identify your users or creators to videos + in your Stream account. For more, read the [blog post](https://blog.cloudflare.com/stream-creator-management/). +- publish_date: '2022-03-17' + title: Analytics panel in Stream Dashboard + description: The Stream Dashboard now has an analytics panel that shows the number + of minutes of both live and recorded video delivered. This view can be filtered + by **Creator ID**, **Video UID**, and **Country**. For more in-depth analytics + data, refer to the [bulk analytics documentation](/stream/getting-analytics/fetching-bulk-analytics/). +- publish_date: '2022-03-16' + title: Custom letterbox color configuration option for Stream Player + description: The Stream Player can now be configured to use a custom letterbox color, + displayed around the video ('letterboxing' or 'pillarboxing') when the video's + aspect ratio does not match the player's aspect ratio. Refer to the documentation + on configuring the Stream Player [here](/stream/viewing-videos/using-the-stream-player/#basic-options). +- publish_date: '2022-03-10' + title: Support for SRT live streaming protocol + description: |- + Cloudflare Stream now supports the SRT live streaming protocol. SRT is a modern, actively maintained streaming video protocol that delivers lower latency, and better resilience against unpredictable network conditions. SRT supports newer video codecs and makes it easier to use accessibility features such as captions and multiple audio tracks. + + For more, read the [blog post](https://blog.cloudflare.com/stream-now-supports-srt-as-a-drop-in-replacement-for-rtmp/). +- publish_date: '2022-02-17' + title: Faster video quality switching in Stream Player + description: When viewers manually change the resolution of video they want to receive + in the Stream Player, this change now happens immediately, rather than once the + existing resolution playback buffer has finished playing. +- publish_date: '2022-02-09' + title: Volume and playback controls accessible during playback of VAST Ads + description: When viewing ads in the [VAST format](https://www.iab.com/guidelines/vast/#:~:text=VAST%20is%20a%20Video%20Ad,of%20the%20digital%20video%20marketplace.) + in the Stream Player, viewers can now manually start and stop the video, or control + the volume. +- publish_date: '2022-01-25' + title: DASH and HLS manifest URLs accessible in Stream Dashboard + description: If you choose to use a third-party player with Cloudflare Stream, you + can now easily access HLS and DASH manifest URLs from within the Stream Dashboard. + For more about using Stream with third-party players, read the docs [here](/stream/viewing-videos/using-own-player/). +- publish_date: '2022-01-22' + title: Input health status in the Stream Dashboard + description: When a live input is connected, the Stream Dashboard now displays technical + details about the connection, which can be used to debug configuration issues. +- publish_date: '2022-01-06' + title: Live viewer count in the Stream Player + description: The [Stream Player](/stream/viewing-videos/using-the-stream-player/) + now shows the total number of people currently watching a video live. +- publish_date: '2022-01-04' + title: Webhook notifications for live stream connections events + description: You can now configure Stream to send webhooks each time a live stream + connects and disconnects. For more information, refer to the [Webhooks documentation](/stream/stream-live/webhooks). +- publish_date: '2021-12-07' + title: FedRAMP Support + description: The Stream Player can now be served from a [FedRAMP](https://www.cloudflare.com/press-releases/2021/cloudflare-hits-milestone-in-fedramp-approval/) + compliant subdomain. +- publish_date: '2021-11-23' + title: 24/7 Live streaming support + description: You can now use Cloudflare Stream for 24/7 live streaming. +- publish_date: '2021-11-17' + title: Persistent Live Stream IDs + description: You can now start and stop live broadcasts without having to provide + a new video UID to the Stream Player (or your own player) each time the stream + starts and stops. [Read the docs](/stream/stream-live/watch-live-stream/#view-by-live-input-id). +- publish_date: '2021-10-14' + title: MP4 video file downloads for live videos + description: Once a live video has ended and been recorded, you can now give viewers + the option to download an MP4 video file of the live recording. For more, read + the docs [here](/stream/stream-live/download-stream-live-videos/). +- publish_date: '2021-09-30' + title: Serverless Live Streaming + description: Stream now supports live video content! For more information, read + the [blog post](https://blog.cloudflare.com/stream-live/) and get started by reading + the [docs](/stream/stream-live/). +- publish_date: '2021-07-26' + title: Thumbnail previews in Stream Player seek bar + description: The Stream Player now displays preview images when viewers hover their + mouse over the seek bar, making it easier to skip to a specific part of a video. +- publish_date: '2021-07-26' + title: MP4 video file downloads (GA) + description: All Cloudflare Stream customers can now give viewers the option to + download videos uploaded to Stream as an MP4 video file. For more, read the docs + [here](/stream/viewing-videos/download-videos/). +- publish_date: '2021-07-10' + title: Stream Connect (open beta) + description: |- + You can now opt-in to the Stream Connect beta, and use Cloudflare Stream to restream live video to any platform that accepts RTMPS input, including Facebook, YouTube and Twitch. + + For more, read the [blog post](https://blog.cloudflare.com/restream-with-stream-connect/) or the [docs](/stream/stream-live/simulcasting/). +- publish_date: '2021-06-10' + title: Simplified signed URL token generation + description: You can now obtain a signed URL token via a single API request, without + needing to generate signed tokens in your own application. [Read the docs](/stream/viewing-videos/securing-your-stream). +- publish_date: '2021-06-08' + title: Stream Connect (closed beta) + description: |- + You can now use Cloudflare Stream to restream or simulcast live video to any platform that accepts RTMPS input, including Facebook, YouTube and Twitch. + + For more, read the [blog post](https://blog.cloudflare.com/restream-with-stream-connect/) or the [docs](/stream/stream-live/simulcasting/). +- publish_date: '2021-05-03' + title: MP4 video file downloads (beta) + description: You can now give your viewers the option to download videos uploaded + to Stream as an MP4 video file. For more, read the docs [here](/stream/viewing-videos/download-videos/). +- publish_date: '2021-03-25' + title: Improved client bandwidth hints for third-party video players + description: If you use Cloudflare Stream with a third party player, and send the `clientBandwidthHint` parameter in requests to fetch video manifests, Cloudflare Stream now selects the ideal resolution to provide to your client player more intelligently. This ensures your viewers receive the ideal resolution for their network connection. +- publish_date: '2021-03-10' + title: Stream Player 2.0 (preview) + description: |- + A brand new version of the Stream Player is now available for preview. New features include: + + - Unified controls across desktop and mobile devices + - Keyboard shortcuts + - Intelligent mouse cursor interactions with player controls + - Phased out support for Internet Explorer 11 + + For more, refer to [this post](https://community.cloudflare.com/t/announcing-the-preview-build-for-stream-player-2-0/243095) on the Cloudflare Community Forum. +- publish_date: '2021-03-04' + title: Faster video encoding + description: Videos uploaded to Cloudflare Stream are now available to view 5x sooner, + reducing the time your users wait between uploading and viewing videos. +- publish_date: '2021-03-29' + title: Picture quality improvements + description: Cloudflare Stream now encodes videos with fewer artifacts, resulting + in improved video quality for your viewers. +- publish_date: '2021-03-25' + title: Improved client bandwidth hints for third-party video players + description: If you use Cloudflare Stream with a third party player, and send the + `clientBandwidthHint` parameter in requests to fetch video manifests, Cloudflare + Stream now selects the ideal resolution to provide to your client player more + intelligently. This ensures your viewers receive the ideal resolution for their + network connection. +- publish_date: '2021-03-17' + title: Less bandwidth, identical video quality + description: Cloudflare Stream now delivers video using 3-10x less bandwidth, with + no reduction in quality. This ensures faster playback for your viewers with less + buffering, particularly when viewers have slower network connections. +- publish_date: '2021-01-17' + title: Removed weekly upload limit, increased max video upload size + description: You can now upload videos up to 30GB in size to Cloudflare Stream and + also now upload an unlimited number of videos to Cloudflare Stream each week +- publish_date: '2020-12-14' + title: Tus support for direct creator uploads + description: |- + You can now use the [tus protocol](/stream/uploading-videos/direct-creator-uploads/#advanced-upload-flow-using-tus-for-large-videos) when allowing creators (your end users) to upload their own videos directly to Cloudflare Stream. + + In addition, all uploads to Cloudflare Stream made using tus are now faster and more reliable as part of this change. +- publish_date: '2020-12-09' + title: Multiple audio track mixdown + description: 'Videos with multiple audio tracks (ex: 5.1 surround sound) are now + mixed down to stereo when uploaded to Stream. The resulting video, with stereo + audio, is now playable in the Stream Player.' +- publish_date: '2020-12-02' + title: Storage limit notifications + description: Cloudflare now emails you if your account is using 75% or more of your + prepaid video storage, so that you can take action and plan ahead. diff --git a/data/changelogs/turnstile.yaml b/data/changelogs/turnstile.yaml new file mode 100644 index 000000000000000..8244f4de84e60a1 --- /dev/null +++ b/data/changelogs/turnstile.yaml @@ -0,0 +1,48 @@ +--- +link: "/turnstile/changelog/" +productName: Turnstile +entries: +- publish_date: '2023-08-24' + description: |- + - Added [Client-side errors](/turnstile/reference/client-side-errors). +- publish_date: '2023-07-31' + description: |- + - Added [`[turnstile.isExpired]`](/turnstile/get-started/client-side-rendering/#access-a-widgets-state). + - Added `uk` language. +- publish_date: '2023-05-25' + description: |- + - Added idempotency support for `POST /siteverify` requests via the `idempotency_key` parameter. +- publish_date: '2023-04-17' + description: |- + - Added references to Turnstile Public API. + - Added references for [`[after-interactive-callback]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget), [`[before-interactive-callback]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget), and [`[unsupported-callback]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget). +- publish_date: '2023-03-06' + description: |- + - Added [`[execution]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget) and [`[appearance]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget). +- publish_date: '2023-02-15' + description: |- + - Added the [`[turnstile.ready]`](/turnstile/get-started/client-side-rendering/#explicitly-render-the-turnstile-widget) callback. +- publish_date: '2023-02-01' + description: |- + - Added the [`[data-]language`](/turnstile/get-started/client-side-rendering/#configurations) parameter. +- publish_date: '2022-12-12' + description: |- + - [`POST /siteverify`](/turnstile/get-started/server-side-validation/) supports JSON requests now. +- publish_date: '2022-11-11' + description: |- + - Added [`retry` and `retry-interval`](/turnstile/get-started/client-side-rendering/#configurations) for controlling retry behavior. +- publish_date: '2022-10-28' + description: |- + - Renamed the `[data-]expired-callback` callback to [`[data-]timeout-callback`](/turnstile/get-started/client-side-rendering/#configurations) (called when the challenge times out). + - Added the [`[data-]expired-callback`](/turnstile/get-started/client-side-rendering/#configurations) callback (called when the token expires). +- publish_date: '2022-10-24' + description: |- + - Added [`response-field` and `response-field-name`](/turnstile/get-started/client-side-rendering/#configurations) for controlling the input element created by Turnstile. + - Added option for changing the [size of the Turnstile widget](/turnstile/get-started/client-side-rendering/#widget-size). +- publish_date: '2022-10-13' + description: |- + - Added validation for action: `/^[a-z0-9_-]{0,32}$/i` + - Added validation for cData: `/^[a-z0-9_-]{0,255}$/i` +- publish_date: '2022-10-11' + description: |- + - Added [`turnstile.remove`](/turnstile/get-started/client-side-rendering/#remove-a-widget) \ No newline at end of file diff --git a/data/changelogs/workers.yaml b/data/changelogs/workers.yaml new file mode 100644 index 000000000000000..2bca7afbf56f76b --- /dev/null +++ b/data/changelogs/workers.yaml @@ -0,0 +1,90 @@ +--- +link: "/workers/platform/changelog/" +productName: Workers +entries: +- publish_date: '2023-07-14' + description: |- + - An implementation of the [`util.MIMEType`](https://nodejs.org/api/util.html#class-utilmimetype) + API from Node.js is now available when the [`nodejs_compat` compatibility flag](https://developers.cloudflare.com/workers/runtime-apis/nodejs/) + is enabled. +- publish_date: '2023-07-07' + description: |- + - An implementation of the [`process.env`](/workers/runtime-apis/nodejs/process) API from Node.js is now available when using the `nodejs_compat` compatibility flag. + - An implementation of the [`diagnostics_channel`](/workers/runtime-apis/nodejs/diagnostics-channel) API from Node.js is now available when using the `nodejs_compat` compatibility flag. +- publish_date: '2023-06-22' + description: |- + - Added the [`strict_crypto_checks`](/workers/configuration/compatibility-dates/#strict-crypto-error-checking) compatibility flag to enable additional [Web Crypto API](/workers/runtime-apis/web-crypto/) error and security checking. + - Fixes regression in the [TCP Sockets API](/workers/runtime-apis/tcp-sockets/) where `connect("google.com:443")` would fail with a `TypeError`. +- publish_date: '2023-06-19' + description: |- + - The [TCP Sockets API](/workers/runtime-apis/tcp-sockets/) now reports clearer errors when a connection cannot be established. + - Updated V8 to 11.5. +- publish_date: '2023-06-09' + description: |- + - `AbortSignal.any()` is now available. + - Updated V8 to 11.4. + - Following an update to the [WHATWG URL spec](https://url.spec.whatwg.org/#interface-urlsearchparams), the `delete()` and `has()` methods of the `URLSearchParams` class now accept an optional second argument to specify the search parameter’s value. This is potentially a breaking change, so it is gated behind the new `urlsearchparams_delete_has_value_arg` and [`url_standard`](/workers/configuration/compatibility-dates/#new-url-parser-implementation) compatibility flags. + - Added the [`strict_compression_checks`](/workers/configuration/compatibility-dates/#strict-compression-error-checking) compatibility flag for additional [`DecompressionStream`](/workers/runtime-apis/web-standards/#compression-streams) error checking. +- publish_date: '2023-05-26' + description: |- + - A new [Hibernatable WebSockets API](/durable-objects/api/hibernatable-websockets-api/) + (beta) has been added to [Durable Objects](/durable-objects/). The Hibernatable + WebSockets API allows a Durable Object that is not currently running an event + handler (for example, processing a WebSocket message or alarm) to be removed from + memory while keeping its WebSockets connected (“hibernation”). A Durable Object + that hibernates will not incur billable Duration (GB-sec) charges. +- publish_date: '2023-05-16' + description: |- + - The [new `connect()` method](/workers/runtime-apis/tcp-sockets/) allows you to connect to any TCP-speaking services directly from your Workers. To learn more about other protocols supported on the Workers platform, visit the [new Protocols documentation](/workers/learning/protocols/). + - We have added new [native database integrations](/workers/databases/native-integrations/) for popular serverless database providers, including Neon, PlanetScale, and Supabase. Native integrations automatically handle the process of creating a connection string and adding it as a Secret to your Worker. + - You can now also connect directly to databases over TCP from a Worker, starting with [PostgreSQL](/workers/databases/connect-to-postgres/). Support for PostgreSQL is based on the popular `pg` driver, and allows you to connect to any PostgreSQL instance over TLS from a Worker directly. + - The [R2 Migrator](/r2/data-migration/) (Super Slurper), which automates the process of migrating from existing object storage providers to R2, is now Generally Available. +- publish_date: '2023-05-15' + description: |- + - [Cursor](/workers/ai/), an experimental AI assistant, trained to answer + questions about Cloudflare's Developer Platform, is now available to preview! + Cursor can answer questions about Workers and the Cloudflare Developer Platform, + and is itself built on Workers. You can read more about Cursor in the [announcement + blog](https://blog.cloudflare.com/introducing-cursor-the-ai-assistant-for-docs/). +- publish_date: '2023-05-12' + description: |- + - The [`performance.now()`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) + and [`performance.timeOrigin`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/timeOrigin) + APIs can now be used in Cloudflare Workers. Just like `Date.now()`, for [security + reasons](/workers/learning/security-model/) time only advances after I/O. +- publish_date: '2023-05-05' + description: |- + - The new `nodeJsCompatModule` type can be used with a Worker bundle to emulate a Node.js environment. Common Node.js globals such as `process` and `Buffer` will be present, and `require('...')` can be used to load Node.js built-ins without the `node:` specifier prefix. + - Fixed an issue where websocket connections would be disconnected when updating workers. Now, only websockets connected to Durable Object instances are disconnected by updates to that Durable Object’s code. +- publish_date: '2023-04-28' + description: |- + - The Web Crypto API now supports curves Ed25519 and X25519 defined in the Secure Curves specification. + - The global `connect` method has been moved to a `cloudflare:sockets` module. +- publish_date: '2023-04-14' + description: |- + - No externally-visible changes this week. +- publish_date: '2023-04-10' + description: |- + - `URL.canParse(...)` is a new standard API for testing that an input string can be parsed successfully as a URL without the additional cost of creating and throwing an error. + - The Workers-specific `IdentityTransformStream` and `FixedLengthStream` classes now support specifying a `highWaterMark` for the writable-side that is used for backpressure signaling using the standard `writer.desiredSize`/`writer.ready` mechanisms. +- publish_date: '2023-03-24' + description: |- + - Fixed a bug in Wrangler tail and and live logs on the dashboard that + prevented the Administrator Read-Only and Workers Tail Read roles from successfully + tailing Workers. +- publish_date: '2023-03-09' + description: |- + - No externally-visible changes. +- publish_date: '2023-03-06' + description: |- + - [Workers Logpush](/workers/observability/logpush/#limits) now supports + 300 characters per log line. This is an increase from the previous limit of 150 + characters per line. +- publish_date: '2023-02-06' + description: |- + - Fixed a bug where transferring large request bodies to a Durable Object was unexpectedly slow. + - Previously, an error would be thrown when trying to access unimplemented standard `Request` and `Response` properties. Now those will be left as `undefined`. +- publish_date: '2023-01-13' + description: |- + - Durable Objects can now use jurisdictions with `idFromName` via a new subnamespace API. + - V8 updated to 10.9. diff --git a/layouts/_default/changelog.rss.xml b/layouts/_default/changelog.rss.xml new file mode 100644 index 000000000000000..38695e59808886a --- /dev/null +++ b/layouts/_default/changelog.rss.xml @@ -0,0 +1,34 @@ +{{- $product := $.Params.changelog_file_name -}} +{{- $changelogData := index (index .Site.Data "changelogs") $product -}} +{{- $title := printf "%s · %s" .Title $changelogData.productName -}} +{{- $atomLink := print .Permalink "index.xml" -}} +{{- $changelogDataEntries := index $changelogData "entries" -}} +{{- $changelogDataEntries = sort $changelogDataEntries "date" "desc" -}} +{{- $permalink := .Permalink -}} + + + + {{ $title }} + {{ $permalink }} + Updates to Cloudflare's {{$changelogData.productName}} product. + en-us + + {{- index (index $changelogDataEntries 0) "publish_date" | time.Format "Monday, Jan 2, 2006" -}} + {{- range $changelogDataEntries -}} + {{- $link := "" -}} + {{ $description := .description | $.Page.RenderString | htmlUnescape }} + {{ $description = replaceRE `Open external link` "" $description -}} + {{- with .title -}} + {{- $link = print $permalink "#" (urlize .) -}} + {{- else -}} + {{- $link = print $permalink "#" (urlize .publish_date) -}} + {{- end -}} + + {{- with .title -}}{{ . }}{{ else }}{{ .publish_date }}{{ end }} + {{ $link }} + {{ $description }} + {{ .publish_date | time.Format "Monday, Jan 2, 2006" }} + + {{- end -}} + + \ No newline at end of file diff --git a/layouts/_default/home.html b/layouts/_default/home.html index d6a8d12e38b0bf1..1bfc6787ae04192 100644 --- a/layouts/_default/home.html +++ b/layouts/_default/home.html @@ -7,6 +7,10 @@ {{- end -}} {{- partial "head.meta" (dict "Context" . "Product" "home") -}} + {{- if eq .Page.RelPermalink "/changelog/" -}} + + {{- end -}} + {{- partial "script" (dict "src" "theme.ts" "inline" true "format" "iife") -}} diff --git a/layouts/_default/home.rss.xml b/layouts/_default/home.rss.xml new file mode 100644 index 000000000000000..5fa4fc572ce8568 --- /dev/null +++ b/layouts/_default/home.rss.xml @@ -0,0 +1,42 @@ +{{- $permalink := .Permalink -}} +{{- $atomLink := print .Permalink "index.xml" -}} +{{- $changelogData := index .Site.Data "changelogs" -}} +{{- $changelogRendered := slice -}} + +{{- range $index, $product := $changelogData -}} +{{- range $index2, $item := $product.entries -}} +{{- $changelogRendered = $changelogRendered | append (merge $item (dict "product" $product.productName "url" $product.link )) -}} +{{- end -}} +{{- end -}} + +{{- $changelogRendered = sort $changelogRendered "publish_date" "desc" -}} + + + + Cloudflare product changelog + {{ $permalink }} + View updates to various Cloudflare products. + en-us + + {{- index (index $changelogRendered 0) "publish_date" | time.Format "Monday, Jan 2, 2006" -}} + {{- range $changelogRendered -}} + {{- $link := "" -}} + {{- $rellink := .url -}} + {{- $product := .product -}} + {{ $description := .description | $.Page.RenderString | htmlUnescape }} + {{ $description = replaceRE `Open external link` "" $description -}} + {{- with .title -}} + {{- $link = print "https://developers.cloudflare.com" $rellink "#" (urlize .) -}} + {{- else -}} + {{- $link = print "https://developers.cloudflare.com" $rellink "#" (urlize .publish_date) -}} + {{- end -}} + + {{- with .title -}}{{ printf "%s · %s" $product . }}{{ else }}{{ printf "%s · %s" $product .publish_date }}{{ end }} + {{ $link }} + {{ $description }} + {{ .publish_date | time.Format "Monday, Jan 2, 2006" }} + {{- $product -}} + + {{- end -}} + + \ No newline at end of file diff --git a/layouts/partials/external.icon.html b/layouts/partials/external.icon.html index fbacd7e0bed1df3..3aee96d9a05f0de 100644 --- a/layouts/partials/external.icon.html +++ b/layouts/partials/external.icon.html @@ -1,6 +1,9 @@ +{{ $seed := "bar" }} +{{ $random := delimit (shuffle (split (md5 $seed) "" )) "" }} +{{- $titleID := print "title - " $random -}}