Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
249 commits
Select commit Hold shift + click to select a range
f955658
refactor(mfa): remove flow engine, scaffold executeScenario to succes…
dariusz-biela Jun 9, 2026
dde5ec7
Merge branch 'dariusz-81197-mfa-state-machine' into dariusz-biela/ref…
dariusz-biela Jun 9, 2026
e759df0
refactor(mfa): drive the flow with an XState machine skeleton
dariusz-biela Jun 10, 2026
17723b5
refactor(mfa): model the modal lifecycle as a parent open state
dariusz-biela Jun 10, 2026
6eb224f
refactor(mfa): replace the navigator Phase state with machine modalPhase
dariusz-biela Jun 10, 2026
00a55dc
fix(mfa): stop cutting the backdrop fade mid-close
dariusz-biela Jun 10, 2026
807b3b4
docs(mfa): fix stale claims and trim duplicated comments
dariusz-biela Jun 10, 2026
f71935c
docs(mfa): move machine comments next to the code they explain
dariusz-biela Jun 10, 2026
f3cb278
refactor(mfa): remove manual memoization from main context provider
dariusz-biela Jun 11, 2026
d5364db
Merge branch 'dariusz-biela/refactor/3ds/mfa-cleanup-for-state-machin…
dariusz-biela Jun 11, 2026
b065abd
Merge pull request #93055 from software-mansion-labs/dariusz-biela/re…
chuckdries Jun 11, 2026
3da8fa0
refactor(mfa): split the machine context into external and internal APIs
dariusz-biela Jun 11, 2026
bbc84dd
lint(mfa): suppress no-unsafe-type-assertion for XState setup types
dariusz-biela Jun 11, 2026
a037388
refactor(mfa): centralize scenario config lookup assertion in one acc…
dariusz-biela Jun 11, 2026
4e2a6de
lint(mfa): export only consumed symbols from machine module
dariusz-biela Jun 12, 2026
95e680e
docs(mfa): drop plan numbering from code comments
dariusz-biela Jun 12, 2026
9df3490
docs(mfa): drop runtime-leaf import-graph comments from context modules
dariusz-biela Jun 12, 2026
63c240f
Merge branch 'dariusz-81197-mfa-state-machine' of https://github.com/…
dariusz-biela Jun 12, 2026
337ae8a
refactor(mfa): migrate modal visibility consumers to modalPhase
dariusz-biela Jun 12, 2026
dae0d65
docs(mfa): drop redundant modalPhase comment from modal navigator
dariusz-biela Jun 12, 2026
8dc9c11
docs(mfa): reword the notifyModalClosed contract comment
dariusz-biela Jun 12, 2026
c989d35
feat(dev): XState inspector with sensitive-data masking
dariusz-biela Jun 11, 2026
1caf05b
feat(dev): mask card secrets and registration key material in inspector
dariusz-biela Jun 12, 2026
3321e03
fix(dev): hide never-started ghost actors from XState inspector
dariusz-biela Jun 12, 2026
8105e48
refactor(mfa): type scenario config without lint suppression
dariusz-biela Jun 15, 2026
6168e07
refactor(mfa): replace inline machine state strings with CONST
dariusz-biela Jun 15, 2026
b5d35f3
fix(dev): keep machine state value readable in XState inspector
dariusz-biela Jun 15, 2026
cfe5c13
refactor(dev): clarify XState inspector masking
dariusz-biela Jun 15, 2026
23f9f2a
refactor(mfa): rename idle to closed, drop MODAL_PHASE const
dariusz-biela Jun 15, 2026
39f83c5
refactor(mfa): clarify machine action names
dariusz-biela Jun 15, 2026
8fa832e
Merge branch 'dariusz-biela/refactor/3ds/mfa-state-machine-setup' int…
dariusz-biela Jun 15, 2026
92b7238
refactor(mfa): drop redundant resolved scenario config alias
dariusz-biela Jun 16, 2026
ebd55dd
docs(mfa): trim MFA_STATE comment to a plain description
dariusz-biela Jun 16, 2026
c7f4ffe
refactor(mfa): rename ExternalApi to ExternalAPI to match acronym con…
dariusz-biela Jun 16, 2026
4f0a4dd
refactor(mfa): rename mfaMachine to MFAMachine to match acronym conve…
dariusz-biela Jun 16, 2026
6bda1a9
style(mfa): add blank line after backdropProgress.set call
dariusz-biela Jun 16, 2026
ec29bdf
refactor(mfa): gate INIT short-circuit on modalState instead of scenario
dariusz-biela Jun 16, 2026
9366556
refactor(mfa): narrow machine context to a Pick of wired fields
dariusz-biela Jun 16, 2026
006c8e5
refactor(mfa): drop isFlowComplete from machine context
dariusz-biela Jun 16, 2026
a0702d7
style(mfa): fix comment indentation flagged by prettier
dariusz-biela Jun 16, 2026
b537cb0
fix(dev): mask card expiration as a standalone sensitive key
dariusz-biela Jun 16, 2026
f4620f7
refactor(mfa): read hasAcceptedSoftPrompt via shared useOnyx selector
dariusz-biela Jun 17, 2026
3588aa1
Merge branch 'dariusz-biela/refactor/3ds/mfa-state-machine-setup' int…
dariusz-biela Jun 17, 2026
b5d6c8c
fix(mfa): read ChangePIN payload from the machine, not the reducer
dariusz-biela Jun 18, 2026
72907cc
docs(mfa): clarify the shared state shape and snapshotToState bridge
dariusz-biela Jun 18, 2026
d784d3d
refactor(mfa): split MfaContext and reducer state into disjoint types
dariusz-biela Jun 18, 2026
f4aabb0
refactor(security): centralize sensitive-key denylist in CONST.SENSIT…
dariusz-biela Jun 18, 2026
ec2e7cb
docs(mfa): move closing-state rationale onto the marker effect
dariusz-biela Jun 18, 2026
b5e1918
Merge pull request #93180 from software-mansion-labs/dariusz-biela/re…
roryabraham Jun 18, 2026
b924c71
Merge branch 'dariusz-biela/refactor/3ds/mfa-state-machine-setup' int…
dariusz-biela Jun 19, 2026
56cee28
Merge branch 'dariusz-81197-mfa-state-machine' of https://github.com/…
dariusz-biela Jun 19, 2026
c86479c
docs(mfa): drop duplicated ghost-filter rationale
dariusz-biela Jun 19, 2026
22a30da
docs(mfa): simplify XState inspector comments
dariusz-biela Jun 19, 2026
a4b716e
refactor(mfa): drop XState snapshot.value mask exemption
dariusz-biela Jun 19, 2026
c852ad3
test(mfa): close XState inspector test gaps
dariusz-biela Jun 19, 2026
707be04
Merge remote-tracking branch 'origin/main' into dariusz-81197-mfa-sta…
rafecolton Jun 22, 2026
e5db576
feat(mfa): ban direct useMachine import in favor of useInspectedMachine
dariusz-biela Jun 23, 2026
8f73a80
Merge origin/dariusz-81197-mfa-state-machine and realign MFA cancel flow
dariusz-biela Jun 23, 2026
417da4e
docs(mfa): link upstream ghost-actor issue in filterGhostActorRegistr…
dariusz-biela Jun 23, 2026
96af7ef
test: mock internal MFA context in cancel escape tests
dariusz-biela Jun 23, 2026
8038ac3
refactor(xstate-inspector): load via dynamic import instead of require
dariusz-biela Jun 24, 2026
6f7020b
refactor(xstate): keep dev inspector out of production builds
dariusz-biela Jun 24, 2026
258c9e0
refactor(xstate): extract createDeferredStart into its own module
dariusz-biela Jun 24, 2026
dd4424e
refactor(xstate): gate inspector dev-menu row behind Suspense
dariusz-biela Jun 25, 2026
ff19c4b
test(xstate): use Promise.withResolvers in buffered observer test
dariusz-biela Jun 25, 2026
651160f
Merge pull request #93807 from software-mansion-labs/dariusz-biela/re…
roryabraham Jun 25, 2026
d055134
Merge remote-tracking branch 'origin/main' into dariusz-81197-mfa-sta…
dariusz-biela Jun 26, 2026
ec589d0
test(mfa): add reachability and UI-walk tests
dariusz-biela Jun 29, 2026
aba5e1f
test(mfa): move spec files into components/MultifactorAuthentication
dariusz-biela Jun 29, 2026
1ae2284
test(mfa): enforce view config covers every machine state
dariusz-biela Jun 29, 2026
acf28de
test(mfa): assert UI walk reaches every settleable leaf
dariusz-biela Jun 29, 2026
60e6bb6
test(mfa): trim UI-test mocks to what the flow uses
dariusz-biela Jun 30, 2026
1a50e37
refactor(mfa): drop trivial test helpers, target confirm button by te…
dariusz-biela Jul 1, 2026
608ebad
refactor(mfa): simplify UI-walk harness with xstate TestModel
dariusz-biela Jul 1, 2026
801497b
docs(mfa): fix stale comments in UI-walk test
dariusz-biela Jul 1, 2026
bba6330
docs(mfa): refine test comments to intent and house style
dariusz-biela Jul 1, 2026
4c87c43
refactor(mfa): colocate event executors with view config in the test
dariusz-biela Jul 1, 2026
18dbf26
refactor(mfa): drop unsafe-* eslint disable via typed requireActual
dariusz-biela Jul 1, 2026
2b0b39a
refactor(mfa): treat invoked leaves as non-settleable in reachability
dariusz-biela Jul 1, 2026
78a5c44
test(mfa): target the modal backdrop by testID instead of translated …
dariusz-biela Jul 2, 2026
2360d02
test(mfa): guard that the UI walk exercises every UI-drivable transition
dariusz-biela Jul 2, 2026
9357fe5
test(mfa): merge machine specs into one graph-traversal suite
dariusz-biela Jul 2, 2026
ea84c5e
refactor(mfa): rename reachableStates to settleableLeafStates
dariusz-biela Jul 2, 2026
49fdde9
refactor(mfa): pin the INIT fixture to its scenario type
dariusz-biela Jul 2, 2026
286154b
refactor(mfa): fail fast when the close callback was never captured
dariusz-biela Jul 2, 2026
874a984
refactor(mfa): drop the speculative biometrics reset and export
dariusz-biela Jul 2, 2026
b601d68
docs(mfa): correct the event-descriptor comment and lead DRIVING_EVEN…
dariusz-biela Jul 2, 2026
a66024f
test(mfa): name suites by the guarantee they prove and group the cove…
dariusz-biela Jul 2, 2026
574cc08
test(mfa): pin each driving journey to the state it must end in
dariusz-biela Jul 2, 2026
c476720
test(mfa): pin the success outcome to its route name
dariusz-biela Jul 2, 2026
7f567f8
test(mfa): drive a second flow after teardown in a re-entry journey
dariusz-biela Jul 2, 2026
165830a
test(mfa): stop resetting the navigation buffer in beforeEach
dariusz-biela Jul 2, 2026
c728663
test(mfa): traverse a payload-carrying INIT fixture alongside the bar…
dariusz-biela Jul 2, 2026
955ae68
docs(mfa): name the context-leak cause of an unexercised transition
dariusz-biela Jul 2, 2026
ffd05f3
test(mfa): guard that INIT fixtures keep distinct landing vertices
dariusz-biela Jul 2, 2026
e5ab679
test(mfa): auto-advance only on unguarded always or routing invoke
dariusz-biela Jul 3, 2026
0d1eb78
test(mfa): label INIT fixtures in path titles and transition descript…
dariusz-biela Jul 3, 2026
a3998c3
test(mfa): name the stages of getWalkedPaths
dariusz-biela Jul 3, 2026
bf3bf22
test(mfa): extract transition-coverage analysis into transitionCovera…
dariusz-biela Jul 3, 2026
a76f085
docs(mfa): explain why the jest.mock factories use jest.requireActual
dariusz-biela Jul 3, 2026
8c34d70
docs(mfa): drop the oracle jargon and point to the settleable definition
dariusz-biela Jul 3, 2026
ede3c6d
test(mfa): split the graph-traversal suites into a dedicated subfolder
dariusz-biela Jul 3, 2026
f1540a7
docs(mfa): simplify and deduplicate the graph-traversal comments
dariusz-biela Jul 3, 2026
385a168
test(mfa): drop redundant duplicate paths from the UI walk
dariusz-biela Jul 3, 2026
fa65c59
test(mfa): scope the controls-capture effect to executeScenario
dariusz-biela Jul 3, 2026
aa7ba08
test(mfa): drop jsdom-coupled outcome assertion from the closing state
dariusz-biela Jul 3, 2026
d6c6997
test(mfa): assert the INIT payload copy directly on the machine
dariusz-biela Jul 3, 2026
9d84dcc
test(mfa): replace the silent event fallback with an exhaustive fixtu…
dariusz-biela Jul 3, 2026
b4f0f7b
test(mfa): drop the unobserved payload dimension from the walk
dariusz-biela Jul 3, 2026
d97666f
test(mfa): assert an exact single backdrop in the view walk
dariusz-biela Jul 3, 2026
c87678d
test(mfa): drop transition coverage and inline the walked-state guard
dariusz-biela Jul 6, 2026
a289bae
test(mfa): pin the INIT executor to the single test scenario
dariusz-biela Jul 6, 2026
8c2d844
refactor(mfa): prefix the outcome screen testID like the other new IDs
dariusz-biela Jul 6, 2026
ce0fbb5
test(mfa): replace the walked-paths for-loop with it.each
dariusz-biela Jul 6, 2026
99df53b
docs(mfa): point the walk-filter jsdoc at the reachability suite
dariusz-biela Jul 6, 2026
1db9acd
refactor(mfa): scope the harness controls to each render
dariusz-biela Jul 6, 2026
f1cd640
fix(mfa): drop the duplicated testID from the outcome BlockingView
dariusz-biela Jul 6, 2026
9e993f8
refactor(mfa): split stable from settleable leaves in one leafStates …
dariusz-biela Jul 6, 2026
9088344
test(mfa): drive the initial-screen layout through the rendered View
dariusz-biela Jul 6, 2026
20a5afb
test(mfa): assert the success outcome copy on the success leaf
dariusz-biela Jul 6, 2026
8e4e72f
test(mfa): document the full close cycle on pendingModalClose
dariusz-biela Jul 6, 2026
cecb506
test(mfa): note the mocked biometric values are telemetry-only
dariusz-biela Jul 6, 2026
ebf358f
test(mfa): tie the navigation overrides to the Navigation module type
dariusz-biela Jul 7, 2026
fc1aa0d
test(mfa): resolve the success outcome copy via translateLocal
dariusz-biela Jul 7, 2026
33d3855
test(mfa): say the navigation mock adds transition methods, not overr…
dariusz-biela Jul 7, 2026
956e182
test(mfa): move the MFA testIDs to CONST.MULTIFACTOR_AUTHENTICATION.T…
dariusz-biela Jul 7, 2026
2c5cbbf
test(mfa): treat invoked leaves as settleable so the guards catch them
dariusz-biela Jul 8, 2026
8ac9ca9
test(mfa): drive the INIT executor from the path event fixture
dariusz-biela Jul 8, 2026
827c1ec
Merge pull request #345 from software-mansion-labs/dariusz-biela/refa…
dariusz-biela Jul 8, 2026
dc3effa
chore(mfa): reconcile the branch with main after the rebase
dariusz-biela Jul 8, 2026
5ce3abd
Merge branch 'main' into dariusz-81197-mfa-state-machine
dariusz-biela Jul 14, 2026
d1cb65b
feat(mfa): add device check and failure outcome
dariusz-biela Jun 30, 2026
254e52d
test(mfa): cover the device check and failure outcome in the UI walk
dariusz-biela Jun 30, 2026
8694ecf
refactor(mfa): move the device check fully out of the biometrics hooks
dariusz-biela Jul 9, 2026
4e5f6a2
refactor(mfa): settle the device check with an MFAResult instead of t…
dariusz-biela Jul 9, 2026
5abfe8c
test(mfa): unit-test the device-check actor and walk the enrollment r…
dariusz-biela Jul 9, 2026
8014d60
refactor(mfa): share the device eligibility check between the actor a…
dariusz-biela Jul 10, 2026
d3f57a6
fix(mfa): assert the exact refusal messages in the actor test
dariusz-biela Jul 10, 2026
e098b73
fix(mfa): use relative import for device operations
dariusz-biela Jul 13, 2026
d92f814
refactor(mfa): navigate from explicit outcome states
dariusz-biela Jul 13, 2026
d2282db
refactor(mfa): defer unused machine error event
dariusz-biela Jul 13, 2026
2c9e629
refactor(mfa): enforce failed actor results
dariusz-biela Jul 13, 2026
20362e7
test(mfa): exercise device eligibility directly
dariusz-biela Jul 13, 2026
6489f6b
test(mfa): remove redundant operations narration
dariusz-biela Jul 13, 2026
1053299
test(mfa): cover web device operations
dariusz-biela Jul 13, 2026
59c6509
test(mfa): observe pending device validation
dariusz-biela Jul 13, 2026
1f170eb
fix(mfa): respect the outcome route when rendering
dariusz-biela Jul 13, 2026
baf4b88
docs(mfa): align device-check comments with house style
dariusz-biela Jul 13, 2026
d6d6553
refactor(mfa): resolve the outcome leaf from the stored error
dariusz-biela Jul 14, 2026
0304d01
refactor(mfa): reuse the device-check methods type in the scenario co…
dariusz-biela Jul 14, 2026
e9d8482
refactor(mfa): read the device-check failure reasons through CONST
dariusz-biela Jul 14, 2026
7a64d30
docs(mfa): simplify the device-check comments and drop the roadmap notes
dariusz-biela Jul 14, 2026
096903c
refactor(mfa): target the outcome leaves relatively and drop their ids
dariusz-biela Jul 14, 2026
97cf564
docs(mfa): drop the slice roadmap notes from comments
dariusz-biela Jul 14, 2026
b7116fa
test(mfa): pin the jsdom environment in the web biometrics suite
dariusz-biela Jul 14, 2026
b20f710
docs(mfa): trim duplicated comments in the graph-traversal suites
dariusz-biela Jul 14, 2026
9cef76f
Merge pull request #346 from software-mansion-labs/dariusz-biela/feat…
dariusz-biela Jul 16, 2026
dc16d5b
feat(mfa): add the soft prompt step to the state machine
dariusz-biela Jul 16, 2026
2d6d90a
test(mfa): extract the shared actor setup into a flow-actors util
dariusz-biela Jul 16, 2026
82564bc
feat(mfa): check the soft-prompt acceptance in a dedicated machine state
dariusz-biela Jul 17, 2026
5e1a3ca
refactor(mfa): read the soft-prompt flag through a callback actor
dariusz-biela Jul 17, 2026
8d0ea58
refactor(mfa): drop the soft-prompt flag from the provider telemetry
dariusz-biela Jul 17, 2026
502bb43
Revert "refactor(mfa): read the soft-prompt flag through a callback a…
dariusz-biela Jul 17, 2026
6c9fb25
refactor(mfa): simplify the soft-prompt flag read
dariusz-biela Jul 17, 2026
be81578
refactor(mfa): give each device-check outcome its own guard
dariusz-biela Jul 17, 2026
016a3ae
docs(mfa): simplify state machine comments
dariusz-biela Jul 20, 2026
631d4f9
docs(mfa): trim low-value comments in the soft-prompt slice
dariusz-biela Jul 20, 2026
2f3ea7f
test(mfa): assert the soft-prompt screen copy in the graph walk
dariusz-biela Jul 20, 2026
1c4b082
docs(mfa): explain why the xstate prefix identifies auto-driven events
dariusz-biela Jul 20, 2026
438a606
refactor(mfa): unify the controlled actor mocks behind a factory
dariusz-biela Jul 20, 2026
2688e92
fix(mfa): reject a flow start before the session account hydrates
dariusz-biela Jul 20, 2026
1a4f560
test(mfa): hydrate the session account in the ui walk harness
dariusz-biela Jul 21, 2026
9646ec7
Merge pull request #352 from software-mansion-labs/dariusz-biela/feat…
dariusz-biela Jul 23, 2026
da67767
Merge remote-tracking branch 'origin/main' into dariusz-81197-mfa-sta…
dariusz-biela Jul 27, 2026
ee8eb64
Merge remote-tracking branch 'origin/main' into dariusz-81197-mfa-sta…
dariusz-biela Aug 5, 2026
364cd4b
chore(mfa): adopt main's ValidateCodeInput rename in the MFA validate…
dariusz-biela Aug 5, 2026
22cd839
fix(mfa): add the XState inspector strings to the Greek locale
dariusz-biela Aug 5, 2026
3d5bf56
feat(mfa): migrate the magic code and registration decision into the …
dariusz-biela Jul 21, 2026
63e4b33
fix(mfa): clear the inline error when a rejected code is resubmitted
dariusz-biela Jul 24, 2026
eba53bd
refactor(mfa): drop the unreachable carried-code guard from the regis…
dariusz-biela Jul 24, 2026
a544a05
feat(mfa): exchange the magic code for a registration challenge
dariusz-biela Jul 24, 2026
a21b7a7
refactor(mfa): decide registration from the credentials snapshot capt…
dariusz-biela Jul 27, 2026
eb03e1d
Revert "refactor(mfa): decide registration from the credentials snaps…
dariusz-biela Jul 27, 2026
2df5537
feat(mfa): route the magic-code resend through the state machine
dariusz-biela Jul 27, 2026
99b4273
fix(mfa): disable the resend button while the challenge request is in…
dariusz-biela Jul 27, 2026
f36a18a
fix(mfa): send the registration reason code with the magic code request
dariusz-biela Jul 27, 2026
73b63b9
test(mfa): follow main's security-code translation rename
dariusz-biela Jul 27, 2026
c4e1479
fix(mfa): type the one-shot Onyx read with OnyxValue
dariusz-biela Jul 27, 2026
bf9090c
test(mfa): align compiler handling for countdown mock
dariusz-biela Jul 27, 2026
34aee10
fix(mfa): derive resend availability from machine
dariusz-biela Jul 28, 2026
b0e3b64
fix(mfa): show submit spinner for accounts with 2FA
dariusz-biela Jul 28, 2026
6acf90d
Remove unused MFA test helper
dariusz-biela Jul 28, 2026
03a432a
Reuse MFA actor done event helper
dariusz-biela Jul 28, 2026
3db918b
refactor(mfa): nest magic-code request states
dariusz-biela Jul 28, 2026
c2095ac
refactor(mfa): model the inline invalid-code error as a state
dariusz-biela Jul 28, 2026
9b6b14d
fix(mfa): avoid stale loading state blocking resend
dariusz-biela Jul 29, 2026
c5f8f69
test(mfa): cover registration challenge loading data
dariusz-biela Jul 29, 2026
5e67d22
test(mfa): move validate-code loading test
dariusz-biela Jul 29, 2026
b018522
fix(mfa): cancel local credential reads
dariusz-biela Jul 29, 2026
f63a029
docs(mfa): clarify credential check ownership
dariusz-biela Jul 29, 2026
9b2e57a
Improve MFA actor event type safety
dariusz-biela Jul 29, 2026
1b5573b
refactor(mfa): derive framework event types from invoked actors
dariusz-biela Jul 29, 2026
f2969b9
refactor(mfa): rename idle input state
dariusz-biela Jul 29, 2026
69d05ff
refactor(mfa): derive invalid-code error from state
dariusz-biela Jul 29, 2026
3c73664
fix(mfa): wait for account data before deciding on registration
dariusz-biela Aug 3, 2026
36de29d
refactor(mfa): derive validate code submitting state from machine
dariusz-biela Aug 3, 2026
b7a2a45
fix(mfa): clear validate code after challenge request
dariusz-biela Aug 3, 2026
b13a628
Revert "fix(mfa): wait for account data before deciding on registration"
dariusz-biela Aug 3, 2026
1bfb704
refactor(mfa): narrow the machine event type to application events
dariusz-biela Aug 4, 2026
94bb7c8
fix(mfa): reject aborted one-time Onyx reads instead of never resolving
dariusz-biela Aug 4, 2026
c8eb1e5
test(mfa): drive validate code submitting state through the machine
dariusz-biela Aug 5, 2026
e5a094b
refactor(mfa): name the code step validate code, not magic code
dariusz-biela Aug 5, 2026
8ab71eb
refactor(mfa): point the machine at main's renamed validate code screen
dariusz-biela Aug 5, 2026
09d8431
feat: prepare credential creation skeleton and its tests
jakubstec Aug 3, 2026
1f5b654
feat(mfa): add credential creation to the state machine
jakubstec Aug 3, 2026
26adb0f
refactor: hydrate hasAcceptedSoftPrompt before starting the flow, mat…
jakubstec Aug 4, 2026
5031332
fix: handle session switching during flow so no stale account data ex…
jakubstec Aug 5, 2026
dfb2ce9
refactor: clarify registration state snapshot naming
jakubstec Aug 5, 2026
50b8e1e
Merge pull request #355 from software-mansion-labs/dariusz-biela/feat…
dariusz-biela Aug 6, 2026
b5837a3
feat: prepare credential creation skeleton and its tests
jakubstec Aug 3, 2026
047e841
feat(mfa): add credential creation to the state machine
jakubstec Aug 3, 2026
dc5151f
refactor: hydrate hasAcceptedSoftPrompt before starting the flow, mat…
jakubstec Aug 4, 2026
ae19fff
fix: handle session switching during flow so no stale account data ex…
jakubstec Aug 5, 2026
2d913e4
refactor: clarify registration state snapshot naming
jakubstec Aug 5, 2026
9c02132
Merge branch 'jakubstec/3ds/mfa-registration' of github.com:software-…
jakubstec Aug 7, 2026
0c7316e
fix: apply review changes: clean up legacy code, adjust breadcrumb an…
jakubstec Aug 7, 2026
296c1a3
fix: apply review changes: move CREATING_CREDENTIAL substate under PR…
jakubstec Aug 7, 2026
5ffa82b
fix: add useEffect to guard account change, so we end current flow to…
jakubstec Aug 10, 2026
19aa445
Merge pull request #356 from software-mansion-labs/jakubstec/3ds/mfa-…
jakubstec Aug 11, 2026
cf98bd3
fix: masking state names causing xstate inspector errors
jakubstec Aug 11, 2026
a5542ec
refactor: authorization and tests
jakubstec Aug 12, 2026
f392fcb
refactor: legacy code clean-up
jakubstec Aug 12, 2026
49eedd8
test: cover scenario payload forwarding during authorization
jakubstec Aug 12, 2026
02759b1
fix: require actor signals for credential ceremonies
jakubstec Aug 14, 2026
94d1550
fix: split credential failures for recovery routing
jakubstec Aug 14, 2026
27492cd
fix: add test that verifies machine passes payload to authorization a…
jakubstec Aug 14, 2026
a4cf080
test: cover MFA actor inputs, cancellation, and credential cleanup
jakubstec Aug 14, 2026
bc1199e
fix: split credential failures for recovery routing
jakubstec Aug 17, 2026
91352cb
refactor: drop redundant authorization branch and dead test scaffolding
jakubstec Aug 19, 2026
3530034
refactor: reuse isRecord and createFlowContext in place of local copies
jakubstec Aug 19, 2026
a510e29
refactor(mfa): give the canceled result one owner
jakubstec Aug 19, 2026
a4c4f95
fix(inspector): limit the state-value exemption to real machine snaps…
jakubstec Aug 19, 2026
af6c13a
fix: harden authorization credential handling and cancellation
jakubstec Aug 19, 2026
7184493
fix: address the comments
jakubstec Aug 21, 2026
2c5bbbf
fix: assert the authorize ceremony gets the flow-scoped signal that a…
jakubstec Aug 21, 2026
62a423d
fix: harden inspector masking and passkey handling
jakubstec Aug 21, 2026
4b61cf5
fix: change validateCode state name to fix crashing inspector
jakubstec Aug 31, 2026
82a763a
fix: clarify comment about prompt page titles
jakubstec Aug 31, 2026
2133fff
Merge pull request #360 from software-mansion-labs/jakubstec/3ds/mfa-…
jakubstec Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions config/eslint/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,11 @@ const restrictedImportPaths = [
name: '@src/utils/findNodeHandle',
message: "Do not use 'findNodeHandle' as it is no longer supported on web.",
},
{
name: '@xstate/react',
importNames: ['useMachine'],
message: 'Import `useInspectedMachine` from `@hooks/useInspectedMachine` instead so every machine is wired up to the XState inspector.',
},
];

