[size=150]Broken UI During Theme Updates[/size]
There are some ongoing challenges with the combination of the new Sublime Text package format, active UI themes and Package Control. When updating an active theme via Package Control, it causes the UI rendering of Sublime Text to completely break during the update.
This is causing some understandable confusion:
github.com/buymeasoda/soda-theme/issues/155
github.com/buymeasoda/soda-theme/issues/159
There also appears to be a secondary issue with packages being moved to “ignored_packages” and not being moved out again. I’ve had this happen while manually editing theme files (with lots of editor restarts in between), and also while updating packages. The package declaration pops in and out of “ignored_packages” and sometimes remains stuck there after a restart.
[size=150]How it happens[/size]
Here’s my understanding of the flow for a package update, and where things currently come unstuck:
- Package Control: Upgrade Package (new update found)
- Package declaration is moved to the “ignored_packages” list UI breaks if the package is the active theme]
- Updated “sublime-package” is downloaded
- Existing package file is replaced with the new version UI attempts to re-instate, usually only partially successful]
- Package declaration rule is removed from the “ignored_packages” list
At this point, if the update is complete and you quit and restart Sublime Text everything will be fine - other than the awkward user experience of the temporarily broken UI.
But things can get worse if the user (understandably) freaks out and quits Sublime Text at the point where they see the UI initially break in step 2 above. If the update is not complete, the theme rule can remain in “ignored_packages” and continue to be broken on subsequent restarts without a clear reason why.
[size=150]Solutions?[/size]
I’ve expanded the Soda Theme troubleshooting page with info, and I’m looking at the Package Control messages file as an option to alert people to the situation and suggest workarounds.
Are there existing features of Package Control that can solve this? For example, is there a way to force Package Control to not remove / replace a package until the next restart? Any suggestions there are greatly appreciated.
Otherwise, is it something best tackled at the Sublime Text core or Package Control layer, to get a smooth solution and user experience.
Does anyone else got any ideas on how to solve this? Jon and Will do you have any thoughts on this?