Bloom the yeast: In a large bowl, combine warm milk and granulated sugar, then sprinkle in the active dry yeast. Let stand 5–10 minutes until foamy.
Make the dough: Whisk in melted butter, egg, and salt. Add flour gradually and mix until a soft dough forms.
Knead 5–7 minutes on a lightly floured surface (or with a dough hook) until smooth and elastic. Place in a greased bowl, cover, and let rise in a warm spot until doubled, about 60–75 minutes.
Cook the caramel: In a small saucepan melt butter, then stir in brown sugar and cream. Simmer 1–2 minutes until bubbly and smooth. Remove from heat; stir in alcohol-free vanilla and a pinch of salt. Pour into a greased 9x13-inch baking dish and sprinkle nuts over if using.
Mix the filling: Combine brown sugar and cinnamon in a small bowl. Roll the risen dough into a 12x18-inch rectangle. Spread softened butter over the dough, then sprinkle the cinnamon sugar evenly.
Roll and slice: Starting from a long edge, roll the dough into a tight log, pinching the seam to seal. Use unflavored dental floss or a sharp knife to cut into 12 equal rolls.
Arrange over caramel: Place rolls cut-side up in the prepared pan. Cover and let rise until puffy and touching, about 30–45 minutes.
Bake: Preheat oven to 350°F (175°C). For extra-soft rolls, pour the warmed heavy cream evenly over the risen rolls. Bake 25–30 minutes until golden and the centers are set; tent with foil if browning too quickly.
Invert and serve: Cool 5 minutes, then carefully invert the pan onto a platter so the caramel coats the rolls. Serve warm.