-
Notifications
You must be signed in to change notification settings - Fork 138
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Theming #624
Conversation
- Custom CSS for blogs - Custom themes for instance - New dark theme - UI for admin to upload new theme (or delete them) - UI to choose your theme TODO: - Federate blog themes - Escape url()/import - Add a way to avoid conflicts between blog and instance themes - UI to disable blog CSS (the option is already in the database, just need to add a checkbox in the settings) - SQlite migrations
This way, if all the dark themes contain "dark" in their name, blog themes can detect dark themes and change accordingly with: html[class*=dark] We will need to document that, and the fact that dark theme sould always contain "dark" in their names.
Codecov Report
@@ Coverage Diff @@
## master #624 +/- ##
========================================
- Coverage 35.33% 35% -0.33%
========================================
Files 68 68
Lines 7915 7938 +23
Branches 1894 1888 -6
========================================
- Hits 2797 2779 -18
- Misses 4341 4381 +40
- Partials 777 778 +1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❓
is it still ready for review considering the design flaw pointed regarding arbitrary css security? |
No, I'm implementing another approach, I think I will be able to push it this evening. |
- rework assets compilation - blog themes are now managed at instance level by admins too - remote blog themes need to be approved by an admin - once approved, a remote theme is also available on this instance
If you want to review this PR, the new version is there. Admins should now approve remote blog themes, but they may contain anything. Once a theme is approved, it is also available for use on this instance. Admins can also upload themes if they have SSH acces to their instance: they just need to create a folder called "blog-SOMETHING" in I will update the docs too. |
Does it really make sense to have admins approve remote blog themes? Using remote resources on the local site seems fragile and prone to many more errors in the future. I think it makes more sense to limit themes to site-wide and local-user. More generally, this is an issue that has to do with the way articles federate in Plume -- the HTML is delivered and cached to many different sites that may have varying CSS. Federating CSS as well is, I think, out-of-scope of ActivityPub (although there is nothing preventing this). In any case, it is much simpler to say that users should view the original URL if they wish to read the article with the original CSS. |
It makes everythinh easier both for us and for instance admins, and it didn't added a lot of value. Thank you @trwnh for the suggestion! :)
I'm not sure this is an actual concern but how does it play with caching? Where are the file stored and are they given a unique name (hash based?)? |
The themes are stored in |
I think they are cached, but not evicted when modified, so client might think the file was not updated when it was. Adding a timestamp, a hash, a random string or anything to the name ( |
I think it is going to be quite difficult, because in the current implementation, the main theme file should be named |
Even 7 days is quiet long and will definitely be reported as a bug at some point. I'm at work currently, maybe we can discuss of it later on riot? |
OK, feel free to ping me when you want to talk about it :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Instance level themes are just CSS files, stored in
static/css
(seeInstance::list_themes
).TODO:
Fixes #354, #403