Skip to content
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

Run al-folio without external ressources/cdns | Privacy / Offline Version #1181

Closed
CheariX opened this issue Feb 12, 2023 · 24 comments
Closed

Comments

@CheariX
Copy link
Contributor

CheariX commented Feb 12, 2023

Is your feature request related to a problem? Please describe.

In its default configuration, al-folio uses lots of externally hosted resources.
For example, it uses JavaScript libraries like bootstrap, imagesloaded, jquery, masonry-layout, mdbootstrap, medium-zoom that are hosted on cdn.jsdelivr.net.
Also, Google Font fonts.googleapis.com is used per default.
They can be found in header.html.

Some features, like altmetric_badge and dimensions_badge, can be disabled simply in _config.yml. By their nature, these features cannot work on a privacy oriented website since they must request their respective API services.

Describe the solution you'd like
I understand the benefits of using CDNs, but I would love to have the possibility to run the website with respect to privacy.
The best option IMHO would be a configuration option like privacy_mode. It could also be called offline_mode since, since it provides the advantage to run the site while being offline.

When activated, this option should automatically download all required libraries (e.g., those that are defined in _config.yml) and put them in an appropriate assets folder.
header.html should then use these files instead.

Describe alternatives you've considered
I looked into two different directions:

  1. I looked into existing jekyll modules if anything for this purpose exists. I could not really find anything, but I have to say, that I'm very new to jekyll. So I might overlooked something.

  2. I could simply download the files manually, place them in my assets/js folder and edit header.html. I'm not sure if this is the expected way to do so. Future updates of al-folio are likely to cause trouble.

@jmrplens
Copy link
Contributor

It is a very good idea. Not only for privacy, it also reduces external calls and that usually improves performance (depending on where the web is hosted).

I don't know how it could be done automatically, but I think that by writing a plugin in Ruby you could parse the external dependencies, save them in a folder and modify the urls to point to the new location.

@JinchaoLove
Copy link

May I ask any update of this issue? I see the pagespeed performance of @CheariX 's homepage is better than al-folio, especially the mobile version (score of 94 vs. 43).

@CheariX
Copy link
Contributor Author

CheariX commented Oct 24, 2023

I manually integrated the assets on my site. I used the following wget command for downloading them:

wget --quiet --recursive --level=2 --no-parent --no-host-directories --include-directories=/ \
    --span-hosts --domains localhost,cdn.jsdelivr.net \
    --accept=.js,.map,.css,.woff,.woff2,.ttf \
    --execute=robots=off \
    --directory-prefix assets/thirdparty/ \
    http://localhost:4000

Then, I added new config variables for each host in each file, such as head.html:

 <link rel="stylesheet" href="{{ site.cdn.jsdelivr }} ..

and in _config.yml:

cdn:
  # jsdelivr: "https://cdn.jsdelivr.net"
  jsdelivr: "/assets/thirdparty"

This is far away from being a good solution.
I think, there must be a better solution. Maybe there is a Jekyll module that can help? I am not so experienced with Jekyll.

Regarding page speed:
Maybe the difference is a result from altmetric/citations? I don't use them on my website, since they query their data from third party servers.

@JinchaoLove
Copy link

Thanks, @CheariX. I think getting assets locally can indeed improve the loading speed. I found a related reference from the chirpy theme (similar to your solution), maybe it's also suitable for the al-folio:
assets: https://github.com/cotes2020/jekyll-theme-chirpy/tree/master/assets
config: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_data/origin/basic.yml

@george-gca
Copy link
Collaborator

You can manually integrate these files on your site, this can probably improve page speed a little, but not sure about huge bumps of speed.

Note that the current speed has improved a lot, and since the addition of purgecss in #1562 we changed some libraries to be used locally. One of the benefits of using a CDN is the simpler update process of the libraries (e.g.: changing a library version in config vs downloading the library and putting in the right directory, renaming and so on).

@CheariX
Copy link
Contributor Author

CheariX commented Mar 18, 2024

Note that the current speed has improved a lot, and since the addition of purgecss in #1562 we changed some libraries to be used locally. One of the benefits of using a CDN is the simpler update process of the libraries (e.g.: changing a library version in config vs downloading the library and putting in the right directory, renaming and so on).

Please note that this issue is not about speed, but about privacy.
I want to run my website without relying on external servers, such as CDNs, for privacy reasons.
Also, without CDNs/Google Fonts/etc., I don't need a GDPR Cookie Banner within the EU.

@george-gca
Copy link
Collaborator

It might be possible to write a plugin for this, it is worth the investigation. But I don't know if I will have the time for this in the next couple of weeks.

