Files
Common-VS2019/SacsMobileMaui/docs/topics.md
T

48 lines
6.0 KiB
Markdown

# SacsMobileMaui Topic Tracker
<style>
table th,
table td {
vertical-align: top;
}
</style>
Last updated: 2026-10-06
## Prioritised Topics to Be Actioned
| Priority | Topic | Date noted | Next step | Notes |
|---|---|---|---|---|
| P2 | Replace obsolete MAUI compatibility APIs | 2026-09-10 | Replace compatibility layouts, `Frame`, `MainPage`, synchronous popup calls, and deprecated expansion options; then remove `Microsoft.Maui.Controls.Compatibility`. | The .NET 10 Windows and Android builds succeed, but retain compatibility references and report the existing API-obsolescence warnings. |
| P2 | Verify native form-handler registration | 2026-10-06 | Find or add the startup call to `SamFormHandler.AssignControlHandlers()`, then cover registration and configured-control guards in host tests. | A search of `SacsMobileMaui` currently finds the method definition but no call site. Handler mappings will have no effect unless this registration method runs during app startup. |
| P3 | Replace unused resource-stream enumeration | 2026-09-10 | Add focused tests for exact, case-insensitive suffix, and missing-resource lookups. | `SamResourceUtil.GetResourceStream` now performs an exact lookup followed by a case-insensitive manifest-name suffix lookup, opening a stream only for the selected resource. |
## .NET 10 Dependencies and Sequence
| Work item | Depends on | Unblocks |
|---|---|---|
| Establish Sandtrap and Sandalwood source control | Confirmation of the authoritative repositories or tracking workflow | Safe coordinated edits and review of consumer migration changes |
| Repair MAUI workloads and capture baseline | Consumer source-control decision; supported current SDK/workloads | Reliable distinction between environment, existing-source, and migration failures |
| Replace compatibility and obsolete APIs | Baseline evidence | Removal of `Microsoft.Maui.Controls.Compatibility` and clean MAUI 10 compilation |
| Retarget `SacsMobileMaui`, Sandtrap, and Sandalwood together | Compatibility cleanup; aligned package plan; tracked consumer workspaces | Windows and Android MAUI 10 validation |
| Validate Apple targets | Retargeted projects; compatible Mac and Xcode | Completion of the cross-platform migration |
| Address remaining behavioral defects | Stable MAUI 10 baseline; UI-thread defect may move earlier if it blocks testing | Reliable application behavior and focused regression tests |
## In-Progress Topics
| Priority | Topic | Date noted | Date started | Next step | Notes |
|---|---|---|---|---|---|
## Completed Topics
| Topic | Date noted | Date started | Date completed | Outcome |
|---|---|---|---|---|
| Fix `SamDatePicker.AllowInvalid` state transition | 2026-09-10 | 2026-10-06 | 2026-10-06 | The equality guard compares rather than assigns; changing `Date` refreshes the formatted entry/reset display. The explicit MAUI-host test covers both `AllowInvalid` transitions, valid-date display, invalid-date clearing, reset visibility, and fallback to the native picker date. The host build succeeds and the user confirmed the test passes. |
| Correct MAUI native handler type checks and complete supported styling branches | 2026-09-10 | 2026-10-06 | 2026-10-06 | Each mapping checks `ISamNativeControlStyle`. Windows background clearing now assigns a transparent WinUI brush. `NativeNoUnderline` is intentionally a no-op on iOS/macOS and Windows because those controls have a full border rather than a separate Android-style underline; comments direct callers to `NativeNoBorder`. `SamEditor` and `SamPicker` derive from different MAUI controls, so no common concrete parent is appropriate. |
| Make `SamThreadUtil` and form dialogs genuinely asynchronous and deadlock-safe | 2026-09-10 | 2026-09-17 | 2026-10-06 | Added a Windows MAUI host for the explicit NUnit integration tests. All six dispatcher tests and all three interactive dialog tests pass; the four non-interactive NUnit tests also pass. The Sandtrap build check was performed but remains red because the consumer still calls the removed `InvokeOnMainThread` API and its iOS/Mac Catalyst targets lack ASP.NET Core runtime packs. Per scope, no Sandtrap files were changed; resolve that consumer fallout separately. |
| Establish authoritative source control for Sandtrap and Sandalwood | 2026-09-10 | 2026-09-10 | 2026-09-10 | Separate repositories were initialized, given baseline guidance and tracking files, committed, and pushed to their remotes. |
| Repair the MAUI workload and validate local targets | 2026-09-10 | 2026-09-11 | 2026-09-11 | SDK 10.0.401 reports coherent .NET 10 Android, iOS, Mac Catalyst, and MAUI Windows workloads. The upgraded shared project restores and builds successfully for Windows and Android; Apple builds still require compatible Mac/Xcode validation. |
| Upgrade `SacsMobileMaui` to .NET MAUI 10 | 2026-09-10 | 2026-09-11 | 2026-09-11 | Retargeted Android, iOS, Mac Catalyst, and Windows to .NET 10; aligned MAUI packages to 10.0.20; and adapted date/time controls to MAUI 10 nullable picker values. Windows and Android Debug builds complete with zero errors. |
| Upgrade Sandtrap and Sandalwood to .NET MAUI 10 | 2026-09-10 | 2026-09-11 | 2026-09-11 | Both applications now target .NET 10 with MAUI 10.0.20. Windows runtime smoke tests pass, and Windows and Android Debug builds complete with zero errors against the final Common .NET 10-only libraries. Apple validation remains separately tracked in each application repository. |
| Extract reusable logic from core MAUI controls | 2026-09-29 | 2026-09-29 | 2026-09-29 | Continue adding `Sam*` components using the extracted logic seams, keeping platform-specific behavior in the controls. | Added `SamEntryTextFormatter`, `SamEntryTextFormatOptions`, `SamPickerItemCollection`, `SamDateValueState`, and `SamViewTreeUtil`. `SamEntry` now passes an immutable formatting-options snapshot to its formatter. The Common MAUI project builds successfully; four pure-logic tests pass in `SacsMobileMauiTests`. The Windows MAUI host now runs the six dispatcher and three dialog integration tests; control-specific host tests are added as needed. |