Working on Blender 3.5 as well :)
Thanks for this awesome addon! It was easy to set up.
I have a suggestion for a future update regarding multiple themes. It would be amazing to have:
I would really appreciate your help with thi
A multiple theme and multiple scheduler version in available from: https://superhivemarket.com/products/time-theme-switcher-pro
The first add-on downloaded. A five star rating for it, it's just the best.
Hi! I found an issue with Claude's hep, where the theme (light/dark) is not correctly reapplied when Blender is closed and reopened — even though load_post_handler is supposed to force a re-apply on load. The old theme colors stay in place until I manually click the "Refresh" button in the addon preferences, which does fix it immediately.
Looking at the code, I believe the problem is in apply_theme():
python try: with _context_temp_override(context_to_use, override): result = bpy.ops.script.execute_preset(...) except Exception: return False
bpy.ops.script.execute_preset is a UI operator and depends on a valid window/area/region context. During load_post (right at startup), the UI may not be fully ready yet, so this call can silently fail. Since the exception is caught with a bare except Exception: return False and nothing is logged, there's no way to know the apply failed.
This becomes worse combined with this check in apply_theme_for_current_time():
python if prefs.active_theme == desired_state and not force: return "skipped"
If active_theme was already set to the correct value from a previous session, and the startup apply silently fails, there's no automatic retry that would actually reapply the theme — since the timer's retry call doesn't use force=True, it just checks active_theme again and skips.
Suggestion: log the exception (e.g. print or self.report) instead of silently swallowing it, and/or don't trust active_theme as "already correct" until apply_theme() has actually returned True at least once in the current session. That would make it obvious when the startup apply fails and would let a proper retry happen.