diff --git a/compose.instance.yaml b/compose.instance.yaml
new file mode 100644
index 0000000..7c77693
--- /dev/null
+++ b/compose.instance.yaml
@@ -0,0 +1,38 @@
+# Compose overlay that grafts this Kalamar instance's customizations onto the
+# stock `kalamar` service of KorAP-Docker's compose.yaml, so the instance can
+# be tested locally without changing either the KorAP-Docker or the
+# KorAP-Ingestion project.
+#
+# It is meant to be *layered on top of* the base compose, e.g.:
+#
+#   docker compose -f <base-compose> -f compose.instance.yaml up
+#
+# Requirements:
+#   * KALAMAR_INSTANCE_DIR must be the ABSOLUTE path to this checkout.
+#     Relative bind-mount paths in a compose override resolve against the
+#     project directory (the first -f / the cwd), not against this file, so
+#     the mounts below go through an absolute env var instead.
+#
+# KorAP-Ingestion wires this up automatically; see its `korap` target and pass
+#   make korap KALAMAR_INSTANCE=../Kalamar-Instance-IDS
+#
+# Keep the mount list in sync with what a real deployment overlays (compare the
+# `deliko-*-compose.yml` files in the sibling DeLiKo instance).
+services:
+  kalamar:
+    # This instance serves its corpus release log as Markdown (*.html.md),
+    # which needs a Kalamar with the Markdown renderer (>= v0.66). The base
+    # compose pins an older image, so override it here. Point KALAMAR_IMAGE at
+    # a locally built tag when testing renderer changes:
+    #   make korap KALAMAR_INSTANCE=../Kalamar-Instance-IDS KALAMAR_IMAGE=korap/kalamar:v0.66-alpha-large
+    image: ${KALAMAR_IMAGE:-korap/kalamar:v0.66-alpha}
+    environment:
+      # Use this instance's config verbatim: skip the export-plugin entrypoint
+      # hack, which rewrites /kalamar/kalamar.production.conf in place and would
+      # fight the read-only mount below.
+      KALAMAR_EXPORT: "false"
+    volumes:
+      - ${KALAMAR_INSTANCE_DIR}/kalamar.ids-mannheim.conf:/kalamar/kalamar.production.conf:ro
+      - ${KALAMAR_INSTANCE_DIR}/templates/custom:/kalamar/templates/custom:ro
+      - ${KALAMAR_INSTANCE_DIR}/default.plugins.json:/kalamar/default.plugins.json:ro
+      - ${KALAMAR_INSTANCE_DIR}/public/robots.txt:/kalamar/public/robots.txt:ro
diff --git a/kalamar.ids-mannheim.conf b/kalamar.ids-mannheim.conf
index e61bfda..34004e7 100644
--- a/kalamar.ids-mannheim.conf
+++ b/kalamar.ids-mannheim.conf
@@ -14,6 +14,10 @@
   Kalamar => {
     # Removed for docker compliance
     # api_path => 'http://10.0.10.51:9000/api/',
+    # Render Markdown doc pages (*.html.md) with headings at their literal
+    # level, so "##" in the corpus release log is an <h2> (matches the rest
+    # of the doc pages) rather than being pushed down by the default offset.
+    Markdown => { heading_offset => 0 },
     log_path => $app->home . '/log',
     secure_cookie => 1,
     https_only => 1,
@@ -33,6 +37,10 @@
         "class" => "folded",
         "items" => [
           {
+            "title" => "releases",
+            "id" => "releases"
+          },
+          {
             "title" => "composition",
             "id" => "composition"
           },
@@ -110,6 +118,8 @@
       de_Nav_useful_subcorpora => 'Nützliche Subkorpora',
       en_Nav_named_vc => 'Named VC',
       de_Nav_named_vc => 'Benamte VC',
+      en_Nav_releases => 'Release Log',
+      de_Nav_releases => 'Versionsverlauf',
     }
   },
   'TagHelpers-ContentBlock' => {
diff --git a/templates/custom/de/doc/corpus/releases.html.md b/templates/custom/de/doc/corpus/releases.html.md
new file mode 100644
index 0000000..04c7511
--- /dev/null
+++ b/templates/custom/de/doc/corpus/releases.html.md
@@ -0,0 +1,292 @@
+% layout 'main', title => 'KorAP: ' . loc('Nav_releases');
+
+%= page_title
+
+Diese Seite listet die wesentlichen Änderungen jeder DeReKo-KorAP-Ausgabe
+gegenüber früheren Korpusversionen auf.
+
+<!--
+  WARTUNGSHINWEISE (dieser Kommentar erscheint nicht auf der Webseite):
+  * Diese Datei IST die deutsche Seite: Kalamar rendert sie direkt (Markdown
+    -> HTML zur Laufzeit). Es gibt keinen Build-Schritt und keine generierte
+    .html.ep.
+  * Die englische Seite ist eine eigene Datei,
+    templates/custom/doc/corpus/releases.html.md; beide synchron halten.
+  * Für jede Ausgabe oben einen neuen Abschnitt
+    "## DeReKo-KorAP-YYYY-N (YYYY-MM-TT)" ergänzen.
+  * Änderungen unter den passenden Überschriften gruppieren:
+    Hinzugefügt, Geändert, Behobene Fehler, Entfernt (nicht Zutreffendes
+    weglassen).
+  * Nur die beiden jüngsten Ausgaben bleiben ausgeklappt. Bei den älteren
+    stehen Überschrift und Einleitungsabsatz weiterhin außerhalb, die
+    Kategorien dagegen in einem <details>-Block ("Änderungen im Detail").
+    Beim Aufnehmen einer neuen Ausgabe die dann drittjüngste ebenso
+    einklappen. Die Leerzeilen nach <summary> und vor </details> sind
+    zwingend.
+  * Überschriften werden auf ihrer wörtlichen Ebene ausgegeben
+    (heading_offset => 0 in der Instanz-Konfiguration), "##" ist also ein h2
+    und "###" ein h3.
+  * Externe (http/https) Links öffnen automatisch im oberen Frame; es sind
+    keine Link-Attribute nötig. HTML-Kommentare wie dieser werden aus der
+    Ausgabe entfernt.
+  * Falls eine frühere Ausgabe unter einer eigenen URL erreichbar bleibt (wie
+    https://korap.dnb.de/deliko-old bei DeLiKo@DNB), hier und in der englischen
+    Fassung einen Absatz "Eine frühere Ausgabe benötigt?" ergänzen.
+-->
+
+## DeReKo-KorAP-2026-II (voraussichtlich 15.09.2026)
+
+DeReKo-KorAP-2026-II ist eine auf Grundlage von DeReKo-2026-I vollständig
+neu tokenisierte, annotierte und indexierte Ausgabe. Sie umfasst
+31.696.255.957 Tokens aus 95.565.305 Texten.
+
+Die Ausgabe wird voraussichtlich am 15.09.2026 offiziell veröffentlicht. Bis dahin ist
+sie bereits unter
+[korap.ids-mannheim.de/instance/test-docker](https://korap.ids-mannheim.de/instance/test-docker)
+verfügbar.
+
+### Geändert
+
+- **Breaking Change:** Satzzeichen sind nun als eigene Tokens indexiert und
+  damit direkt suchbar (z. B. `[orth=","]`) – so, wie es in
+  [DeLiKo@DNB](https://korap.dnb.de/) bereits der Fall war. Zumindest
+  für eine Übergangszeit werden sie dadurch – anders als in COSMAS II und in
+  früheren DeReKo-KorAP-Ausgaben – bei Abstandsanfragen mitgezählt: Anfragen
+  wie `Haus /w2 Tür` liefern deshalb abweichende Ergebnisse. Bestehende
+  Abstandsanfragen sollten entsprechend überprüft und gegebenenfalls
+  angepasst werden.
+- **Breaking Change:** Das Themendomänen-Metadatum, das wir irrtümlicherweise
+  `textClass` genannt hatten, heißt nun `dmozDomain` (die aus dem DMOZ / Open
+  Directory Project abgeleitete Themendomänen-Klassifikation, Weiß 2005). Anfragen und
+  Exporte, die sich auf `textClass` bezogen, müssen auf `dmozDomain`
+  umgestellt werden.
+
+### Hinzugefügt
+
+- Zeitungen und Zeitschriften
+    - Frankfurter Rundschau 2002-2025
+    - Markt & Technik 2020-2024
+    - Fehlende Jahrgänge von:
+        - BRIGITTE Mom
+        - Business Punk
+        - Neue Luzerner Zeitung
+        - Norddeutsche Neueste Nachrichten
+        - Nassauische Neue Presse
+- Belletristik
+    - Gmeiner Belletristik-Korpus 2009-2019
+- eine zweite, unabhängige Themendomänen-Klassifikation, `wikiDomain`, die
+  jeden Text einer von 39 [Hauptthemen-Kategorien der
+  Wikipedia](https://en.wikipedia.org/wiki/Category:Main_topic_classifications)
+  zuordnet, erzeugt mit
+  [wikiTaxonomy](https://gitlab.ids-mannheim.de/ecker/wikiTaxonomy)
+  (Ecker & Kupietz 2026); sie ergänzt die bestehende
+  `dmozDomain`-Klassifikation
+- Annotationen
+    - neue Foundry [*spaCy*](https://spacy.io/) (v3.8.11, Modell:
+      [de_core_news_lg](https://spacy.io/models/de#de_core_news_lg), erzeugt mit
+      [conllu-spacy](https://github.com/KorAP/conllu-spacy-docker)) mit
+      Annotationen zu:
+        - XPOS (STTS)
+        - UPOS
+        - Lemma (GermaLemma)
+        - morphologische Features
+        - Dependenzrelationen
+    - neue experimentelle Foundry *gender* (erzeugt mit
+      [conllu-gender](https://github.com/KorAP/conllu-gender)) mit Annotationen
+      zu geschlechtersensitiv markierten Personenbezeichnungen, Artikelwörtern,
+      Pronomen und Neopronomen:
+        - XPOS (STTS)
+        - UPOS
+        - Lemma (Nominativ Singular unter Beibehaltung des Genderzeichens)
+        - morphologische Features (`Gender`, `Number`, `PronType`)
+
+      Erfasst werden die sechs Markertypen Genderstern (`Lehrer*in`),
+      Doppelpunkt (`Lehrer:in`), Unterstrich (`Lehrer_in`), Binnen-I
+      (`LehrerIn`), Klammern (`Lehrer(in)`) und Schrägstrich (`Lehrer/in`)
+      sowie Neopronomen (z. B. *sier*, *xier*, *hen*, *dey*). Grundlage ist die
+      morphosyntaktische Analyse in [Ochs
+      (2026)](https://doi.org/10.65020/0619d927) bzw. [Ochs & Rüdiger
+      (2025)](https://doi.org/10.1515/9783111388694).
+
+      **Caveat:** Diese Foundry ist experimentell. Die Annotation erfolgt rein
+      musterbasiert, ohne Kontextdisambiguierung und ohne maschinelles Lernen,
+      und ist bewusst auf hohe Ausbeute (Recall) ausgelegt – die Präzision ist
+      entsprechend gering, insbesondere bei Artikelwörtern und Pronomen sowie
+      bei Fehltokenisierungen von `<Wort>:in`. Nicht erfasst sind u. a.
+      Binnen-I mit nicht-finalem Großbuchstaben (*jedEr*), gegenderte Adjektive
+      (*begeisterte\*n*), flektierte Kasusendungen (*Lehrers\*in*) sowie die
+      mit Standardformen homonymen Neopronomenformen *dem*, *deren*, *denen*.
+      Treffer sollten daher stets manuell geprüft werden.
+    - Tokenisierung nun mit
+      [KorAP-Tokenizer](https://github.com/KorAP/KorAP-Tokenizer) 2.4.2 (zuvor
+      2.3 bzw. ältere Versionen), u. a. mit:
+        - gendersensitiven Formen als jeweils ein Token: Doppelpunktformen
+          (`Nutzer:in`, `Kosovo-Albaner:innen`), Schrägstrichformen (`Nutzer/in`,
+          `Nutzer/-in`), Klammerformen (`Nutzer(in)`, `Nutzer(-in)`), das Muster
+          `Kaufmann/frau` sowie Kurzformen bei Artikelwörtern, Adjektiven und
+          Pronomen (`eine(n)`, `gute:r`, `ihm/r`, `diese(r)`)
+        - Unterstützung für Emoji-Komplexe (z. B. ZWJ-Sequenzen und Modifier)
+          sowie für Wikipedia-Emoji-Vorlagen
+        - einheitlicher Behandlung von Tausendertrennzeichen (Apostroph wie in
+          `1'000'000`, schmales Leerzeichen U+2009, schmales geschütztes
+          Leerzeichen U+202F)
+
+### Behobene Fehler
+
+- fehlende Annotationen (insbesondere im Jahrgang 2024) wurden ergänzt
+- Tokenisierung (KorAP-Tokenizer 2.4.2):
+    - Genderstern und Auslassungsstern führen nach einem Bindestrich nicht mehr
+      zu einer falschen Tokengrenze
+    - weiche Trennstriche (U+00AD) werden nicht mehr als Tokengrenze behandelt
+    - häufige mit Bindestrich verbundene Abkürzungskomposita werden nicht mehr
+      getrennt
+    - korrekte Behandlung von Unicode-Surrogatpaaren (z. B. Emojis) in
+      gendersensitiven Formen
+    - gendersensitive Formen mit Nicht-ASCII-Schrägstrich (U+2215 `∕`, U+2044
+      `⁄`, U+FF0F `／`), wie sie in EPUB-Quellen vorkommen, führen nicht mehr zu
+      einem Abbruch der Tokenisierung
+
+## DeReKo-KorAP-2026-I (19.01.2026)
+
+Veröffentlichung von DeReKo-KorAP 2026-I, das die Inhalte von
+DeReKo-KorAP-2025-I um neue Zeitungs- und Zeitschriftenjahrgänge ergänzt. Die
+[Zusammensetzung nach Quelle](composition?embedded=true) listet
+die in dieser Ausgabe enthaltenen Korpora auf.
+
+### Hinzugefügt
+
+- Bild der Wissenschaft (bdw), Jahrgang 2025
+- Radiopredigt-Manuskripte (rpk; nur IDS-intern)
+- Schemaliteratur des Verlags Bastei-Lübbe (par)
+- Plenardebatten des Deutschen Bundestags (pbt), Protokolle bis
+  einschließlich 18.03.2025
+
+### Geändert
+
+- die Plattform wurde um einige Funktionen erweitert und auf den aktuellen
+  Stand gebracht
+- das Thomas-Mann-Korpus (thm) ist 75 Jahre nach dem Tod Thomas Manns nicht
+  mehr auf das IDS beschränkt, sondern öffentlich zugänglich
+
+### Entfernt
+
+- Historisches Korpus/Digitale Bibliothek (dgb, 1945–2002)
+
+## DeReKo-KorAP-2025-I (18.03.2025)
+
+Veröffentlichung von DeReKo-KorAP 2025-I, das die Inhalte von
+DeReKo-KorAP-2024-I um neue Zeitungs- und Zeitschriftenjahrgänge ergänzt.
+
+<details>
+<summary>Änderungen im Detail</summary>
+
+### Hinzugefügt
+
+- Gmeiner Belletristik-Korpus (gm) 2009–2024
+
+### Geändert
+
+- die Plattform wurde um einige Funktionen erweitert und auf den aktuellen
+  Stand gebracht
+
+### Behobene Fehler
+
+- mehrere Fehler wurden bereinigt
+
+</details>
+
+## DeReKo-KorAP-2024-I (12.04.2024)
+
+Veröffentlichung von DeReKo-KorAP 2024-I, das die Inhalte von
+DeReKo-KorAP-2023-I um neue Zeitungs- und Zeitschriftenjahrgänge ergänzt.
+
+<details>
+<summary>Änderungen im Detail</summary>
+
+### Hinzugefügt
+
+- 28 technische und naturwissenschaftliche Fachzeitschriften, jeweils
+  2020–2023 (Ausnahme: Energie Informationsdienst ab 2021):
+    - automotiveIT (ait), AUTOMOBIL ELEKTRONIK (aue), AUTOMOBIL INDUSTRIE
+      (aui), AUTOMOBIL-Produktion (aut), Automationspraxis (aup)
+    - cav chemie-anlagen + verfahren (cav), CHEMIE TECHNIK (cht)
+    - Schweizer Maschinenmarkt (chm), Schweizer Maschinenmarkt Online (cho)
+    - Der Nahverkehr (dnv), Verkehrsunfall und Fahrzeugtechnik (vku),
+      Fahrzeug + Karosserie (fk), emobility tec (emt)
+    - Energie Informationsdienst (eid), Elektrische Maschinen (ema),
+      elektrotechnik (et), elektronik industrie (eli), Elektronik Produktion &
+      Prüftechnik (epp), productronic (prd)
+    - konstruktion + engineering (ke), KEM Konstruktion|Automation (kem),
+      mav maschinen anlagen verfahren (mav), Industrie Engineering Effizienz
+      (iee), Quality Engineering (qe), technik + EINKAUF (tue)
+    - medizin & technik (met), Technology Review (ter),
+      Wasserwirtschaft Wassertechnik (wwt)
+
+### Geändert
+
+- die Plattform wurde um einige Funktionen erweitert und auf den aktuellen
+  Stand gebracht
+
+### Behobene Fehler
+
+- mehrere Fehler wurden bereinigt
+
+</details>
+
+## DeReKo-KorAP-2023-I (10.03.2023)
+
+Veröffentlichung von DeReKo-KorAP 2023-I.
+
+<details>
+<summary>Änderungen im Detail</summary>
+
+### Hinzugefügt
+
+- Zugriff auf Volltexte bei Lizenzpartnern
+- Grenz-Echo (ge) 1999–2022
+- Liechtensteiner Vaterland (vat)
+
+### Behobene Fehler
+
+- mehrere Fehler wurden bereinigt
+
+</details>
+
+## DeReKo-KorAP-2022-I (11.03.2022)
+
+Veröffentlichung von DeReKo-KorAP 2022-I, neben Aktualisierungen der
+bestehenden Korpora.
+
+<details>
+<summary>Änderungen im Detail</summary>
+
+### Hinzugefügt
+
+- **NottDeuYTsch-Korpus** (NDY; nur IDS-intern)
+- **Twitter-Sample-Korpus** (TWI21; nur IDS-intern)
+- **Gingko – Geschriebenes Ingenieurwissenschaftliches Korpus** mit ATZ –
+  Automobiltechnische Zeitschrift (atz) und MTZ – Motortechnische Zeitschrift
+  (mtz), jeweils 2007–2016, bereits am 08.02.2022 vorab verfügbar gemacht
+- Zeitungen und Zeitschriften
+    - BLAU – das Kunstmagazin (bla) 2018–2019
+    - BRIGITTE Mom (brm) 2018–2021
+    - Business Punk (bup) 2018–2021
+    - Le Monde diplomatique (lmd) 2017–2021
+    - Nassauische Neue Presse (nnp) 2014–2021
+    - Neue Luzerner Zeitung (nlz) 2000–2021
+    - Norddeutsche Neueste Nachrichten (nnn) 2013–2021
+
+</details>
+
+## DeReKo-KorAP-2021-I (02.02.2021)
+
+`dereko-korap-2021-I` umfasst über 21,3 Milliarden Tokens. Das virtuelle
+Korpus enthält zusätzlich zu den Inhalten aus `dereko-korap-2020-I` neue
+Zeitungs- und Zeitschriftenjahrgänge.
+
+## DeReKo-KorAP-2020-I (26.06.2020)
+
+`dereko-korap-2020-I` umfasst über 20,6 Milliarden Tokens. Es enthält das in
+COSMAS II angebotene *W-gesamt*-Archiv (DeReKo-2020-I), weitere
+Wikipedia-Korpora (inkl. Artikel- und Diskussionskorpora) sowie einige weitere
+Korpora aus DeReKo-2020-I.
diff --git a/templates/custom/doc/corpus.html.ep b/templates/custom/doc/corpus.html.ep
index b343873..f64b4ef 100644
--- a/templates/custom/doc/corpus.html.ep
+++ b/templates/custom/doc/corpus.html.ep
@@ -24,6 +24,9 @@
   <p>
     Eine genaue Übersicht über die Zusammensetzung von <%=$corpus%> finden Sie auf der Seite <a href="corpus/composition?embedded=true">Zusammensetzung nach Quelle</a>.
   </p>
+  <p>
+    Die Änderungen gegenüber früheren Korpusversionen finden Sie im <a href="corpus/releases?embedded=true">Versionsverlauf</a>.
+  </p>
   <h3>Virtuelle Subkorpora</h3>
     <p>DeReKo und KorAP laden ihre Nutzer:innen ein, sich selbst ein bezüglich ihrer aktuellen Fragestellung und gemeinten Sprachdomäne möglichst repräsentatives virtuelles Subkorpus zu definieren.
   </p>
@@ -55,6 +58,9 @@
   <p>
     A detailed overview of the composition of <%=$corpus%> can be found on the <a href="corpus/composition?embedded=true">Composition by Source</a> page.
   </p>
+  <p>
+    The changes in each release compared to previous corpus versions are listed in the <a href="corpus/releases?embedded=true">Release Log</a>.
+  </p>
   <h3>Virtual Subcorpora</h3>
     <p>
     DeReKo and KorAP invite their users to define their own virtual subcorpus that is as representative as possible with regard to their current research question and intended language domain.
diff --git a/templates/custom/doc/corpus/releases.html.md b/templates/custom/doc/corpus/releases.html.md
new file mode 100644
index 0000000..a1401ef
--- /dev/null
+++ b/templates/custom/doc/corpus/releases.html.md
@@ -0,0 +1,279 @@
+% layout 'main', title => 'KorAP: ' . loc('Nav_releases');
+
+%= page_title
+
+This page lists the notable changes in each DeReKo-KorAP release
+compared to previous corpus versions.
+
+<!--
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
+
+  MAINTENANCE NOTES (this comment does not appear on the website):
+  * This file IS the English page: Kalamar renders it directly (Markdown ->
+    HTML on the fly). There is no build step and no generated .html.ep.
+  * The German page is a separate file, templates/custom/de/doc/corpus/
+    releases.html.md; keep the two in sync.
+  * For every release add a new "## DeReKo-KorAP-YYYY-N (YYYY-MM-DD)" section
+    at the top.
+  * Group changes under the appropriate headings:
+    Added, Changed, Fixed, Removed (drop the ones that do not apply).
+  * Only the two most recent releases stay expanded. For the older ones the
+    heading and the introductory paragraph stay outside, while the categories
+    go into a <details> block ("Changes in detail"). When adding a new
+    release, collapse the one that then becomes third-most-recent. The blank
+    lines after <summary> and before </details> are required.
+  * Headings render at their literal level (heading_offset => 0 in the
+    instance config), so "##" is an h2 and "###" an h3.
+  * External (http/https) links automatically open in the top frame; no link
+    attributes are needed. HTML comments like this one are stripped from the
+    output.
+  * If a previous release stays reachable under a separate URL (as
+    https://korap.dnb.de/deliko-old does for DeLiKo@DNB), add a
+    "Need an earlier release?" paragraph here and in the German version.
+-->
+
+## DeReKo-KorAP-2026-II (expected 2026-09-15)
+
+DeReKo-KorAP-2026-II is a completely re-tokenised, re-annotated and re-indexed
+release based on DeReKo-2026-I. It comprises 31,696,255,957 tokens from
+95,565,305 texts.
+
+The official release is expected on 2026-09-15. Until then it is already available at
+[korap.ids-mannheim.de/instance/test-docker](https://korap.ids-mannheim.de/instance/test-docker).
+
+### Changed
+
+- **Breaking change:** punctuation marks are now indexed as tokens of their
+  own and can therefore be searched directly (e.g. `[orth=","]`) — just as
+  they had already been in [DeLiKo@DNB](https://korap.dnb.de/). As a
+  consequence, they are — at least for a transitional period, and unlike in
+  COSMAS II and in earlier DeReKo-KorAP releases — counted in distance
+  queries: queries such as `Haus /w2 Tür` therefore return different results.
+  Existing distance queries should be reviewed and adjusted if necessary.
+- **Breaking change:** the topic-domain metadatum that we erroneously called
+  `textClass` is now called `dmozDomain` (the topic-domain
+  classification derived from the DMOZ / Open Directory Project, Weiß 2005). Queries and
+  exports that referred to `textClass` must be updated to use `dmozDomain`.
+
+### Added
+
+- Newspapers and magazines
+    - Frankfurter Rundschau 2002-2025
+    - Markt & Technik 2020-2024
+    - Missing volumes of:
+        - BRIGITTE Mom
+        - Business Punk
+        - Neue Luzerner Zeitung
+        - Norddeutsche Neueste Nachrichten
+        - Nassauische Neue Presse
+- Fiction
+    - Gmeiner fiction corpus 2009-2019
+- a second, independent topic-domain classification, `wikiDomain`, assigning
+  every text to one of 39 [main topic classifications of
+  Wikipedia](https://en.wikipedia.org/wiki/Category:Main_topic_classifications),
+  produced with
+  [wikiTaxonomy](https://gitlab.ids-mannheim.de/ecker/wikiTaxonomy)
+  (Ecker & Kupietz 2026); it complements the existing `dmozDomain`
+  classification
+- Annotations
+    - new foundry [*spaCy*](https://spacy.io/) (v3.8.11, model:
+      [de_core_news_lg](https://spacy.io/models/de#de_core_news_lg), produced with
+      [conllu-spacy](https://github.com/KorAP/conllu-spacy-docker)) with
+      annotations for:
+        - XPOS (STTS)
+        - UPOS
+        - lemma (GermaLemma)
+        - morphological features
+        - dependency relations
+    - new experimental foundry *gender* (produced with
+      [conllu-gender](https://github.com/KorAP/conllu-gender)) with annotations
+      for gender-sensitive personal nouns, determiners, pronouns and
+      neo-pronouns:
+        - XPOS (STTS)
+        - UPOS
+        - lemma (nominative singular, keeping the gender marker)
+        - morphological features (`Gender`, `Number`, `PronType`)
+
+      It covers the six marker types Genderstern (`Lehrer*in`), colon
+      (`Lehrer:in`), underscore (`Lehrer_in`), Binnen-I (`LehrerIn`),
+      parentheses (`Lehrer(in)`) and slash (`Lehrer/in`), as well as
+      neo-pronouns (e.g. *sier*, *xier*, *hen*, *dey*). It is based on the
+      morphosyntactic analysis in [Ochs
+      (2026)](https://doi.org/10.65020/0619d927) and [Ochs & Rüdiger
+      (2025)](https://doi.org/10.1515/9783111388694).
+
+      **Caveat:** This foundry is experimental. Annotation is purely
+      pattern-based, without contextual disambiguation or machine learning, and
+      is deliberately recall-oriented — precision is correspondingly low,
+      especially for determiners and pronouns and in the case of mistokenised
+      `<word>:in`. Not covered are, among others, Binnen-I with a non-final
+      capital (*jedEr*), gendered adjectives (*begeisterte\*n*), inflected case
+      suffixes (*Lehrers\*in*), and the neo-pronoun forms *dem*, *deren*,
+      *denen*, which are homonymous with standard forms. Matches should
+      therefore always be checked manually.
+    - tokenisation now uses
+      [KorAP-Tokenizer](https://github.com/KorAP/KorAP-Tokenizer) 2.4.2
+      (previously 2.3 and older versions), which brings, among other things:
+        - gender-sensitive forms kept as a single token: colon forms
+          (`Nutzer:in`, `Kosovo-Albaner:innen`), slash forms (`Nutzer/in`,
+          `Nutzer/-in`), parenthetical forms (`Nutzer(in)`, `Nutzer(-in)`), the
+          `Kaufmann/frau` pattern, and short forms of determiners, adjectives and
+          pronouns (`eine(n)`, `gute:r`, `ihm/r`, `diese(r)`)
+        - support for emoji complexes (e.g. ZWJ sequences and modifiers) and for
+          Wikipedia emoji templates
+        - consistent handling of thousands separators (apostrophe as in
+          `1'000'000`, thin space U+2009, narrow no-break space U+202F)
+
+### Fixed
+
+- missing annotations (in particular in the 2024 volume) were added
+- tokenisation (KorAP-Tokenizer 2.4.2):
+    - Genderstern and omission asterisk no longer cause a spurious token
+      boundary after a hyphen
+    - soft hyphens (U+00AD) are no longer treated as token boundaries
+    - frequent hyphenated compound abbreviations are no longer split
+    - correct handling of Unicode surrogate pairs (e.g. emoji) in
+      gender-sensitive forms
+    - gender-sensitive forms with a non-ASCII slash (U+2215 `∕`, U+2044 `⁄`,
+      U+FF0F `／`), as they occur in EPUB sources, no longer abort tokenisation
+
+## DeReKo-KorAP-2026-I (2026-01-19)
+
+Release of DeReKo-KorAP 2026-I, adding new newspaper and magazine volumes to
+the contents of DeReKo-KorAP-2025-I. The
+[composition by source](composition?embedded=true) lists the
+corpora contained in this release.
+
+### Added
+
+- Bild der Wissenschaft (bdw), 2025 volume
+- Radiopredigt-Manuskripte (rpk; IDS-internal only)
+- paraliterature published by Bastei-Lübbe (par)
+- plenary debates of the German Bundestag (pbt), protocols up to and
+  including 2025-03-18
+
+### Changed
+
+- the platform was extended and updated
+- the Thomas Mann corpus (thm) is no longer restricted to the IDS but
+  publicly accessible, 75 years after Thomas Mann's death
+
+### Removed
+
+- Historisches Korpus/Digitale Bibliothek (dgb, 1945–2002)
+
+## DeReKo-KorAP-2025-I (2025-03-18)
+
+Release of DeReKo-KorAP 2025-I, adding new newspaper and magazine volumes to
+the contents of DeReKo-KorAP-2024-I.
+
+<details>
+<summary>Changes in detail</summary>
+
+### Added
+
+- Gmeiner fiction corpus (gm) 2009–2024
+
+### Changed
+
+- the platform was extended and updated
+
+### Fixed
+
+- several bugs were fixed
+
+</details>
+
+## DeReKo-KorAP-2024-I (2024-04-12)
+
+Release of DeReKo-KorAP 2024-I, adding new newspaper and magazine volumes to
+the contents of DeReKo-KorAP-2023-I.
+
+<details>
+<summary>Changes in detail</summary>
+
+### Added
+
+- 28 technical and scientific trade magazines, 2020–2023 each (exception:
+  Energie Informationsdienst from 2021):
+    - automotiveIT (ait), AUTOMOBIL ELEKTRONIK (aue), AUTOMOBIL INDUSTRIE
+      (aui), AUTOMOBIL-Produktion (aut), Automationspraxis (aup)
+    - cav chemie-anlagen + verfahren (cav), CHEMIE TECHNIK (cht)
+    - Schweizer Maschinenmarkt (chm), Schweizer Maschinenmarkt Online (cho)
+    - Der Nahverkehr (dnv), Verkehrsunfall und Fahrzeugtechnik (vku),
+      Fahrzeug + Karosserie (fk), emobility tec (emt)
+    - Energie Informationsdienst (eid), Elektrische Maschinen (ema),
+      elektrotechnik (et), elektronik industrie (eli), Elektronik Produktion &
+      Prüftechnik (epp), productronic (prd)
+    - konstruktion + engineering (ke), KEM Konstruktion|Automation (kem),
+      mav maschinen anlagen verfahren (mav), Industrie Engineering Effizienz
+      (iee), Quality Engineering (qe), technik + EINKAUF (tue)
+    - medizin & technik (met), Technology Review (ter),
+      Wasserwirtschaft Wassertechnik (wwt)
+
+### Changed
+
+- the platform was extended and updated
+
+### Fixed
+
+- several bugs were fixed
+
+</details>
+
+## DeReKo-KorAP-2023-I (2023-03-10)
+
+Release of DeReKo-KorAP 2023-I.
+
+<details>
+<summary>Changes in detail</summary>
+
+### Added
+
+- access to full texts at licensing partners
+- Grenz-Echo (ge) 1999–2022
+- Liechtensteiner Vaterland (vat)
+
+### Fixed
+
+- several bugs were fixed
+
+</details>
+
+## DeReKo-KorAP-2022-I (2022-03-11)
+
+Release of DeReKo-KorAP 2022-I, in addition to updates of the existing corpora.
+
+<details>
+<summary>Changes in detail</summary>
+
+### Added
+
+- **NottDeuYTsch corpus** (NDY; IDS-internal only)
+- **Twitter sample corpus** (TWI21; IDS-internal only)
+- **Gingko – Geschriebenes Ingenieurwissenschaftliches Korpus** with ATZ –
+  Automobiltechnische Zeitschrift (atz) and MTZ – Motortechnische Zeitschrift
+  (mtz), 2007–2016 each, made available ahead of the release on 2022-02-08
+- Newspapers and magazines
+    - BLAU – das Kunstmagazin (bla) 2018–2019
+    - BRIGITTE Mom (brm) 2018–2021
+    - Business Punk (bup) 2018–2021
+    - Le Monde diplomatique (lmd) 2017–2021
+    - Nassauische Neue Presse (nnp) 2014–2021
+    - Neue Luzerner Zeitung (nlz) 2000–2021
+    - Norddeutsche Neueste Nachrichten (nnn) 2013–2021
+
+</details>
+
+## DeReKo-KorAP-2021-I (2021-02-02)
+
+`dereko-korap-2021-I` comprises over 21.3 billion tokens. In addition to the
+contents of `dereko-korap-2020-I`, the virtual corpus contains new newspaper
+and magazine volumes.
+
+## DeReKo-KorAP-2020-I (2020-06-26)
+
+`dereko-korap-2020-I` comprises over 20.6 billion tokens. It contains the
+*W-gesamt* archive offered in COSMAS II (DeReKo-2020-I), further Wikipedia
+corpora (including article and talk page corpora), as well as several other
+corpora from DeReKo-2020-I.