@mschabhuettl
Copy link

Implementing a Privacy-Friendly, Offline Version of al-folio Theme with Local Resource Hosting

In response to privacy concerns and the necessity for an offline-capable version of the al-folio theme, I've crafted a method to locally host all external resources. This approach not only mitigates privacy issues but also improves website loading speed by reducing external dependencies.

The Challenge

Al-folio's default setup heavily relies on external resources for fonts, stylesheets, and scripts. Although convenient, this setup poses privacy issues and may degrade performance due to external requests. A discussion in GitHub issue #1181 highlighted the community's interest in a privacy-respecting, offline version.

My Solution

To align al-folio with privacy preferences and offline functionality, I developed a script that automates the downloading and local hosting of all necessary external resources. This script utilizes wget to fetch resources, arranging them into the appropriate directories within the project. The process includes:

  1. Identifying External Resources: Begin by listing all external resources used by al-folio, including JavaScript libraries, CSS stylesheets, and fonts from Google Fonts and CDNs.
  2. Creating a Download Script: The script uses wget to download the identified resources and store them in a structured manner within the project's directory.

I have hosted my shell script on GitHub Gist. Here is the link to it:

Link to the script

This method ensures that all resources are available locally, enhancing privacy, reducing load times, and allowing the site to function entirely offline.

@george-gca
Copy link
Collaborator

I am developing a plug-in to download the files to allow offline usage. It is almost complete, but I am still working on the Google fonts part. As soon as it is finished I will point to it here then some of you could test it out and check if everything is working as expected.

@george-gca
Copy link
Collaborator

So, I created a plugin that downloads all javascript and css files defined in _config.yml and adjust the links within the template accordingly. The only limitation so far is with Google fonts.

As I was trying to handle this, I found out that Google delivers fonts in a format appropriate to the requesting user-agent, so it is returning ttf fonts when I try to download from my script, but accessing it from browser it gives woff2 fonts. The same was perceived by others. So idk if we should replace this or download a specific version of it.

@george-gca
Copy link
Collaborator

Please give #2312 a try to check if it fulfills your needs (note that tikzjax doesn't work this way).

@mschabhuettl
Copy link

mschabhuettl commented Apr 3, 2024

@george-gca Thank you for your work.

Suggestion to Google Fonts Download: In my own script which I described in my previous comment I also did not get the download consistently, but I implemented "offline" Google Fonts the following way:

  1. Manually called and downloaded the CSS
  2. Extracted HTML links with the following Python script
import re

def extract_urls_from_css_and_save(file_path, output_file):
    # Regex-Pattern zum Finden von URLs
    url_pattern = r"url\((https?://[^\)]+)\)"
    
    try:
        with open(file_path, 'r', encoding='utf-8') as css_file:
            css_content = css_file.read()

        # Suche nach allen Vorkommen, die auf das Muster passen
        urls = re.findall(url_pattern, css_content)

        # Schreibe die gefundenen URLs in eine neue Datei
        with open(output_file, 'w', encoding='utf-8') as out_file:
            for url in urls:
                out_file.write(url + '\n')
        
        print(f"URLs wurden erfolgreich in {output_file} gespeichert.")

    except FileNotFoundError:
        print(f"Datei '{file_path}' wurde nicht gefunden.")
    except Exception as e:
        print(f"Ein Fehler ist aufgetreten: {e}")

# Pfad zur CSS-Datei
file_path = 'fonts.css'
# Ausgabedatei
output_file = 'extracted_urls.txt'

# Funktion aufrufen
extract_urls_from_css_and_save(file_path, output_file)
  1. Downloaded all Fonts with wget and manually placed it into assets/thirdparty/fonts/google-fonts-originals/
  2. Adapted local version of referenced "original" CSS from Google with sed-Command sed -i 's|https://fonts.gstatic.com/s/[^/]*/v[0-9]*/|/assets/thirdparty/fonts/google-fonts-originals/|g' local-google-fonts.css
/* fallback */
@font-face {
  font-family: 'Material Icons';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2) format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmSU5fBBc4.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2) format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmEU9fBBc4.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2) format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/KFOlCnqEu92Fr1MmWUlfBBc4.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/thirdparty/fonts/google-fonts-originals/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

.material-icons {
  font-family: 'Material Icons';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -moz-font-feature-settings: 'liga';
  -moz-osx-font-smoothing: grayscale;
}
  1. referenced local CSS in _config.yml
<link
  defer
  rel="stylesheet"
  type="text/css"
  href="/assets/thirdparty/css/local-google-fonts.css"
>

Edit 1: As I've just implemented my own Version of offline font's, I'm not going to try out your version (yet?). But great work! Thanks!

