diff --git a/Changelog.md b/Changelog.md index 67f23c007..045398a5c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -19,6 +19,7 @@ ## Bug fixes ## Features +* Add a manifest.json file as a first step to make diaspora* a Progressive Web App [#7998](https://github.com/diaspora/diaspora/pull/7998) # 0.7.10.0 diff --git a/app/assets/images/branding/apple-splash.png b/app/assets/images/branding/apple-splash.png deleted file mode 100644 index 8ba65c01d..000000000 Binary files a/app/assets/images/branding/apple-splash.png and /dev/null differ diff --git a/app/assets/images/branding/logos/app-icon-512.png b/app/assets/images/branding/logos/app-icon-512.png new file mode 100644 index 000000000..ec40b1115 Binary files /dev/null and b/app/assets/images/branding/logos/app-icon-512.png differ diff --git a/app/assets/images/branding/logos/app-icon.png b/app/assets/images/branding/logos/app-icon.png new file mode 100644 index 000000000..8c822f46c Binary files /dev/null and b/app/assets/images/branding/logos/app-icon.png differ diff --git a/app/controllers/manifest_controller.rb b/app/controllers/manifest_controller.rb new file mode 100644 index 000000000..ccc45bdcd --- /dev/null +++ b/app/controllers/manifest_controller.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class ManifestController < ApplicationController + def show # rubocop:disable Metrics/MethodLength + render json: { + short_name: AppConfig.settings.pod_name, + name: AppConfig.settings.pod_name, + description: "diaspora* is a free, decentralized and privacy respectful social network", + icons: [ + { + src: helpers.image_path("branding/logos/app-icon.png"), + type: "image/png", + sizes: "192x192" + }, + { + src: helpers.image_path("branding/logos/app-icon-512.png"), + type: "image/png", + sizes: "512x512" + } + ], + start_url: "/", + background_color: "#000000", + display: "standalone", + theme_color: "#000000" + } + end +end diff --git a/app/views/application/_head.haml b/app/views/layouts/_head.haml similarity index 92% rename from app/views/application/_head.haml rename to app/views/layouts/_head.haml index c8587e9d5..a85a96c74 100644 --- a/app/views/application/_head.haml +++ b/app/views/layouts/_head.haml @@ -4,7 +4,7 @@ %meta{charset: "utf-8"}/ = content_for?(:meta_data) ? yield(:meta_data) : metas_tags -%meta{content: "yes", name: "mobile-web-app-capable"}/ +%link{rel: "manifest", href: "/manifest.json"} / favicon / For Apple devices diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index a50e428aa..63decb11f 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -12,7 +12,7 @@ = load_javascript_locales = include_color_theme - = render "head" + = render "layouts/head" = translation_missing_warnings %body{class: "page-#{controller_name} action-#{action_name}"} diff --git a/app/views/layouts/application.mobile.haml b/app/views/layouts/application.mobile.haml index 233122575..e9667dbbe 100644 --- a/app/views/layouts/application.mobile.haml +++ b/app/views/layouts/application.mobile.haml @@ -9,7 +9,7 @@ = javascript_include_tag "mobile/mobile" = load_javascript_locales - = render "head" + = render "layouts/head" = include_color_theme "mobile" %meta{name: "viewport", content: "width=device-width, minimum-scale=1, maximum-scale=1, user-scalable=no"}/ @@ -17,11 +17,6 @@ %meta{name: "MobileOptimized", content: "320"}/ %meta{"http-equiv" => "cleartype", :content => "on"}/ - / iOS mobile web app indicator - / NOTE(we will enable these once we don't have to rely on back/forward buttons anymore) - /%meta{:name => "apple-mobile-web-app-capable", :content => "yes"} - /%link{:rel => "apple-touch-startup-image", :href => "/images/apple-splash.png"} - %body #app = render "layouts/header" diff --git a/config/initializers/secure_headers.rb b/config/initializers/secure_headers.rb index 6007264af..c02d9cd94 100644 --- a/config/initializers/secure_headers.rb +++ b/config/initializers/secure_headers.rb @@ -17,7 +17,8 @@ SecureHeaders::Configuration.default do |config| media_src: %w[https:], script_src: %w['self' blob: 'unsafe-eval' platform.twitter.com cdn.syndication.twimg.com widgets.flickr.com embedr.flickr.com www.instagram.com 'unsafe-inline'], - style_src: %w['self' 'unsafe-inline' platform.twitter.com *.twimg.com] + style_src: %w['self' 'unsafe-inline' platform.twitter.com *.twimg.com], + manifest_src: %w['self'] } # rubocop:enable Lint/PercentStringArray diff --git a/config/routes.rb b/config/routes.rb index 873299b9a..7f1e36102 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -239,4 +239,5 @@ Rails.application.routes.draw do end get ".well-known/openid-configuration", to: "api/openid_connect/discovery#configuration" + get "manifest.json", to: "manifest#show" end diff --git a/graphics/app-icon.svg b/graphics/app-icon.svg new file mode 100644 index 000000000..f573a1396 --- /dev/null +++ b/graphics/app-icon.svg @@ -0,0 +1,4 @@ + + + +