diff --git a/AGENTS.md b/AGENTS.md index 51a5848..7b13621 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,7 +4,7 @@ `SaCommonVS.sln` contains the shared Sarand libraries. `SacsStandardBase` provides core types and utilities; `SacsStandardDbas` provides database support; `SacsStandardProc` provides process and file-processing support; `SacsCoreWeb` provides ASP.NET components; and `SacsStandardAccounts` provides accounting integrations. Mobile support is in `SacsMobileMaui` and `SacsMobileXamarin`. Tests live in `SacsCoreUnitTests` and generally mirror the corresponding source area under `Standard`. -These projects are consumed by sibling workspaces, including `..\..\BusinessMgr\Workspace`, `..\..\MauiApps\Repositories\Sandtrap\Workspace\Sandtrap`, and `..\..\MauiApps\Repositories\Sandalwood\Workspace`. Preserve the relative layout because downstream solutions use direct project references. +These projects are consumed by sibling workspaces, including `..\..\BusinessMgr\Workspace`, `..\..\PippinApps\Repositories\Sandtrap`, and `..\..\PippinApps\Repositories\Sandalwood`. Preserve the relative layout because downstream solutions use direct project references. ## Build, Test, and Development Commands diff --git a/SacsMobileMaui/docs/topics.md b/SacsMobileMaui/docs/topics.md index 10af21e..6ac26d6 100644 --- a/SacsMobileMaui/docs/topics.md +++ b/SacsMobileMaui/docs/topics.md @@ -13,7 +13,6 @@ Last updated: 2026-09-10 | Priority | Topic | Date noted | Next step | Notes | |---|---|---|---|---| -| P1 | Establish authoritative source control for Sandtrap and Sandalwood | 2026-09-10 | Identify or create the intended repositories/change-tracking location before editing either consumer and confirm how coordinated changes will be reviewed. | No Git repository is currently detected at `MauiApps`, Sandtrap, or Sandalwood. Their applications must change with `SacsMobileMaui`, so untracked consumer edits would make the migration incomplete and difficult to review. | | P1 | Repair the MAUI workload and capture the pre-migration mobile baseline | 2026-09-10 | Repair the inconsistent Android workload manifests, select the current SDK explicitly, then restore/build Windows and Android and record Apple-platform validation requirements. | Depends on a usable MAUI toolchain and authoritative consumer source control. The current workload reports a missing `microsoft-net-runtime-android-net9` extension; Apple builds require a compatible Mac/Xcode environment. | | P1 | Upgrade `SacsMobileMaui` and its consumers from unsupported .NET MAUI 8/9 to .NET MAUI 10 | 2026-09-10 | Replace MAUI 9 compatibility APIs, align and validate consumer projects, then retarget to `net10.0` and the current MAUI 10 servicing release. | MAUI 9.0.120 is the final MAUI 9 patch, but MAUI 9 support ended on 2026-05-12. Sandalwood and Sandtrap still target MAUI 8 while referencing the `net9.0` shared project. The shared library also uses removed/deprecated compatibility layouts, `Frame`, `MainPage`, and popup APIs. | | P1 | Make `SamThreadUtil` and form dialogs genuinely asynchronous and deadlock-safe | 2026-09-10 | Replace synchronous UI-thread bridges with `Task`-returning APIs, update the Sandtrap caller, and add focused tests. | The void `InvokeOnMainThreadSync` overload never waits; the generic overload and `DisplayConfirmSync` block on `Task.Result` and can deadlock on the UI thread. `DisplayAlertSync` also passes an async lambda to `Action`, producing `async void` behavior. | @@ -36,6 +35,7 @@ Last updated: 2026-09-10 | Priority | Topic | Date noted | Date started | Next step | Notes | |---|---|---|---|---|---| +| P1 | Establish authoritative source control for Sandtrap and Sandalwood | 2026-09-10 | 2026-09-10 | Review each initial import, configure its intended remote, and create the baseline commit. | Separate Git repositories now exist at `PippinApps/Repositories/Sandtrap` and `PippinApps/Repositories/Sandalwood`; baseline guidance and tracking files have been added. Consumer migration work should begin only after their initial imports are safely committed. | ## Completed Topics diff --git a/docs/component-reviews.md b/docs/component-reviews.md index 3f2fd0d..ae007fb 100644 --- a/docs/component-reviews.md +++ b/docs/component-reviews.md @@ -11,6 +11,7 @@ Last updated: 2026-09-10 | Component | Scope | Status | Date reviewed | Next steps | Notes | |---|---|---|---|---|---| +| `SaCommonVS.sln` | Pre-migration restore, Debug build, and tests | Baseline captured; passing with warnings | 2026-09-10 | Pin the SDK, address the MailKit advisory, decide the Xamarin disposition, and begin the coordinated .NET 10 migration. | SDK 10.0.401 restored and built all eight projects with 110 warnings and no errors. `SacsCoreUnitTests` passed 94 of 94 tests. MAUI 9 Android is out of support and MAUI API obsolescence warnings are tracked in the project-specific docs. | | [`SacsMobileMaui`](../SacsMobileMaui/docs/component-reviews.md) | Project | Tracked in project docs | 2026-09-10 | Continue in the project component register and topic tracker. | Project-specific findings have been moved to `SacsMobileMaui/docs`. | | `SacsStandardBase/Base/Procs/SaProcess_Base.cs` | Class | In progress | 2026-09-09 | Complete the Process Base actions recorded in `topics.md`; review derived processes separately for cooperative polling. | Lifecycle state ownership and cancellation lock ordering were changed. Five focused tests pass. Remaining concerns include mixed sync/async execution, durable cancellation outcome, cancellation exception handling, disposal, and status synchronization. | | `SacsStandardBase/Base/Email/SaEmailConsole.cs` | Class | Reviewed; action required | 2026-09-08 | Restore SMTP certificate validation and require the configured TLS mode. Add invalid-certificate and unavailable-TLS tests. | The current SMTP client accepts every server certificate. | diff --git a/docs/topics.md b/docs/topics.md index 0225c07..33580cb 100644 --- a/docs/topics.md +++ b/docs/topics.md @@ -13,7 +13,6 @@ Last updated: 2026-09-10 | Priority | Topic | Date noted | Next step | Notes | |---|---|---|---|---| -| P1 | Capture the pre-migration Common build and test baseline | 2026-09-10 | Build the current non-MAUI projects and run `SacsCoreUnitTests`; record existing warnings, failures, SDK selection, and environmental limitations before changing targets. | Depends on committing the current documentation changes separately so baseline and migration changes remain distinguishable. MAUI baseline work is tracked in the project-specific tracker. | | P1 | Prepare Common libraries for the coordinated .NET 10 migration | 2026-09-10 | Repair and pin the .NET 10 toolchain, then temporarily target `net8.0;net10.0` in applicable shared libraries and validate both targets before migrating downstream consumers. | BusinessMgr still targets .NET 8 and consumes Common through direct project references. Remove the temporary .NET 8 targets only after all in-scope consumers have migrated. The separate MAUI migration is tracked under `SacsMobileMaui/docs/topics.md`. | | P2 | Decide the disposition of `SacsMobileXamarin` before the .NET 10 migration | 2026-09-10 | Confirm whether to retire it, remove it from the main solution, or plan a separate migration; document the supported consumer path. | The project remains in `SaCommonVS.sln` and references Xamarin.Forms 5. It should not be implicitly included in the normal .NET 10 retargeting. | | P1 | Prevent synchronous and asynchronous execution from overlapping in `SaProcess_Base` | 2026-09-09 | Route `RunProcess()` and `RunAsync()` through one guarded start operation and extend the lifecycle tests. | A synchronous call can currently reuse and dispose the asynchronous worker's task data. | @@ -49,3 +48,4 @@ Last updated: 2026-09-10 | Make asynchronous Process Base execution awaitable and retain state after a stop timeout | 2026-09-08 | 2026-09-08 | 2026-09-08 | `RunAsync()` returns `Task`; `StopProcessAsync()` reports success and leaves active state owned by a worker that has not stopped. | | Remove cancellation callbacks from the Process Base lifecycle lock | 2026-09-08 | 2026-09-08 | 2026-09-08 | Cancellation and task-data disposal use separate synchronization; worker cleanup detaches state before disposal. | | Add Process Base lifecycle tests | 2026-09-08 | 2026-09-08 | 2026-09-08 | Five focused MSTest cases cover completion, duplicate starts, stop timeout retention, cooperative cancellation, and cancellation callback lock behavior. | +| Capture the pre-migration Common build and test baseline | 2026-09-10 | 2026-09-10 | 2026-09-10 | Using SDK 10.0.401, `dotnet restore SaCommonVS.sln` and the full Debug solution build succeeded. The build produced 110 warnings and no errors; most are repeated MAUI API obsolescence warnings across four targets, plus `NETSDK1202` for out-of-support MAUI 9 Android and `NU1902` for the moderate-severity MailKit 4.13.0 vulnerability. `SacsCoreUnitTests` passed 94 of 94 tests. |