Heat a large skillet over medium heat. Add olive oil and butter, then add the sliced onions. Cook for 15-20 minutes until caramelized.
Cube the day-old bread and toast in the oven at 350°F for 10 minutes until slightly crispy.
In a large mixing bowl, combine toasted bread, caramelized onions, thyme, garlic powder, salt, and pepper. Pour broth over and mix gently. Fold in half of the Gruyère cheese.
Transfer mixture to a greased 9x13-inch baking dish. Sprinkle remaining Gruyère cheese on top. Cover with foil and bake for 25 minutes, then uncover and bake for an additional 15 minutes until golden.