diff --git a/CHANGELOG.md b/CHANGELOG.md
index fdfbb5b..23c7335 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,10 @@ All notable changes to `ichava/core` follow [Keep a Changelog](https://keepachan
## [Unreleased]
+### Changed
+
+- Docs, config comments and test notes name icon-browser where they named react-icon-browser, which is retired: the browser that shares the SVG caps and monochrome rule, and its svg-baseline spec, live in icon-browser since 2026-11-12. CHANGELOG history is unchanged.
+
## [0.1.0] - 2026-11-13
First release of `ichava/core`. The repository is published as a single commit; the 0.1.x tags cut between 2026-10-23 and 2026-10-27 (v0.1.0 to v0.1.3) are folded into this release, and their notes are kept below under *Archived history*.
diff --git a/config/ichava-core.php b/config/ichava-core.php
index 6fd56a7..8a08a06 100644
--- a/config/ichava-core.php
+++ b/config/ichava-core.php
@@ -496,8 +496,8 @@
| is served as an empty string, never raw.
|
| `max_elements` counts elements, not nodes: text and whitespace nodes
- | are bounded by `max_bytes`. Both values match react-icon-browser and
- | icon-sets-sync, so the three runtimes refuse the same files. Both are
+ | are bounded by `max_bytes`. Both values match icon-browser's browser
+ | and icon-sets-sync, so the three runtimes refuse the same files. Both are
| at least 4x the largest measured across all 135,112 SVGs in the
| icon-sets-* packs on 2026-11-04 (1,053,328 bytes; 6,741 elements).
| The per-kind serving budget (`max_file_size`,
diff --git a/docs/architecture.md b/docs/architecture.md
index 7956b26..6457298 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -35,7 +35,7 @@ flowchart TB
meta["ichava/ichava
pre-split monolith, superseded by core
ARCHIVED 2026-09-22, read-only"]
toolkit["ichava/icon-sets-sync
Docker-first sync tool
refreshes vendored SVGs via PR
(not installed by users)"]
motion["ichava/js-motion
SVG animation engine
~205 presets, no runtime deps
(outside the Composer graph)"]
- react["@ichava/react-icon-browser
React 19 rebuild of the front end
PRIVATE, not on npm"]
+ react["ichava/react-icon-browser
React 19 rebuild of the front end
RETIRED 2026-11-13, source now in icon-browser"]
browser -- depends on --> core
tabler -- depends on --> core
@@ -45,7 +45,7 @@ flowchart TB
toolkit -. CI refreshes .-> tabler
toolkit -. CI refreshes .-> flag
toolkit -. CI refreshes .-> twemoji
- react -. replaces the SPA in .-> browser
+ react -. folded into .-> browser
classDef engine fill:#1f6feb,stroke:#1f6feb,color:#fff
classDef http fill:#8957e5,stroke:#8957e5,color:#fff
diff --git a/docs/configuration.md b/docs/configuration.md
index 6fdafcc..1c2804f 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -163,8 +163,8 @@ string, never raw.
| `svg.max_bytes` (`ICHAVA_SVG_MAX_BYTES`) | 4,500,000 | before the SVG is parsed |
| `svg.max_elements` (`ICHAVA_SVG_MAX_ELEMENTS`) | 30,000 | while the tree is walked; counts elements only, since `max_bytes` bounds text and whitespace |
-Both values match `react-icon-browser` and `icon-sets-sync`, so all three runtimes refuse the same
-files. On 2026-11-04, across all 135,112 SVGs in the `icon-sets-*` packs, the largest file was
+Both values match icon-browser's browser (`limits.svgMaxChars` and `svgMaxNodes`, formerly in
+react-icon-browser) and `icon-sets-sync`, so all three runtimes refuse the same files. On 2026-11-04, across all 135,112 SVGs in the `icon-sets-*` packs, the largest file was
1,053,328 bytes and the most elements in one file was 6,741, so both caps are at least 4x the
largest real file. The serve path also checks the kind's `max_file_size` before it reads the file.
diff --git a/src/Constants/IchavaConstants.php b/src/Constants/IchavaConstants.php
index 7221142..35cd17f 100644
--- a/src/Constants/IchavaConstants.php
+++ b/src/Constants/IchavaConstants.php
@@ -106,7 +106,7 @@ final class IchavaConstants
* which stays the tighter limit on the serve path. Measured 2026-11-04 over
* all 135,112 SVGs under the icon-sets-* packs: the largest is 1,053,328
* bytes (a parked metronic brand logo), so 4,500,000 is at least 4x that.
- * The value matches react-icon-browser and icon-sets-sync, so the three
+ * The value matches icon-browser's browser and icon-sets-sync, so the three
* runtimes refuse the same files.
*
* Because it bounds the whole input, it also bounds the text and
@@ -119,7 +119,7 @@ final class IchavaConstants
/**
* Most ELEMENTS the SVG sanitiser will walk before refusing the document.
*
- * Elements, not nodes: the same count react-icon-browser and icon-sets-sync
+ * Elements, not nodes: the same count icon-browser's browser and icon-sets-sync
* use, and the same value, so the three runtimes agree. Text and whitespace
* nodes are bounded by the byte cap above instead. Measured 2026-11-04 over
* the same 135,112 SVGs: the most elements in one file is 6,741 (bundled
diff --git a/src/Services/Traits/ConvertsMonochromeToCurrentColor.php b/src/Services/Traits/ConvertsMonochromeToCurrentColor.php
index d5ea7be..e0530d2 100644
--- a/src/Services/Traits/ConvertsMonochromeToCurrentColor.php
+++ b/src/Services/Traits/ConvertsMonochromeToCurrentColor.php
@@ -128,7 +128,8 @@ private function paintValues(DOMElement $element): array
* channel at most 0x40 and within 0x18 of the others. Twemoji's heavy dollar sign
* is #292F33, which pure-black matching missed, so it stayed near-black on a dark
* page. A dark colour with a hue (navy, maroon) is still a colour. Mirrors
- * react-icon-browser's monochrome.ts, so both catalogs paint an icon the same way.
+ * icon-browser's resources/js/modules/svg/infrastructure/monochrome.ts (formerly react-icon-browser's), so both
+ * catalogs paint an icon the same way.
*/
private function isBlackPaint(string $value): bool
{
diff --git a/tests/Unit/SvgArchetypeRegressionTest.php b/tests/Unit/SvgArchetypeRegressionTest.php
index 5bc07df..873b8a4 100644
--- a/tests/Unit/SvgArchetypeRegressionTest.php
+++ b/tests/Unit/SvgArchetypeRegressionTest.php
@@ -27,8 +27,8 @@
* This is construct-level rather than pixel-level, and that is a deliberate
* limit worth stating. It cannot see that a gradient renders the wrong colour;
* it can see that the gradient lost its stops, which is the failure mode that
- * actually occurred. Pixel comparison for the SPA lives in
- * `react-icon-browser/e2e/svg-baseline.spec.ts`.
+ * actually occurred. Pixel comparison for the browser lives in
+ * `icon-browser/e2e/browser/svg-baseline.spec.ts` (public packs only).
*
* Fixtures and their provenance: `tests/fixtures/archetypes/manifest.json`.
*/
diff --git a/tests/Unit/SvgPresentationParityTest.php b/tests/Unit/SvgPresentationParityTest.php
index fe6f4fa..be5e341 100644
--- a/tests/Unit/SvgPresentationParityTest.php
+++ b/tests/Unit/SvgPresentationParityTest.php
@@ -16,7 +16,7 @@
* stripped.
*
* tests/fixtures/svg/presentation-vectors.json is byte-identical in core,
- * react-icon-browser and js-icon-components, and copies its rows from the Go
+ * icon-browser and js-icon-components, and copies its rows from the Go
* table in icon-sets-sync, so all four sanitisers make the same decisions.
*/
function presentationSanitise(string $svg): string