diff --git a/workspaces/fidelity/project-knowledge/01-current/current-work.md b/workspaces/fidelity/project-knowledge/01-current/current-work.md index 8fa1660..43a5dbe 100644 --- a/workspaces/fidelity/project-knowledge/01-current/current-work.md +++ b/workspaces/fidelity/project-knowledge/01-current/current-work.md @@ -2,7 +2,7 @@ type: current project: fidelity status: active -updated: 2026-05-14 +updated: 2026-05-21 tags: - current-work - fidelity @@ -15,17 +15,17 @@ tags: - Track REST migration findings - Debug Discourse and AO issues - Prepare better updates for the current manager or stakeholder through Mattermost -- Follow up on active tickets through `workspaces/fidelity/project-knowledge/02-work-items/`, especially branch maintenance for `PDIAP-15838` and implementation planning for `PDIAP-15836` / `PDIAP-12284` +- Follow up on active tickets through `workspaces/fidelity/project-knowledge/02-work-items/`, especially branch maintenance for `PDIAP-15838` and validation/review for `PDIAP-15836` / `PDIAP-12284` - `PDIAP-15765` is done and `PDIAP-14859` is also done - `PDIAP-15838` is Done from a Jira/status perspective after external review feedback was addressed, but its draft PR must remain unmerged and kept current with `main` until REST backend production readiness and the required REST-toggle consumer validation window allow merge -- `PDIAP-15836` has moved to In Progress. David found a possible minimal dismissal fix path that would not require removing `UIHostingController`, but Jeff directed David to do the `PDIAP-15836` dismissal/lifecycle work and `PDIAP-12284` UIKit-removal work in the same branch because both are disruptive enough to require consumer testing. -- `PDIAP-12284` remains paired with `PDIAP-15836`; plan the branch as combined UIKit-removal / SwiftUI lifecycle work rather than splitting the dismissal sequencing into an independently merged path unless direction changes. +- `PDIAP-15836` moved to In Review on May 21 after completing Bloom, Brokerage, and Youth validation. Previously it moved to In Progress on May 7. +- `PDIAP-12284` remains paired with `PDIAP-15836`; both moved to In Review on May 21. Plan the branch as combined UIKit-removal / SwiftUI lifecycle work. - Current `PDIAP-12284` implementation direction is to explore XFlowViewMaker-owned global host-mode resolution rather than Fid4-owned per-flow host-mode mapping: SwiftUI host should remain the default, missing/unknown feature configuration should also default to SwiftUI, and `UIHostingController` should be selected only through an explicit temporary fallback flag. - Keep host-mode resolution decoupled from XFlowSDK and app-specific LaunchDarkly/Flagship clients; XFlowSDK should consume a resolved host-mode decision, while Copilot/code inspection should confirm whether XFlowViewMaker can use existing `FeatureEnabling` / `Featuring` abstractions or needs a small dependency-injection path. - May 12 implementation pass for `PDIAP-12284` / `PDIAP-15836` indicates the host-mode API is branch-local/new, keeps two enum types to preserve the XFlowViewMaker/XFlowSDK boundary, uses neutral `swiftUIHost` / `uiKitHost` cases, sets the feature flag key to `iOS-XflowUIKitHostEnabled`, defaults missing/false/unavailable values to SwiftUI, and removes `AnyView` from `buildFlow` internals while leaving it only at the existing public `FlowViewMaker` boundary. - Current compile validation blocker for that branch appears to be dependency alignment: XFlowViewMaker's podspec resolves `XFlowSDK 2.8.48`, which does not expose the new host-mode API; XFlowSDK SwiftPM validation is also blocked in the current environment by missing `fidelity-src` registry configuration. - After manual dependency/build handling, Fid4 now compiles with the latest `FlowViewBuilder` shape. Next validation should be runtime log evidence: confirm a representative flow selects the default SwiftUI host path, then simulate/force `iOS-XflowUIKitHostEnabled == true` to confirm the temporary UIKit host path and dismissal-completion behavior. -- `PDIAP-12284` moved to In Progress on May 12. Quy confirmed on May 13 that `PDIAP-12284` and `PDIAP-15836` can both remain In Progress together, so no immediate Jira restructuring is required. +- `PDIAP-12284` moved to In Review on May 21 after validation progress. Previously it moved to In Progress on May 12. Quy confirmed on May 13 that `PDIAP-12284` and `PDIAP-15836` can both remain in progress/review together. - Latest `PDIAP-12284` / `PDIAP-15836` simulator log review suggests the SwiftUI-host dismissal sequence is firing in the intended order for the tested run: host disappearance is confirmed before `fireEndActivityDelegates`, delegate callbacks, and `activitySession` cleanup. Treat this as a promising validation run, not final story closure. - May 13 AccountLink runtime validation looks good in both host modes: SwiftUI-default and forced UIKit-host paths selected the expected host branch and preserved dismissal sequencing, with delegate/session teardown after confirmed dismissal. Before push, clean temporary debug prints and consider moving dismissal-specific helper types out of `XFlowManager.swift` into a dedicated dismissal file. - Follow-up SampleApp validation found a likely branch-introduced dismissal regression caused by host-mode mismatch: SampleApp uses `initialViewController(...)` / UIKit presentation, but the branch defaulted manager host mode to SwiftUI, so `endActivity` can take the SwiftUI subject path without a SwiftUI dismissal host subscriber. Fix direction should preserve existing behavior by keeping `initialViewController(...)` on the UIKit dismiss-completion path and `makeInitialFlowView(...)` on the SwiftUI lifecycle path. diff --git a/workspaces/fidelity/project-knowledge/01-current/work-items.md b/workspaces/fidelity/project-knowledge/01-current/work-items.md index 1b9735c..cc75cf8 100644 --- a/workspaces/fidelity/project-knowledge/01-current/work-items.md +++ b/workspaces/fidelity/project-knowledge/01-current/work-items.md @@ -2,7 +2,7 @@ type: current-work-items project: fidelity status: active -updated: 2026-05-14 +updated: 2026-05-21 tags: - current-work - work-item @@ -24,11 +24,11 @@ Update the per-ticket files first when scope, status, sequencing, or communicati - `PDIAP-15836` - Modernize dismissal delegate lifecycle sequencing for pure SwiftUI environment Detail: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-15836.md` - Current note: moved to In Progress on May 7. David found a possible minimal dismissal fix path that would not require removing `UIHostingController`, but Jeff directed David to do the dismissal/lifecycle work and `PDIAP-12284` UIKit-removal work in the same branch because both changes require consumer testing. A May 11 simulator log review suggests the tested SwiftUI-host path fires delegate/session-clear callbacks only after host-disappearance confirmation, but broader branch and consumer validation are still needed. + Current note: moved to In Review on May 21 after completing validation for Bloom, Brokerage, and Youth flows. Previously moved to In Progress on May 7. David found a possible minimal dismissal fix path that would not require removing `UIHostingController`, but Jeff directed David to do the dismissal/lifecycle work and `PDIAP-12284` UIKit-removal work in the same branch because both changes require consumer testing. A May 11 simulator log review suggests the tested SwiftUI-host path fires delegate/session-clear callbacks only after host-disappearance confirmation, but broader branch and consumer validation are still needed. - `PDIAP-12284` - Remove UIKit wrapping from XFlow Detail: `workspaces/fidelity/project-knowledge/02-work-items/pdiap-12284.md` - Current note: moved to In Progress on May 12 and should be handled with `PDIAP-15836` in the same branch. Quy confirmed both stories can remain In Progress together, so no immediate Jira restructuring is required. Current implementation direction is to avoid Fid4 per-flow host-mode mapping and instead evaluate XFlowViewMaker-owned global host-mode resolution, with SwiftUI as default and `UIHostingController` only as an explicit temporary fallback. May 12 implementation pass resolved earlier shape concerns with neutral enum names, `iOS-XflowUIKitHostEnabled`, SwiftUI default semantics, and `AnyView` removed from builder internals. Fid4 now compiles after manual dependency/build handling. May 13 AccountLink runtime validation looks good for both SwiftUI-default and forced UIKit-host paths. May 14 SampleApp work added explicit UIKit-host vs SwiftUI-host validation paths. May 20-21 status: sessions 004, 005, 008, and 009 confirmed full validation for HybridBloomAccountOpening (both hosts, full lifecycle/dismissal confirmed), HybridBrokerageAccountOpening (both hosts, full lifecycle confirmed), and HybridYouthAccountOpening (both hosts, full lifecycle/dismissal confirmed, resolving the dismissal gap). Remaining gaps are accountlink UIKit host, AODeeplinkLaunchView (both toggle branches and dismissal), and launch wrappers/common-launch flows. Draft PRs were opened for XFlowSDK and XFlowViewMaker on May 20 while validation continues. + Current note: moved to In Review on May 21 after completing validation for Bloom, Brokerage, and Youth flows. Previously moved to In Progress on May 12 and handled with `PDIAP-15836` in the same branch. Quy confirmed both stories can remain In Progress together, so no immediate Jira restructuring is required. Current implementation direction is to avoid Fid4 per-flow host-mode mapping and instead evaluate XFlowViewMaker-owned global host-mode resolution, with SwiftUI as default and `UIHostingController` only as an explicit temporary fallback. May 12 implementation pass resolved earlier shape concerns with neutral enum names, `iOS-XflowUIKitHostEnabled`, SwiftUI default semantics, and `AnyView` removed from builder internals. Fid4 now compiles after manual dependency/build handling. May 13 AccountLink runtime validation looks good for both SwiftUI-default and forced UIKit-host paths. May 14 SampleApp work added explicit UIKit-host vs SwiftUI-host validation paths. May 20-21 status: sessions 004, 005, 008, and 009 confirmed full validation for HybridBloomAccountOpening (both hosts, full lifecycle/dismissal confirmed), HybridBrokerageAccountOpening (both hosts, full lifecycle confirmed), and HybridYouthAccountOpening (both hosts, full lifecycle/dismissal confirmed, resolving the dismissal gap). Remaining gaps are accountlink UIKit host, AODeeplinkLaunchView (both toggle branches and dismissal), and launch wrappers/common-launch flows. Draft PRs were opened for XFlowSDK and XFlowViewMaker on May 20 while validation continues. ## Backlog / Future Reference diff --git a/workspaces/fidelity/project-knowledge/02-work-items/pdiap-12284.md b/workspaces/fidelity/project-knowledge/02-work-items/pdiap-12284.md index 92d5f22..369b06a 100644 --- a/workspaces/fidelity/project-knowledge/02-work-items/pdiap-12284.md +++ b/workspaces/fidelity/project-knowledge/02-work-items/pdiap-12284.md @@ -1,14 +1,14 @@ --- type: work-item project: fidelity -status: in-progress +status: in-review ticket: PDIAP-12284 title: "Remove UIKit wrapping from XFlow" systems: [xflowsdk, xflowviewmaker] workstreams: [xflow-swiftui-migration, consumer-integration] people: [jeff-dewitte] related: [pdiap-15836, pdiap-15838] -updated: 2026-05-14 +updated: 2026-05-21 tags: - work-item - fidelity @@ -20,6 +20,7 @@ tags: ## Status +- Moved to In Review on May 21 after completing Bloom, Brokerage, and Youth validation. - Reopened after rollback and moved to In Progress on May 12. - Jeff directed David to do this UIKit-removal work and `PDIAP-15836` dismissal/lifecycle work in the same branch because both are disruptive enough to require consumer testing. - Current implementation direction is to avoid Fid4-owned per-flow host-mode mapping and evaluate XFlowViewMaker-owned global host-mode resolution. diff --git a/workspaces/fidelity/project-knowledge/02-work-items/pdiap-15836.md b/workspaces/fidelity/project-knowledge/02-work-items/pdiap-15836.md index 4154586..df88617 100644 --- a/workspaces/fidelity/project-knowledge/02-work-items/pdiap-15836.md +++ b/workspaces/fidelity/project-knowledge/02-work-items/pdiap-15836.md @@ -1,14 +1,14 @@ --- type: work-item project: fidelity -status: in-progress +status: in-review ticket: PDIAP-15836 title: "Modernize dismissal delegate lifecycle sequencing for pure SwiftUI environment" systems: [xflowsdk, xflowviewmaker, ftframeworks] workstreams: [xflow-swiftui-migration, consumer-integration] people: [jeff-dewitte] related: [pdiap-14859, pdiap-12284, pdiap-15838] -updated: 2026-05-14 +updated: 2026-05-21 tags: - work-item - fidelity @@ -19,6 +19,7 @@ tags: ## Status +- Moved to In Review on May 21 after completing Bloom, Brokerage, and Youth validation. - Moved to In Progress on May 7. - David found a possible minimal dismissal fix path that would not require removing `UIHostingController`, and was validating it. - Jeff directed David to do this dismissal/lifecycle work together with `PDIAP-12284` in the same branch because both changes are disruptive enough to require consumer testing. diff --git a/workspaces/fidelity/project-knowledge/06-daily/2026-05-21.md b/workspaces/fidelity/project-knowledge/06-daily/2026-05-21.md index 2d90a24..adc647c 100644 --- a/workspaces/fidelity/project-knowledge/06-daily/2026-05-21.md +++ b/workspaces/fidelity/project-knowledge/06-daily/2026-05-21.md @@ -21,11 +21,18 @@ tags: - Screenshot evidence from the XFlow entry-point validation checklist indicates `HybridBloomAccountOpening` has both UIKit-host and SwiftUI-host validation marked complete, with full dismissal/cleanup confirmed for both host modes. - `HybridBrokerageAccountOpening` and `HybridYouthAccountOpening` are also marked as validated for SwiftUI host, UIKit host, and full lifecycle/dismissal coverage in the checklist. -- The `accountLink` P2P transfer flow is marked validated for SwiftUI host and dismissal on SwiftUI host, but UIKit-host validation is still pending; the checklist notes Fid4 surface attribution is unclear and may go through `XFlowCommonLaunchView` or direct FTTransfer builder. -- `ADDeepLinkLaunchView` remains untested in the checklist for native-on, native-off, and dismissal paths. +- The `accountLink` P2P transfer flow uses `fidelity://p2ptransfer?id=testAlias` (via `FTP2PDeepLinks.swift`). Note: authenticate-then-custom (user must be logged in). +- Common-launch routes use `XFlowCommonLaunchView`: + - `cd` (Certificate of Deposit): `fidelity://XFlowHost?flowId=cd` (defaults to cd without `flowId`) or `https://www.fidelity.com/u/account/feature/cd`. + - `psta` (Penny Stock Agreement): `fidelity://XFlowHost?flowId=pst` or `fidelity://PstFeature`. +- `AODeepLinkLaunchView` remains untested in the checklist for native-on, native-off, and dismissal paths. ## Validation To Run -- Complete UIKit-host validation for `accountLink` / P2P transfer flow. -- Validate `ADDeepLinkLaunchView` for both native toggle branches and dismissal behavior. +- Complete UIKit-host validation for `accountLink` / P2P transfer flow using `fidelity://p2ptransfer?id=testAlias`. +- Validate common-launch routes: + - `cd`: `fidelity://XFlowHost?flowId=cd&workitem=smoke_cd_01` + - `psta`: `fidelity://XFlowHost?flowId=pst&workitem=smoke_pst_01` +- Validate `AODeepLinkLaunchView` for both native toggle branches and dismissal behavior. - Keep using the checklist as a general entry-point guide rather than a session-by-session log. +