Corrected the GIAAPP entry in the consumer map:
- Changed repository name from GiaApp to Gia.App
- Updated workspace path from Mango/Source/GiaApp to Mango/Source/Gia.App
This ensures the mapping matches the actual repo and folder structure.
Implemented MgGridVirtualizedDataSource<T> for DevExpress DxGrid integration, enabling server-side paging/filtering/sorting via SignalR. Added developer-only test page and menu entry. Extended IFruitBankDataControllerCommon and client DTOs for virtualized queries. Renamed ToPagedListAsync to ToGridListAsync and improved AcGridCriteriaTranslator to whitelist only real DB columns. Temporarily relaxed relation-path filtering/sorting for closed testing (see ACCORE-SIGVDS-T-R7X2). Updated documentation, TODOs, icons, CSS, and local dev tooling. Feature is developer-only and not enabled in production grids.
Replaced all references to `[NotGridFilterable]` with the new `[NoGridOperations]` attribute, which controls all grid operations (filter, sort, group, search) per property and supports a scope parameter (`Local`, `Server`, `Both`). Updated documentation to clarify handling of computed properties, detail DevExpress grid API support for disabling operations, and explain the rationale for the new attribute. Documented the grid column override API and updated TODOs to reference `[NoGridOperations]` as the standard opt-out mechanism. These changes ensure explicit, visible, and layer-appropriate grid operation restrictions.
Significantly enhanced documentation for DevExpress grid integration and server-side virtualization. Added a curated index of DxGrid examples, documented migration constraints, feature limitations, and clarified handling of computed/unbound columns. Introduced a repo-local GRID/ docs folder for product-specific grid decisions and TODOs. Updated ADRs and cross-links to reflect parity requirements and improved navigation. Added ADR 0007 for framework docs-mirror access. Improved overall clarity and maintainability of grid-related docs.
Implements client half of ADR 0004: splits SignalR DataSource into new base class (AcSignalRDataSourceBase), collection sibling (AcSignalRDataSource), and new virtualized sibling (AcSignalRVirtualizedDataSource) for server-side grid paging. Refactors context, sync, and save logic to the base; updates all related docs, contracts, and TODOs. Adds SIGNALR_VIRTUALIZED_DATASOURCE topic, updates ADR 0004, introduces ADR 0006 for PopulateMerge, and clarifies terminology. No grids/endpoints yet migrated; groundwork for server virtualization is complete.
Server-side paging/filtering/sorting/counting for SignalR grid endpoints is now complete and documented. Introduced AcGridCriteriaTranslator for secure DevExpress criteria parsing and AcGridDataQueryExtensions for ORM-neutral query materialization. SignalR hub base now supports Task<T>/ValueTask<T> for grid endpoints. SearchText is present but hard-rejected server-side pending design. DevExpress.Data 25.1.3 added as a dependency. Documentation, build/test scripts, and settings updated. Endpoints will opt-in per-grid; client integration is next.
Replaced IsRawBytesData with SignalResponseDataKind enum for extensible transport response handling (Default, RawBytes, GridDataQuery). Updated all protocol, client, and server logic to use the new enum. Dispatcher now validates and fills GridDataQuery responses, with error handling for non-upgraded endpoints. Updated XML docs, ADR 0004, and all related documentation and TODOs. Marked AcGridDataQuery<T> as [AcBinarySerializable(false)]. No functional change for existing calls; new logic is opt-in.
Replaced the dual-object grid data virtualization model with a single round-trip carrier, AcGridDataQuery<TDataItem>, now used for both request and response. Added IAcGridDataQuery interface. Updated all docs, ADR 0004, and TODOs to reflect the new design. Removed AcGridDataRequest.cs and migrated all references to the new type. Updated dispatcher, endpoint, and sort descriptor docs for the revised contract. Adjusted build/test scripts for the new structure.
Introduced initial scaffolding for grid data virtualization (ADR 0004) in AyCode.Core and AyCode.Blazor. Added `GridDataMode` enum, `AcGridDataRequest`, and `AcGridSortDescriptor` types for future server-side grid filtering and paging. Updated documentation and ADRs to reflect these inert declarations; no functional changes or parameter exposure yet.
- Major rewrite of ADR 0004: now covers unified server-side data virtualization (filtering, sorting, paging, count) via AcGridDataRequest in SignalParams; phased approach replaced by single feature; security, rollout, and alternatives updated.
- New ADR 0005: introduces IAcDataTransport abstraction for Blazor Server in-process data transport, enabling grid stack reuse across SignalR and in-process modes; covers DI scoping and serialization avoidance.
- Updated MGGRID and SIGNALR_DATASOURCE docs to reflect new virtualization design, terminology, and ADR cross-references; TODOs/status updated.
- GLOSSARY and README revised: AcExpressionNode marked deprecated, grid filtering clarified as DevExpress criteria, ADR index/status updated.
- Technical clarifications: consistent metadata/request/response patterns, SignalParams usage, and separation of transport/dispatcher/endpoint concerns; future work noted.
Added ACBLAZOR-GRID-T-K9F4 to MGGRID_TODO.md for sorting lookup items in MgGridFilterPanelTagBox via new OrderItemsByText and OrderItemsDescending properties. Updated ADR for MgGridLayoutSave and filter-panel restore to document the framework-level sorting decision and rationale. Clarified DevExpress DxTagBox lacks a sort API; sorting will be handled internally. No code changes—documentation and planning only.
Major overhaul of MgGridFilterPanelTagBox restore/healing logic:
- Level-triggered healing prevents lost filter criteria after async loads.
- Healing now only triggers when needed; delayed assert ensures stability.
- ValuesChanged event guarded to avoid accidental filter clearing.
- Diagnostics dormant but retained for future debugging.
- Comments and summaries updated for clarity.
Docs (MGGRID_PARAMETERS.md, 0004-signalr-datasource-server-side-filtering.md) updated to explain new logic, rationale, and future plans.
Minor refactor in GridShippingDocument.razor for reload clarity.
No functional change in ShippingsAdmin.razor (comment only).
Refactored MgGridFilterPanelTagBox to robustly heal filter criteria vs. async lookup data race, using level-triggered snapshot detection and reload. Added diagnostic logging. Updated MGGRID docs to explain the new logic, rationale, and planned v2 layout envelope solution. Minor unrelated shell command tweaks in settings.local.json.
Improved MgGridFilterPanelTagBox<TData, TValue> to detect in-place Data collection refills and trigger DevExpress editor Reload(), ensuring tags resolve when the collection is updated without changing its reference. Updated MGGRID_PARAMETERS.md to document this behavior and clarify why Reload() is needed for in-place fills.
Refactored the grid filter panel system:
- Renamed "quick-filter panel" to "filter panel" throughout.
- Introduced IMgGridFilterPanelComponent interface for filter panel contract.
- Split MgTagBox (now behavior-free) and new MgGridFilterPanelTagBox for grid filter logic.
- Grid tracks filter panel components, synchronizes criteria, and exposes new filter panel methods.
- Filter panel always rendered (CSS-hidden when off) to prevent invisible filtering.
- Added right-aligned "Clear Filters" button for panel-owned filters.
- Updated docs, parameter tables, and glossary for new terminology and structure.
- Updated usages to new component; legacy grid class implements no-op interface.
- Documented edge cases and updated CSS for new layout.
- Moved quick-filter panel below toolbar in MgGridBase for improved layout and visual alignment; FilterPanel now renders as a styled band between toolbar and group panel.
- Exposed GridSizeMode on IMgGridBase and MgGridBase; MgTagBox now inherits grid density by default for consistent sizing.
- Renamed FilterText to CustomFilterCriteria across grid/data source classes and tests to clarify its role as a DevExpress criteria string.
- Updated documentation (README.md, MGGRID_PARAMETERS.md, GLOSSARY.md, ADR 0004) to reflect filter panel placement, parameter naming, and sizing/layout changes.
- Adjusted CSS for new filter panel layout and visual integration.
- Updated example usages and tests to match new API and layout.
Introduced a flexible quick-filter panel to the grid system via a new FilterPanel slot in MgGridBase. Added interface and implementation for filter panel visibility and toggle logic. Updated toolbar to show a Show/Hide Filters button when applicable. MgTagBox now applies per-field quick-filters using SetFieldQuickFilter. Removed redundant MgGridFilterPanelBase. Updated documentation and ADR 0004 to cover the new feature. Added CSS for consistent filter panel styling and demonstrated usage in GridPartner.razor. Legacy MgGridBase updated for compatibility.
Introduced a FilterPanel slot and supporting components for per-field quick filtering in DevExpress Blazor grids. Added MgGridFilterPanelBase and MgTagBox for declarative, AND-combined field filters. Updated IMgGridBase and base classes to support SetFieldQuickFilter. Documented the extension in ADR 0004 and clarified SearchText handling. Registered DevExpress docs fetch domain and performed minor cleanups.
Refactored FruitBankConst and FruitBankConstClient to delegate PROD/DEV environment logic to AcEnv.IsProdDb, removing local state and events. Updated MGGRID_TODO.md with ADR reference. Added ADR 0002 documenting the migration of environment infrastructure (BaseUrl, env state, badge) to the framework. Updated settings.local.json with new doc/code read commands and improved build error reporting.
Added critical instructions to AGENTS.md mandating that `.github/copilot-instructions.md` must be read first in every session, with all session-start steps executed before any code or query actions. Documented a strict sequential execution override, prohibiting parallel doc/code reads, and mapped Copilot tool names to Codex shell commands. No functional changes to appsettings.json.
- Added MGGRID_TODO.md entry (ACBLAZOR-GRID-T-E3B6) for ErrorBoundary isolation of consumer templates and DataItem contract documentation.
- Updated GridShippingDocumentInfoPanel.razor to guard against null ShippingItems after add/save, preventing unhandled exceptions.
- Added PowerShell command in settings.local.json to count MGGRID_TODO.md lines for monitoring.
- Add InfoPanelEditTemplate to MgGridDataColumn for custom InfoPanel editors with refresh support
- Introduce MgGridInfoPanelEditContext for edit context/refresh
- Harden OnCustomizeEditModel to handle null edit models, preventing InfoPanel crashes and logging warnings
- Update docs: usage, editor resolution order, and new issue entry (ACBLAZOR-GRID-I-N7K2)
- Refactor grid templates to use new features and ensure consistent editor behavior
- Minor doc and formatting improvements
Extended MgGridBase to support server-roaming of user grid layouts via SignalR, controlled by the new EnableServerLayouts parameter. Updated Save/Load/HasUserLayoutAsync logic and documentation. Added SignalR API methods for grid layout storage. In EKÁER, added TryDepotError to require PartnerDepot before XML generation and enforced gross weight > 0 per line. Updated docs and settings.local.json for new features and automation.
- Added AyCode.Blazor/CONSUMERS.md to document consumer repos and usage for impact assessment.
- Switched appsettings.json URLs to localhost for local development; production URLs are now commented out.
- Commented out Blazor/DevExpress compression and optimization settings in .csproj files.
- Minor whitespace and indentation cleanups.
- No functional code changes.
Updated all docs, skills, and examples to use year-month archive files (`*_<YYYY>_<MM>.md`) for `_ISSUES.md`, `_TODO.md`, and `LLM_PROTOCOL_DECISIONS.md`. Decision Log rolling window now governed by LLMP-DEC-67 (last 15 entries active). Clarified archive file handling, updated uniqueness checks, and revised references throughout. Closed and documented resolution for `FBANKAPP-DMODEL-I-P6X4` in `DATAMODEL_ISSUES.md`.
- Removed all AyCode.Services.Server and Server DLL references from projects and code; now use only AyCode.Services and AyCode.Services.SignalRs.
- Updated all documentation links to reference AyCode.Services/docs/SIGNALR_DATASOURCE/README.md.
- Enabled AOT compilation in FruitBankHybrid.Web.Client.
- Added InternalsVisibleTo for AyCode.Services.Server.Tests to support internal testing.
- Introduced AcBinaryProtocolThreadPoolTests for thread-pool regression and contract testing.
- Added P2 feature TODO for per-message protocol mode selection in AcBinaryHubProtocol.
- Cleaned up using directives and removed obsolete Server-specific references.
- Minor formatting and whitespace improvements.
- Added optional logger to TaskHelper.Forget for fire-and-forget error logging
- Updated MgGridBase and data sources to accept and use logger instances
- Refactored AcSignalRDataSource to log deserialization faults
- Modified constructors and usages of SignalRDataSourceList/Observable for logger injection
- Added CountryCode to CargoTruck and displayed in new GridCargoTruck
- Introduced GridCargoTruck.razor and base class with logger integration
- Updated GridCargoPartner to use new cargo truck grid as detail row
- Improved code style and ensured consistent error handling throughout
Added "XML Documentation" section to CONVENTIONS.md, specifying usage of <summary> tags for developer-facing comments and restricting implementation details to external docs. Enabled EmitCompilerGeneratedFiles in FruitBank.Common.csproj for improved debugging and analysis.
Refactor SIGDS docs, archive DEC log, add pipe tests
- Updated all references to AcSignalRDataSource docs to new SIGNALR_DATASOURCE/README.md location; introduced SIGDS topic and paired issues/TODO files.
- Implemented new Decision Log archival policy: last-15-active entries remain, older entries moved to year-month archive (LLMP-DEC-65, 67); updated docs-archive skill for two-rule rotation.
- Added new SIGDS architectural TODO (ACCORE-SIGDS-T-D9F2) for relocating DataSource code.
- Updated doc tables, glossaries, and conventions for SIGDS.
- Added AcBinarySerializerPipeParallelTests.cs for parallel serialization/deserialization round-trip tests.
Update ID format to use per-repo prefixes and random suffix
Migrated all issue, TODO, and decision IDs to a new 4-part format: <PREFIX>-<TOPIC>-<TYPE>-<RAND>. Added per-repo prefix declarations in copilot-instructions.md and documented conventions in REPO_PREFIXES.md. Updated all topic registries, logs, cross-references, and documentation to use the new format. Introduced MIGRATION_ID_MAPPING.md for old-to-new ID mapping. Enhanced skills and protocol audit logic to validate and enforce per-repo prefixes and topic codes at runtime. Clarified Framework-First doctrine and ensured all references are unambiguous.
- Introduced the `adr-author` skill for structured ADR creation; updated session setup and shared skills to require pre-loading it.
- Added `SKILL.md` and `ADR_TEMPLATE.md` for ADR authoring workflow and documentation.
- Updated protocol decision log with entries for the new skill and its integration.
- Documented two critical JWT logging security issues in `LOGGING_ISSUES.md`.
- Minor: added a cleanup Bash command in `settings.local.json`.
Refactor docs: topic folders, TOON, XCUT, protocol sync
- Migrated all topic documentation into dedicated folders with canonical `README.md`, `ISSUES.md`, and `TODO.md` per topic (e.g., `LOGGING/`, `SIGNALR/`, `BINARY/`, `TOON/`).
- Added comprehensive TOON serializer documentation: design, format, options, attributes, inference, issues, and TODOs.
- Introduced `XCUT` folder for cross-cutting issues and TODOs, with canonical entries and topic cross-references.
- Updated all references and navigation to use new folder-based doc paths; fixed links and clarified doc structure.
- Enhanced AI agent protocol: enforce session skill preloading, `[LOADED_DOCS: ...]` short-name prefix, and mandatory `docs-check` skill for doc/code sync.
- Updated `.csproj` to include all `README.md` files for IDE visibility.
- Improved and clarified SignalR, grid, and project-level documentation.
- Minor code/test tweaks and doc content corrections for consistency.
Update protocol, docs-discovery skill, and doc layering
- Switched AI AGENT CORE PROTOCOL to new `[LOADED_DOCS: N files (+K this turn: ...)]` prefix format in all primary instruction files; updated examples and enforcement details.
- Added `docs-discovery` skill for proactive .md doc loading before code search; documented usage and integration as a shared agent skill.
- Introduced `## Protocol History` section and `LLM_PROTOCOL_DECISIONS.md` decision log for cross-repo protocol change tracking.
- Expanded protocol-audit skill and `REPOS.md` to support 8 instruction files (primary/inherit split), new invariants, and known issues.
- Added/updated structured TODO and issues docs for serialization, logging, and SignalR binary protocol.
- Improved cross-references, doc layering, and clarified documentation-first coding workflow.
- Various minor doc clarifications and formatting for protocol consistency.
Introduced framework-first design rules and updated documentation to clarify framework vs. consumer boundaries. Added AcLoggerOptions and DI-based logger factory extensions to AyCode.Core, enabling per-category logger instantiation from appsettings.json. Standardized SignalR connection setup with AddAcDefaults, replacing project-specific code. Enhanced protocol configuration for DI scope isolation. Refactored appsettings.json structure and added MSBuild targets for config propagation. Removed obsolete code and updated comments to match new patterns.
Refactor SignalR client DI and config, add test factory
Refactored FruitBankSignalRClient construction to use DI and centralized configuration from appsettings.json across all platforms. Introduced TestSignalRClientFactory for consistent test setup. Added FruitBankHubConnectionExtensions for reusable SignalR connection and logging configuration. Updated Program.cs and MauiProgram.cs to register logger factories, log writers, and IHubConnectionBuilder via DI. Embedded appsettings.json in MAUI and updated .csproj references for build flexibility. No business logic changes; all updates are infrastructure and test setup.
Correct rule references for no re-reading of loaded `.md` files. Add explicit "STRICT NO-RE-READ POLICY" section defining context and re-read conditions. Expand context recovery rules with auto-detection triggers and specify directories for recovery. These changes make doc-first and anti-loop policies clearer and more robust, ensuring efficient and up-to-date documentation usage.
Expanded copilot-instructions.md to enforce strict doc-first and cross-repo hard-gate rules, including per-question doc checks and a no re-read policy with explicit penalties. Broadened consent requirements for all file modifications. Updated context recovery paths. In CLAUDE.md, added sequential execution override and mapped Copilot tool names to Claude Code equivalents, ensuring protocol consistency across tools.
- Added "AI AGENT CORE PROTOCOL" to all copilot-instructions.md files: mandates [LOADED_DOCS] prefix, hard-gates tool usage, enforces no-re-read of .md files, and requires user consent for doc/code changes.
- Updated CLAUDE.md to require reading copilot-instructions.md first.
- Added topic-based doc separation and folder navigation rules.
- Changed doc sync: agent now passively detects discrepancies and asks before updating docs.
- Every code-modifying response must end with a [DOCUMENTATION CHECK] section.
- Centralized measurement system and domain traps in new FruitBank.Common/docs/GLOSSARY.md; updated references in FruitBankHybridApp GLOSSARY.md.
- Clarified schema and doc locations in FruitBankHybridApp README.md.
- Added hybrid execution model section to AyCode.Core BINARY_FEATURES.md.
- Removed unnecessary BeginUpdate/EndUpdate calls in MgGridBase.cs for layout persistence.
- Removed full Toon schema from plugin SCHEMA.md to avoid duplication.
- CLAUDE.md: reduced to single-line pointer to copilot-instructions.md (eliminates redundant auto-loaded content)
- copilot-instructions.md: added @repo name field, relative paths in own-dep-repos, "do not re-read .md files" rule, and explicit permission to navigate external repos
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Clarified DllReference usage for AyCode.Core projects, noting its necessity for build isolation and nopCommerce plugin compatibility.
- Reworded redundancy guideline to stress checking for and reusing existing methods before adding new logic.
- Expanded .md file sync rule: update relevant docs when code changes, resolve contradictions in favor of code, and address shared broken references; during review, suggest (not add) new documentation for useful behaviors.
- Rephrased AyCode.Core solution description for clarity regarding type locations.
- Introduce @repo and @project metadata blocks in copilot-instructions.md and README.md for all projects, declaring type, dependencies, and layer.
- Update all documentation links to reference canonical AyCode.Core and AyCode.Blazor repo locations, removing hardcoded paths.
- Move MgGridBase and related doc references to AyCode.Blazor.Components/docs/ to reflect repo reorg.
- Expand project READMEs with purpose, key files, and dependency tables for clearer architecture.
- Update glossary, conventions, and architecture docs to match new doc structure and reference locations.
- Apply minor corrections to terminology and file references for consistency and accuracy.
- Standardize documentation and make project relationships explicit.
Split MGGRID.md into focused docs (parameters, CRUD, layout, detail, rendering, InfoPanel, toolbar, columns, datasource) under AyCode.Blazor.Components/docs/. Updated all references, READMEs, and project/solution files to match new structure. Clarified doc layering conventions and core doc links. No code changes—documentation and project organization only.
Expanded documentation in copilot-instructions.md, CLAUDE.md, and ARCHITECTURE.md to clarify that core framework types are defined in AyCode.Core and should be referenced there. Added a "Related Solutions" section and updated the dependency graph. Included docs\MGGRID.md in the solution items list. Improved guidance for locating and using AyCode.Core types.
Added a new section to ARCHITECTURE.md summarizing the MgGrid component system, its hierarchy, and key behaviors, with a link to the new MGGRID.md. Created MGGRID.md with comprehensive documentation on MgGrid design, usage, parameters, lifecycle, events, layout persistence, master-detail, InfoPanel, fullscreen, and public interface. Includes code examples, tables, and diagrams for developer reference.
Expanded and clarified solution/project documentation:
- Added all top-level docs and docs/ folder as solution items in .sln files
- Inserted maintenance notices in all project and subfolder READMEs: require .md sync with code
- Main READMEs now include project tables with TFM, purpose, and README links
- ARCHITECTURE.md now details dependency graph and TFM rationale
- CONVENTIONS.md and copilot-instructions.md require code reuse, no redundancy
- Glossary and conventions updated to require terminology/rule updates with code changes
- Emphasized DLL-only AyCode.Core refs and nopCommerce .NET 9.0 requirement
- Clarified domain terms and intentional typos
- No code logic changes; documentation and guidance only