diff --git a/AyCode.Core.Server/README.md b/AyCode.Core.Server/README.md index b952e41..fa22d88 100644 --- a/AyCode.Core.Server/README.md +++ b/AyCode.Core.Server/README.md @@ -6,7 +6,7 @@ Server-side extension of AyCode.Core. Provides server-specific implementations t | Document | Topic | |---|---| -| [LOGGING_SERVER.md](docs/LOGGING_SERVER.md) | GlobalLogger singleton, server-side logging | +| `LOGGING_SERVER.md` | GlobalLogger singleton, server-side logging | ## Folder Structure diff --git a/AyCode.Core.Server/docs/LOGGING_SERVER.md b/AyCode.Core.Server/docs/LOGGING_SERVER.md index 66af4cc..e4f462a 100644 --- a/AyCode.Core.Server/docs/LOGGING_SERVER.md +++ b/AyCode.Core.Server/docs/LOGGING_SERVER.md @@ -1,6 +1,6 @@ # Server Logging -Server-side logging extensions. For core framework (base classes, configuration, LogLevel, ILogger bridge) see [`AyCode.Core/docs/LOGGING.md`](../../AyCode.Core/docs/LOGGING.md). For remote writers (HTTP, browser, SignalR) see [`AyCode.Services/docs/LOGGING_REMOTE.md`](../../AyCode.Services/docs/LOGGING_REMOTE.md). +Server-side logging extensions. For core framework (base classes, configuration, LogLevel, ILogger bridge) see `AyCode.Core/docs/LOGGING.md`. For remote writers (HTTP, browser, SignalR) see `AyCode.Services/docs/LOGGING_REMOTE.md`. ## GlobalLogger diff --git a/AyCode.Core/README.md b/AyCode.Core/README.md index cb74611..0f1d538 100644 --- a/AyCode.Core/README.md +++ b/AyCode.Core/README.md @@ -6,10 +6,10 @@ Core library for the AyCode platform. Targets .NET 9 (set in `AyCode.Core.target | Document | Topic | |---|---| -| [BINARY_FORMAT.md](docs/BINARY_FORMAT.md) | Binary wire format spec (stream layout, type markers) | -| [BINARY_FEATURES.md](docs/BINARY_FEATURES.md) | Binary features (interning, ref tracking, property ordering) | -| [BINARY_OPTIONS.md](docs/BINARY_OPTIONS.md) | Binary configuration options & presets | -| [LOGGING.md](docs/LOGGING.md) | Logging framework (hierarchy, config, ILogger bridge) | +| `BINARY_FORMAT.md` | Binary wire format spec (stream layout, type markers) | +| `BINARY_FEATURES.md` | Binary features (interning, ref tracking, property ordering) | +| `BINARY_OPTIONS.md` | Binary configuration options & presets | +| `LOGGING.md` | Logging framework (hierarchy, config, ILogger bridge) | ## Folder Structure diff --git a/AyCode.Core/Serializers/Binaries/README.md b/AyCode.Core/Serializers/Binaries/README.md index bbbfb38..1eeb503 100644 --- a/AyCode.Core/Serializers/Binaries/README.md +++ b/AyCode.Core/Serializers/Binaries/README.md @@ -28,7 +28,7 @@ The serializer is generic over `TOutput` for strategy selection (`ArrayBinaryOut | 144+ | **Headers** — Metadata, RefHandling, CacheCount flags | | 192–255 | **Tiny ints** — Single-byte encoding for values -16 to 47 | -For the complete wire format specification (encoding rules, header format, interning protocol), see [`../../../../docs/BINARY_FORMAT.md`](../../../../docs/BINARY_FORMAT.md). +For the complete wire format specification (encoding rules, header format, interning protocol), see `docs/BINARY_FORMAT.md`. ## Key Files @@ -84,7 +84,7 @@ Key options that change wire format: `WireMode` (Compact/Fast), `ReferenceHandli Presets: `Default`, `FastMode`, `ShallowCopy`, `WasmOptimized`. -For detailed option documentation with wire format impact, code branches, and interactions, see [BINARY_FORMAT.md — Configuration Options](../../../../docs/BINARY_FORMAT.md#configuration-options). +For detailed option documentation with wire format impact, code branches, and interactions, see `docs/BINARY_OPTIONS.md`. ## Dependencies diff --git a/AyCode.Core/docs/BINARY_FEATURES.md b/AyCode.Core/docs/BINARY_FEATURES.md index a47c6cb..39ed3f6 100644 --- a/AyCode.Core/docs/BINARY_FEATURES.md +++ b/AyCode.Core/docs/BINARY_FEATURES.md @@ -1,6 +1,6 @@ # AcBinary Features -Advanced serialization features built on top of the wire format. For core type markers and encoding see [`BINARY_FORMAT.md`](BINARY_FORMAT.md). For configuration options and presets see [`BINARY_OPTIONS.md`](BINARY_OPTIONS.md). +Advanced serialization features built on top of the wire format. For core type markers and encoding see `BINARY_FORMAT.md`. For configuration options and presets see `BINARY_OPTIONS.md`. ## Compact Encoding Selection diff --git a/AyCode.Core/docs/BINARY_FORMAT.md b/AyCode.Core/docs/BINARY_FORMAT.md index 5b6e934..d5317de 100644 --- a/AyCode.Core/docs/BINARY_FORMAT.md +++ b/AyCode.Core/docs/BINARY_FORMAT.md @@ -1,9 +1,9 @@ # AcBinary Wire Format -Complete wire format specification for the AcBinary serializer. Source of truth: [`Serializers/Binaries/BinaryTypeCode.cs`](../Serializers/Binaries/BinaryTypeCode.cs). +Complete wire format specification for the AcBinary serializer. Source of truth: `Serializers/Binaries/BinaryTypeCode.cs`. -> For advanced features (compact encoding, string interning, reference tracking, property ordering) see [`BINARY_FEATURES.md`](BINARY_FEATURES.md). -> For configuration options, presets, and option interactions see [`BINARY_OPTIONS.md`](BINARY_OPTIONS.md). +> For advanced features (compact encoding, string interning, reference tracking, property ordering) see `BINARY_FEATURES.md`. +> For configuration options, presets, and option interactions see `BINARY_OPTIONS.md`. ## Stream Layout diff --git a/AyCode.Core/docs/BINARY_OPTIONS.md b/AyCode.Core/docs/BINARY_OPTIONS.md index 426504c..115a2b4 100644 --- a/AyCode.Core/docs/BINARY_OPTIONS.md +++ b/AyCode.Core/docs/BINARY_OPTIONS.md @@ -1,6 +1,6 @@ # AcBinary Configuration -Configuration options, presets, and option interactions for `AcBinarySerializerOptions`. For wire format see [`BINARY_FORMAT.md`](BINARY_FORMAT.md). For features (interning, ref tracking, property ordering) see [`BINARY_FEATURES.md`](BINARY_FEATURES.md). +Configuration options, presets, and option interactions for `AcBinarySerializerOptions`. For wire format see `BINARY_FORMAT.md`. For features (interning, ref tracking, property ordering) see `BINARY_FEATURES.md`. ## WireMode diff --git a/AyCode.Core/docs/LOGGING.md b/AyCode.Core/docs/LOGGING.md index c2d4e9b..af50590 100644 --- a/AyCode.Core/docs/LOGGING.md +++ b/AyCode.Core/docs/LOGGING.md @@ -2,8 +2,8 @@ Custom logging framework with multi-writer fan-out and `Microsoft.Extensions.Logging` integration. Source: `Loggers/` in this project. -> For server-side GlobalLogger see [`AyCode.Core.Server/docs/LOGGING_SERVER.md`](../../AyCode.Core.Server/docs/LOGGING_SERVER.md). -> For remote writers (HTTP, browser console, SignalR) see [`AyCode.Services/docs/LOGGING_REMOTE.md`](../../AyCode.Services/docs/LOGGING_REMOTE.md). +> For server-side GlobalLogger see `AyCode.Core.Server/docs/LOGGING_SERVER.md`. +> For remote writers (HTTP, browser console, SignalR) see `AyCode.Services/docs/LOGGING_REMOTE.md`. ## Design Overview diff --git a/AyCode.Services.Server/README.md b/AyCode.Services.Server/README.md index 82bc5a2..f7c0938 100644 --- a/AyCode.Services.Server/README.md +++ b/AyCode.Services.Server/README.md @@ -6,8 +6,8 @@ Server-side service implementations: JWT authentication, SendGrid email delivery | Document | Topic | |---|---| -| [SIGNALR_SERVER.md](docs/SIGNALR_SERVER.md) | Server-side SignalR hub (dispatch, session, broadcast) | -| [SIGNALR_DATASOURCE.md](docs/SIGNALR_DATASOURCE.md) | Real-time DataSource with CRUD & change tracking | +| `SIGNALR_SERVER.md` | Server-side SignalR hub (dispatch, session, broadcast) | +| `SIGNALR_DATASOURCE.md` | Real-time DataSource with CRUD & change tracking | ## Folder Structure diff --git a/AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md b/AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md index 560be6e..d1efedb 100644 --- a/AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md +++ b/AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md @@ -2,8 +2,8 @@ Change-tracked real-time collection built on top of the SignalR transport layer. Source: `SignalRs/AcSignalRDataSource.cs` in this project. -> For the underlying transport (tag system, wire protocol, client base) see [`AyCode.Services/docs/SIGNALR.md`](../../AyCode.Services/docs/SIGNALR.md). -> For server hub infrastructure see [`SIGNALR_SERVER.md`](SIGNALR_SERVER.md). +> For the underlying transport (tag system, wire protocol, client base) see `AyCode.Services/docs/SIGNALR.md`. +> For server hub infrastructure see `SIGNALR_SERVER.md`. ## Overview diff --git a/AyCode.Services.Server/docs/SIGNALR_SERVER.md b/AyCode.Services.Server/docs/SIGNALR_SERVER.md index 952c75a..fb51d17 100644 --- a/AyCode.Services.Server/docs/SIGNALR_SERVER.md +++ b/AyCode.Services.Server/docs/SIGNALR_SERVER.md @@ -2,8 +2,8 @@ Server-side SignalR hub infrastructure: method dispatch, session management, broadcast, and diagnostics. Source: `SignalRs/` in this project. -> For client-side transport (tags, wire protocol, client base) see [`AyCode.Services/docs/SIGNALR.md`](../../AyCode.Services/docs/SIGNALR.md). -> For the DataSource collection see [`SIGNALR_DATASOURCE.md`](SIGNALR_DATASOURCE.md). +> For client-side transport (tags, wire protocol, client base) see `AyCode.Services/docs/SIGNALR.md`. +> For the DataSource collection see `SIGNALR_DATASOURCE.md`. ## Server Processing diff --git a/AyCode.Services/README.md b/AyCode.Services/README.md index b6c2d88..088ba1f 100644 --- a/AyCode.Services/README.md +++ b/AyCode.Services/README.md @@ -6,8 +6,8 @@ Shared service implementations: SignalR communication (custom binary protocol), | Document | Topic | |---|---| -| [SIGNALR.md](docs/SIGNALR.md) | Client-side SignalR transport (tags, wire protocol, req/resp flow) | -| [LOGGING_REMOTE.md](docs/LOGGING_REMOTE.md) | Remote log writers (HTTP, browser console, SignalR) | +| `SIGNALR.md` | Client-side SignalR transport (tags, wire protocol, req/resp flow) | +| `LOGGING_REMOTE.md` | Remote log writers (HTTP, browser console, SignalR) | ## Folder Structure diff --git a/AyCode.Services/docs/LOGGING_REMOTE.md b/AyCode.Services/docs/LOGGING_REMOTE.md index c9a7087..f7cad6f 100644 --- a/AyCode.Services/docs/LOGGING_REMOTE.md +++ b/AyCode.Services/docs/LOGGING_REMOTE.md @@ -1,6 +1,6 @@ # Remote Log Writers -Client-side log writers that send log data to remote endpoints. Source: `Loggers/` in this project. For core logging framework see [`AyCode.Core/docs/LOGGING.md`](../../AyCode.Core/docs/LOGGING.md). For server-side GlobalLogger see [`AyCode.Core.Server/docs/LOGGING_SERVER.md`](../../AyCode.Core.Server/docs/LOGGING_SERVER.md). +Client-side log writers that send log data to remote endpoints. Source: `Loggers/` in this project. For core logging framework see `AyCode.Core/docs/LOGGING.md`. For server-side GlobalLogger see `AyCode.Core.Server/docs/LOGGING_SERVER.md`. ## AcBrowserConsoleLogWriter diff --git a/AyCode.Services/docs/SIGNALR.md b/AyCode.Services/docs/SIGNALR.md index a334681..9b0e46e 100644 --- a/AyCode.Services/docs/SIGNALR.md +++ b/AyCode.Services/docs/SIGNALR.md @@ -2,8 +2,8 @@ Client-side SignalR transport with custom binary protocol and tag-based dispatch. Source: `SignalRs/` in this project. -> For server-side hub, session, broadcast see [`AyCode.Services.Server/docs/SIGNALR_SERVER.md`](../../AyCode.Services.Server/docs/SIGNALR_SERVER.md). -> For the DataSource collection see [`AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md`](../../AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md). +> For server-side hub, session, broadcast see `AyCode.Services.Server/docs/SIGNALR_SERVER.md`. +> For the DataSource collection see `AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md`. ## Design Overview diff --git a/README.md b/README.md index fb5cbaa..17af137 100644 --- a/README.md +++ b/README.md @@ -12,22 +12,22 @@ Domain rules and key pitfalls live in a single file: [`.github/copilot-instructi | Claude Code | ✅ `CLAUDE.md` → references above | None | | Cursor / Windsurf | ✅ `README.md` | Read `copilot-instructions.md` via @file | -Solution-level docs in [`docs/`](docs/): +Solution-level docs in `docs/`: | Document | Topic | |---|---| -| [GLOSSARY.md](docs/GLOSSARY.md) | Core terminology reference | -| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | Solution layers, dependency rules | -| [CONVENTIONS.md](docs/CONVENTIONS.md) | Coding conventions | +| `GLOSSARY.md` | Core terminology reference | +| `ARCHITECTURE.md` | Solution layers, dependency rules | +| `CONVENTIONS.md` | Coding conventions | Project-level docs — each project's `docs/` folder documents the code it defines: | Project | Documents | |---|---| -| [`AyCode.Core/docs/`](AyCode.Core/docs/) | [BINARY_FORMAT](AyCode.Core/docs/BINARY_FORMAT.md), [BINARY_FEATURES](AyCode.Core/docs/BINARY_FEATURES.md), [BINARY_OPTIONS](AyCode.Core/docs/BINARY_OPTIONS.md), [LOGGING](AyCode.Core/docs/LOGGING.md) | -| [`AyCode.Core.Server/docs/`](AyCode.Core.Server/docs/) | [LOGGING_SERVER](AyCode.Core.Server/docs/LOGGING_SERVER.md) | -| [`AyCode.Services/docs/`](AyCode.Services/docs/) | [SIGNALR](AyCode.Services/docs/SIGNALR.md), [LOGGING_REMOTE](AyCode.Services/docs/LOGGING_REMOTE.md) | -| [`AyCode.Services.Server/docs/`](AyCode.Services.Server/docs/) | [SIGNALR_SERVER](AyCode.Services.Server/docs/SIGNALR_SERVER.md), [SIGNALR_DATASOURCE](AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md) | +| `AyCode.Core/docs/` | `BINARY_FORMAT.md`, `BINARY_FEATURES.md`, `BINARY_OPTIONS.md`, `LOGGING.md` | +| `AyCode.Core.Server/docs/` | `LOGGING_SERVER.md` | +| `AyCode.Services/docs/` | `SIGNALR.md`, `LOGGING_REMOTE.md` | +| `AyCode.Services.Server/docs/` | `SIGNALR_SERVER.md`, `SIGNALR_DATASOURCE.md` | ## Solution Structure diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index c50506e..4ff2953 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -36,7 +36,7 @@ AyCode.Services ← AyCode.Services.Server - **AyCode.Services.Server** — Server-side: SignalR hub with custom binary protocol, email (SendGrid), JWT auth. - **AyCode.Models.Server/DynamicMethods** — Reflection-based tag→method dispatch used by the SignalR hub. -> **SignalR Dispatch:** Both directions use a single method `OnReceiveMessage(int messageTag, byte[] messageBytes, int? requestId)` with integer tag-based routing instead of standard Hub methods. See [`AyCode.Services/docs/SIGNALR.md`](../AyCode.Services/docs/SIGNALR.md) for full details. +> **SignalR Dispatch:** Both directions use a single method `OnReceiveMessage(int messageTag, byte[] messageBytes, int? requestId)` with integer tag-based routing instead of standard Hub methods. See `AyCode.Services/docs/SIGNALR.md` for full details. ### Server Extensions - **AyCode.Core.Server**, **AyCode.Interfaces.Server**, **AyCode.Entities.Server**, **AyCode.Models.Server** — Server-only additions that don't belong in shared code. diff --git a/docs/CONVENTIONS.md b/docs/CONVENTIONS.md index 3b0bb4c..4f3230e 100644 --- a/docs/CONVENTIONS.md +++ b/docs/CONVENTIONS.md @@ -24,11 +24,11 @@ ## SignalR Conventions -See [`AyCode.Services/docs/SIGNALR.md`](../AyCode.Services/docs/SIGNALR.md) for full architecture documentation. +See `AyCode.Services/docs/SIGNALR.md` for full architecture documentation. - **Single dispatch method** — all communication goes through `OnReceiveMessage(int messageTag, byte[] messageBytes, int? requestId)`. Do not add new hub methods. - **Tag-based routing** — associate methods with integer tags via `[SignalR(tag)]` (server) or `[SignalRSendToClient(tag)]` (client). Tags must be unique across the entire system. -- **CRUD bundles** — entities use `SignalRCrudTags(getAllTag, getItemTag, addTag, updateTag, removeTag)` with 5 independent tag integers. Tags must be unique across the system. See [`AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md`](../AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md). +- **CRUD bundles** — entities use `SignalRCrudTags(getAllTag, getItemTag, addTag, updateTag, removeTag)` with 5 independent tag integers. Tags must be unique across the system. See `AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md`. - **Binary protocol** — `AcBinaryHubProtocol` is the transport protocol. Responses use pure Binary serialization. ### ⚠️ Temporary: JSON-in-Binary Request Parameters diff --git a/docs/GLOSSARY.md b/docs/GLOSSARY.md index c38a0ab..1496431 100644 --- a/docs/GLOSSARY.md +++ b/docs/GLOSSARY.md @@ -19,11 +19,11 @@ Core terminology for the AyCode framework. Read this before working on unfamilia | **Toon** | Token-Oriented Object Notation. LLM-optimized format with @meta (schema) and @data (values) sections. Designed for maximum LLM comprehension accuracy. | | **AcJson** | Newtonsoft.Json wrapper with $id/$ref reference handling, IId-based resolution, and chain deserialization API. | | **Chain API** | Fluent deserialization: `CreateDeserializeChain().ThenDeserialize()...Execute()`. Resolves cross-references across multiple types. | -| **String Interning** | Binary serializer deduplicates repeated strings. Controlled via `[AcStringIntern]` attribute or `StringInterningMode`. See [`AyCode.Core/docs/BINARY_FEATURES.md`](../AyCode.Core/docs/BINARY_FEATURES.md#string-interning-protocol). | +| **String Interning** | Binary serializer deduplicates repeated strings. Controlled via `[AcStringIntern]` attribute or `StringInterningMode`. See `AyCode.Core/docs/BINARY_FEATURES.md`. | ## Binary Wire Format -For full specification see [`AyCode.Core/docs/BINARY_FORMAT.md`](../AyCode.Core/docs/BINARY_FORMAT.md). +For full specification see `AyCode.Core/docs/BINARY_FORMAT.md`. | Term | Definition | |---|---| @@ -66,14 +66,14 @@ For full specification see [`AyCode.Core/docs/BINARY_FORMAT.md`](../AyCode.Core/ ## SignalR Infrastructure -For full architecture see [`AyCode.Services/docs/SIGNALR.md`](../AyCode.Services/docs/SIGNALR.md). +For full architecture see `AyCode.Services/docs/SIGNALR.md`. | Term | Definition | |---|---| | **OnReceiveMessage** | The single SignalR method for all communication. Signature: `(int messageTag, byte[] messageBytes, int? requestId)`. | | **Message Tag** | Integer identifier mapping to a method via `[SignalR(tag)]` or `[SignalRSendToClient(tag)]` attributes. | | **DynamicMethodRegistry** | Resolves message tags to `MethodInfo` at runtime. Static `ConcurrentDictionary` cache with lazy scan on miss. | -| **SignalRCrudTags** | Sealed class bundling 5 independent tag integers (getAllTag, getItemTag, addTag, updateTag, removeTag) for entity CRUD. See [`AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md`](../AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md). | +| **SignalRCrudTags** | Sealed class bundling 5 independent tag integers (getAllTag, getItemTag, addTag, updateTag, removeTag) for entity CRUD. See `AyCode.Services.Server/docs/SIGNALR_DATASOURCE.md`. | | **AcBinaryHubProtocol** | Custom `IHubProtocol` replacing SignalR's JSON+Base64 with `AcBinarySerializer`. Protocol name: `"acbinary"`. | | **SignalResponseDataMessage** | Response message supporting Binary or JSON+GZip. Responses use pure Binary (no JSON overhead). | | **SignalPostJsonDataMessage** | ⚠️ TECH DEBT — request params serialized to JSON inside Binary envelope. Planned for pure Binary replacement. | @@ -88,7 +88,7 @@ For full architecture see [`AyCode.Services/docs/SIGNALR.md`](../AyCode.Services ## Logging -For full architecture see [`AyCode.Core/docs/LOGGING.md`](../AyCode.Core/docs/LOGGING.md). +For full architecture see `AyCode.Core/docs/LOGGING.md`. | Term | Definition | |---|---|