const restrictedImportPatterns = [
Expand Down
1 change: 0 additions & 1 deletion config/eslint/eslint.seatbelt.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,6 @@
"../../src/components/MultiGestureCanvas/usePanGesture.ts" "no-restricted-syntax" 1
"../../src/components/MultiGestureCanvas/usePinchGesture.ts" "react-hooks/set-state-in-effect" 1
"../../src/components/MultiGestureCanvas/useTapGestures.ts" "no-restricted-syntax" 1
"../../src/components/MultifactorAuthentication/Context/stateReducer.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/components/MultifactorAuthentication/Context/usePromptContent.ts" "react-hooks/refs" 10
"../../src/components/MultifactorAuthentication/ValidateCodeResendButton.tsx" "no-restricted-syntax" 1
"../../src/components/MultifactorAuthentication/components/Modals/createCancelConfirmModal.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
Expand Down
162 changes: 160 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@
"@shopify/flash-list": "2.3.0",
"@shopify/react-native-skia": "^2.4.14",
"@ua/react-native-airship": "26.5.0",
"@xstate/react": "5.0.5",
"array.prototype.tosorted": "^1.1.4",
"awesome-phonenumber": "^5.4.0",
"canvas-size": "^1.2.6",
Expand Down Expand Up @@ -225,7 +226,8 @@
"react-webcam": "^7.1.1",
"scheduler": "0.27.0",
"victory-native": "^41.21.0",
"xlsx": "^0.18.5"
"xlsx": "^0.18.5",
"xstate": "5.31.1"
},
"devDependencies": {
"@aaroon/workbox-rspack-plugin": "^1.0.1",
Expand Down Expand Up @@ -267,6 +269,7 @@
"@rspack/plugin-react-refresh": "^2.0.2",
"@sentry/cli": "3.3.0",
"@sentry/webpack-plugin": "5.2.0",
"@statelyai/inspect": "^0.7.1",
"@storybook/addon-a11y": "10.4.6",
"@storybook/addon-docs": "10.4.6",
"@storybook/cli": "10.4.6",
Expand Down
36 changes: 36 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,42 @@ const EMAIL = {
};

const CONST = {
/**
* Credential and secret keys that must be redacted before any user data leaves the running app.
* Every place where data can leave redacts them, such as the request and response logs
* (`sanitizeLogParams`), the thrown parameter errors (`requireParameters`), and the XState
* inspector stream (`XStateInspector/maskSensitive`). Keeping the keys in this single list is
* what stops those sites from drifting apart, so always add a new key here rather than at each
* call site.
*/
SENSITIVE_AUTH_KEYS: [
'authToken',
'encryptedAuthToken',
'password',
'partnerUserSecret',
'partnerPassword',
'twoFactorAuthCode',
'idToken',
'token',
'validateCode',
'autoGeneratedPassword',
'autoGeneratedLogin',
'oldDotCurrentAuthToken',
'oldDotCurrentEncryptedAuthToken',
'oldDotAutoGeneratedPassword',
'pin',
'pan',
'cvv',
'expiration',
'expirationDate',
'otp',
'secret',
'keyInfo',
'challenge',
'signedChallenge',
'registrationChallenge',
'authorizationChallenge',
],
HEIC_SIGNATURES: [
'6674797068656963', // 'ftypheic' - Indicates standard HEIC file
'6674797068656978', // 'ftypheix' - Indicates a variation of HEIC
Expand Down

This file was deleted.

Loading
Loading