diff --git a/_config.yml b/_config.yml
index 8a47466ee53..449d50fc16f 100644
--- a/_config.yml
+++ b/_config.yml
@@ -21,11 +21,10 @@ baseurl: "" # the subpath of your site, e.g. /blog
url: "https://duckdb.org" # the base hostname & protocol for your site, e.g. http://example.com
# Set current codename of DuckDB and version numbers of DuckDB clients
current_duckdb_codename: "Ossivalis"
-current_short_duckdb_version: "1.3"
-preview_short_duckdb_version: "1.4-dev"
-current_duckdb_version: 1.3.2
-current_duckdb_hash: "0b83e5d2f6"
-current_snapshot_version: 1.2.3-dev
+current_short_duckdb_version: "1.4"
+preview_short_duckdb_version: "1.5-dev"
+current_duckdb_version: 1.4.0
+current_duckdb_hash: "xx"
current_duckdb_odbc_version: 1.3.2.0
current_duckdb_odbc_short_version: 1.3.2
current_duckdb_go_version: 1.3.2
diff --git a/_data/past_releases.csv b/_data/past_releases.csv
index bac65d0f1c5..9d202ae20fe 100644
--- a/_data/past_releases.csv
+++ b/_data/past_releases.csv
@@ -1,52 +1,53 @@
-release_date,version_number,codename,duck_species_primary,duck_species_secondary,duck_wikipage,blog_post
-2025-07-08,1.3.2,,,,,
-2025-06-16,1.3.1,,,,,
-2025-05-21,1.3.0,Ossivalis,Bucephala ossivalis,Goldeneye duck,https://en.wikipedia.org/wiki/Goldeneye_(duck),https://duckdb.org/2025/05/21/announcing-duckdb-130
-2025-04-08,1.2.2,,,,,
-2025-03-05,1.2.1,,,,,
-2025-02-05,1.2.0,Histrionicus,Histrionicus histrionicus,Harlequin duck,https://en.wikipedia.org/wiki/Harlequin_duck,https://duckdb.org/2025/02/05/announcing-duckdb-120
-2024-11-04,1.1.3,,,,,
-2024-10-14,1.1.2,,,,,
-2024-09-24,1.1.1,,,,,
-2024-09-09,1.1.0,Eatoni,Anas eatoni,Eaton's pintail,https://en.wikipedia.org/wiki/Eaton%27s_pintail,https://duckdb.org/2024/09/09/announcing-duckdb-110
-2024-06-03,1.0.0,Nivis,Anas nivis,Snow duck,,https://duckdb.org/2024/06/03/announcing-duckdb-100
-2024-05-22,0.10.3,,,,,
-2024-04-17,0.10.2,,,,,
-2024-03-18,0.10.1,,,,,
-2024-02-13,0.10.0,Fusca,Melanitta fusca,Velvet scoter,https://en.wikipedia.org/wiki/Velvet_scoter,https://duckdb.org/2024/02/13/announcing-duckdb-0100
-2023-11-14,0.9.2,,,,,
-2023-10-11,0.9.1,,,,,
-2023-09-26,0.9.0,Undulata,Anas undulata,Yellow-billed duck,https://en.wikipedia.org/wiki/Yellow-billed_duck,https://duckdb.org/2023/09/26/announcing-duckdb-090
-2023-06-13,0.8.1,,,,,
-2023-05-17,0.8.0,Fulvigula,Anas fulvigula,Mottled duck,https://en.wikipedia.org/wiki/Mottled_duck,https://duckdb.org/2023/05/17/announcing-duckdb-080
-2023-02-27,0.7.1,,,,,
-2023-02-13,0.7.0,Labradorius,Camptorhynchus labradorius,Labrador duck,https://en.wikipedia.org/wiki/Labrador_duck,https://duckdb.org/2023/02/13/announcing-duckdb-070
-2022-12-06,0.6.1,,,,,
-2022-11-14,0.6.0,Oxyura,Oxyura leucocephala,White-headed duck,https://en.wikipedia.org/wiki/White-headed_duck,https://duckdb.org/2022/11/14/announcing-duckdb-060
-2022-09-19,0.5.1,,,,,
-2022-09-05,0.5.0,Pulchellus,Nettapus pulchellus,Green pygmy goose,https://en.wikipedia.org/wiki/Green_pygmy_goose,
-2022-06-20,0.4.0,Ferruginea,Oxyura ferruginea,Andean duck,https://en.wikipedia.org/wiki/Andean_duck,
-2022-04-25,0.3.4,,,,,
-2022-04-11,0.3.3,Sansaniensis,Chenoanas sansaniensis,,https://species.wikimedia.org/wiki/Chenoanas_sansaniensis,
-2022-02-07,0.3.2,Gibberifrons,Anas gibberifrons,Sunda teal,https://en.wikipedia.org/wiki/Sunda_teal,
-2021-11-16,0.3.1,Spectabilis,Somateria spectabilis,King eider,https://en.wikipedia.org/wiki/King_eider,
-2021-10-06,0.3.0,Gracilis,Anas gracilis,Grey teal,https://en.wikipedia.org/wiki/Grey_teal,
-2021-09-06,0.2.9,Platyrhynchos,Anas platyrhynchos,Mallard,https://en.wikipedia.org/wiki/Mallard,
-2021-08-02,0.2.8,Ceruttii,Histrionicus ceruttii,,https://en.wikipedia.org/wiki/Harlequin_duck#Taxonomy,
-2021-06-14,0.2.7,Mollissima,Somateria mollissima,Common eider,https://en.wikipedia.org/wiki/Common_eider,
-2021-05-08,0.2.6,Jamaicensis,Oxyura jamaicensis,Blue-billed ruddy duck,https://en.wikipedia.org/wiki/Ruddy_duck,
-2021-03-10,0.2.5,Falcata,Mareca falcata,Falcated duck,https://en.wikipedia.org/wiki/Falcated_duck,
-2021-02-02,0.2.4,Jubata,Chenonetta jubata,Australian wood duck,https://en.wikipedia.org/wiki/Australian_wood_duck,
-2020-12-03,0.2.3,Serrator,Mergus serrator,Red-breasted merganser,https://en.wikipedia.org/wiki/Red-breasted_merganser,
-2020-11-01,0.2.2,Clypeata,Spatula clypeata,Northern shoveler,https://en.wikipedia.org/wiki/Northern_shoveler,
-2020-08-29,0.2.1,,,,,
-2020-07-23,0.2.0,,,,,
-2020-06-19,0.1.9,,,,,
-2020-05-29,0.1.8,,,,,
-2020-05-04,0.1.7,,,,,
-2020-04-05,0.1.6,,,,,
-2020-03-02,0.1.5,,,,,
-2020-02-03,0.1.3,,,,,
-2020-01-06,0.1.2,,,,,
-2019-09-24,0.1.1,,,,,
-2019-06-27,0.1.0,,,,,
+release_date,version_number,codename,duck_species_primary,duck_species_secondary,duck_wikipage,blog_post,end_of_life
+2025-09-10,1.4.0,Andium,Anas andium,Andean teal,https://en.wikipedia.org/wiki/Andean_teal,https://duckdb.org/2025/09/10/announcing-duckdb-140,2026-09-16
+2025-07-08,1.3.2,,,,,,
+2025-06-16,1.3.1,,,,,,
+2025-05-21,1.3.0,Ossivalis,Bucephala ossivalis,Goldeneye duck,https://en.wikipedia.org/wiki/Goldeneye_(duck),https://duckdb.org/2025/05/21/announcing-duckdb-130,2025-09-16
+2025-04-08,1.2.2,,,,,,
+2025-03-05,1.2.1,,,,,,
+2025-02-05,1.2.0,Histrionicus,Histrionicus histrionicus,Harlequin duck,https://en.wikipedia.org/wiki/Harlequin_duck,https://duckdb.org/2025/02/05/announcing-duckdb-120,2025-05-21
+2024-11-04,1.1.3,,,,,,
+2024-10-14,1.1.2,,,,,,
+2024-09-24,1.1.1,,,,,,
+2024-09-09,1.1.0,Eatoni,Anas eatoni,Eaton's pintail,https://en.wikipedia.org/wiki/Eaton%27s_pintail,https://duckdb.org/2024/09/09/announcing-duckdb-110,2025-02-05
+2024-06-03,1.0.0,Nivis,Anas nivis,Snow duck,,https://duckdb.org/2024/06/03/announcing-duckdb-100,2024-09-09
+2024-05-22,0.10.3,,,,,,
+2024-04-17,0.10.2,,,,,,
+2024-03-18,0.10.1,,,,,,
+2024-02-13,0.10.0,Fusca,Melanitta fusca,Velvet scoter,https://en.wikipedia.org/wiki/Velvet_scoter,https://duckdb.org/2024/02/13/announcing-duckdb-0100,2024-06-03
+2023-11-14,0.9.2,,,,,,
+2023-10-11,0.9.1,,,,,,
+2023-09-26,0.9.0,Undulata,Anas undulata,Yellow-billed duck,https://en.wikipedia.org/wiki/Yellow-billed_duck,https://duckdb.org/2023/09/26/announcing-duckdb-090,
+2023-06-13,0.8.1,,,,,,
+2023-05-17,0.8.0,Fulvigula,Anas fulvigula,Mottled duck,https://en.wikipedia.org/wiki/Mottled_duck,https://duckdb.org/2023/05/17/announcing-duckdb-080,
+2023-02-27,0.7.1,,,,,,
+2023-02-13,0.7.0,Labradorius,Camptorhynchus labradorius,Labrador duck,https://en.wikipedia.org/wiki/Labrador_duck,https://duckdb.org/2023/02/13/announcing-duckdb-070,
+2022-12-06,0.6.1,,,,,,
+2022-11-14,0.6.0,Oxyura,Oxyura leucocephala,White-headed duck,https://en.wikipedia.org/wiki/White-headed_duck,https://duckdb.org/2022/11/14/announcing-duckdb-060,
+2022-09-19,0.5.1,,,,,,
+2022-09-05,0.5.0,Pulchellus,Nettapus pulchellus,Green pygmy goose,https://en.wikipedia.org/wiki/Green_pygmy_goose,,
+2022-06-20,0.4.0,Ferruginea,Oxyura ferruginea,Andean duck,https://en.wikipedia.org/wiki/Andean_duck,,
+2022-04-25,0.3.4,,,,,,
+2022-04-11,0.3.3,Sansaniensis,Chenoanas sansaniensis,,https://species.wikimedia.org/wiki/Chenoanas_sansaniensis,,
+2022-02-07,0.3.2,Gibberifrons,Anas gibberifrons,Sunda teal,https://en.wikipedia.org/wiki/Sunda_teal,,
+2021-11-16,0.3.1,Spectabilis,Somateria spectabilis,King eider,https://en.wikipedia.org/wiki/King_eider,,
+2021-10-06,0.3.0,Gracilis,Anas gracilis,Grey teal,https://en.wikipedia.org/wiki/Grey_teal,,
+2021-09-06,0.2.9,Platyrhynchos,Anas platyrhynchos,Mallard,https://en.wikipedia.org/wiki/Mallard,,
+2021-08-02,0.2.8,Ceruttii,Histrionicus ceruttii,,https://en.wikipedia.org/wiki/Harlequin_duck#Taxonomy,,
+2021-06-14,0.2.7,Mollissima,Somateria mollissima,Common eider,https://en.wikipedia.org/wiki/Common_eider,,
+2021-05-08,0.2.6,Jamaicensis,Oxyura jamaicensis,Blue-billed ruddy duck,https://en.wikipedia.org/wiki/Ruddy_duck,,
+2021-03-10,0.2.5,Falcata,Mareca falcata,Falcated duck,https://en.wikipedia.org/wiki/Falcated_duck,,
+2021-02-02,0.2.4,Jubata,Chenonetta jubata,Australian wood duck,https://en.wikipedia.org/wiki/Australian_wood_duck,,
+2020-12-03,0.2.3,Serrator,Mergus serrator,Red-breasted merganser,https://en.wikipedia.org/wiki/Red-breasted_merganser,,
+2020-11-01,0.2.2,Clypeata,Spatula clypeata,Northern shoveler,https://en.wikipedia.org/wiki/Northern_shoveler,,
+2020-08-29,0.2.1,,,,,,
+2020-07-23,0.2.0,,,,,,
+2020-06-19,0.1.9,,,,,,
+2020-05-29,0.1.8,,,,,,
+2020-05-04,0.1.7,,,,,,
+2020-04-05,0.1.6,,,,,,
+2020-03-02,0.1.5,,,,,,
+2020-02-03,0.1.3,,,,,,
+2020-01-06,0.1.2,,,,,,
+2019-09-24,0.1.1,,,,,,
+2019-06-27,0.1.0,,,,,,
diff --git a/_posts/2025-09-16-announcing-duckdb-140.md b/_posts/2025-09-16-announcing-duckdb-140.md
new file mode 100644
index 00000000000..2227bf28e12
--- /dev/null
+++ b/_posts/2025-09-16-announcing-duckdb-140.md
@@ -0,0 +1,276 @@
+---
+layout: post
+title: "Announcing DuckDB 1.4.0"
+author: "The DuckDB team"
+thumb: "/images/blog/thumbs/duckdb-release-1-4-0.svg"
+image: "/images/blog/thumbs/duckdb-release-1-4-0.png"
+excerpt: "We're releasing DuckDB version 1.4.0, codenamed “Andium”. This is an LTS release with 1 year of community support, which packs new features such as database encryption, the MERGE statement and Iceberg writes."
+tags: ["release"]
+---
+
+We are proud to release DuckDB v1.4.0, named “Andium” after the _Andean teal_ (Anas andium), which lives in the Andean highlands of Colombia, Venezuela and Ecuador.
+
+In this blog post, we cover the most important updates for this release around support, features and extensions. DuckDB is moving rather quickly, and we could cover only a small fraction of the changes in this release. For the complete release notes, see the [release page on GitHub](https://github.com/duckdb/duckdb/releases/tag/v1.4.0).
+
+> To install the new version, please visit the new [installation page]({% link install/index.html %}). Note that it can take a few days to release some client libraries (e.g., Go, R, Java) due to the extra changes and review rounds required.
+
+## Long Term Support (LTS) Edition
+
+We are delighted to see that DuckDB is used regularly in production environments and realize that such deployments often come with a requirement for long-term maintenance.
+In the past, we would automatically deprecate old DuckDB versions whenever the newer version was released. But we’re changing this today.
+
+Starting with this release, every _other_ DuckDB version is going to be a Long Term Support (LTS) edition.
+For LTS DuckDB versions, [community support](https://duckdblabs.com/community_support_policy/) will last a year after the release (for now).
+[DuckDB Labs](https://duckdblabs.com/) is also starting to offer support for older LTS versions after their community support has expired.
+
+{: .lightmode-img }
+{: .darkmode-img }
+
+
+
+Click to see the end-of-life (EOL) dates for DuckDB releases.
+
+
+
+
+
Version
+
Codename
+
End of community support
+
+
+
+
+
0.*
+
+
2024-06-03
+
+
+
1.0.*
+
Nivis
+
2024-09-09
+
+
+
1.1.*
+
Eatoni
+
2025-02-05
+
+
+
1.2.*
+
Histrionicus
+
2025-05-21
+
+
+
1.3.*
+
Ossivalis
+
2025-09-16
+
+
+
1.4.* LTS
+
Andium
+
2026-09-16
+
+
+
+
+
+## New Features
+
+### Database Encryption
+
+Being able to encrypt DuckDB database files has been a [long-standing feature request](https://github.com/duckdb/duckdb/discussions/4512). Starting with this release, DuckDB supports encryption of its files. Encryption keys are given using the `ENCRYPTION_KEY` parameter for to [`ATTACH`]({% link docs/stable/sql/statements/attach.md %}), like so:
+
+```sql
+ATTACH 'encrypted.db' AS enc_db (ENCRYPTION_KEY 'quack_quack');
+```
+
+DuckDB uses the industry-standard [AES encryption](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) with a key length of 256 bits using the recommended [GCM](https://en.wikipedia.org/wiki/Galois/Counter_Mode) mode by default.
+
+The encryption covers the main database file, the write-ahead-log (WAL) file, and even temporary files. To encrypt data, DuckDB can use either the built-in `mbedtls` library or the OpenSSL library from the `httpfs` extension. Note that the OpenSSL versions are much faster due to hardware acceleration, so make sure to `LOAD httpfs` for good encryption performance.
+
+Encryption support in DuckDB was implemented by [Lotte Felius (@ccfelius)](https://github.com/ccfelius).
+
+### `MERGE` Statement
+
+DuckDB now supports `MERGE INTO` as an alternative to `INSERT INTO ... ON CONFLICT`.
+`MERGE INTO` does not require a primary key since it works on any custom merge condition. This is a very common statement in OLAP systems that do not support primary keys but still want to support upserting (i.e., `UPDATE` plus `INSERT`) functionality.
+
+In this example we use a simple condition matching on a key and we call the `RETURNING` statement to get a summary of the updated and inserted rows.
+
+```sql
+CREATE TABLE Stock(item_id INTEGER, balance INTEGER);
+INSERT INTO Stock VALUES (10, 2200), (20, 1900);
+
+WITH new_stocks(item_id, volume) AS (VALUES (20, 2200), (30, 1900))
+ MERGE INTO Stock
+ USING new_stocks USING (item_id)
+ WHEN MATCHED
+ THEN UPDATE SET balance = balance + volume
+ WHEN NOT MATCHED
+ THEN INSERT VALUES (new_stocks.item_id, new_stocks.volume)
+ RETURNING merge_action, *;
+```
+
+```text
+┌──────────────┬─────────┬─────────┐
+│ merge_action │ item_id │ balance │
+│ varchar │ int32 │ int32 │
+├──────────────┼─────────┼─────────┤
+│ UPDATE │ 20 │ 4100 │
+│ INSERT │ 30 │ 1900 │
+└──────────────┴─────────┴─────────┘
+```
+
+`MERGE INTO` also supports more complex conditions and DELETE statements.
+
+```sql
+WITH deletes(item_id, delete_threshold) AS (VALUES (10, 3000))
+ MERGE INTO Stock
+ USING deletes USING (item_id)
+ WHEN MATCHED AND balance < delete_threshold
+ THEN DELETE
+ RETURNING merge_action, *;
+```
+
+```text
+┌──────────────┬─────────┬─────────┐
+│ merge_action │ item_id │ balance │
+│ varchar │ int32 │ int32 │
+├──────────────┼─────────┼─────────┤
+│ DELETE │ 10 │ 2200 │
+└──────────────┴─────────┴─────────┘
+```
+
+
+
+### Iceberg Writes
+
+The [duckdb-iceberg]({% link docs/stable/core_extensions/iceberg/overview.md %}) extension now **supports writing to Iceberg**.
+
+
+
+Click to see the code snippet showing Iceberg writes.
+
+```sql
+-- Having setup an Iceberg REST catalog using
+-- https://github.com/duckdb/duckdb-iceberg/blob/main/scripts/start-rest-catalog.sh
+INSTALL iceberg;
+LOAD iceberg;
+ATTACH '' AS iceberg_datalake (
+ TYPE iceberg,
+ CLIENT_ID 'admin',
+ CLIENT_SECRET 'password',
+ ENDPOINT 'http://127.0.0.1:8181'
+);
+CREATE SECRET (
+ TYPE S3,
+ KEY_ID 'admin',
+ SECRET 'password',
+ ENDPOINT '127.0.0.1:9000',
+ URL_STYLE 'path',
+ USE_SSL false
+);
+USE iceberg_datalake.default;
+ATTACH 'duckdb.db' AS duckdb_db;
+CREATE TABLE duckdb_db.t AS SELECT range a FROM range(4);
+CREATE TABLE t AS SELECT * FROM duckdb_db.t;
+FROM iceberg_datalake.default.t;
+```
+
+```text
+┌───────┐
+│ a │
+│ int64 │
+├───────┤
+│ 0 │
+│ 1 │
+│ 2 │
+│ 3 │
+└───────┘
+```
+
+
+This means that copying data from DuckDB or DuckLake to Iceberg is now possible.
+
+* **Copying from Iceberg to DuckDB/DuckLake** is also supported via the `COPY` statement:
+
+ ```sql
+ COPY FROM DATABASE iceberg_datalake TO duckdb_db;
+ ```
+
+* **Copying from DuckLake/DuckDB to Iceberg** needs manual creation of the schemas on the Iceberg side of things:
+
+ ```sql
+ CREATE SCHEMA iceberg_datalake.main;
+ COPY FROM DATABASE duckdb_db TO iceberg_datalake;
+ ```
+
+### CLI Progress Bar ETA
+
+Community member [Rusty Conover (@rustyconover)](https://github.com/rustyconover) [contributed](https://github.com/duckdb/duckdb/pull/18575) an ETA (estimated time of arrival) feature to the DuckDB command line client. Estimating the remaining time is a [difficult problem](https://xkcd.com/612/) as progress measurements can vary a lot due to noise. To alleviate this, the ETA feature first collects some initial performance data, then continues to refine its estimate using a [Kalman filter](https://en.wikipedia.org/wiki/Kalman_filter). Here's how it works in practice:
+
+
+
+
+### `FILL` Window Function
+
+[Richard (@hawkfish)](https://github.com/hawkfish) built a new window function, `FILL`, that can be used to _interpolate_ missing values in ordered windows. Here is an example, you can see a missing value between 1 and 42, it's interpolated to 21 in the result.
+
+```sql
+FROM (VALUES (1, 1), (2, NULL), (3, 42)) t(c1, c2)
+SELECT fill(c2) OVER (ORDER BY c1) f;
+```
+
+This will be the result:
+
+| f |
+|---:|
+| 1 |
+| 21 |
+| 42 |
+
+### Teradata Connector
+
+DuckDB now has a [Teradata Connector](https://github.com/duckdb/duckdb-teradata).
+A separate blog post will be coming.
+
+## Performance and Optimizations
+
+### Sorting Rework
+
+[Laurens (@lnkuiper)](https://github.com/lnkuiper) [rewrote DuckDB’s sorting implementation](https://github.com/duckdb/duckdb/pull/17584#thread-scaling-performance) ([again](https://github.com/duckdb/duckdb/pull/1561)). This new implementation uses a k-way merge sort to reduce data movement. It is also adaptive to pre-sorted data and uses a new API that makes it possible to use this new sorting code elsewhere in DuckDB, for example in window functions. We are seeing much better thread scaling performance with this implementation. We will publish a separate blog post with more detailed performance measurements.
+
+### Materializing Common Table Expressions
+
+Common table expressions (CTEs) are now materialized by default (instead of inlining them). This both improves performance and resolves some correctness bugs that happened due to inlining.
+This feature was [implemented](https://github.com/duckdb/duckdb/pull/17459) by [Denis Hirn (kryonix)](https://github.com/kryonix), who [contributed support for recursive CTEs](https://github.com/duckdb/duckdb/pull/404) back in 2020.
+
+### Checkpointing In-Memory Tables
+
+In-memory tables now support [checkpointing](https://github.com/duckdb/duckdb/pull/18348). This has two key benefits:
+
+* In-memory tables now support compression. This is disabled by default – you can turn it on using:
+
+ ```sql
+ ATTACH ':memory:' AS memory_compressed (COMPRESS);
+ ```
+
+* Checkpointing triggers vacuuming deleted rows, allowing space to be reclaimed after deletes/truncation.
+
+## Distribution
+
+### MacOS Notarization
+
+MacOS has a fairly advanced model to ensure system integrity built around cryptographic signatures along with so-called “[notarization](https://developer.apple.com/documentation/Security/notarizing-macos-software-before-distribution)” by Apple. We had been signing our binaries [for about two years already](https://github.com/duckdb/duckdb/pull/7484).
+Starting from this release, the DuckDB command line utility (`duckdb`) and the dynamic library `libduckdb…dylib` are _released with this notarization_. This will reduce the amount of complaints when using web browsers to download our binaries. Unfortunately, macOS does not yet fully support notarization of command line utility, so the “open with double click” use case will still have to wait. The recommended path to install the CLI on macOS is still our install script: `curl https://install.duckdb.org | bash`
+
+### Moved Python Integration to its Own Repository
+
+We have been slowly moving language integrations (“clients”) into their own repositories from `duckdb/duckdb`. For this release, we moved the Python client to its [own repository](https://github.com/duckdb/duckdb-python), `duckdb/duckdb-python`. Please make sure to [file issues](https://github.com/duckdb/duckdb-python/issues/new) related to the Python client there.
+
+## Final Thoughts
+
+These were a few highlights – but there are many more features and improvements in this release. There have been over 3,500 commits by over 90 contributors since we released v1.3.2. The full release notes can be [found on GitHub](https://github.com/duckdb/duckdb/releases/tag/v1.4.0). We would like to thank our community for providing detailed issue reports and feedback. And our special thanks goes to external contributors, who directly landed features in this release!
diff --git a/data/installation-data-1.4.yml b/data/installation-data-1.4.yml
new file mode 100644
index 00000000000..8a3bf06a0f3
--- /dev/null
+++ b/data/installation-data-1.4.yml
@@ -0,0 +1,310 @@
+- variant: stable
+ environment: Command line
+ platform: Windows
+ download_method: Package manager
+ architecture: universal
+ installation_code: winget install DuckDB.cli
+ note: >-
+ Note that DuckDB on Windows requires the Microsoft Visual C++ Redistributable.
+- variant: stable
+ environment: Command line
+ platform: Windows
+ download_method: Direct download
+ architecture: x86_64
+ sha_256: 0f20f96cc83540817e9e42f88d1f62e5452a9a2b4fcdef7f97cfc94a971d313f
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/duckdb_cli-windows-amd64.zip
+ note: >-
+ Note that DuckDB on Windows requires the Microsoft Visual C++ Redistributable.
+- variant: stable
+ environment: Command line
+ platform: Windows
+ download_method: Direct download
+ architecture: arm64
+ sha_256: c8093ef9bdfa27d06b3f4f3d9a858044b7eac07e6a799012f5f722dc07242eb8
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/duckdb_cli-windows-arm64.zip
+ note: >-
+ Note that DuckDB on Windows requires the Microsoft Visual C++ Redistributable.
+- variant: stable
+ environment: Command line
+ platform: macOS
+ download_method: Package manager
+ architecture: universal
+ installation_code: brew install duckdb
+- variant: stable
+ environment: Command line
+ platform: macOS
+ download_method: Direct download
+ architecture: universal
+ sha_256: 660ed83745a7024fe7c92d4de6c28665cc79bfb6e22101e5761830cc4ec050ef
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/duckdb_cli-osx-universal.zip
+ installation_code: >-
+ curl https://install.duckdb.org | sh
+- variant: stable
+ environment: Command line
+ platform: Linux
+ download_method: Direct download
+ architecture: x86_64
+ sha_256: 682ff48f988cb6f054fe42e755b7037ade3441e7a406cce3180b05ac0287279d
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/duckdb_cli-linux-amd64.zip
+ installation_code: >-
+ curl https://install.duckdb.org | sh
+- variant: stable
+ environment: Command line
+ platform: Linux
+ download_method: Direct download
+ architecture: arm64
+ sha_256: f322807f0f5d146d2bb1eea253f894d0a015561695408fa22981f085eb2b77ad
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/duckdb_cli-linux-arm64.zip
+ installation_code: >-
+ curl https://install.duckdb.org | sh
+- variant: stable
+ environment: Python
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: pip install duckdb
+ note: >-
+ Note that on Windows 10, the DuckDB Python client requires the latest Microsoft Visual C++ Redistributable. Please make sure to install the latest MSVC Redistributable on this platform. To work around this issue without upgrading the MSVC Redistributable, consider installing the preview (nightly) release, which resolves this problem.
+- variant: stable
+ environment: R
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: install.packages("duckdb")
+ note: >-
+ On certain platforms, such as Linux AArch64 (arm64), the DuckDB R package needs to be compiled from source.
+ To speed up this process, follow the instructions on the R build page.
+- variant: stable
+ environment: Java
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: >-
+
+ org.duckdb
+ duckdb_jdbc
+ 1.3.2.0
+
+- variant: stable
+ environment: Java
+ platform: all
+ download_method: Direct download
+ architecture: universal
+ link: https://repo1.maven.org/maven2/org/duckdb/duckdb_jdbc/1.3.2.0/duckdb_jdbc-1.3.2.0.jar
+- variant: stable
+ environment: Node.js
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: npm install @duckdb/node-api
+- variant: stable
+ environment: Rust
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: cargo add duckdb --features bundled
+- variant: stable
+ environment: Go
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: go get github.com/marcboeker/go-duckdb
+- variant: stable
+ environment: C/C++
+ platform: Windows
+ download_method: Direct download
+ architecture: x86_64
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/libduckdb-windows-amd64.zip
+ sha_256: b156e9d6f977291ceb0e07f7a339589865bfabae02dae7357cf10465cbb85ce7
+- variant: stable
+ environment: C/C++
+ platform: Windows
+ download_method: Direct download
+ architecture: arm64
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/libduckdb-windows-arm64.zip
+ sha_256: 4f61418ee9de3afd93828469c3d999ac1f0fecd89ac9b65acca01ed0daafa307
+- variant: stable
+ environment: C/C++
+ platform: macOS
+ download_method: Direct download
+ architecture: universal
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/libduckdb-osx-universal.zip
+ sha_256: 6e4a9bfd4f15c83f43b9585b4f62c6f9851de3410cd28275de37d6d74b138415
+- variant: stable
+ environment: C/C++
+ platform: Linux
+ download_method: Direct download
+ architecture: x86_64
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/libduckdb-linux-amd64.zip
+ sha_256: 748f7c3722f8a4a15e7666e24b917615776879a2e9d92e079d0191a7832e93c1
+- variant: stable
+ environment: C/C++
+ platform: Linux
+ download_method: Direct download
+ architecture: arm64
+ link: https://github.com/duckdb/duckdb/releases/download/v1.4.0/libduckdb-linux-arm64.zip
+ sha_256: 3fc6e2c310eef6244d3a9d9ccbbc7c1b80e34cb7115ac67739fe1b9744246b68
+- variant: stable
+ environment: ODBC
+ platform: Windows
+ download_method: Direct download
+ architecture: x86_64
+ link: https://github.com/duckdb/duckdb-odbc/releases/download/v1.3.2.0/duckdb_odbc-windows-amd64.zip
+- variant: stable
+ environment: ODBC
+ platform: macOS
+ download_method: Direct download
+ architecture: universal
+ link: https://github.com/duckdb/duckdb-odbc/releases/download/v1.3.2.0/duckdb_odbc-osx-universal.zip
+- variant: stable
+ environment: ODBC
+ platform: Linux
+ download_method: Direct download
+ architecture: x86_64
+ link: https://github.com/duckdb/duckdb-odbc/releases/download/v1.3.2.0/duckdb_odbc-linux-amd64.zip
+- variant: stable
+ environment: ODBC
+ platform: Linux
+ download_method: Direct download
+ architecture: arm64
+ link: https://github.com/duckdb/duckdb-odbc/releases/download/v1.3.2.0/duckdb_odbc-linux-arm64.zip
+- variant: nightly
+ environment: Command line
+ platform: Windows
+ download_method: Direct download
+ architecture: universal
+ link: 'https://artifacts.duckdb.org/latest/duckdb-binaries-windows.zip'
+- variant: nightly
+ environment: Command line
+ platform: macOS
+ download_method: Direct download
+ architecture: universal
+ link: 'https://artifacts.duckdb.org/latest/duckdb-binaries-osx.zip'
+ installation_code: >-
+ curl -fL --progress-bar --output duckdb-binaries-osx.zip https://artifacts.duckdb.org/latest/duckdb-binaries-osx.zip &&
+ unzip duckdb-binaries-osx.zip &&
+ unzip duckdb_cli-osx-universal.zip
+- variant: nightly
+ environment: Command line
+ platform: Linux
+ download_method: Direct download
+ architecture: x86_64
+ link: 'https://artifacts.duckdb.org/latest/duckdb-binaries-linux-amd64.zip'
+ installation_code: >-
+ curl -fL --progress-bar --output duckdb-binaries-linux-amd64.zip https://artifacts.duckdb.org/latest/duckdb-binaries-linux-amd64.zip &&
+ unzip duckdb-binaries-linux-amd64.zip &&
+ unzip duckdb_cli-linux-amd64.zip
+- variant: nightly
+ environment: Command line
+ platform: Linux
+ download_method: Direct download
+ architecture: arm64
+ link: 'https://artifacts.duckdb.org/latest/duckdb-binaries-linux-arm64.zip'
+ installation_code: >-
+ curl -fL --progress-bar --output duckdb-binaries-linux-arm64.zip https://artifacts.duckdb.org/latest/duckdb-binaries-linux-arm64.zip &&
+ unzip duckdb-binaries-linux-arm64.zip &&
+ unzip duckdb_cli-linux-arm64.zip
+- variant: nightly
+ environment: Python
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: pip install duckdb --pre --upgrade
+ note: >-
+ The DuckDB Python package requires the Microsoft Visual C++ Redistributable.
+- variant: nightly
+ environment: R
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: |
+ install.packages("pak")
+ pak::pak("duckdb/duckdb-r")
+ note: >-
+ On certain platforms, such as Linux AArch64 (arm64), the DuckDB R package needs to be compiled from source.
+ To speed up this process, follow the instructions on the R build page.
+- variant: nightly
+ environment: Java
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: >-
+
+
+ org.duckdb
+ duckdb_jdbc
+ 1.4.0-SNAPSHOT
+
+
+
+
+ oss-sonatype
+ oss-sonatype
+ https://oss.sonatype.org/content/repositories/snapshots/
+
+ true
+
+
+
+ note: 'Nightly Java builds are served through the Sonatype snapshots repository.'
+- variant: nightly
+ environment: Java
+ platform: all
+ download_method: Direct download
+ architecture: universal
+ link: 'https://artifacts.duckdb.org/duckdb-java/latest/java-jars.zip'
+- variant: nightly
+ environment: Node.js
+ platform: all
+ download_method: Package manager
+ architecture: universal
+ installation_code: npm install duckdb@next
+ note: The nightly release of the Node.js driver installs the old Node.js driver and not DuckDB Node Neo. For the Node Neo driver, the nightly release is currently not available.
+- variant: nightly
+ environment: C/C++
+ platform: Windows
+ download_method: Direct download
+ architecture: universal
+ link: 'https://artifacts.duckdb.org/latest/duckdb-binaries-windows.zip'
+- variant: nightly
+ environment: C/C++
+ platform: macOS
+ download_method: Direct download
+ architecture: universal
+ link: 'https://artifacts.duckdb.org/latest/duckdb-binaries-osx.zip'
+- variant: nightly
+ environment: C/C++
+ platform: Linux
+ download_method: Direct download
+ architecture: x86_64
+ link: 'https://artifacts.duckdb.org/latest/duckdb-binaries-linux-amd64.zip'
+- variant: nightly
+ environment: C/C++
+ platform: Linux
+ download_method: Direct download
+ architecture: arm64
+ link: 'https://artifacts.duckdb.org/latest/duckdb-binaries-linux-arm64.zip'
+- variant: nightly
+ environment: ODBC
+ platform: Windows
+ download_method: Direct download
+ architecture: x86_64
+ link: 'https://artifacts.duckdb.org/duckdb-odbc/main/odbc-windows-amd64.zip'
+- variant: nightly
+ environment: ODBC
+ platform: macOS
+ download_method: Direct download
+ architecture: universal
+ link: 'https://artifacts.duckdb.org/duckdb-odbc/main/odbc-osx-universal.zip'
+- variant: nightly
+ environment: ODBC
+ platform: Linux
+ download_method: Direct download
+ architecture: x86_64
+ link: 'https://artifacts.duckdb.org/duckdb-odbc/main/odbc-linux-amd64.zip'
+- variant: nightly
+ environment: ODBC
+ platform: Linux
+ download_method: Direct download
+ architecture: arm64
+ link: 'https://artifacts.duckdb.org/duckdb-odbc/main/odbc-linux-aarch64.zip'
diff --git a/data/latest_stable_version.txt b/data/latest_stable_version.txt
index 1892b926767..88c5fb891dc 100644
--- a/data/latest_stable_version.txt
+++ b/data/latest_stable_version.txt
@@ -1 +1 @@
-1.3.2
+1.4.0
diff --git a/images/blog/lts-support-dark.svg b/images/blog/lts-support-dark.svg
new file mode 100644
index 00000000000..16b170fbe1d
--- /dev/null
+++ b/images/blog/lts-support-dark.svg
@@ -0,0 +1,82 @@
+
diff --git a/images/blog/lts-support-light.svg b/images/blog/lts-support-light.svg
new file mode 100644
index 00000000000..568d04b2d0a
--- /dev/null
+++ b/images/blog/lts-support-light.svg
@@ -0,0 +1,82 @@
+
diff --git a/images/blog/lts-support.svg b/images/blog/lts-support.svg
new file mode 100644
index 00000000000..a3a5d77d129
--- /dev/null
+++ b/images/blog/lts-support.svg
@@ -0,0 +1,62 @@
+
diff --git a/release_calendar.md b/release_calendar.md
index d53de235705..dfd429f7419 100644
--- a/release_calendar.md
+++ b/release_calendar.md
@@ -56,12 +56,12 @@ Since version 0.4.0, only major and minor versions get a codename.
-| Date | Version | Codename | Named after | |
-|:-----|--------:|----------|-------------|------|
+| Date | Version | Codename | Named after | End of life |
+|:-----|--------:|----------|-------------|------------------|------|
{% for row in site.data.past_releases %}
{%- capture logo_filename %}images/release-icons/{{ row.version_number }}.svg{% endcapture -%}
{%- capture logo_exists %}{% file_exists {{ logo_filename }} %}{% endcapture -%}
- | {{ row.release_date }} | [{{ row.version_number }}](https://github.com/duckdb/duckdb/releases/tag/v{{ row.version_number }}) | {% if row.blog_post %}[{{ row.codename }}]({{ row.blog_post }}){% else %}{{ row.codename | default: "–" }}{% endif %} | {% if row.duck_wikipage %}{% endif %}{{ row.duck_species_primary | default: "–" }}{% if row.duck_wikipage %}{% endif %} {% if row.duck_species_secondary != nil %}_({{ row.duck_species_secondary }})_{% endif %} | {% if logo_exists == "true" %}{% endif %} |
+ | {{ row.release_date }} | [{{ row.version_number }}](https://github.com/duckdb/duckdb/releases/tag/v{{ row.version_number }}) | {% if row.blog_post %}[{{ row.codename }}]({{ row.blog_post }}){% else %}{{ row.codename | default: "–" }}{% endif %} | {% if row.duck_wikipage %}{% endif %}{{ row.duck_species_primary | default: "–" }}{% if row.duck_wikipage %}{% endif %} {% if row.duck_species_secondary != nil %}_({{ row.duck_species_secondary }})_{% endif %} | {% if row.end_of_life %}{{ row.end_of_life }}{% endif %} | {% if logo_exists == "true" %}{% endif %} |
{% endfor %}
diff --git a/single-file-document/concatenate_to_single_file.py b/single-file-document/concatenate_to_single_file.py
index 74705daff5d..8e75d0c739d 100644
--- a/single-file-document/concatenate_to_single_file.py
+++ b/single-file-document/concatenate_to_single_file.py
@@ -383,7 +383,7 @@ def add_blog_posts(blog_root, of):
---
title: DuckDB Documentation
subtitle: >-
- DuckDB version {config["current_snapshot_version"]}\\newline
+ DuckDB version {config["current_duckdb_version"]}\\newline
Generated on {datetime.now(timezone.utc).strftime("%Y-%m-%d at %H:%M UTC")}
---
"""))