Cheers,
Matthias Schabhüttl

@george-gca
Copy link
Collaborator

Please give my code a try. I implemented Google fonts download, the only thing that I didn't implement was downloading some stuff for tikzjax to work, since it refers to them from javascript code and it searches in the root directory.

Note that my code only does the modifications to the built site, not in the template part. This means that you'll only see the modifications on the generated _site/ files and consequently on the one that it displays when running locally or deployed.

@mschabhuettl
Copy link

Please give my code a try. I implemented Google fonts download, the only thing that I didn't implement was downloading some stuff for tikzjax to work, since it refers to them from javascript code and it searches in the root directory.

Note that my code only does the modifications to the built site, not in the template part. This means that you'll only see the modifications on the generated _site/ files and consequently on the one that it displays when running locally or deployed.

Not yet (if at all). As I've painstakingly cobbled together my Script and manually set local paths. Sorry. But don't get me wrong: Great work!

@george-gca
Copy link
Collaborator

Have you managed to make tikzjax work offline?

@mschabhuettl
Copy link

Have you managed to make tikzjax work offline?

Nope! I think tikzjax and dimensions.ai did not work

@CheariX
Copy link
Contributor Author

CheariX commented Apr 6, 2024

Thanks for your incredible work, @george-gca
I tested #2312 (btw: the PR mentions the wrong issue in the PR description 1811 instead of #1181.).

To use the PR, I needed to use docker-compose up --build so that the new ruby gems are installed. Just in case that anyone else stumbles upon this problem.

I enabled the offline mode by setting download: true in _config.yml.
During the first startup, all resources are automatically downloaded as expected.

In addition, I had to disable:

  altmetric: false
  dimensions: false
  google_scholar: false

This is totally fine, as they would need to request APIs from third-party servers anyway in order to work properly. The same holds true for the GitHub Repository plugin.

I also found that emojies are causing third party request, such as in the File announcement_3.md with :sparkles: :smile:. Not sure where these request came from, maybe the jemoji plugin?
In that case, there is a configuration option:

emoji:
  src: "/assets/images/emoji"

However, this might be out of scope, similarly to altmetric, dimension, and scholar.

  1. After migrating my own website's content to the PR, I found some more minor problems:
