discourse/lib
David Taylor 0e303c7f5d
FEATURE: Automatically generate optimized site metadata icons (#7372)
This change automatically resizes icons for various purposes. Admins can now upload `logo` and `logo_small`, and everything else will be auto-generated. Specific icons can still be uploaded separately if required.

## Core

- Adds an SiteIconManager module which manages automatic resizing and fallback

- Icons are looked up in the OptimizedImage table at runtime, and then cached in Redis. If the resized version is missing for some reason, then most icons will fall back to the original files. Some icons (e.g. PWA Manifest) will return `nil` (because an incorrectly sized icon is worse than a missing icon). 

- `SiteSetting.site_large_icon_url` will return the optimized version, including any fallback. `SiteSetting.large_icon` continues to return the upload object. This means that (almost) no changes are required in core/plugins to support this new system.

- Icons are resized whenever a relevant site setting is changed, and during post-deploy migrations

## Wizard

- Allows `requiresRefresh` wizard steps to reload data via AJAX instead of a full page reload

- Add placeholders to the **icons** step of the wizard, which automatically update from the "Square Logo"

- Various copy updates to support the changes

- Remove the "upload-time" resizing for `large_icon`. This is no longer required.

## Site Settings UX

- Move logo/icon settings under a new "Branding" tab

- Various copy changes to support the changes

- Adds placeholder support to the `image-uploader` component

- Automatically reloads site settings after saving. This allows setting placeholders to change based on changes to other settings

- Upload site settings will be assigned a placeholder if SiteIconManager `responds_to?` an icon of the same name

## Dashboard Warnings

- Remove PWA icon and PWA title warnings. Both are now handled automatically.

## Bonus

- Updated the sketch logos to use @awesomerobot's new high-res designs
2019-05-01 14:44:45 +01:00
..
active_record/connection_adapters DEV: Allow custom value when pausing sidekiq to aid in debugging. 2019-02-19 10:55:53 +08:00
auth FEATURE: Allow API requests to specify the `DISCOURSE_VISIBLE` header 2019-04-15 17:34:34 +01:00
autospec DEV: Remove trailing blank line 2019-04-02 15:49:23 +01:00
backup_restore FIX: Restoring backup shouldn't change disable_emails from "yes" to "non-staff" 2019-04-16 11:48:07 +02:00
common_passwords Make rubocop happy again. 2018-06-07 13:28:18 +08:00
content_security_policy FEATURE: Calculate CSP based on active themes (#6976) 2019-02-11 12:32:04 +00:00
demon FEATURE: introduce ultra_low priority queue 2019-01-17 14:53:19 +11:00
email DEV: stop mutating inputs as a side effect 2019-04-30 10:25:53 +10:00
emoji FIX: correctly uses woman version of previously genderless emojis (#7285) 2019-03-29 10:53:29 +01:00
es6_module_transpiler DEV: Enable `Style/SingleLineMethods` and `Style/Semicolon` in Rubocop (#6717) 2018-12-04 11:48:13 +08:00
file_store FIX: Error when trying to move the same file to tombstone. 2019-04-24 16:47:36 +08:00
freedom_patches HTTPSify links (#7046) 2019-02-22 16:29:27 +01:00
generators REFACTOR: Move `queue_jobs` out of `SiteSetting` 2019-03-14 10:47:38 -04:00
guardian FIX: prevent anonymous users from changing their email/username/name (#7311) 2019-04-17 18:05:02 +10:00
highlight_js DEV: already defined constant 'HIGHLIGHTJS_DIR' 2019-01-21 10:12:23 +01:00
i18n REFACTOR: Use keyword argument for fallback_to_english flag 2019-02-19 15:28:47 +01:00
import
import_export Enable `Lint/ShadowingOuterLocalVariable` for Rubocop. 2018-09-04 10:16:42 +08:00
javascripts REFACTOR: `{{avatar}}` and `{{date}}` helpers in vdom templates 2019-04-30 15:22:38 -04:00
middleware FEATURE: Optional detailed performance logging for Sidekiq jobs (#7091) 2019-03-05 11:19:11 +00:00
migration DEV: Enable `Style/SingleLineMethods` and `Style/Semicolon` in Rubocop (#6717) 2018-12-04 11:48:13 +08:00
onebox Upgrade to FontAwesome 5 (take two) (#6673) 2018-11-26 16:49:57 -05:00
plugin DEV: Expose a way to extend a method that returns a list 2019-04-08 14:42:36 -03:00
pretty_text UX: Better emoji escaping for topic title (#7218) 2019-03-21 09:11:33 +01:00
rate_limiter Add specs for `RateLimiter::LimitExceeded#description`. 2018-06-19 07:48:03 +08:00
reviewable FIX: Approved posts were not enqueueing alerts 2019-04-23 17:30:12 -04:00
scheduler FEATURE: log long running jobs in the defer queue 2018-10-12 17:03:47 +11:00
search FIX: Post blurb incorrect when search contains a phrase match. 2019-03-26 17:01:52 +08:00
seed_data FIX: Forcing permissions of seeded categories shouldn't fail 2019-03-26 10:39:07 +01:00
sidekiq Fix deadblock in 615a22a579. 2019-02-20 10:25:43 +08:00
site_settings DEV: add site setting type group_list for a list of groups 2019-04-29 16:15:22 -04:00
stylesheet FEATURE: Multiple SCSS file support for themes (#7351) 2019-04-12 11:36:08 +01:00
svg_sprite UX: Replace staff notice icon with user-shield. 2019-04-23 10:37:33 +03:00
tasks FEATURE: Automatically generate optimized site metadata icons (#7372) 2019-05-01 14:44:45 +01:00
theme_store FEATURE: Multiple SCSS file support for themes (#7351) 2019-04-12 11:36:08 +01:00
validators DEV: stop mutating inputs as a side effect 2019-04-30 10:25:53 +10:00
wizard FEATURE: Automatically generate optimized site metadata icons (#7372) 2019-05-01 14:44:45 +01:00
admin_confirmation.rb
admin_constraint.rb FIX: Don't update `User#last_seen_at` when PG is readonly take 2. 2019-01-21 13:49:08 +08:00
admin_user_index_query.rb DEV: stop mutating inputs as a side effect 2019-04-30 10:25:53 +10:00
age_words.rb
archetype.rb
auth.rb DEV: Introduce Auth::ManagedAuthenticator 2018-11-30 11:18:11 +00:00
avatar_lookup.rb UX: show full name on /latest page 2018-08-23 14:41:06 +05:30
badge_posts_view_manager.rb Extract `badge_posts` view management logic into a service object. 2018-09-03 09:51:35 +08:00
badge_queries.rb FIX: grant first quote at the date post was created 2019-04-03 16:41:52 +11:00
base62.rb
browser_detection.rb UX: detect DiscourseHub user agent in recently used devices 2019-04-16 13:50:47 -04:00
cache.rb FIX: Don't use `Redis#keys` in production. 2018-12-25 15:12:59 +02:00
canonical_url.rb
category_badge.rb FIX: avoid using absolute positioning for box category style in emails (#6607) 2018-11-15 14:35:50 +01:00
comment_migration.rb DEV: remove exec_sql and replace with mini_sql 2018-06-19 16:13:36 +10:00
composer_messages_finder.rb FEATURE: Improve avatar education link (#7240) 2019-03-22 02:20:48 -07:00
configurable_urls.rb
content_buffer.rb
content_security_policy.rb FEATURE: Calculate CSP based on active themes (#6976) 2019-02-11 12:32:04 +00:00
cooked_post_processor.rb FIX: rescue InvalidURIError when removing user ids from links 2019-04-25 12:36:31 +05:30
crawler_detection.rb FIX: cubot android devices were detected as crawlers 2018-06-21 10:56:46 +10:00
current_user.rb FIX: Do not check for suspicious login when impersonating. (#6534) 2018-11-12 15:34:12 +01:00
custom_renderer.rb
custom_setting_providers.rb
db_helper.rb FIX: Handle BBCode in `migrate_to_s3` task as well. 2019-03-22 16:47:06 +08:00
directory_helper.rb
discourse.rb FEATURE: Create new helper method 'Discourse.stats' (#7388) 2019-04-17 12:45:04 +05:30
discourse_cookie_store.rb
discourse_diff.rb
discourse_event.rb Revert "PERF: Call web hook events in a new thread (#7451)" (#7456) 2019-04-29 18:50:34 +10:00
discourse_hub.rb DEV: Remove the use of stubs on `Rails.logger` in our test suite. 2018-10-10 09:34:50 +08:00
discourse_iife.rb
discourse_ip_info.rb FIX: Ensure TarReader is closed. 2019-04-10 13:37:04 +03:00
discourse_logstash_logger.rb
discourse_plugin.rb
discourse_plugin_registry.rb DEV: Yarn-manage moment and moment-timezone libraries 2019-02-12 13:57:52 -05:00
discourse_redis.rb Follow up to f6f2c38183. 2019-01-22 12:51:59 +08:00
discourse_tagging.rb DEV: stop mutating inputs as a side effect 2019-04-30 10:25:53 +10:00
discourse_updates.rb DEV: Fix rubocop after update. 2019-01-02 05:47:29 +08:00
disk_space.rb FEATURE: Improve backup stats on admin dashboard 2018-12-17 11:35:11 +01:00
distributed_cache.rb REFACTOR: distributed_cache is moved to the message_bus gem 2018-10-15 15:01:45 -04:00
distributed_memoizer.rb DEV: Properly flush `DistributedMemoizer` in spec. 2019-02-21 15:17:37 +08:00
distributed_mutex.rb DEV: Prevent warning about already initialized constant 2019-02-28 21:57:20 +01:00
edit_rate_limiter.rb
email.rb FEATURE: Include "via <site_name>" in email From header 2019-01-04 17:06:19 +01:00
email_backup_token.rb
email_cook.rb
email_updater.rb Make rubocop happy again. 2018-06-07 13:28:18 +08:00
encodings.rb Use rchardet instead of charlock_holmes gem 2018-08-01 10:41:20 +02:00
enum.rb
enum_site_setting.rb
excerpt_parser.rb Revert "FIX: strip spoilers in notification excerpts" 2019-04-15 10:15:17 -04:00
feed_element_installer.rb
feed_item_accessor.rb
file_helper.rb PERF: reduce workload when optimizing images 2019-01-09 12:28:18 +11:00
filter_best_posts.rb
final_destination.rb FIX: GET request didn't use headers 2019-03-08 21:36:49 +01:00
flag_query.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
flag_settings.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
gaps.rb
global_path.rb FIX: Incorrect CDN URL for site setting uploads when s3 is enabled. 2019-01-04 07:52:13 +08:00
guardian.rb FIX: prevent anonymous users from changing their email/username/name (#7311) 2019-04-17 18:05:02 +10:00
has_errors.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
headless-ember.js
hijack.rb Take 2 of 0f5161af19. 2019-04-29 16:41:35 +08:00
homepage_constraint.rb FIX: Don't update `User#last_seen_at` when PG is readonly take 2. 2019-01-21 13:49:08 +08:00
html_prettify.rb Update Rubocop to 0.60 2018-12-04 10:48:16 +01:00
html_to_markdown.rb FIX: skip <br> inside <p> if next character is \n 2019-04-14 14:44:54 +05:30
image_sizer.rb FIX: raise exception when getting dimensions of missing image 2018-12-03 10:19:49 -05:00
inline_oneboxer.rb FIX: Cache url data for failed inline oneboxes 2018-11-13 01:44:20 +05:30
introduction_updater.rb FEATURE: Locale support for seeded categories and topics (#7110) 2019-03-18 21:09:13 +01:00
ip_addr.rb
js_locale_helper.rb DEV: Prevent warnings in specs 2019-04-16 11:41:27 +02:00
json_error.rb FEATURE: Support backup uploads/downloads directly to/from S3. 2018-10-15 09:43:31 +08:00
letter_avatar.rb FIX: don't generate an exception when trying to cleanup unexisting tmp letter avatars 2018-05-30 15:33:58 +02:00
markdown_linker.rb FIX: subfolder digest emails have incorrect URLs 2018-08-07 16:38:17 -04:00
mem_info.rb
message_bus_diags.rb
method_profiler.rb FEATURE: Optional detailed performance logging for Sidekiq jobs (#7091) 2019-03-05 11:19:11 +00:00
mini_sql_multisite_connection.rb FEATURE: mini_sql upgrade 2019-02-25 16:02:32 +11:00
mobile_detection.rb FEATURE: add ability to clear previously set mobile_view with mobile_view=auto 2019-02-22 10:44:49 -08:00
new_post_manager.rb FIX: `nil` error in list, incorrect count in reviewable pending 2019-04-22 12:18:57 -04:00
new_post_result.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
notification_levels.rb
oneboxer.rb FIX: Onebox discourse user not respecting enable names (#7245) 2019-03-25 12:50:14 +05:30
onpdiff.rb
pbkdf2.rb
permalink_constraint.rb
pinned_check.rb
plain_text_to_markdown.rb
plugin_gem.rb Override problematic .gemrc setting 2018-10-17 15:31:58 +11:00
post_action_creator.rb FIX: Take action should agree with all pending flags 2019-04-08 12:39:18 -04:00
post_action_destroyer.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
post_action_result.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
post_creator.rb DEV: remove update_attributes which is deprecated in Rails 6 2019-04-29 17:32:25 +10:00
post_destroyer.rb DEV: remove update_attributes which is deprecated in Rails 6 2019-04-29 17:32:25 +10:00
post_jobs_enqueuer.rb FEATURE: Remove full quotes only from new posts. (#6862) 2019-01-17 13:24:32 +11:00
post_locker.rb
post_merger.rb
post_revisor.rb FIX: Publish web hooks when topic archetype is converted. 2019-04-16 15:18:39 +08:00
pretty_text.rb FIX: get vimeo URL from `data-original-href` iframe attribute 2019-04-26 17:12:07 +05:30
primary_group_lookup.rb
promotion.rb FIX: Clarify User.group_locked_trust_level. 2018-11-07 10:27:44 +08:00
quote_comparer.rb
rate_limiter.rb
remap.rb FEATURE: Automatically generate optimized site metadata icons (#7372) 2019-05-01 14:44:45 +01:00
retrieve_title.rb Make rubocop happy again. 2018-06-07 13:28:18 +08:00
route_format.rb FEATURE: Add support for Unicode usernames and group names 2019-04-23 13:00:27 +02:00
rtl.rb
s3_helper.rb DEV: Remove SiteSetting.s3_force_path_style (#7210) 2019-03-20 14:58:20 +01:00
s3_inventory.rb FEATURE: Create new helper method 'Discourse.stats' (#7388) 2019-04-17 12:45:04 +05:30
score_calculator.rb PERF: we have no use for topic percent rank 2018-07-05 15:10:19 +10:00
screening_model.rb
search.rb FEATURE: Added unlisted topics option to advanced search (#7447) 2019-05-01 12:31:13 +10:00
secure_session.rb
single_sign_on.rb DEV: allow nonce expiry time to be extended cleanly from a plugin 2019-03-19 17:33:38 +11:00
single_sign_on_provider.rb FIX: move sso provider into its own class so it doesn't interfere with sso client (#6767) 2018-12-19 10:22:10 +01:00
site_icon_manager.rb FEATURE: Automatically generate optimized site metadata icons (#7372) 2019-05-01 14:44:45 +01:00
site_setting_extension.rb FEATURE: Automatically generate optimized site metadata icons (#7372) 2019-05-01 14:44:45 +01:00
slug.rb FIX: Generate ASCII slug with default locale 2019-04-29 18:29:58 +02:00
socket_server.rb Improve error messaging in `SocketServer`. 2018-09-19 09:11:10 +08:00
source_url.rb
spam_handler.rb
sql_builder.rb DEV: remove all calls to SqlBuilder use DB.build instead 2018-06-20 17:53:49 +10:00
staff_constraint.rb FIX: Don't update `User#last_seen_at` when PG is readonly take 2. 2019-01-21 13:49:08 +08:00
staff_message_format.rb
suggested_topics_builder.rb tweaks to related message list generation 2018-10-29 16:09:58 +11:00
system_message.rb FEATURE: Add site contact group. (#7152) 2019-03-13 11:34:47 +01:00
text_cleaner.rb DEV: stop mutating inputs as a side effect 2019-04-30 10:25:53 +10:00
text_sentinel.rb FIX: skip some checks for CJK locale in TextSentinel (#7322) 2019-04-05 15:07:49 +02:00
theme_javascript_compiler.rb FIX: Prevent duplicate params for raw template theme handlebars helpers 2019-02-08 12:54:00 +00:00
theme_settings_manager.rb FEATURE: Allow string theme settings to display with multiple lines 2019-02-05 14:14:53 +00:00
theme_settings_parser.rb FEATURE: Allow string theme settings to display with multiple lines 2019-02-05 14:14:53 +00:00
theme_translation_manager.rb FEATURE: Support for localized themes (#6848) 2019-01-17 11:46:11 +00:00
theme_translation_parser.rb FIX: Circular argument reference 2019-01-25 17:44:02 +00:00
timeline_lookup.rb PERF: Don't pluck all the columns just to retrieve a single value. 2018-06-27 11:41:35 +08:00
topic_creator.rb FEATURE: New 'Reviewable' model to make reviewable items generic 2019-03-28 12:45:10 -04:00
topic_list_responder.rb
topic_publisher.rb FIX: Missing topic edited web hook when publishing a topic. 2019-04-16 14:28:23 +08:00
topic_query.rb DEV: stop mutating inputs as a side effect 2019-04-30 10:25:53 +10:00
topic_query_sql.rb DEV: Rails 5.2 upgrade and global gem upgrade 2018-06-07 14:21:33 +10:00
topic_retriever.rb Make rubocop happy again. 2018-06-07 13:28:18 +08:00
topic_subtype.rb
topic_view.rb FEATURE: Let staff add custom post notices. (#7377) 2019-04-19 17:53:58 +03:00
topics_bulk_action.rb FIX: Bulk deleting topics should ignore already deleted topics 2018-08-14 16:37:52 +02:00
trust_level.rb
twitter_api.rb FIX: allow Twitter videos to go fullscreen 2018-07-19 10:22:36 +05:30
unread.rb
upload_creator.rb FIX: whitelist 'feGaussianBlur' and 'filter' svg elements 2019-04-01 12:56:47 +02:00
upload_fixer.rb typo in error message 2018-08-10 11:34:01 +10:00
upload_recovery.rb FIX: should look through posts for image markdown 2019-04-10 13:52:35 +05:30
url_helper.rb FIX: detect local assets for subfolder installs 2019-04-13 10:35:23 -07:00
user_name_suggester.rb DEV: stop mutating inputs as a side effect 2019-04-30 10:25:53 +10:00
version.rb Version bump to v2.3.0.beta9 2019-04-24 16:22:00 +02:00
wizard.rb