diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 2e9fb3d..da5f850 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -71,7 +71,7 @@ Block-based editor (Craft/Notion-like) for Compose Multiplatform. Unidirectional | Unknown block type | `core/UnknownBlockType.kt` | `UnknownBlockType` (implements `CustomBlockType`) | | Document serialization | `serialization/DocumentSchema.kt` | `DocumentSchema` (encode/decode full document) | | Rich text serialization | `serialization/RichTextSchema.kt` | `RichTextSchema` | -| Link URL policy | `richtext/LinkUrlPolicy.kt` | `LinkUrlPolicy`, `LinkValidationResult`, `LinkValidationError` | +| Link URL policy | `richtext/LinkUrlPolicy.kt` | `LinkUrlPolicy` (`validate` user-entry normalization, `validateStoredTarget` codec/persistence preservation), `LinkValidationResult`, `LinkValidationError` | | Link hit tester | `richtext/LinkHitTester.kt` | `LinkHitTester` (internal) | | Link state | `richtext/LinkState.kt` | `LinkState`, `LinkTarget` | | Link state calculator | `richtext/LinkStateCalculator.kt` | `LinkStateCalculator` (internal) | @@ -93,11 +93,34 @@ Block-based editor (Craft/Notion-like) for Compose Multiplatform. Unidirectional | HTML schema entry point | `htmlserialization/HtmlSchema.kt` | `HtmlSchema` (`decode` and `encode` wired through profile-driven engines) | | HTML decode limits | `htmlserialization/HtmlDecodeLimits.kt` | `HtmlDecodeLimits` (input-size bound; `loadFromHtml` / `HtmlSchema.decodeWithReport` `limits` param) | | HTML parser internals | `htmlserialization/HtmlParser.kt`, `htmlserialization/HtmlPolicyApplier.kt`, `htmlserialization/HtmlTokenizer.kt`, `htmlserialization/HtmlTreeBuilder.kt`, `htmlserialization/HtmlNode.kt`, `htmlserialization/HtmlToken.kt` | `HtmlParser.parse()` (internal), `HtmlPolicyApplier`, `HtmlNode`, `HtmlToken` | -| HTML decode engine | `htmlserialization/HtmlDecodeEngine.kt`, `htmlserialization/TagDecodeContextImpl.kt`, `htmlserialization/HtmlNodeViewMapper.kt`, `htmlserialization/DefaultTagDecoders.kt`, `htmlserialization/PreservedHtmlBlockType.kt` | `HtmlDecodeEngine` (internal; normalizes indentation + numbered lists after decode), `TagDecodeContextImpl`, default tag decoders, `PreservedHtmlBlockType`; default list-item decoders honor `class="cascade-indent-N"` as the lossless default-profile list-depth escape hatch, while default `