diff --git a/CHANGELOG.md b/CHANGELOG.md
index cc41250db..0ad4ee0c7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- [581](https://github.com/thoth-pub/thoth/issues/581) - Add crossmark policy DOI to imprint record
+### Changed
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Upgrade rust to `1.77.2` in production and development `Dockerfile`
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Added favicons to export API and GraphQL API docs
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Replaced static logo files with CDN paths
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Moved thoth CSS to root directory in thoth-app
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Replace unnecessary pageloader CSS with an actual loader
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Apply Thoth theming to rapidocs
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Upgrade `graphiql` to v3.2
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Upgrade `trunk` to v0.19.2
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Upgrade `wasm-bindgen` to v0.2.92
+
+### Fixed
+ - [591](https://github.com/thoth-pub/thoth/pull/591) - Replaced broken logo URL in export API docs
+
## [[0.12.1]](https://github.com/thoth-pub/thoth/releases/tag/v0.12.1) - 2024-04-8
### Fixed
- [589](https://github.com/thoth-pub/thoth/issues/589) - Truncation of `short_abstract` in Thoth ONIX results in Invalid UTF-8 sequences
diff --git a/Cargo.lock b/Cargo.lock
index 6293da86e..fc500e25a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3540,9 +3540,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.91"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
dependencies = [
"cfg-if 1.0.0",
"serde",
@@ -3552,9 +3552,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.91"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
dependencies = [
"bumpalo",
"log",
@@ -3579,9 +3579,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.91"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -3589,9 +3589,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.91"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
@@ -3602,9 +3602,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.91"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
[[package]]
name = "wasm-logger"
diff --git a/Dockerfile b/Dockerfile
index 08921587d..5fabc028b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-ARG MUSL_IMAGE=clux/muslrust:1.76.0
+ARG MUSL_IMAGE=clux/muslrust:1.77.2-stable
FROM ${MUSL_IMAGE} as build
diff --git a/Dockerfile.dev b/Dockerfile.dev
index 139cee26d..9f2ac2d13 100644
--- a/Dockerfile.dev
+++ b/Dockerfile.dev
@@ -1,4 +1,4 @@
-ARG RUST_VERSION=1.76.0
+ARG RUST_VERSION=1.77.2
FROM rust:${RUST_VERSION}
diff --git a/thoth-api-server/src/graphiql.rs b/thoth-api-server/src/graphiql.rs
index 326571f53..b4f77587f 100644
--- a/thoth-api-server/src/graphiql.rs
+++ b/thoth-api-server/src/graphiql.rs
@@ -2,40 +2,28 @@
/// Generate the HTML source to show a GraphiQL interface
pub fn graphiql_source(graphql_endpoint_url: &str) -> String {
- let default_query = r#"# Welcome to Thoth's GraphQL API explorer (GraphiQL).
+ let version = env!("CARGO_PKG_VERSION");
+ let default_query = r##"# Welcome to Thoth's GraphQL API explorer (GraphiQL).
#
# GraphiQL is an in-browser tool for writing, validating, and
# testing GraphQL queries.
#
-# Type queries into this side of the screen, and you will see intelligent
-# typeaheads aware of the current GraphQL type schema and live syntax and
-# validation errors highlighted within the text.
+# Type queries into this side of the screen, and you will see
+# intelligent typeaheads aware of the current GraphQL type
+# schema and live syntax and validation errors highlighted
+# within the text.
#
-# Click on the QueryRoot in the Documentation Explorer ( < Docs ) on the
-# right hand side of the screen to navigate the API schema.
+# Click on the QueryRoot in the Documentation Explorer
+# (first icon) on the top left of the screen to navigate
+# the API schema.
#
-# GraphQL queries typically start with a "{" character. Lines that starts
-# with a # are ignored.
+# GraphQL queries typically start with a "{" character.
+# Lines that starts with a "#" are ignored.
#
-# An example Thoth GraphQL query might look like:
-#
-# {
-# books(workStatuses: [ACTIVE]) {
-# fullTitle
-# doi
-# }
-# }
-#
-# Keyboard shortcuts:
+# Run the following example Thoth GraphQL query:
#
# Run Query: Ctrl-Enter (or press the play button above)
#
-# Auto Complete: Ctrl-Space (or just start typing)
-#
-#
-# Run the following query (Ctrl-Enter):
-#
-
{
books(order: {field: PUBLICATION_DATE, direction: ASC}) {
fullTitle
@@ -50,62 +38,142 @@ pub fn graphiql_source(graphql_endpoint_url: &str) -> String {
}
}
}
-"#;
+"##;
format!(
- r#"
+ r##"
-
-
-
-
- Thoth GraphQL API Documentation
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Thoth GraphQL API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
+
-"#,
+
+"##,
)
}
diff --git a/thoth-app-server/build.rs b/thoth-app-server/build.rs
index 0ddd2e2b9..84d963acf 100644
--- a/thoth-app-server/build.rs
+++ b/thoth-app-server/build.rs
@@ -2,7 +2,7 @@ use dotenv::dotenv;
use std::env;
use std::process::{exit, Command};
-const TRUNK_VERSION: &str = "0.18.8";
+const TRUNK_VERSION: &str = "0.19.2";
fn is_wasm_target_installed() -> bool {
let output = Command::new("rustup")
diff --git a/thoth-app-server/src/lib.rs b/thoth-app-server/src/lib.rs
index 56165713e..4682f2871 100644
--- a/thoth-app-server/src/lib.rs
+++ b/thoth-app-server/src/lib.rs
@@ -4,6 +4,9 @@ use std::time::Duration;
use actix_cors::Cors;
use actix_web::{get, middleware::Logger, web, App, HttpResponse, HttpServer};
+mod manifest;
+use crate::manifest::manifest_source;
+
const NO_CACHE: &str = "no-cache";
const LOG_FORMAT: &str = r#"%{r}a %a "%r" %s %b "%{Referer}i" "%{User-Agent}i" %T"#;
@@ -28,36 +31,7 @@ macro_rules! static_files {
static_files! {
(JS, js_file) => ("../static/pkg/thoth-app.js", "/admin/thoth-app.js", "application/javascript"),
(WASM, wasm_file) => ("../static/pkg/thoth-app_bg.wasm", "/admin/thoth-app_bg.wasm", "application/wasm"),
- (BULMA, bulma_file) => ("../static/pkg/bulma-pageloader.min.css", "/admin/bulma-pageloader.min.css", "text/css; charset=utf-8"),
(CSS, css_file) => ("../static/pkg/thoth.css", "/admin/thoth.css", "text/css; charset=utf-8"),
- (LOGO, logo_file) => ("../static/img/thoth-logo.png", "/admin/img/thoth-logo.png", "image/png"),
- (XML, xml_file) => ("../static/browserconfig.xml", "/admin/browserconfig.xml", "application/xml"),
- (JSON, json_file) => ("../static/manifest.json", "/admin/manifest.json", "application/json"),
- (ICON, icon_file) => ("../static/img/favicon.ico", "/admin/favicon.ico", "image/x-icon"),
- (ICON1, icon_file1) => ("../static/img/android-icon-144x144.png", "/admin/android-icon-144x144.png", "image/png"),
- (ICON2, icon_file2) => ("../static/img/android-icon-192x192.png", "/admin/android-icon-192x192.png", "image/png"),
- (ICON3, icon_file3) => ("../static/img/android-icon-36x36.png", "/admin/android-icon-36x36.png", "image/png"),
- (ICON4, icon_file4) => ("../static/img/android-icon-48x48.png", "/admin/android-icon-48x48.png", "image/png"),
- (ICON5, icon_file5) => ("../static/img/android-icon-72x72.png", "/admin/android-icon-72x72.png", "image/png"),
- (ICON6, icon_file6) => ("../static/img/android-icon-96x96.png", "/admin/android-icon-96x96.png", "image/png"),
- (ICON7, icon_file7) => ("../static/img/apple-icon-114x114.png", "/admin/apple-icon-114x114.png", "image/png"),
- (ICON8, icon_file8) => ("../static/img/apple-icon-120x120.png", "/admin/apple-icon-120x120.png", "image/png"),
- (ICON9, icon_file9) => ("../static/img/apple-icon-144x144.png", "/admin/apple-icon-144x144.png", "image/png"),
- (ICON10, icon_file10) => ("../static/img/apple-icon-152x152.png", "/admin/apple-icon-152x152.png", "image/png"),
- (ICON11, icon_file11) => ("../static/img/apple-icon-180x180.png", "/admin/apple-icon-180x180.png", "image/png"),
- (ICON12, icon_file12) => ("../static/img/apple-icon-57x57.png", "/admin/apple-icon-57x57.png", "image/png"),
- (ICON13, icon_file13) => ("../static/img/apple-icon-60x60.png", "/admin/apple-icon-60x60.png", "image/png"),
- (ICON14, icon_file14) => ("../static/img/apple-icon-72x72.png", "/admin/apple-icon-72x72.png", "image/png"),
- (ICON15, icon_file15) => ("../static/img/apple-icon-76x76.png", "/admin/apple-icon-76x76.png", "image/png"),
- (ICON16, icon_file16) => ("../static/img/apple-icon-precomposed.png", "/admin/apple-icon-precomposed.png", "image/png"),
- (ICON17, icon_file17) => ("../static/img/apple-icon.png", "/admin/apple-icon.png", "image/png"),
- (ICON18, icon_file18) => ("../static/img/favicon-16x16.png", "/admin/favicon-16x16.png", "image/png"),
- (ICON19, icon_file19) => ("../static/img/favicon-32x32.png", "/admin/favicon-32x32.png", "image/png"),
- (ICON20, icon_file20) => ("../static/img/favicon-96x96.png", "/admin/favicon-96x96.png", "image/png"),
- (ICON21, icon_file21) => ("../static/img/ms-icon-144x144.png", "/admin/ms-icon-144x144.png", "image/png"),
- (ICON22, icon_file22) => ("../static/img/ms-icon-150x150.png", "/admin/ms-icon-150x150.png", "image/png"),
- (ICON23, icon_file23) => ("../static/img/ms-icon-310x310.png", "/admin/ms-icon-310x310.png", "image/png"),
- (ICON24, icon_file24) => ("../static/img/ms-icon-70x70.png", "/admin/ms-icon-70x70.png", "image/png"),
}
const INDEX_FILE: &[u8] = include_bytes!("../static/pkg/index.html");
@@ -69,6 +43,13 @@ async fn index() -> HttpResponse {
.body(INDEX_FILE)
}
+#[get("/admin/manifest.json")]
+async fn app_manifest() -> HttpResponse {
+ HttpResponse::Ok()
+ .content_type("application/json")
+ .body(manifest_source())
+}
+
#[actix_web::main]
pub async fn start_server(
host: String,
@@ -84,6 +65,7 @@ pub async fn start_server(
.wrap(Cors::default().allowed_methods(vec!["GET", "POST", "OPTIONS"]))
.configure(config)
.default_service(web::route().to(index))
+ .service(app_manifest)
})
.workers(threads)
.keep_alive(Duration::from_secs(keep_alive))
diff --git a/thoth-app-server/src/manifest.rs b/thoth-app-server/src/manifest.rs
new file mode 100644
index 000000000..6a7ff814d
--- /dev/null
+++ b/thoth-app-server/src/manifest.rs
@@ -0,0 +1,58 @@
+//! Utility module to generate the manifest.json file
+
+const VERSION: &str = env!("CARGO_PKG_VERSION");
+
+pub fn manifest_source() -> String {
+ format!(
+ r##"
+{{
+ "name": "Thoth",
+ "version": "{VERSION}",
+ "description": "Bibliographical metadata management system.",
+ "display": "standalone",
+ "scope": "/admin",
+ "start_url": ".",
+ "background_color": "#FFDD57",
+ "theme_color": "#FFDD57",
+ "icons": [
+ {{
+ "src": "https://cdn.thoth.pub/android-icon-36x36.png",
+ "sizes": "36x36",
+ "type": "image\/png",
+ "density": "0.75"
+ }},
+ {{
+ "src": "https://cdn.thoth.pub/android-icon-48x48.png",
+ "sizes": "48x48",
+ "type": "image\/png",
+ "density": "1.0"
+ }},
+ {{
+ "src": "https://cdn.thoth.pub/android-icon-72x72.png",
+ "sizes": "72x72",
+ "type": "image\/png",
+ "density": "1.5"
+ }},
+ {{
+ "src": "https://cdn.thoth.pub/android-icon-96x96.png",
+ "sizes": "96x96",
+ "type": "image\/png",
+ "density": "2.0"
+ }},
+ {{
+ "src": "https://cdn.thoth.pub/android-icon-144x144.png",
+ "sizes": "144x144",
+ "type": "image\/png",
+ "density": "3.0"
+ }},
+ {{
+ "src": "https://cdn.thoth.pub/android-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image\/png",
+ "density": "4.0"
+ }}
+ ]
+}}
+"##
+ )
+}
diff --git a/thoth-app/Trunk.toml b/thoth-app/Trunk.toml
index 2a31d91eb..f5c75869e 100644
--- a/thoth-app/Trunk.toml
+++ b/thoth-app/Trunk.toml
@@ -12,5 +12,5 @@ dist = "pkg"
[tools]
# Default wasm-bindgen version to download.
-wasm_bindgen = "0.2.89"
+wasm_bindgen = "0.2.92"
diff --git a/thoth-app/browserconfig.xml b/thoth-app/browserconfig.xml
deleted file mode 100644
index 28b1c0e42..000000000
--- a/thoth-app/browserconfig.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-#ffdd57
diff --git a/thoth-app/css/bulma-pageloader.min.css b/thoth-app/css/bulma-pageloader.min.css
deleted file mode 100644
index 72334bf86..000000000
--- a/thoth-app/css/bulma-pageloader.min.css
+++ /dev/null
@@ -1 +0,0 @@
-@-webkit-keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.pageloader{bottom:0;left:0;position:absolute;right:0;top:0}.pageloader{position:fixed;padding-top:2em;background:#00d1b2;background:#00d1b2;z-index:999998;transition:transform .35s ease-out,-webkit-transform .35s ease-out;will-change:transform}.pageloader.is-white{background-color:#fff;background:#fff}.pageloader.is-white::after{border-color:#0a0a0a;-webkit-animation:loader-figure-white 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-white 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-white .title{color:#0a0a0a}.pageloader.is-black{background-color:#0a0a0a;background:#0a0a0a}.pageloader.is-black::after{border-color:#fff;-webkit-animation:loader-figure-black 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-black 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-black .title{color:#fff}.pageloader.is-light{background-color:#f5f5f5;background:#f5f5f5}.pageloader.is-light::after{border-color:#363636;-webkit-animation:loader-figure-light 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-light 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-light .title{color:#363636}.pageloader.is-dark{background-color:#363636;background:#363636}.pageloader.is-dark::after{border-color:#f5f5f5;-webkit-animation:loader-figure-dark 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-dark 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-dark .title{color:#f5f5f5}.pageloader.is-primary{background-color:#00d1b2;background:#00d1b2}.pageloader.is-primary::after{border-color:#fff;-webkit-animation:loader-figure-primary 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-primary 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-primary .title{color:#fff}.pageloader.is-link{background-color:#3273dc;background:#3273dc}.pageloader.is-link::after{border-color:#fff;-webkit-animation:loader-figure-link 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-link 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-link .title{color:#fff}.pageloader.is-info{background-color:#209cee;background:#209cee}.pageloader.is-info::after{border-color:#fff;-webkit-animation:loader-figure-info 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-info 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-info .title{color:#fff}.pageloader.is-success{background-color:#23d160;background:#23d160}.pageloader.is-success::after{border-color:#fff;-webkit-animation:loader-figure-success 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-success 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-success .title{color:#fff}.pageloader.is-warning{background-color:#ffdd57;background:#ffdd57}.pageloader.is-warning::after{border-color:rgba(0,0,0,.7);-webkit-animation:loader-figure-warning 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-warning 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-warning .title{color:rgba(0,0,0,.7)}.pageloader.is-danger{background-color:#ff3860;background:#ff3860}.pageloader.is-danger::after{border-color:#fff;-webkit-animation:loader-figure-danger 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure-danger 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader.is-danger .title{color:#fff}.pageloader:not(.is-bottom-to-top){-webkit-transform:translateY(-100%);transform:translateY(-100%)}.pageloader.is-bottom-to-top{-webkit-transform:translateY(100%);transform:translateY(100%)}.pageloader.is-left-to-right{-webkit-transform:translateX(-100%);transform:translateX(-100%)}.pageloader.is-right-to-left{-webkit-transform:translateX(100%);transform:translateX(100%)}.pageloader.is-active:not(.is-left-to-right),.pageloader.is-active:not(.is-right-to-left){-webkit-transform:translateY(0);transform:translateY(0)}.pageloader.is-active.is-left-to-right,.pageloader.is-active.is-right-to-left{-webkit-transform:translateX(0);transform:translateX(0)}.pageloader::after{position:absolute;top:50%;left:50%;display:block;border-radius:100%;content:'';z-index:9999;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:0;height:0;box-sizing:border-box;border:0 solid #fff;-webkit-animation:loader-figure 1.15s infinite cubic-bezier(.215,.61,.355,1);animation:loader-figure 1.15s infinite cubic-bezier(.215,.61,.355,1)}.pageloader .title{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin:2em 0 0 0;font-size:.875em;letter-spacing:.1em;line-height:1.5em;color:#fff;white-space:nowrap}@-webkit-keyframes loader-figure{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-white{0%{height:0;width:0;background-color:#0a0a0a}29%{background-color:#0a0a0a}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-white{0%{height:0;width:0;background-color:#0a0a0a}29%{background-color:#0a0a0a}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-black{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-black{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-light{0%{height:0;width:0;background-color:#363636}29%{background-color:#363636}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-light{0%{height:0;width:0;background-color:#363636}29%{background-color:#363636}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-dark{0%{height:0;width:0;background-color:#f5f5f5}29%{background-color:#f5f5f5}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-dark{0%{height:0;width:0;background-color:#f5f5f5}29%{background-color:#f5f5f5}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-primary{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-primary{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-link{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-link{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-info{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-info{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-success{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-success{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-warning{0%{height:0;width:0;background-color:rgba(0,0,0,.7)}29%{background-color:rgba(0,0,0,.7)}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-warning{0%{height:0;width:0;background-color:rgba(0,0,0,.7)}29%{background-color:rgba(0,0,0,.7)}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@-webkit-keyframes loader-figure-danger{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}@keyframes loader-figure-danger{0%{height:0;width:0;background-color:#fff}29%{background-color:#fff}30%{height:2em;width:2em;background-color:transparent;border-width:1em;opacity:1}100%{height:2em;width:2em;border-width:0;opacity:0;background-color:transparent}}
diff --git a/thoth-app/css/thoth.css b/thoth-app/css/thoth.css
deleted file mode 100644
index eb821bc13..000000000
--- a/thoth-app/css/thoth.css
+++ /dev/null
@@ -1,120 +0,0 @@
-.contributor:last-child > span {
- display: none;
-}
-
-.license {
- width: 100% !important;
- margin-top: 0.5em;
-}
-
-.license > svg {
- margin-left: 0.2em;
-}
-
-.row {
- cursor: pointer;
-}
-
-.fixed-right {
- float: right;
- position: fixed;
- right: 0;
- z-index: 1;
-}
-
-.dropdown-item {
- cursor: pointer;
-}
-
-
-.field.is-horizontal > .field:not(:last-child) {
- margin-right: .75em;
-}
-
-.home-banner {
- max-height: 350px;
-}
-
-.home-icons {
- margin: 6rem auto 0;
- max-width: 1080px;
-}
-
-.home-icons-item .item {
- transition-duration: 172ms;
- transition-property: color;
-}
-
-.home-icons-item .subtitle {
- color: #000000B0;
-}
-
-.home-icons-item:nth-child(1):hover .title {
- color: #53C2E6;
-}
-
-.home-icons-item:nth-child(2):hover .title {
- color: #FF8D41;
-}
-
-.home-icons-item:nth-child(3):hover .title {
- color: #00A15B;
-}
-
-.home-icons-item:nth-child(4):hover .title {
- color: #D04F54;
-}
-
-.home-icons-item:nth-child(5):hover .title {
- color: #7E308E;
-}
-
-.home-icons-item:nth-child(1) figure {
- color: #53C2E6;
-}
-
-.home-icons-item:nth-child(2) figure {
- color: #FF8D41;
-}
-
-.home-icons-item:nth-child(3) figure {
- color: #00A15B;
-}
-
-.home-icons-item:nth-child(4) figure {
- color: #D04F54;
-}
-
-.home-icons-item:nth-child(5) figure {
- color: #7E308E;
-}
-
-.truncate {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- display: block;
-}
-
-.button.primary {
- color: #ffffff;
- background-color: #8c3f8d;
- border-width: 2px;
- border-radius: .375rem;
- border-color: #8c3f8d;
- font-weight: bold;
-}
-.button.primary:hover {
- background-color: #af4fb0;
-}
-.version {
- color: #f14668;
- padding-left: 1em;
- padding-right: 1em;
- padding-bottom: calc(.5em - 1px);
- font-weight: bold;
-}
-.version:hover {
- text-decoration: underline;
- color: #f14668;
-}
\ No newline at end of file
diff --git a/thoth-app/img/android-icon-144x144.png b/thoth-app/img/android-icon-144x144.png
deleted file mode 100644
index d2ac151d0..000000000
Binary files a/thoth-app/img/android-icon-144x144.png and /dev/null differ
diff --git a/thoth-app/img/android-icon-192x192.png b/thoth-app/img/android-icon-192x192.png
deleted file mode 100644
index 83fe4eecf..000000000
Binary files a/thoth-app/img/android-icon-192x192.png and /dev/null differ
diff --git a/thoth-app/img/android-icon-36x36.png b/thoth-app/img/android-icon-36x36.png
deleted file mode 100644
index fbea7e33a..000000000
Binary files a/thoth-app/img/android-icon-36x36.png and /dev/null differ
diff --git a/thoth-app/img/android-icon-48x48.png b/thoth-app/img/android-icon-48x48.png
deleted file mode 100644
index d1fe9cbee..000000000
Binary files a/thoth-app/img/android-icon-48x48.png and /dev/null differ
diff --git a/thoth-app/img/android-icon-72x72.png b/thoth-app/img/android-icon-72x72.png
deleted file mode 100644
index 4b01334c5..000000000
Binary files a/thoth-app/img/android-icon-72x72.png and /dev/null differ
diff --git a/thoth-app/img/android-icon-96x96.png b/thoth-app/img/android-icon-96x96.png
deleted file mode 100644
index c6229d7c6..000000000
Binary files a/thoth-app/img/android-icon-96x96.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-114x114.png b/thoth-app/img/apple-icon-114x114.png
deleted file mode 100644
index 0d953a77a..000000000
Binary files a/thoth-app/img/apple-icon-114x114.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-120x120.png b/thoth-app/img/apple-icon-120x120.png
deleted file mode 100644
index 3f921dc99..000000000
Binary files a/thoth-app/img/apple-icon-120x120.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-144x144.png b/thoth-app/img/apple-icon-144x144.png
deleted file mode 100644
index d2ac151d0..000000000
Binary files a/thoth-app/img/apple-icon-144x144.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-152x152.png b/thoth-app/img/apple-icon-152x152.png
deleted file mode 100644
index b6ae7714a..000000000
Binary files a/thoth-app/img/apple-icon-152x152.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-180x180.png b/thoth-app/img/apple-icon-180x180.png
deleted file mode 100644
index 83bfeb120..000000000
Binary files a/thoth-app/img/apple-icon-180x180.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-57x57.png b/thoth-app/img/apple-icon-57x57.png
deleted file mode 100644
index b8b2f85b8..000000000
Binary files a/thoth-app/img/apple-icon-57x57.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-60x60.png b/thoth-app/img/apple-icon-60x60.png
deleted file mode 100644
index c3d05825a..000000000
Binary files a/thoth-app/img/apple-icon-60x60.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-72x72.png b/thoth-app/img/apple-icon-72x72.png
deleted file mode 100644
index 4b01334c5..000000000
Binary files a/thoth-app/img/apple-icon-72x72.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-76x76.png b/thoth-app/img/apple-icon-76x76.png
deleted file mode 100644
index 4ab2ea5a1..000000000
Binary files a/thoth-app/img/apple-icon-76x76.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon-precomposed.png b/thoth-app/img/apple-icon-precomposed.png
deleted file mode 100644
index 5fef37e97..000000000
Binary files a/thoth-app/img/apple-icon-precomposed.png and /dev/null differ
diff --git a/thoth-app/img/apple-icon.png b/thoth-app/img/apple-icon.png
deleted file mode 100644
index 5fef37e97..000000000
Binary files a/thoth-app/img/apple-icon.png and /dev/null differ
diff --git a/thoth-app/img/favicon-16x16.png b/thoth-app/img/favicon-16x16.png
deleted file mode 100644
index 740812383..000000000
Binary files a/thoth-app/img/favicon-16x16.png and /dev/null differ
diff --git a/thoth-app/img/favicon-32x32.png b/thoth-app/img/favicon-32x32.png
deleted file mode 100644
index 2a5a7bb85..000000000
Binary files a/thoth-app/img/favicon-32x32.png and /dev/null differ
diff --git a/thoth-app/img/favicon-96x96.png b/thoth-app/img/favicon-96x96.png
deleted file mode 100644
index c6229d7c6..000000000
Binary files a/thoth-app/img/favicon-96x96.png and /dev/null differ
diff --git a/thoth-app/img/favicon.ico b/thoth-app/img/favicon.ico
deleted file mode 100644
index a7ee22dde..000000000
Binary files a/thoth-app/img/favicon.ico and /dev/null differ
diff --git a/thoth-app/img/ms-icon-144x144.png b/thoth-app/img/ms-icon-144x144.png
deleted file mode 100644
index d2ac151d0..000000000
Binary files a/thoth-app/img/ms-icon-144x144.png and /dev/null differ
diff --git a/thoth-app/img/ms-icon-150x150.png b/thoth-app/img/ms-icon-150x150.png
deleted file mode 100644
index 4f20ef8b3..000000000
Binary files a/thoth-app/img/ms-icon-150x150.png and /dev/null differ
diff --git a/thoth-app/img/ms-icon-310x310.png b/thoth-app/img/ms-icon-310x310.png
deleted file mode 100644
index 1fc0fea22..000000000
Binary files a/thoth-app/img/ms-icon-310x310.png and /dev/null differ
diff --git a/thoth-app/img/ms-icon-70x70.png b/thoth-app/img/ms-icon-70x70.png
deleted file mode 100644
index f6276fad0..000000000
Binary files a/thoth-app/img/ms-icon-70x70.png and /dev/null differ
diff --git a/thoth-app/img/thoth-logo.png b/thoth-app/img/thoth-logo.png
deleted file mode 100644
index f80aeaf71..000000000
Binary files a/thoth-app/img/thoth-logo.png and /dev/null differ
diff --git a/thoth-app/index.html b/thoth-app/index.html
index ac653d1ee..557d0a5ff 100644
--- a/thoth-app/index.html
+++ b/thoth-app/index.html
@@ -7,31 +7,51 @@
Thoth
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
-
-
-
-
+
+
-
+
+
+