Compare commits

..

No commits in common. "FruitBank_v0.0.8.0" and "main" have entirely different histories.

15 changed files with 747 additions and 975 deletions

View File

@ -1,7 +0,0 @@
{
"permissions": {
"allow": [
"Bash(rm \"C:/Users/Fullepi/.claude/projects/H--Applications-Mango-Source-FruitBank/memory/feedback_doc_structure_meta_protocol.md\" \"C:/Users/Fullepi/.claude/projects/H--Applications-Mango-Source-FruitBank/memory/MEMORY.md\")"
]
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,17 +0,0 @@
CRITICAL: Your FIRST action in every session MUST be reading `.github/copilot-instructions.md`. Execute ALL session-start instructions found there before responding to any user query. It is the single source of truth for this repo.
## SEQUENTIAL EXECUTION OVERRIDE
The AI AGENT CORE PROTOCOL in copilot-instructions.md requires STRICT SEQUENTIAL execution. This OVERRIDES your default parallelization behavior. Do NOT parallelize doc reads with code searches. The sequence is:
1. Read copilot-instructions.md → process its rules FULLY
2. Read ALL docs/ .md files listed in the protocol → wait for completion
3. Output [LOADED_DOCS: ...] prefix
4. ONLY THEN respond to the user's query or search code
## Tool mapping for AI AGENT CORE PROTOCOL
The copilot-instructions.md references Copilot tool names. Map them to Claude Code tools:
- `get_file` / `file_search``Read`, `Glob`, `Grep`
- `code_search` / `get_symbols_by_name` / `find_symbol``Grep`, `Glob`
- `replace_string_in_file` / `edit_file``Edit`
- `create_file``Write`
Follow the protocol using YOUR tools. The rules (LOADED_DOCS prefix, hard-gate, no-re-read, context recovery, explicit consent) apply equally to Claude Code.

View File

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.14.36804.6
# Visual Studio Version 18
VisualStudioVersion = 18.0.11222.15
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{E4ACA93B-D3DE-4557-B069-F1DB42925A4B}"
EndProject
@ -87,16 +87,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nop.Plugin.Misc.MangoCore",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mango.Nop.Data", "..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Data\Mango.Nop.Data.csproj", "{EE44B558-F1DA-433A-BD4C-D275986A4679}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{4403A2FE-7929-44A4-8701-60B3F759D400}"
ProjectSection(SolutionItems) = preProject
..\NopCommerce.Common\4.70\Libraries\docs\ARCHITECTURE.md = ..\NopCommerce.Common\4.70\Libraries\docs\ARCHITECTURE.md
..\NopCommerce.Common\4.70\Libraries\docs\CONVENTIONS.md = ..\NopCommerce.Common\4.70\Libraries\docs\CONVENTIONS.md
..\NopCommerce.Common\4.70\Libraries\docs\GLOSSARY.md = ..\NopCommerce.Common\4.70\Libraries\docs\GLOSSARY.md
..\NopCommerce.Common\4.70\Libraries\README.md = ..\NopCommerce.Common\4.70\Libraries\README.md
..\NopCommerce.Common\4.70\Libraries\CLAUDE.md = ..\NopCommerce.Common\4.70\Libraries\CLAUDE.md
..\NopCommerce.Common\4.70\Libraries\.github\copilot-instructions.md = ..\NopCommerce.Common\4.70\Libraries\.github\copilot-instructions.md
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mango.Sandbox.EndPoints", "Tests\Mango.Sandbox\Mango.Sandbox.EndPoints\Mango.Sandbox.EndPoints.csproj", "{D22DB269-2490-4A3D-B0B4-2CD2BB626F9C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mango.Sandbox.EndPoints.Tests", "Tests\Mango.Sandbox\Mango.Sandbox.EndPoints.Tests\Mango.Sandbox.EndPoints.Tests.csproj", "{B8491E5C-DBB5-1594-052E-744D78D7A4DE}"
@ -104,7 +94,6 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5881709D-780C-402A-9627-928B25AE712B}"
ProjectSection(SolutionItems) = preProject
build_fruitbank.bat = build_fruitbank.bat
.github\copilot-instructions.md = .github\copilot-instructions.md
EndProjectSection
EndProject
Global
@ -594,7 +583,6 @@ Global
{3E893AC2-29F1-48FC-B33F-F73C6EE2BE90} = {0742FDF3-0F2E-4C64-9521-E58A7FF2ED26}
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3} = {0742FDF3-0F2E-4C64-9521-E58A7FF2ED26}
{EE44B558-F1DA-433A-BD4C-D275986A4679} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{4403A2FE-7929-44A4-8701-60B3F759D400} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{D22DB269-2490-4A3D-B0B4-2CD2BB626F9C} = {E8FC6874-E230-468A-9685-4747354B92FF}
{B8491E5C-DBB5-1594-052E-744D78D7A4DE} = {E8FC6874-E230-468A-9685-4747354B92FF}
EndGlobalSection

View File

@ -1,22 +1,22 @@
//namespace Nop.Core.Domain.Catalog;
namespace Nop.Core.Domain.Catalog;
///// <summary>
///// Represents a backorder mode
///// </summary>
//public enum BackorderMode
//{
// /// <summary>
// /// No backorders
// /// </summary>
// NoBackorders = 0,
/// <summary>
/// Represents a backorder mode
/// </summary>
public enum BackorderMode
{
/// <summary>
/// No backorders
/// </summary>
NoBackorders = 0,
// /// <summary>
// /// Allow qty below 0
// /// </summary>
// AllowQtyBelow0 = 1,
/// <summary>
/// Allow qty below 0
/// </summary>
AllowQtyBelow0 = 1,
// /// <summary>
// /// Allow qty below 0 and notify customer
// /// </summary>
// AllowQtyBelow0AndNotifyCustomer = 2,
//}
/// <summary>
/// Allow qty below 0 and notify customer
/// </summary>
AllowQtyBelow0AndNotifyCustomer = 2,
}

View File

@ -1,17 +1,17 @@
//namespace Nop.Core.Domain.Catalog;
namespace Nop.Core.Domain.Catalog;
///// <summary>
///// Represents a download activation type
///// </summary>
//public enum DownloadActivationType
//{
// /// <summary>
// /// When order is paid
// /// </summary>
// WhenOrderIsPaid = 0,
/// <summary>
/// Represents a download activation type
/// </summary>
public enum DownloadActivationType
{
/// <summary>
/// When order is paid
/// </summary>
WhenOrderIsPaid = 0,
// /// <summary>
// /// Manually
// /// </summary>
// Manually = 10,
//}
/// <summary>
/// Manually
/// </summary>
Manually = 10,
}

View File

@ -1,17 +1,17 @@
//namespace Nop.Core.Domain.Catalog;
namespace Nop.Core.Domain.Catalog;
///// <summary>
///// Represents a gift card type
///// </summary>
//public enum GiftCardType
//{
// /// <summary>
// /// Virtual
// /// </summary>
// Virtual = 0,
/// <summary>
/// Represents a gift card type
/// </summary>
public enum GiftCardType
{
/// <summary>
/// Virtual
/// </summary>
Virtual = 0,
// /// <summary>
// /// Physical
// /// </summary>
// Physical = 1,
//}
/// <summary>
/// Physical
/// </summary>
Physical = 1,
}

View File

@ -1,22 +1,22 @@
//namespace Nop.Core.Domain.Catalog;
namespace Nop.Core.Domain.Catalog;
///// <summary>
///// Represents a low stock activity
///// </summary>
//public enum LowStockActivity
//{
// /// <summary>
// /// Nothing
// /// </summary>
// Nothing = 0,
/// <summary>
/// Represents a low stock activity
/// </summary>
public enum LowStockActivity
{
/// <summary>
/// Nothing
/// </summary>
Nothing = 0,
// /// <summary>
// /// Disable buy button
// /// </summary>
// DisableBuyButton = 1,
/// <summary>
/// Disable buy button
/// </summary>
DisableBuyButton = 1,
// /// <summary>
// /// Unpublish
// /// </summary>
// Unpublish = 2,
//}
/// <summary>
/// Unpublish
/// </summary>
Unpublish = 2,
}

View File

@ -1,22 +1,22 @@
//namespace Nop.Core.Domain.Catalog;
namespace Nop.Core.Domain.Catalog;
///// <summary>
///// Represents a method of inventory management
///// </summary>
//public enum ManageInventoryMethod
//{
// /// <summary>
// /// Don't track inventory for product
// /// </summary>
// DontManageStock = 0,
/// <summary>
/// Represents a method of inventory management
/// </summary>
public enum ManageInventoryMethod
{
/// <summary>
/// Don't track inventory for product
/// </summary>
DontManageStock = 0,
// /// <summary>
// /// Track inventory for product
// /// </summary>
// ManageStock = 1,
/// <summary>
/// Track inventory for product
/// </summary>
ManageStock = 1,
// /// <summary>
// /// Track inventory for product by product attributes
// /// </summary>
// ManageStockByAttributes = 2,
//}
/// <summary>
/// Track inventory for product by product attributes
/// </summary>
ManageStockByAttributes = 2,
}

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +1,17 @@
//namespace Nop.Core.Domain.Catalog;
namespace Nop.Core.Domain.Catalog;
///// <summary>
///// Represents a product type
///// </summary>
//public enum ProductType
//{
// /// <summary>
// /// Simple
// /// </summary>
// SimpleProduct = 5,
/// <summary>
/// Represents a product type
/// </summary>
public enum ProductType
{
/// <summary>
/// Simple
/// </summary>
SimpleProduct = 5,
// /// <summary>
// /// Grouped (product with variants)
// /// </summary>
// GroupedProduct = 10,
//}
/// <summary>
/// Grouped (product with variants)
/// </summary>
GroupedProduct = 10,
}

View File

@ -1,27 +1,27 @@
//namespace Nop.Core.Domain.Catalog;
namespace Nop.Core.Domain.Catalog;
///// <summary>
///// Represents a recurring product cycle period
///// </summary>
//public enum RecurringProductCyclePeriod
//{
// /// <summary>
// /// Days
// /// </summary>
// Days = 0,
/// <summary>
/// Represents a recurring product cycle period
/// </summary>
public enum RecurringProductCyclePeriod
{
/// <summary>
/// Days
/// </summary>
Days = 0,
// /// <summary>
// /// Weeks
// /// </summary>
// Weeks = 10,
/// <summary>
/// Weeks
/// </summary>
Weeks = 10,
// /// <summary>
// /// Months
// /// </summary>
// Months = 20,
/// <summary>
/// Months
/// </summary>
Months = 20,
// /// <summary>
// /// Years
// /// </summary>
// Years = 30,
//}
/// <summary>
/// Years
/// </summary>
Years = 30,
}

View File

@ -1,27 +1,27 @@
//namespace Nop.Core.Domain.Catalog;
namespace Nop.Core.Domain.Catalog;
///// <summary>
///// Represents a rental product period (for prices)
///// </summary>
//public enum RentalPricePeriod
//{
// /// <summary>
// /// Days
// /// </summary>
// Days = 0,
/// <summary>
/// Represents a rental product period (for prices)
/// </summary>
public enum RentalPricePeriod
{
/// <summary>
/// Days
/// </summary>
Days = 0,
// /// <summary>
// /// Weeks
// /// </summary>
// Weeks = 10,
/// <summary>
/// Weeks
/// </summary>
Weeks = 10,
// /// <summary>
// /// Months
// /// </summary>
// Months = 20,
/// <summary>
/// Months
/// </summary>
Months = 20,
// /// <summary>
// /// Years
// /// </summary>
// Years = 30,
//}
/// <summary>
/// Years
/// </summary>
Years = 30,
}

View File

@ -26,7 +26,7 @@ public class DevAdminSignalRHubSandbox : AcWebSignalRHubWithSessionBase<SignalRT
: base(configuration, new Logger<DevAdminSignalRHubSandbox>(logWriters.ToArray()))
{
SerializerOptions = new AcBinarySerializerOptions();
DynamicMethodRegistry.Register(testSignalREndpoint);
DynamicMethodCallModels.Add(new AcDynamicMethodCallModel<SignalRAttribute>(testSignalREndpoint));
}
//protected override Task SendMessageToClient(IAcSignalRHubItemServer sendTo, int messageTag, ISignalRMessage message, int? requestId = null)

View File

@ -1,8 +0,0 @@
# Conventions
> For core framework conventions see `AyCode.Core/docs/CONVENTIONS.md`.
> For Mango.Nop library conventions see `Mango.Nop Libraries/docs/CONVENTIONS.md`.
## XML Documentation
`<summary>` — brief, developer-facing, readable in VS IntelliSense tooltip. NO implementation details, NO wire-format / byte-level / perf specifics — those live in `docs/TOPIC/*.md`. Add `<example>` only when usage is non-obvious; otherwise omit.