I've corrected some typos. Thanks Afmob for finding a couple of errors, and pointing out that I'd reached naked singles a couple of sub-steps earlier.
Prelims
a) R1C12 = {18/27/36/45}, no 9
b) R1C67 = {17/26/35}, no 4,8,9
c) R12C9 = {13}
d) R4C56 = {19/28/37/46}, no 5
e) R5C12 = {39/48/57}, no 1,2,6
f) R67C1 = {12}
g) R67C7 = {89}
h) R7C89 = {18/27/36/45}, no 9
i) 11(3) cage at R3C2 = {128/137/146/236/245}, no 9
j) 19(3) cage at R6C4 = {289/379/469/478/568}, no 1
Steps resulting from Prelims
1a. Naked pair {13} in R12C9, locked for C9 and N3, clean-up: no 5,7 in R1C6, no 6,8 in R7C8
1b. Naked pair {12} in R67C1, locked for C1, clean-up: no 7,8 in R1C2
1c. Naked pair {89} in R67C7, locked for C7
2. 45 rule on C9 3 outies R7C8 + R8C78 = 7 = {124}, locked for N9, clean-up: no 6 in R7C9
3. 45 rule on C9 3 innies R789C9 = 21 = {579/678}, 7 locked for C9 and N9
3a. Killer pair 8,9 in R7C7 and R789C9, locked for N9
4. 45 rule on N3 3 innies R1C7 + R3C79 = 16 = {259/268/457}
4a. 8,9 of {259/268} must be in R3C9 -> no 2,6 in R3C9
4b. 2 in C9 only in R456C9, locked for C9
5. 45 rule on C12 2 innies R67C2 = 13 = {49/58/67}, no 1,2,3
6. 45 rule on N7 two innies R7C1 + R9C3 = 3 = {12}, locked for N7
7. 3 in N9 only in R9C78, locked for R9 and 15(4) cage at R8C6, no 3 in R8C6
7a. 15(4) cage = {1356/2346} (only combinations containing at least two of 3,5,6 for R9C78}, no 7,8,9
7b. 15(4) cage = {1356/2346}, CPE no 6 in R9C45
[Just spotted …]
8. 45 rule on N4 2(1+1) outies R3C2 + R7C1 = 2 -> R3C2 = 1, R7C1 = 1, R6C1 = 2, R9C3 = 2, clean-up: no 8 in R1C1, no 8 in R7C9
8a. R3C2 = 1 -> R4C12 = 10 = {37/46}, no 5,8
8b. 1 in N9 only in R8C78, locked for R8
9. 1 in N4 only in 21(4) cage at R4C3 = {1389/1569/1578} (cannot be {1479} which clashes with R4C12), no 4, clean-up: no 9 in R7C2 (step 5)
10. 45 rule on N1 1 remaining innie R3C3 = 1 outie R1C4 + 1, no 1,9 in R1C4
11. 45 rule on R89 2 innies R8C34 = 11 = {38/47/56}/[92], no 9 in R8C4
12. 45 rule on N5689 1 remaining outie R3C9 = 1 innie R4C4 + 3, R3C9 = {4589} -> R4C4 = {1256}
13. 45 rule on N6 2 innies R56C7 = 1 outie R3C9 + 6
13a. R56C7 cannot total 12,13 (because no 6,7 in R3C9) -> no 4 in R5C7
14. R1C12 = {45}/[72] (cannot be {36} which clashes with R1C67 + R1C9, combo clash block), no 3,6 in R1C12
[Alternatively R1C679 can be written as a combined cage with variable total.]
14a. R1C12 = {45}/[72], R1C67 = [17]/{26}/[35] -> combined cage R1C1267 = {45}[17]/{45}{26}/[72][35], 5 locked for R1, clean-up: no 6 in R3C3 (step 10)
15. 45 rule on R1 2 innies R1C58 = 2 outies R2C39 + 7
15a. Min R2C39 = 4 -> min R1C58 = 11, no 1 in R1C5
16. 45 rule on R123 3 remaining innies R3C349 = 19 = {289/379/469/478/568}
16a. 2 of {289} must be in R3C4, 9 of {379} must be in R3C9, 9 of {469} must be in R3C3 (R3C34 cannot be [46] because 16(3) cage at R3C3 cannot be [46]6 and there’s no 6 in R3C3) -> no 9 in R3C4
16b. 5 of {568} must be in R3C9 (R3C34 cannot be [56] because 16(3) cage at R3C3 cannot be [56]5) -> no 5 in R3C34, clean-up: no 4 in R1C4 (step 10)
17. 45 rule on N1 using R3C2 = 1, 3 outies R134C4 = 15 = {168/258/357/456} (cannot be {267/348} which clash with 19(3) cage at R6C4
17a. 1,5 only in R4C4 -> R4C4 = {15}, clean-up: no 5,9 in R3C9 (step 12)
17b. 2 of {258} must be in R3C4 (cannot be [285] which clashes with R3C9 + R4C4 = [85], IOD clash, step 12) -> no 2 in R1C4, clean-up: no 3 in R3C3 (step 10)
17c. R3C349 (step 16) = {289/469/478} (cannot be {379} because R3C9 only contains 4,8), no 3 in R3C4
17d. 8 of {289} must be in R3C9, 8 of {478} must be in R3C49 (cannot be [874] which clashes with R1C4 + R3C3 = [78], IOD clash, step 10) -> no 8 in R3C3, clean-up: no 7 in R1C4 (step 10)
17e. 9 in N3 only in R123C8, locked for C8
18. 45 rule on N1 using R3C2 = 1, 3 innies R123C3 = 18 = {369/378/459/468} (cannot be {567} which clashes with R1C12)
18a. 7 of {378} must be in R3C3 -> no 7 in R12C3
18b. 5 of {459} must be in R2C3, 4,7,9 of the other combinations must be in R3C3 -> no 4,9 in R2C3
19. R1C7 + R3C79 (step 4) = {268/457}
19a. R3C9 = {48} -> no 4 in R3C7
20. 15(4) cage at R8C6 = {1356/2346}
20a. 1 of {1356} must be in R9C6, 2,4 of {2346} must be in R89C6 -> R9C6 = {14}, no 4 in R8C6
20b. 15(4) cage = {1356/2346}, CPE no 6 in R8C9
21. R1C7 + R3C79 (step 19) = {268/457}
21a. R56C7 = R3C9 + 6 (step 13)
21b. R3C9 = {48} -> R56C7 = 10,14, R3C9 + R56C7 = 4[19]/8[59] (cannot be 8[68] which clashes with R1C7 + R3C79 = {26}8) -> R5C7 = {15}, R6C7 = 9, R7C7 = 8, clean-up: no 5 in R6C2, no 4 in R7C2 (both step 5)
22. R789C9 (step 3) = {579} (only remaining combination), 5 locked for C9 and N9
22a. Naked pair {36} in R9C78, locked for R9 and 15(4) cage at R8C6, no 6 in R8C6
22b. Naked quad {2468} in 20(4) cage at R3C9, 6 locked for N6
23. 45 rule on N36 3 remaining innies R135C7 = 13 = {157/256}, 5 locked for C7
24. 21(4) cage at R4C3 (step 9) = {1389/1569/1578}
24a. 6 of {1569} must be in R6C2 -> no 6 in R456C3
25. 17(3) cage at R7C2 = {359/368/458/467}
25a. 5 of {359/458} must be in R7C2 -> no 5 in R78C3, clean-up: no 6 in R8C4 (step 11)
26. Killer pair 3,4 in R123C3 and 17(3) cage at R7C2, locked for C3
26a. 21(4) cage at R4C3 (step 9) = {1569/1578}, 5 locked for C3 and N4, clean-up: no 7 in R5C12
27. R1C4 + R2C3 = {368} -> 17(3) cage at R1C3 = {368} (only remaining combination), no 4,9
27a. Caged X-Wing for 3 in 17(3) cage and R12C9, no other 3 in R12, clean-up: no 5 in R1C7
27b. R1C12 = {45} (cannot be [72] which clashes with R1C67), locked for R1 and N1, clean-up: no 3 in R1C4 (step 10)
27c. R123C3 (step 18) = {369/378}, 3 locked for C3 and N1, clean-up: no 8 in R8C4 (step 11)
27d. R2C2 = 2 (hidden single in N1)
[Cracked. The rest is straightforward.]
28. 4 in C3 only in 17(3) cage at R7C2, locked for N7
28a. 17(3) cage (step 25) = {458/467}, no 9, clean-up: no 2 in R8C4 (step 11)
28b. 25(4) cage at R8C1 = {3589/3679}, 3 locked for R8, clean-up: no 8 in R8C3 (step 11)
29. 19(3) cage at R6C4 = {379/469} (cannot be{289} because 2,9 only in R7C4, cannot be {478/568} which clash with R134C4) -> R7C4 = 9, R68C4 = [37/64], clean-up: no 6 in R8C3 (step 11)
30. Naked pair {47} in R8C34, locked for R8
30a. Naked pair {12} in R8C78, locked for R8 and N9
30b. R8C6 = 5, R9C78 = {36} -> R9C6 = 1 (cage sum), clean-up: no 7 in R1C7, no 9 in R4C5
30c. R9C3 = 2 -> 20(4) cage at R8C5 = {2468} (only remaining combination) -> R8C5 = 6, R9C45 = {48}, locked for R9 and N8, clean-up: no 4 in R4C6
31. Naked pair {26} in R1C67, locked for R1 -> R1C34 = [38], R2C3 = 6, R9C45 = [48], clean-up: no 2 in R4C6
32. R1C7 + R3C79 (step 19) = {268} (only remaining combination, cannot be {457} because 5,7 only in R3C7) -> R3C9 = 8, R13C7 = {26}, locked for C7 and N3 -> R9C78 = [36]
32a. R3C9 = 8 -> R4C4 = 5 (step 12)
32b. R4C5 = 5 -> R3C34 = 11 = [92] -> R23C1 = [87], R3C7 = 6, R1C67 = [62], clean-up: no 4 in R4C5
32c. 9 in N4 only in R5C12 = {39}, locked for R5
32d. 11(3) cage at R3C2 = {146} (only remaining combination), 4,6 locked for R4 and N4 -> R4C9 = 2, clean-up: no 8 in R4C6
32e. Killer pair 1,7 in R4C56 and R4C7, locked for R4 -> R4C3 = 8
[Thanks Afmob for pointing out that I'd reached naked singles after step 32c. I check for them manually, doing so when I think I might have reached naked singles.
and the rest is naked singles.