jekyll-1  | [2024-04-06 13:49:27] ERROR `/al-folio/assets/libs/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2' not found.
jekyll-1  | [2024-04-06 13:49:27] ERROR `/al-folio/assets/libs/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2' not found.
jekyll-1  | [2024-04-06 13:49:27] ERROR `/al-folio/assets/libs/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2' not found.

It seems that some Google Fonts were not downloaded. Just found this in the logs. I could not find any visual issues.

  1. I found that the video entry in bibtex automatically embeds iframes with youtube links. According my privacy desires, this should be optionally.
    However, this is another issue and not related to your PR. I just wanted to write it down somewhere.

In summary, I am more than happy with this PR. It does exactly what I wanted, and I would love to see it getting merged.

@george-gca
Copy link
Collaborator

Thanks for the testing. Can you please try it again to see if the plug-in downloads correctly the Google fonts? Maybe (just maybe) was a hickup in the internet that prevented the download, since it failed for only 3 files and not all of them.

I will give jemoji a look to check what external links it access, but I agree with the rest, they are not related and must be dealt with the way you did. As for the video part, what would you suggest? Instead of embedding, just linking to the video (to be open in a new window)?

@CheariX
Copy link
Contributor Author

CheariX commented Apr 7, 2024

Thanks for the testing. Can you please try it again to see if the plug-in downloads correctly the Google fonts? Maybe (just maybe) was a hickup in the internet that prevented the download, since it failed for only 3 files and not all of them.

I have attempted to recreate the problem, but unfortunately, I was unable to replicate the error on a new, clean run. This leads me to believe that the problem may not be as critical, particularly since I can't consistently reproduce the issue.

As for the video part, what would you suggest? Instead of embedding, just linking to the video (to be open in a new window)?

The video embedding is a bit strange for me.

  1. I've encountered an issue with Youtube embeddings since Youtube sends x-frame-options: SAMEORIGIN. Recent browsers now support SAMEORIGIN, which they did not some time ago. Maybe it was working with older browsers? The error I faced specifically with Chrome is displayed in the image below:
grafik
  1. I believe it might be a bit overwhelming to display the video alongside the abstract box. It seems more logical to incorporate a separate box dedicated specifically for videos, similar to how we currently have boxes for abstracts and bibliographies.

  2. I would recommend making the iframe itegration optionally, like we have it with all other "external" features (altmetric, scholar, ....). This would allow people like me to simply disable it.
    Just a link on the button would be my preffered behavior.

@george-gca
Copy link
Collaborator

Ah now I see, you are talking about videos in the bibliography part. I will give it a thought and update it here.

@george-gca
Copy link
Collaborator

I believe the current solution (displaying the video below in a small collapsible area) is not worth it. It is not even working properly, also the video is too small to be useful. I think I will change it to just pop in another window. So I think this solves this issue.

Meanwhile, about the iframe solution, check the blog post about video and audio, which also use the same component. With this part:

I would recommend making the iframe itegration optionally, like we have it with all other "external" features (altmetric, scholar, ....). This would allow people like me to simply disable it.
Just a link on the button would be my preffered behavior.

You mean to have a flag in the config that, if set to true (or false) instead of displaying the video inline just redirects to the video in a new window, right?

@george-gca
Copy link
Collaborator

I think I will already merge #2312 and then do any other needed changes in other PRs.

george-gca pushed a commit that referenced this issue Apr 15, 2024
As discussed in #1181, I suggest to make embedding videos an optional
feature.

This behavior aligns well with recently merged PR #2312.

Open questions:

1. I added a youtube link to `papers.bib`. Is this link okay?
2. I set `enable_video_embedding: false` as the default. I argue that
privacy settings should be the default. Also, the current implementation
of `video.liquid` only works for some very specific video URLs. For
example, to embed youtube, specialized links must be used to avoid
`X-Frame-Option` issues. This behavior can lead to a broken embedding,
which would not look very nice.

Feedback welcome.
george-gca pushed a commit to george-gca/multi-language-al-folio that referenced this issue Apr 15, 2024
As discussed in alshedivat#1181, I suggest to make embedding videos an optional
feature.

This behavior aligns well with recently merged PR alshedivat#2312.

Open questions:

1. I added a youtube link to `papers.bib`. Is this link okay?
2. I set `enable_video_embedding: false` as the default. I argue that
privacy settings should be the default. Also, the current implementation
of `video.liquid` only works for some very specific video URLs. For
example, to embed youtube, specialized links must be used to avoid
`X-Frame-Option` issues. This behavior can lead to a broken embedding,
which would not look very nice.

Feedback welcome.
BoAi01 pushed a commit to BoAi01/boai01.github.io that referenced this issue May 7, 2024
Created a plugin to tackle alshedivat#1181. Currently have an issue with tikzjax
since it imports some wasm file from its javascript. The rest should
work as expected.

---------

Signed-off-by: George Araujo <george.gcac@gmail.com>
BoAi01 pushed a commit to BoAi01/boai01.github.io that referenced this issue May 7, 2024
As discussed in alshedivat#1181, I suggest to make embedding videos an optional
feature.

This behavior aligns well with recently merged PR alshedivat#2312.

Open questions:

1. I added a youtube link to `papers.bib`. Is this link okay?
2. I set `enable_video_embedding: false` as the default. I argue that
privacy settings should be the default. Also, the current implementation
of `video.liquid` only works for some very specific video URLs. For
example, to embed youtube, specialized links must be used to avoid
`X-Frame-Option` issues. This behavior can lead to a broken embedding,
which would not look very nice.

Feedback welcome.
@gockar
Copy link

gockar commented May 15, 2024

I am also very interested in the offline mode and have just tested it. In general, it works well and is really easy to activate! Thanks for that!

I have noticed problems with maps embedded via Leaflet. On the one hand, the integrity keys no longer fit because the files are changed. On the other hand, graphics expected from the library under /assets/libs/images/ are missing. Unfortunately, I don't have enough experience with the project here to be able to say whether this is a general problem or whether something needs to be adjusted specifically for Leaflet.

@george-gca
Copy link
Collaborator

If Leaflet expects some files to be available locally and they are not, this means that they should also be downloaded. But we should check if this is feasible, or if is something more like is the case for tikzjax, which could not be automated and it support must be dropped for the offline version or it should be done manually. Also the integrity keys should work since they are the same file, shouldn't they?

Can you open a new issue for this?

siril-teja pushed a commit to siril-teja/siril-teja.github.io-old that referenced this issue Jun 19, 2024
Created a plugin to tackle alshedivat#1181. Currently have an issue with tikzjax
since it imports some wasm file from its javascript. The rest should
work as expected.

---------

Signed-off-by: George Araujo <george.gcac@gmail.com>
siril-teja pushed a commit to siril-teja/siril-teja.github.io-old that referenced this issue Jun 19, 2024
As discussed in alshedivat#1181, I suggest to make embedding videos an optional
feature.

This behavior aligns well with recently merged PR alshedivat#2312.

Open questions:

1. I added a youtube link to `papers.bib`. Is this link okay?
2. I set `enable_video_embedding: false` as the default. I argue that
privacy settings should be the default. Also, the current implementation
of `video.liquid` only works for some very specific video URLs. For
example, to embed youtube, specialized links must be used to avoid
`X-Frame-Option` issues. This behavior can lead to a broken embedding,
which would not look very nice.

Feedback welcome.
karapostK pushed a commit to karapostK/karapostK.github.io that referenced this issue Jul 4, 2024
Created a plugin to tackle alshedivat#1181. Currently have an issue with tikzjax
since it imports some wasm file from its javascript. The rest should
work as expected.

---------

Signed-off-by: George Araujo <george.gcac@gmail.com>
karapostK pushed a commit to karapostK/karapostK.github.io that referenced this issue Jul 4, 2024
As discussed in alshedivat#1181, I suggest to make embedding videos an optional
feature.

This behavior aligns well with recently merged PR alshedivat#2312.

Open questions:

1. I added a youtube link to `papers.bib`. Is this link okay?
2. I set `enable_video_embedding: false` as the default. I argue that
privacy settings should be the default. Also, the current implementation
of `video.liquid` only works for some very specific video URLs. For
example, to embed youtube, specialized links must be used to avoid
`X-Frame-Option` issues. This behavior can lead to a broken embedding,
which would not look very nice.

Feedback welcome.
Suraj-Bhor pushed a commit to Suraj-Bhor/suraj-bhor.github.io that referenced this issue Aug 13, 2024
Created a plugin to tackle alshedivat#1181. Currently have an issue with tikzjax
since it imports some wasm file from its javascript. The rest should
work as expected.

---------

Signed-off-by: George Araujo <george.gcac@gmail.com>
Suraj-Bhor pushed a commit to Suraj-Bhor/suraj-bhor.github.io that referenced this issue Aug 13, 2024
As discussed in alshedivat#1181, I suggest to make embedding videos an optional
feature.

This behavior aligns well with recently merged PR alshedivat#2312.

Open questions:

1. I added a youtube link to `papers.bib`. Is this link okay?
2. I set `enable_video_embedding: false` as the default. I argue that
privacy settings should be the default. Also, the current implementation
of `video.liquid` only works for some very specific video URLs. For
example, to embed youtube, specialized links must be used to avoid
`X-Frame-Option` issues. This behavior can lead to a broken embedding,
which would not look very nice.

Feedback welcome.
meiqing-wang pushed a commit to meiqing-wang/meiqing-wang.github.io that referenced this issue Oct 13, 2024
Created a plugin to tackle alshedivat#1181. Currently have an issue with tikzjax
since it imports some wasm file from its javascript. The rest should
work as expected.

---------

Signed-off-by: George Araujo <george.gcac@gmail.com>
meiqing-wang pushed a commit to meiqing-wang/meiqing-wang.github.io that referenced this issue Oct 13, 2024
As discussed in alshedivat#1181, I suggest to make embedding videos an optional
feature.

This behavior aligns well with recently merged PR alshedivat#2312.

Open questions:

1. I added a youtube link to `papers.bib`. Is this link okay?
2. I set `enable_video_embedding: false` as the default. I argue that
privacy settings should be the default. Also, the current implementation
of `video.liquid` only works for some very specific video URLs. For
example, to embed youtube, specialized links must be used to avoid
`X-Frame-Option` issues. This behavior can lead to a broken embedding,
which would not look very nice.

Feedback welcome.
avishekanand pushed a commit to avishekanand/al-folio-homepage that referenced this issue Oct 22, 2024
Created a plugin to tackle alshedivat#1181. Currently have an issue with tikzjax
since it imports some wasm file from its javascript. The rest should
work as expected.

---------

Signed-off-by: George Araujo <george.gcac@gmail.com>
avishekanand pushed a commit to avishekanand/al-folio-homepage that referenced this issue Oct 22, 2024
As discussed in alshedivat#1181, I suggest to make embedding videos an optional
feature.

This behavior aligns well with recently merged PR alshedivat#2312.

Open questions:

1. I added a youtube link to `papers.bib`. Is this link okay?
2. I set `enable_video_embedding: false` as the default. I argue that
privacy settings should be the default. Also, the current implementation
of `video.liquid` only works for some very specific video URLs. For
example, to embed youtube, specialized links must be used to avoid
`X-Frame-Option` issues. This behavior can lead to a broken embedding,
which would not look very nice.

Feedback welcome.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants