diff --git a/.all-contributorsrc b/.all-contributorsrc
new file mode 100644
index 00000000..99b43da4
--- /dev/null
+++ b/.all-contributorsrc
@@ -0,0 +1,44 @@
+{
+ "files": ["README.md"],
+ "imageSize": 100,
+ "commit": false,
+ "contributorsPerLine": 7,
+ "projectName": "al-folio",
+ "projectOwner": "alshedivat",
+ "repoType": "github",
+ "repoHost": "https://github.com",
+ "badgeTemplate": "[core_contributors]: https://img.shields.io/badge/core_contributors-<%= contributors.length %>-orange.svg 'Number of core contributors'",
+ "contributorTemplate": "\">\" width=\"<%= options.imageSize %>px;\" alt=\"\"/> <%= contributor.name %>",
+ "skipCi": true,
+ "contributors": [
+ {
+ "login": "alshedivat",
+ "name": "Maruan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2126561?v=4",
+ "profile": "http://maruan.alshedivat.com",
+ "contributions": ["design", "code"]
+ },
+ {
+ "login": "rohandebsarkar",
+ "name": "Rohan Deb Sarkar",
+ "avatar_url": "https://avatars.githubusercontent.com/u/50144004?v=4",
+ "profile": "http://rohandebsarkar.github.io",
+ "contributions": ["code"]
+ },
+ {
+ "login": "pourmand1376",
+ "name": "Amir Pourmand",
+ "avatar_url": "https://avatars.githubusercontent.com/u/32064808?v=4",
+ "profile": "https://amirpourmand.ir",
+ "contributions": ["code"]
+ },
+ {
+ "login": "george-gca",
+ "name": "George",
+ "avatar_url": "https://avatars.githubusercontent.com/u/31376482?v=4",
+ "profile": "https://george-gca.github.io/",
+ "contributions": ["code"]
+ }
+ ],
+ "commitConvention": "angular"
+}
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index d111c637..fcb4b72b 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -9,7 +9,7 @@
"ghcr.io/rocker-org/devcontainer-features/apt-packages:1": {
"packages": "build-essential,imagemagick,inotify-tools,jupyter-nbconvert,procps,ruby-full,zlib1g-dev"
},
- "ghcr.io/devcontainers-extra/features/prettier:1.0.2": {}
+ "ghcr.io/devcontainers-contrib/features/prettier:1": {}
},
// Optionally: run jekyll serve automatically on container entering using the Docker entrypoint
@@ -28,4 +28,4 @@
},
"remoteUser": "vscode"
-}
\ No newline at end of file
+}
diff --git a/.gitattibutes b/.gitattributes
similarity index 100%
rename from .gitattibutes
rename to .gitattributes
diff --git a/.github/ISSUE_TEMPLATE/1_bug_report.yml b/.github/ISSUE_TEMPLATE/1_bug_report.yml
new file mode 100644
index 00000000..f9c461f4
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/1_bug_report.yml
@@ -0,0 +1,102 @@
+name: ๐ Report a bug
+description: Any errors.
+labels: ["needs triage", "bug"]
+body:
+ - type: markdown
+ attributes:
+ value: >
+ Before you go any further. Is this really a **๐ bug**?
+
+ If it's a question about how al-folio works, have a look at our [documentation](https://github.com/alshedivat/al-folio/blob/main/README.md),
+ [frequently asked questions](https://github.com/alshedivat/al-folio/blob/main/FAQ.md),
+ [past questions](https://github.com/alshedivat/al-folio/discussions/categories/q-a),
+ or [ask a question](https://github.com/alshedivat/al-folio/discussions/new?category=q-a).
+
+ - type: checkboxes
+ id: requirements
+ attributes:
+ label: Have you checked that your issue isn't already filed?
+ description: >
+ Please check if somebody else has already filed the same issue.
+ If you find a similar issue, please add a ๐ reaction or comment on the original post.
+ options:
+ - label: I read through [FAQ](https://github.com/alshedivat/al-folio/blob/main/FAQ.md) and searched through the [past issues](https://github.com/alshedivat/al-folio/issues), none of which addressed my issue.
+ required: true
+ - label: Yes, I have checked that this issue isn't already filed.
+ required: true
+
+ - type: input
+ attributes:
+ label: Bug description
+ description: A description of the ๐ bug.
+ placeholder: A clear and concise description of what the bug is.
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: How to reproduce the bug
+ description: Provide steps to reproduce the ๐ bug.
+ placeholder: |
+ Include steps to reproduce, the expected behaviour, and the actual behaviour.
+
+ 1. Go to '...'
+ 2. Click on '....'
+ 3. Scroll down to '....'
+ 4. See error
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Error messages and logs
+ description: >
+ Provide any error messages and/or logs
+ placeholder: "Copy the complete error messages and logs"
+ value: |
+ ```
+ The error message you got, with the full traceback if available. Please paste it between these triple backticks.
+ ```
+ validations:
+ required: false
+
+ - type: dropdown
+ id: os
+ attributes:
+ label: What operating system are you using?
+ description: select all OSs where you have experienced this issue
+ multiple: true
+ options:
+ - Linux
+ - Mac
+ - Windows
+ - Not applicable (e.g. you're using GitHub Pages or other hosting)
+ validations:
+ required: true
+
+ - type: dropdown
+ id: environment
+ attributes:
+ label: Where are you seeing the problem on?
+ description: select all environments where you have experienced this issue
+ multiple: true
+ options:
+ - "Running locally with Docker (docker compose)"
+ - "Running locally with Docker (devcontainer)"
+ - "Running locally without Docker"
+ - "Deployed site"
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: More info
+ description: Add any other info about the issue here.
+ placeholder: |
+ Add any other context about the problem here, such as versions of the libraries if running without docker, screenshots, links to the deployed site, etc.
+ validations:
+ required: false
+
+ - type: markdown
+ attributes:
+ value: "**Happy coding!**"
diff --git a/.github/ISSUE_TEMPLATE/2_feature_request.yml b/.github/ISSUE_TEMPLATE/2_feature_request.yml
new file mode 100644
index 00000000..6934f60c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/2_feature_request.yml
@@ -0,0 +1,56 @@
+name: ๐ Feature request
+description: Propose a feature for this project
+labels: ["needs triage", "enhancement"]
+body:
+ - type: markdown
+ attributes:
+ value: >
+ Before you go any further, are you sure that this feature is not already implemented?
+
+ If it's a question about how al-folio works, have a look at our [documentation](https://github.com/alshedivat/al-folio/blob/main/README.md),
+ [frequently asked questions](https://github.com/alshedivat/al-folio/blob/main/FAQ.md),
+ [past questions](https://github.com/alshedivat/al-folio/discussions/categories/q-a),
+ or [ask a question](https://github.com/alshedivat/al-folio/discussions/new?category=q-a).
+
+ - type: checkboxes
+ id: requirements
+ attributes:
+ label: Have you checked that your feature request isn't already filed?
+ description: >
+ Please check if somebody else has already filed the same ๐ feature request.
+ If you find a similar feature request, please add a ๐ reaction or comment on the original post.
+ options:
+ - label: I read through [FAQ](https://github.com/alshedivat/al-folio/blob/main/FAQ.md) and searched through the [past issues](https://github.com/alshedivat/al-folio/issues), none of which addressed my feature request.
+ required: true
+ - label: Yes, I have checked that this feature request isn't already filed.
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Description & Motivation
+ description: A clear and concise description of the ๐ feature proposal
+ placeholder: |
+ Please outline the motivation for the proposal.
+ Is your feature request related to a problem? e.g., I'm always frustrated when [...].
+ If this is related to another GitHub issue, please link it here
+
+ - type: textarea
+ attributes:
+ label: Pitch
+ description: A clear and concise description of what you want to happen.
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: Alternatives
+ description: A clear and concise description of any alternative solutions or features you've considered, if any.
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: Additional context
+ description: Add any other context or screenshots about the feature request here.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 00000000..e8510012
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+ - name: โ Ask a Question
+ url: https://github.com/alshedivat/al-folio/discussions/categories/q-a
+ about: Ask and answer al-folio related questions.
+ - name: ๐ Read the documentation
+ url: https://github.com/alshedivat/al-folio/blob/main/README.md
+ about: Please consult the documentation before opening any issues!
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 00000000..4fdc27ee
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,14 @@
+changelog:
+ exclude:
+ labels:
+ - ignore-for-release
+ categories:
+ - title: new features ๐
+ labels:
+ - enhancement
+ - title: bug fixes and improvements โจ
+ labels:
+ - bug-fix
+ - title: other changes ๐ ๏ธ
+ labels:
+ - "*"
diff --git a/.github/workflows/axe.yml b/.github/workflows/axe.yml
new file mode 100644
index 00000000..afa3c922
--- /dev/null
+++ b/.github/workflows/axe.yml
@@ -0,0 +1,74 @@
+name: Axe accessibility testing
+
+on:
+ # if you want to run this on every push uncomment the following lines
+ # push:
+ # branches:
+ # - master
+ # - main
+ # pull_request:
+ # branches:
+ # - master
+ # - main
+ workflow_dispatch:
+ inputs:
+ url:
+ description: "URL to be checked (e.g.: blog/)"
+ required: false
+
+env:
+ URL: ""
+
+jobs:
+ check:
+ # available images: https://github.com/actions/runner-images#available-images
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout ๐๏ธ
+ uses: actions/checkout@v4
+ - name: Setup Ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: "3.2.2"
+ bundler-cache: true
+ - name: Update _config.yml โ๏ธ
+ uses: fjogeleit/yaml-update-action@main
+ with:
+ commitChange: false
+ valueFile: "_config.yml"
+ changes: |
+ {
+ "giscus.repo": "${{ github.repository }}",
+ "baseurl": ""
+ }
+ - name: Install and Build ๐ง
+ run: |
+ sudo apt-get update && sudo apt-get install -y imagemagick
+ pip3 install --upgrade jupyter
+ export JEKYLL_ENV=production
+ bundle exec jekyll build
+ - name: Purge unused CSS ๐งน
+ run: |
+ npm install -g purgecss
+ purgecss -c purgecss.config.js
+ - name: Get Chromium version ๐
+ # https://github.com/GoogleChromeLabs/chrome-for-testing?tab=readme-ov-file#other-api-endpoints
+ run: |
+ CHROMIUM_VERSION=$(wget -qO- https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_STABLE | cut -d. -f1)
+ echo "Chromium version: $CHROMIUM_VERSION"
+ echo "CHROMIUM_VERSION=$CHROMIUM_VERSION" >> $GITHUB_ENV
+ - name: Setup Chrome ๐
+ id: setup-chrome
+ uses: browser-actions/setup-chrome@v1
+ with:
+ chrome-version: ${{ env.CHROMIUM_VERSION }}
+ - name: Install chromedriver ๐
+ run: |
+ npm install -g chromedriver@$CHROMIUM_VERSION
+ - name: Run axe ๐ช
+ # https://github.com/dequelabs/axe-core-npm/tree/develop/packages/cli
+ run: |
+ npm install -g @axe-core/cli
+ npm install -g http-server
+ http-server _site/ &
+ axe --chromedriver-path $(npm root -g)/chromedriver/bin/chromedriver http://localhost:8080/${{ github.event.inputs.url || env.URL }} --load-delay=1500 --exit
diff --git a/.github/workflows/broken-links-site.yml b/.github/workflows/broken-links-site.yml
new file mode 100644
index 00000000..b6b9e2df
--- /dev/null
+++ b/.github/workflows/broken-links-site.yml
@@ -0,0 +1,47 @@
+name: Check for broken links on site
+
+on:
+ workflow_run:
+ workflows: [Deploy site]
+ types: [completed]
+
+jobs:
+ check-links-on-site:
+ # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-a-workflow-based-on-the-conclusion-of-another-workflow
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ # available images: https://github.com/actions/runner-images#available-images
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout ๐๏ธ
+ uses: actions/checkout@v4
+ - name: Setup Ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: "3.2.2"
+ bundler-cache: true
+ - name: Update _config.yml โ๏ธ
+ uses: fjogeleit/yaml-update-action@main
+ with:
+ commitChange: false
+ valueFile: "_config.yml"
+ changes: |
+ {
+ "giscus.repo": "${{ github.repository }}",
+ "baseurl": ""
+ }
+ - name: Install and Build ๐ง
+ run: |
+ sudo apt-get update && sudo apt-get install -y imagemagick
+ pip3 install --upgrade jupyter
+ export JEKYLL_ENV=production
+ bundle exec jekyll build
+ - name: Purge unused CSS ๐งน
+ run: |
+ npm install -g purgecss
+ purgecss -c purgecss.config.js
+ - name: Link Checker ๐
+ uses: lycheeverse/lychee-action@v1.9.0
+ with:
+ fail: true
+ # only check local links
+ args: --offline --remap '_site(/?.*)/assets/(.*) _site/assets/$2' --verbose --no-progress '_site/**/*.html'
diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml
new file mode 100644
index 00000000..88a2ad40
--- /dev/null
+++ b/.github/workflows/broken-links.yml
@@ -0,0 +1,54 @@
+name: Check for broken links
+
+on:
+ push:
+ branches:
+ - master
+ - main
+ paths:
+ - "assets/**"
+ - "**.html"
+ - "**.js"
+ - "**.liquid"
+ - "**/*.md"
+ - "**.yml"
+ - "!.github/workflows/axe.yml"
+ - "!.github/workflows/deploy-docker-tag.yml"
+ - "!.github/workflows/deploy-image.yml"
+ - "!.github/workflows/docker-slim.yml"
+ - "!.github/workflows/lighthouse-badger.yml"
+ - "!.github/workflows/prettier.yml"
+ - "!lighthouse_results/**"
+ pull_request:
+ branches:
+ - master
+ - main
+ paths:
+ - "assets/**"
+ - "**.html"
+ - "**.js"
+ - "**.liquid"
+ - "**/*.md"
+ - "**.yml"
+ - "!.github/workflows/axe.yml"
+ - "!.github/workflows/deploy-docker-tag.yml"
+ - "!.github/workflows/deploy-image.yml"
+ - "!.github/workflows/docker-slim.yml"
+ - "!.github/workflows/lighthouse-badger.yml"
+ - "!.github/workflows/prettier.yml"
+ - "!lighthouse_results/**"
+
+jobs:
+ link-checker:
+ runs-on: ubuntu-latest
+ # only run on the main repo
+ if: github.repository == 'alshedivat/al-folio'
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Link Checker ๐
+ uses: lycheeverse/lychee-action@v2.1.0
+ with:
+ fail: true
+ # removed md files that include liquid tags
+ args: --user-agent 'curl/7.54' --exclude-path README.md --exclude-path _pages/404.md --exclude-path _pages/blog.md --exclude-path _posts/2018-12-22-distill.md --exclude-path _posts/2023-04-24-videos.md --exclude-path _books/the_godfather.md --verbose --no-progress './**/*.md' './**/*.html'
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
new file mode 100644
index 00000000..d09a3b57
--- /dev/null
+++ b/.github/workflows/codeql.yml
@@ -0,0 +1,94 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL Advanced"
+
+on:
+ push:
+ branches: ["main"]
+ pull_request:
+ branches: ["main"]
+ schedule:
+ - cron: "45 4 * * 3"
+
+jobs:
+ analyze:
+ name: Analyze (${{ matrix.language }})
+ # Runner size impacts CodeQL analysis time. To learn more, please see:
+ # - https://gh.io/recommended-hardware-resources-for-running-codeql
+ # - https://gh.io/supported-runners-and-hardware-resources
+ # - https://gh.io/using-larger-runners (GitHub.com only)
+ # Consider using larger runners or machines with greater resources for possible analysis time improvements.
+ runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
+ permissions:
+ # required for all workflows
+ security-events: write
+
+ # required to fetch internal or private CodeQL packs
+ packages: read
+
+ # only required for workflows in private repositories
+ actions: read
+ contents: read
+
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - language: javascript-typescript
+ build-mode: none
+ - language: ruby
+ build-mode: none
+ # CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
+ # Use `c-cpp` to analyze code written in C, C++ or both
+ # Use 'java-kotlin' to analyze code written in Java, Kotlin or both
+ # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
+ # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
+ # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
+ # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
+ # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v3
+ with:
+ languages: ${{ matrix.language }}
+ build-mode: ${{ matrix.build-mode }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+
+ # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
+ # queries: security-extended,security-and-quality
+
+ # If the analyze step fails for one of the languages you are analyzing with
+ # "We were unable to automatically build your code", modify the matrix above
+ # to set the build mode to "manual" for that language. Then modify this step
+ # to build your code.
+ # โน๏ธ Command-line programs to run using the OS shell.
+ # ๐ See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
+ - if: matrix.build-mode == 'manual'
+ shell: bash
+ run: |
+ echo 'If you are using a "manual" build mode for one or more of the' \
+ 'languages you are analyzing, replace this with the commands to build' \
+ 'your code, for example:'
+ echo ' make bootstrap'
+ echo ' make release'
+ exit 1
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v3
+ with:
+ category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/deploy-docker-tag.yml b/.github/workflows/deploy-docker-tag.yml
index 52db0fbf..d7710e26 100644
--- a/.github/workflows/deploy-docker-tag.yml
+++ b/.github/workflows/deploy-docker-tag.yml
@@ -47,4 +47,4 @@ jobs:
platforms: linux/amd64,linux/arm64/v8
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
\ No newline at end of file
+ labels: ${{ steps.meta.outputs.labels }}
diff --git a/.github/workflows/deploy-image.yml b/.github/workflows/deploy-image.yml
index bbfc0d89..7ddd8f65 100644
--- a/.github/workflows/deploy-image.yml
+++ b/.github/workflows/deploy-image.yml
@@ -41,4 +41,4 @@ jobs:
context: .
push: true
platforms: linux/amd64,linux/arm64/v8
- tags: amirpourmand/al-folio
\ No newline at end of file
+ tags: amirpourmand/al-folio
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 931dfd34..5fb7e8ae 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -7,6 +7,8 @@ on:
- main
paths:
- "assets/**"
+ - "_sass/**"
+ - "_scripts/**"
- "**.bib"
- "**.html"
- "**.js"
@@ -34,6 +36,8 @@ on:
- main
paths:
- "assets/**"
+ - "_sass/**"
+ - "_scripts/**"
- "**.bib"
- "**.html"
- "**.js"
@@ -98,4 +102,4 @@ jobs:
if: github.event_name != 'pull_request'
uses: JamesIves/github-pages-deploy-action@v4
with:
- folder: _site
\ No newline at end of file
+ folder: _site
diff --git a/.github/workflows/docker-slim.yml b/.github/workflows/docker-slim.yml
new file mode 100644
index 00000000..3a67d32a
--- /dev/null
+++ b/.github/workflows/docker-slim.yml
@@ -0,0 +1,57 @@
+name: Docker Slim
+
+#Only trigger, when the build workflow succeeded
+on:
+ push:
+ branches:
+ - master
+ - main
+ paths:
+ - ".github/workflows/docker-slim.yml"
+ workflow_run:
+ workflows: ["Docker Image CI"]
+ types:
+ - completed
+
+# on:
+# push:
+# branches:
+# - 'master'
+
+jobs:
+ build:
+ # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-a-workflow-based-on-the-conclusion-of-another-workflow
+ if: ${{ github.event.workflow_run.conclusion == 'success' && github.repository_owner == 'alshedivat' }}
+ runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: ${{ github.workspace }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Login
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: update docker-compose
+ shell: bash
+ run: |
+ sed -i "s|\.:|${{ github.workspace }}:|g" ${{ github.workspace }}/docker-compose.yml
+ cat ${{ github.workspace }}/docker-compose.yml
+
+ - uses: kitabisa/docker-slim-action@v1.1.1
+ env:
+ DSLIM_PULL: true
+ DSLIM_COMPOSE_FILE: ${{ github.workspace }}/docker-compose.yml
+ DSLIM_TARGET_COMPOSE_SVC: jekyll
+ DSLIM_CONTINUE_AFTER: signal
+ with:
+ target: amirpourmand/al-folio
+ tag: "slim"
+
+ # Push to the registry
+ - run: docker image push amirpourmand/al-folio:slim
diff --git a/.github/workflows/lighthouse-badger.yml b/.github/workflows/lighthouse-badger.yml
new file mode 100644
index 00000000..addec2d3
--- /dev/null
+++ b/.github/workflows/lighthouse-badger.yml
@@ -0,0 +1,62 @@
+# Lighthouse-Badger-Easy | GitHub Action Workflow
+#
+# Description: Generates, adds & updates manually/automatically Lighthouse badges & reports from one/multiple input URL(s) to the current repository & main branch with minimal settings
+# Author: Sitdisch
+# Source: https://github.com/myactionway/lighthouse-badger-workflows
+# License: MIT
+# Copyright (c) 2021 Sitdisch
+
+name: "Lighthouse Badger"
+
+########################################################################
+# DEFINE YOUR INPUTS AND TRIGGERS IN THE FOLLOWING
+########################################################################
+
+# INPUTS as Secrets (env) for not manually triggered workflows
+env:
+ URLS: https://alshedivat.github.io/al-folio/
+ # If any of the following env is blank, a default value is used instead
+ REPO_BRANCH: "${{ github.repository }} master" # target repository & branch e.g. 'dummy/mytargetrepo main'
+ MOBILE_LIGHTHOUSE_PARAMS: "--only-categories=performance,accessibility,best-practices,seo --throttling.cpuSlowdownMultiplier=2"
+ DESKTOP_LIGHTHOUSE_PARAMS: "--only-categories=performance,accessibility,best-practices,seo --preset=desktop --throttling.cpuSlowdownMultiplier=1"
+
+# TRIGGERS
+on:
+ page_build:
+ # schedule: # Check your schedule here => https://crontab.guru/
+ # - cron: '55 23 * * 0' # e.g. every Sunday at 23:55
+ #
+ # THAT'S IT; YOU'RE DONE;
+ workflow_dispatch:
+
+########################################################################
+# THAT'S IT; YOU DON'T HAVE TO DEFINE ANYTHING IN THE FOLLOWING
+########################################################################
+
+jobs:
+ lighthouse-badger-easy:
+ runs-on: ubuntu-latest
+ timeout-minutes: 8
+ steps:
+ - name: Preparatory Tasks
+ run: |
+ REPOSITORY=`expr "${{ env.REPO_BRANCH }}" : "\([^ ]*\)"`
+ BRANCH=`expr "${{ env.REPO_BRANCH }}" : ".* \([^ ]*\)"`
+ echo "REPOSITORY=$REPOSITORY" >> $GITHUB_ENV
+ echo "BRANCH=$BRANCH" >> $GITHUB_ENV
+ env:
+ REPO_BRANCH: ${{ env.REPO_BRANCH }}
+ - uses: actions/checkout@v4
+ with:
+ repository: ${{ env.REPOSITORY }}
+ token: ${{ secrets.LIGHTHOUSE_BADGER_TOKEN }}
+ ref: ${{ env.BRANCH }}
+ - uses: actions/checkout@v4
+ with:
+ repository: "myactionway/lighthouse-badges"
+ path: temp_lighthouse_badges_nested
+ - uses: myactionway/lighthouse-badger-action@v2.2
+ with:
+ urls: ${{ env.URLS }}
+ mobile_lighthouse_params: ${{ env.MOBILE_LIGHTHOUSE_PARAMS }}
+ desktop_lighthouse_params: ${{ env.DESKTOP_LIGHTHOUSE_PARAMS }}
diff --git a/.github/workflows/prettier-comment-on-pr.yml b/.github/workflows/prettier-comment-on-pr.yml
new file mode 100644
index 00000000..e95075ce
--- /dev/null
+++ b/.github/workflows/prettier-comment-on-pr.yml
@@ -0,0 +1,18 @@
+name: Comment on pull request
+
+on:
+ repository_dispatch:
+ types: [prettier-failed-on-pr]
+
+jobs:
+ comment:
+ # available images: https://github.com/actions/runner-images#available-images
+ runs-on: ubuntu-latest
+ steps:
+ - name: PR comment with html diff ๐ฌ
+ uses: thollander/actions-comment-pull-request@v2
+ with:
+ comment_tag: prettier-failed
+ pr_number: ${{ github.event.client_payload.pr_number }}
+ message: |
+ Failed [prettier code check](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.event.client_payload.run_id }}). Check [this file](${{ github.event.client_payload.artifact_url }}) for more information.
diff --git a/.github/workflows/prettier-html.yml b/.github/workflows/prettier-html.yml
new file mode 100644
index 00000000..3dc4326e
--- /dev/null
+++ b/.github/workflows/prettier-html.yml
@@ -0,0 +1,36 @@
+name: Prettify gh-pages
+
+on:
+ workflow_dispatch:
+
+jobs:
+ format:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout gh-pages branch
+ uses: actions/checkout@v4
+ with:
+ ref: gh-pages
+
+ - name: Find and Remove Tags
+ run: find . -type f -name "*.html" -exec sed -i 's/<\/source>//g' {} +
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+
+ - name: Install Prettier
+ run: npm install -g prettier
+
+ - name: Check for Prettier
+ run: npx prettier --version || echo "Prettier not found"
+
+ - name: Run Prettier on HTML files
+ run: npx prettier --write '**/*.html'
+
+ - name: Commit and push changes
+ run: |
+ git config user.name "github-actions"
+ git config user.email "actions@github.com"
+ git add .
+ git commit -m "Formatted HTML files" || echo "No changes to commit"
+ git push
diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml
new file mode 100644
index 00000000..60446c8d
--- /dev/null
+++ b/.github/workflows/prettier.yml
@@ -0,0 +1,48 @@
+name: Prettier code formatter
+
+on:
+ pull_request:
+ branches:
+ - master
+ - main
+ push:
+ branches:
+ - master
+ - main
+
+jobs:
+ check:
+ # available images: https://github.com/actions/runner-images#available-images
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout ๐๏ธ
+ uses: actions/checkout@v4
+ - name: Setup Node.js โ๏ธ
+ uses: actions/setup-node@v4
+ - name: Install Prettier ๐พ
+ run: npm install --save-dev --save-exact prettier @shopify/prettier-plugin-liquid
+ - name: Prettier Check ๐
+ id: prettier
+ run: npx prettier . --check
+ - name: Create diff ๐
+ # https://docs.github.com/en/actions/learn-github-actions/expressions#failure
+ if: ${{ failure() }}
+ run: |
+ npx prettier . --write
+ git diff -- . ':(exclude)package-lock.json' ':(exclude)package.json' > diff.txt
+ npm install -g diff2html-cli
+ diff2html -i file -s side -F diff.html -- diff.txt
+ - name: Upload html diff โฌ๏ธ
+ id: artifact-upload
+ if: ${{ failure() && steps.prettier.conclusion == 'failure' }}
+ uses: actions/upload-artifact@v4
+ with:
+ name: HTML Diff
+ path: diff.html
+ retention-days: 7
+ - name: Dispatch information to repository ๐ฃ๏ธ
+ if: ${{ failure() && steps.prettier.conclusion == 'failure' && github.event_name == 'pull_request' }}
+ uses: peter-evans/repository-dispatch@v2
+ with:
+ event-type: prettier-failed-on-pr
+ client-payload: '{"pr_number": "${{ github.event.number }}", "artifact_url": "${{ steps.artifact-upload.outputs.artifact-url }}", "run_id": "${{ github.run_id }}"}'
diff --git a/.github/workflows/schedule-posts.txt b/.github/workflows/schedule-posts.txt
new file mode 100644
index 00000000..57728bca
--- /dev/null
+++ b/.github/workflows/schedule-posts.txt
@@ -0,0 +1,39 @@
+name: Publish posts scheduled for today
+
+on:
+ schedule:
+ # Run every day at 23:30 UTC or manually run
+ - cron: "30 23 * * *"
+ workflow_dispatch:
+
+jobs:
+ publish_scheduled:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout main branch
+ uses: actions/checkout@v4
+ with:
+ ref: main
+
+ - name: Get the date for today
+ id: date
+ run: echo "TODAY=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
+
+ - name: Check for scheduled posts and move to posts
+ run: |
+ echo "Today is $TODAY"
+ shopt -s nullglob
+ for file in _scheduled/${TODAY}-*.md; do
+ echo "Found scheduled: $file"
+ mv "$file" "_posts/"
+ echo "Moved $file to _posts/"
+ done
+
+ - name: Commit and push changes
+ run: |
+ git config user.name "github-actions"
+ git config user.email "actions@github.com"
+ git add _posts/
+ git add _scheduled/
+ git commit -m "Posted Scheduled Drafts on $TODAY" || echo "No changes to commit"
+ git push
diff --git a/.github/workflows/update-tocs.yml b/.github/workflows/update-tocs.yml
new file mode 100644
index 00000000..3567ee82
--- /dev/null
+++ b/.github/workflows/update-tocs.yml
@@ -0,0 +1,50 @@
+name: Update TOCs
+# This workflow automatically updates the Table of Contents (TOC) in markdown files
+
+on:
+ push:
+ branches:
+ - main
+ - master
+ paths:
+ - "*.md"
+ workflow_dispatch:
+
+permissions:
+ contents: write
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
+
+ - name: Get changed files
+ id: changed-files
+ uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46
+ with:
+ files: ./*.md
+
+ - name: Updated toc on all markdown changed files
+ env:
+ ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
+ run: |
+ curl https://raw.githubusercontent.com/george-gca/github-markdown-toc/main/gh-md-toc -o gh-md-toc
+ chmod a+x gh-md-toc
+ for file in ${ALL_CHANGED_FILES}; do
+ # Check if the file is a markdown file
+ if [[ "$file" != *.md ]]; then
+ continue
+ fi
+ ./gh-md-toc --indent 2 --insert --no-backup --hide-footer $file
+ done
+ rm gh-md-toc
+
+ - name: Commit changes
+ if: steps.changed-files.outputs.any_changed == 'true'
+ uses: stefanzweifel/git-auto-commit-action@v5.0.1
+ with:
+ commit_message: Auto update markdown TOC
diff --git a/.prettierignore b/.prettierignore
index 00785039..b276dd95 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -2,10 +2,11 @@
**/*.min.css
**/*.min.js
assets/css/main.scss
+assets/js/distillpub/template.v2.js
assets/js/search/*.js
assets/plotly/demo.html
lighthouse_results/**
_posts/2015-10-20-math.md
_sass/font-awesome/*.scss
_sass/tabler-icons/*.scss
-_scripts/search.liquid.js
+_scripts/*
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..c84e9d6e
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,28 @@
+# Contributing to al-folio
+
+Thank you for considering contributing to al-folio!
+
+## Pull Requests
+
+We welcome your pull requests (PRs).
+For minor fixes (e.g., documentation improvements), feel free to submit a PR directly.
+If you would like to implement a new feature or a bug, please make sure you (or someone else) has opened an appropriate issue first; in your PR, please mention the issue it addresses.
+
+Note that since [#2048](https://github.com/alshedivat/al-folio/pull/2048) al-folio uses the [prettier formatter](https://prettier.io/) for its code, meaning all new submitted code must conform to its standard. If you don't have `prettier` installed for your setup and the `prettier` code check fails when submitting a PR, you can check the referred failed action in our repo. In that action there will be an artifact with an HTML diff showing the needed changes.
+
+## Issues
+
+We use GitHub issues to track bugs and feature requests.
+Before submitting an issue, please make sure:
+
+1. You have read [the FAQ section](FAQ.md) of the README and your question is NOT addressed there.
+2. You have done your best to ensure that your issue is NOT a duplicate of one of [the previous issues](https://github.com/alshedivat/al-folio/issues).
+3. Your issue is either a bug (unexpected/undesirable behavior) or a feature request.
+ If it is just a question, please ask it in the [Discussions](https://github.com/alshedivat/al-folio/discussions) forum.
+
+When submitting an issue, please make sure to use the appropriate template.
+
+## License
+
+By contributing to al-folio, you agree that your contributions will be licensed
+under the LICENSE file in the root directory of the source tree.
diff --git a/CUSTOMIZE.md b/CUSTOMIZE.md
index bfda987c..cae173af 100644
--- a/CUSTOMIZE.md
+++ b/CUSTOMIZE.md
@@ -2,6 +2,9 @@
Here we will give you some tips on how to customize the website. One important thing to note is that **ALL** the changes you make should be done on the **main** branch of your repository. The `gh-pages` branch is automatically overwritten every time you make a change to the main branch.
+
+
+
## Project structure
The project is structured as follows, focusing on the main components that you will need to modify:
@@ -13,6 +16,7 @@ The project is structured as follows, focusing on the main components that you w
โย ย โโโ ๐ resume.json: CV in JSON format (https://jsonresume.org/)
โโโ ๐ _bibliography/
โย ย โโโ ๐ papers.bib: bibliography in BibTeX format
+โโโ ๐ _books/: contains the bookshelf pages
โโโ ๐ _config.yml: the configuration file of the template
โโโ ๐ _data/: contains some of the data used in the template
โย ย โโโ ๐ cv.yml: CV in YAML format, used when assets/json/resume.json is not found
@@ -59,10 +63,12 @@ You can create new pages by adding new Markdown files in the [\_pages](_pages/)
## Creating new blog posts
-To create a new blog post, you can add a new Markdown file in the [\_posts](_posts/) directory. The [name of the file must follow](https://jekyllrb.com/docs/posts/#creating-posts) the format `YYYY-MM-DD-title.md`. The easiest way to do this is to copy an existing blog post and modify it. Note that some blog posts have optional fields in the [frontmatter](https://jekyllrb.com/docs/front-matter/) that are used to enable specific behaviors or functions.
+To create a new blog post, you can add a new Markdown file in the [\_posts](_posts/) directory, which is the [default location for posts in Jekyll](https://jekyllrb.com/docs/posts/). The [name of the file must follow](https://jekyllrb.com/docs/posts/#creating-posts) the format `YYYY-MM-DD-title.md`. The easiest way to do this is to copy an existing blog post and modify it. Note that some blog posts have optional fields in the [frontmatter](https://jekyllrb.com/docs/front-matter/) that are used to enable specific behaviors or functions.
If you want to create blog posts that are not ready to be published, but you want to track it with git, you can create a [\_drafts](https://jekyllrb.com/docs/posts/#drafts) directory and store them there.
+Note that `posts` is also a collection, but it is a default collection created automatically by Jekyll. To access the posts, you can use the `site.posts` variable in your templates.
+
## Creating new projects
You can create new projects by adding new Markdown files in the [\_projects](_projects/) directory. The easiest way to do this is to copy an existing project and modify it.
@@ -73,10 +79,14 @@ You can add news in the about page by adding new Markdown files in the [\_news](
## Adding Collections
-This Jekyll theme implements `collections` to let you break up your work into categories. The theme comes with two default collections: `news` and `projects`. Items from the `news` collection are automatically displayed on the home page. Items from the `projects` collection are displayed on a responsive grid on projects page.
+This Jekyll theme implements [collections](https://jekyllrb.com/docs/collections/) to let you break up your work into categories. The theme comes with three default collections: `news`, `projects`, and `books`. Items from the `news` collection are automatically displayed on the home page, while items from the `projects` collection are displayed on a responsive grid on projects page and items from the `books` collection are displayed on its own `bookshelf` page inside `submenus`.
You can easily create your own collections, apps, short stories, courses, or whatever your creative work is. To do this, edit the collections in the [\_config.yml](_config.yml) file, create a corresponding folder, and create a landing page for your collection, similar to [\_pages/projects.md](_pages/projects.md).
+If you wish to create a collection with support for categories and tags, like the blog posts, you just need to add this collection to the `jekyll-archives` section of your [\_config.yml](_config.yml) file. You can check how this is done with the `books` collection. For more information about customizing the archives section or creating your own archives page, check the [jekyll-archives-v2 documentation](https://george-gca.github.io/jekyll-archives-v2/).
+
+To access the collections, you can use the `site.COLLECTION_NAME` variable in your templates.
+
## Adding a new publication
To add publications create a new entry in the [\_bibliography/papers.bib](_bibliography/papers.bib) file. You can find the BibTeX entry of a publication in Google Scholar by clicking on the quotation marks below the publication title, then clicking on "BibTeX", or also in the conference page itself. By default, the publications will be sorted by year and the most recent will be displayed first. You can change this behavior and more in the `Jekyll Scholar` section in [\_config.yml](_config.yml) file.
@@ -116,7 +126,7 @@ If the entry matches one form of the last names and the first names, it will be
url: https://en.wikipedia.org/wiki/Carl_Philipp_Emanuel_Bach
```
-If the entry matches one of the combinations of the last names and the first names, it will be highlighted and linked to the url provided. Note that the keys **MUST BE** lower cased and **MUST NOT** contain accents. This is because the keys are used to match the last names in the BibTeX entries, considering possible variations.
+If the entry matches one of the combinations of the last names and the first names, it will be highlighted and linked to the url provided. Note that the keys **MUST BE** lower cased and **MUST NOT** contain accents. This is because the keys are used to match the last names in the BibTeX entries, considering possible variations (see [related discussion](https://github.com/alshedivat/al-folio/discussions/2213)).
### Buttons (through custom bibtex keywords)
@@ -146,7 +156,7 @@ A variety of beautiful theme colors have been selected for you to choose from. T
## Adding social media information
-You can add your social media links by adding the specified information at the `Social integration` section in the [\_config.yml](_config.yml) file. This information will appear at the bottom of the `About` page.
+You can add your social media links by adding the specified information in the [\_data/socials.yml](_data/socials.yml) file. This information will appear at the bottom of the `About` page and in the search results by default, but this could be changed to appear at the header of the page by setting `enable_navbar_social: true` and doesn't appear in the search by setting `socials_in_search: false`, both in [\_config.yml](_config.yml).
## Adding a newsletter
@@ -156,10 +166,10 @@ Depending on your specified footer behavior, the sign up form either will appear
## Removing content
-Since this template have a lot of content, you may want to remove some of it. The easiest way to achieve this and avoid merge conflicts when updating your code (as [pointed by CheariX ](https://github.com/alshedivat/al-folio/pull/2933#issuecomment-2571271117)) is to add the unwanted files to the `excludes` section in your `_config.yml` file instead of actually deleting them, for example:
+Since this template have a lot of content, you may want to remove some of it. The easiest way to achieve this and avoid merge conflicts when updating your code (as [pointed by CheariX ](https://github.com/alshedivat/al-folio/pull/2933#issuecomment-2571271117)) is to add the unwanted files to the `exclude` section in your `_config.yml` file instead of actually deleting them, for example:
```yml
-excludes:
+exclude:
- _news/announcement_*.md
- _pages/blog.md
- _posts/
@@ -176,17 +186,16 @@ To remove the blog, you have to:
- delete [\_posts](_posts/) directory
- delete blog page [\_pages/blog.md](_pages/blog.md)
- remove reference to blog page in our [\_pages/dropdown.md](_pages/dropdown.md)
-- remove the `Blog` section in the [\_config.yml](_config.yml) file and the related parts, like the `jekyll-archives` and `latest_posts`
+- remove the `latest_posts` part in [\_pages/about.md](_pages/about.md)
+- remove the `Blog` section in the [\_config.yml](_config.yml) file and the related parts, like the `jekyll-archives`
You can also:
- delete [\_includes/latest_posts.liquid](_includes/latest_posts.liquid)
- delete [\_includes/related_posts.liquid](_includes/related_posts.liquid)
-- delete [\_layouts/archive-category.liquid](_layouts/archive-category.liquid)
-- delete [\_layouts/archive-tag.liquid](_layouts/archive-tag.liquid)
-- delete [\_layouts/archive-year.liquid](_layouts/archive-year.liquid)
+- delete [\_layouts/archive.liquid](_layouts/archive.liquid) (unless you have a custom collection that uses it)
- delete [\_plugins/external-posts.rb](_plugins/external-posts.rb)
-- remove the `jekyll-archives` gem from the [Gemfile](Gemfile) and the `plugins` section in [\_config.yml](_config.yml)
+- remove the `jekyll-archives-v2` gem from the [Gemfile](Gemfile) and the `plugins` section in [\_config.yml](_config.yml) (unless you have a custom collection that uses it)
- remove the `classifier-reborn` gem from the [Gemfile](Gemfile)
### Removing the news section
@@ -195,7 +204,7 @@ To remove the news section, you can:
- delete the [\_news](_news/) directory
- delete the file [\_includes/news.liquid](_includes/news.liquid) and the references to it in the [\_pages/about.md](_pages/about.md)
-- remove the `announcements` part in [\_config.yml](_config.yml)
+- remove the `announcements` part in [\_pages/about.md](_pages/about.md)
- remove the news part in the `Collections` section in the [\_config.yml](_config.yml) file
### Removing the projects page
diff --git a/FAQ.md b/FAQ.md
index c3d345dd..8d35f989 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -2,6 +2,7 @@
Here are some frequently asked questions. If you have a different question, please check if it was not already answered in the Q&A section of the [GitHub Discussions](https://github.com/alshedivat/al-folio/discussions/categories/q-a). If not, feel free to ask a new question there.
+
- [Frequently Asked Questions](#frequently-asked-questions)
- [After I create a new repository from this template and setup the repo, I get a deployment error. Isn't the website supposed to correctly deploy automatically?](#after-i-create-a-new-repository-from-this-template-and-setup-the-repo-i-get-a-deployment-error-isnt-the-website-supposed-to-correctly-deploy-automatically)
- [I am using a custom domain (e.g., `foo.com`). My custom domain becomes blank in the repository settings after each deployment. How do I fix that?](#i-am-using-a-custom-domain-eg-foocom-my-custom-domain-becomes-blank-in-the-repository-settings-after-each-deployment-how-do-i-fix-that)
@@ -19,28 +20,21 @@ Here are some frequently asked questions. If you have a different question, plea
- [How can I update Tabler Icons version on the template](#how-can-i-update-tabler-icons-version-on-the-template)
- [What do all these GitHub actions/workflows mean?](#what-do-all-these-github-actionsworkflows-mean)
- [How can I use Google Search Console ID on the template?](#how-can-i-use-google-search-console-id-on-the-template)
+
----
-
-### After I create a new repository from this template and setup the repo, I get a deployment error. Isn't the website supposed to correctly deploy automatically?
+## After I create a new repository from this template and setup the repo, I get a deployment error. Isn't the website supposed to correctly deploy automatically?
Yes, if you are using release `v0.3.5` or later, the website will automatically and correctly re-deploy right after your first commit. Please make some changes (e.g., change your website info in `_config.yml`), commit, and push. Make sure to follow [deployment instructions](https://github.com/alshedivat/al-folio#deployment). (Relevant issue: [209](https://github.com/alshedivat/al-folio/issues/209#issuecomment-798849211).)
----
-
-### I am using a custom domain (e.g., `foo.com`). My custom domain becomes blank in the repository settings after each deployment. How do I fix that?
+## I am using a custom domain (e.g., `foo.com`). My custom domain becomes blank in the repository settings after each deployment. How do I fix that?
You need to add `CNAME` file to the `main` or `source` branch of your repository. The file should contain your custom domain name. (Relevant issue: [130](https://github.com/alshedivat/al-folio/issues/130).)
----
-
-### My webpage works locally. But after deploying, it fails to build and throws `Unknown tag 'toc'`. How do I fix that?
+## My webpage works locally. But after deploying, it fails to build and throws `Unknown tag 'toc'`. How do I fix that?
Make sure you followed through the [deployment instructions](#deployment) in the previous section. You should have set the deployment branch to `gh-pages`. (Related issue: [1438](https://github.com/alshedivat/al-folio/issues/1438).)
----
-
-### My webpage works locally. But after deploying, it is not displayed correctly (CSS and JS are not loaded properly). How do I fix that?
+## My webpage works locally. But after deploying, it is not displayed correctly (CSS and JS are not loaded properly). How do I fix that?
If the website does not load the theme, the layout looks weird, and all links are broken, being the main page displayed this way:
@@ -52,33 +46,23 @@ make sure to correctly specify the `url` and `baseurl` paths in `_config.yml`. S
- clean your browser history
- simply try it in a private session, here's how to do it in [Chrome](https://support.google.com/chrome/answer/95464) and [Firefox](https://support.mozilla.org/en-US/kb/private-browsing-use-firefox-without-history)
----
-
-### Atom feed doesn't work. Why?
+## Atom feed doesn't work. Why?
Make sure to correctly specify the `url` and `baseurl` paths in `_config.yml`. RSS Feed plugin works with these correctly set up fields: `title`, `url`, `description` and `author`. Make sure to fill them in an appropriate way and try again.
----
-
-### My site doesn't work when I enable `related_blog_posts`. Why?
+## My site doesn't work when I enable `related_blog_posts`. Why?
This is probably due to the [classifier reborn](https://github.com/jekyll/classifier-reborn) plugin, which is used to calculate related posts. If the error states `Liquid Exception: Zero vectors can not be normalized...` or `sqrt': Numerical argument is out of domain - "sqrt"`, it means that it could not calculate related posts for a specific post. This is usually caused by [empty or minimal blog posts](https://github.com/jekyll/classifier-reborn/issues/64) without meaningful words (i.e. only [stop words](https://en.wikipedia.org/wiki/Stop_words)) or even [specific characters](https://github.com/jekyll/classifier-reborn/issues/194) you used in your posts. Also, the calculus for similar posts are made for every `post`, which means every page that uses `layout: post`, including the announcements. To change this behavior, simply add `related_posts: false` to the front matter of the page you don't want to display related posts on. Another solution is to disable the lsi (latent semantic indexing) entirely by setting the `lsi` flag to `false` in `_config.yml`. Related issue: [#1828](https://github.com/alshedivat/al-folio/issues/1828).
----
-
-### When trying to deploy, it's asking for github login credentials, which github disabled password authentication and it exits with an error. How to fix?
+## When trying to deploy, it's asking for github login credentials, which github disabled password authentication and it exits with an error. How to fix?
Open .git/config file using your preferred editor. Change the `https` portion of the `url` variable to `ssh`. Try deploying again.
----
-
-### When I manually run the [Lighthouse Badger](https://github.com/alshedivat/al-folio/actions/workflows/lighthouse-badger.yml) workflow, it fails with `Error: Input required and not supplied: token`. How do I fix that?
+## When I manually run the Lighthouse Badger workflow, it fails with `Error: Input required and not supplied: token`. How do I fix that?
You need to [create a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) and [add it as a secret](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-encrypted-secrets-for-a-repository) named `LIGHTHOUSE_BADGER_TOKEN` to your repository. For more information, check [lighthouse-badger documentation](https://github.com/MyActionWay/lighthouse-badger-workflows#lighthouse-badger-easyyml) on how to do this.
----
-
-### My code runs fine locally, but when I create a commit and submit it, it fails with `prettier code formatter workflow run failed for main branch`. How do I fix that?
+## My code runs fine locally, but when I create a commit and submit it, it fails with `prettier code formatter workflow run failed for main branch`. How do I fix that?
We implemented support for [Prettier code formatting](https://prettier.io/) in [#2048](https://github.com/alshedivat/al-folio/pull/2048). It basically ensures that your code is [well formatted](https://prettier.io/docs/en/). If you want to ensure your code is compliant with `Prettier`, you have a few options:
@@ -88,9 +72,7 @@ We implemented support for [Prettier code formatting](https://prettier.io/) in [
You can also disable it for your repo. For this, just delete the file [.github/workflows/prettier.yml](https://github.com/alshedivat/al-folio/blob/main/.github/workflows/prettier.yml).
----
-
-### After I update my site with some new content, even a small change, the GitHub action throws an error or displays a warning. What happened?
+## After I update my site with some new content, even a small change, the GitHub action throws an error or displays a warning. What happened?
Probably your GitHub workflow is throwing an error like this:
@@ -111,33 +93,23 @@ If that's the case, you are using deprecated libraries/commands. This happens be
Note that libraries tend to be deprecated and support for them dropped as they are no longer maintained, and keep using them involves security breaches. Also, some of these deprecations are enforced, for example, by GitHub itself, so there's so much we can do. We have also added tons of new functionality, as well as tidying things up and improving the overall speed and structure, so you could also benefit from these improvements.
----
-
-### I am trying to deploy my site, but it fails with `Could not find gem 'jekyll-diagrams' in locally installed gems`. How do I fix that?
+## I am trying to deploy my site, but it fails with `Could not find gem 'jekyll-diagrams' in locally installed gems`. How do I fix that?
`jekyll-diagrams` support was dropped in [#1992](https://github.com/alshedivat/al-folio/pull/1992) in favor of using `mermaid.js` directly. Simply [update your code](INSTALL.md#upgrading-from-a-previous-version) to get the latest changes.
----
-
-### How can I update Academicons version on the template
+## How can I update Academicons version on the template
To update the Academicons version, you need to download the latest release from the [Academicons website](https://jpswalsh.github.io/academicons/). After downloading, extract the zip file and copy the files `academicons.ttf` and `academicons.woff` from the `fonts/` directory to `assets/fonts/` and the file `academicons.min.css` from the `css/` directory to `assets/css/`.
----
-
-### How can I update Font Awesome version on the template
+## How can I update Font Awesome version on the template
To update the Font Awesome version, you need to download the latest release "for the web" from the [Font Awesome website](https://fontawesome.com/download). After downloading, extract the zip file and copy the `scss/` directory content to `_sass/font-awesome/` and the `webfonts/` content to `assets/webfonts/`.
----
-
-### How can I update Tabler Icons version on the template
+## How can I update Tabler Icons version on the template
To update the Tabler Icons version, you need to download the latest release from the [Tabler Icons website](https://tabler.io/icons). After downloading, extract the zip file and copy the files `tabler-icons-filled.scss`, `tabler-icons-outline.scss`, and `tabler-icons.scss` from the `webfont/` directory to `_sass/tabler-icons/`, and all the files from `webfont/fonts/` to `assets/fonts/`.
----
-
-### What do all these GitHub actions/workflows mean?
+## What do all these GitHub actions/workflows mean?
GitHub actions are a way to automate tasks in the repository. They are defined in `.github/workflows/` directory. Each file in this directory is a workflow. Workflows are made up of one or more jobs, and each job runs on a virtual machine hosted by GitHub. You can see the status of the workflows in the `Actions` tab of your repository. For more information, check the [GitHub Actions documentation](https://docs.github.com/en/actions).
@@ -154,9 +126,7 @@ Currently we have the following workflows:
- `prettier-comment-on-pr.yml`: not working. For now, this action is disabled. It was supposed to run prettier on the PRs and comment on them with the changes needed. For more information, check [issue 2115](https://github.com/alshedivat/al-folio/issues/2115)
- `prettier.yml`: runs [prettier](https://prettier.io/) on the code to ensure it is well formatted. For more information, check our [FAQ question about it](https://github.com/alshedivat/al-folio/blob/main/FAQ.md#my-code-runs-fine-locally-but-when-i-create-a-commit-and-submit-it-it-fails-with-prettier-code-formatter-workflow-run-failed-for-main-branch-how-do-i-fix-that)
----
-
-### How can I use Google Search Console ID on the template?
+## How can I use Google Search Console ID on the template?
In the configuration file `_config.yml` the tag `google-site-verification` should be updated to use this functionality. Here is how you can proceed,
diff --git a/Gemfile b/Gemfile
index 74531b01..6ec1991b 100644
--- a/Gemfile
+++ b/Gemfile
@@ -2,9 +2,6 @@ source 'https://rubygems.org'
gem 'jekyll'
-#Encoding.default_external = Encoding::UTF_8
-#Encoding.default_internal = Encoding::UTF_8
-
# Core plugins that directly affect site building
group :jekyll_plugins do
gem 'jekyll-email-protect'
@@ -32,7 +29,7 @@ group :other_plugins do
gem 'httparty'
gem 'observer' # used by jekyll-scholar
gem 'ostruct' # used by jekyll-twitter-plugin
- gem 'terser' # used by jekyll-terser
+ # gem 'terser' # used by jekyll-terser
# gem 'unicode_utils' -- should be already installed by jekyll
# gem 'webrick' -- should be already installed by jekyll
end
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 00000000..d1bfe2ba
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,316 @@
+GIT
+ remote: https://github.com/RobertoJBeltran/jekyll-terser.git
+ revision: 1085bf66d692799af09fe39f8162a1e6e42a3cc4
+ specs:
+ jekyll-terser (0.2.3)
+ jekyll (>= 0.10.0)
+ terser (>= 1.0.0)
+
+GEM
+ remote: https://rubygems.org/
+ specs:
+ activesupport (8.0.2)
+ base64
+ benchmark (>= 0.3)
+ bigdecimal
+ concurrent-ruby (~> 1.0, >= 1.3.1)
+ connection_pool (>= 2.2.5)
+ drb
+ i18n (>= 1.6, < 2)
+ logger (>= 1.4.2)
+ minitest (>= 5.1)
+ securerandom (>= 0.3)
+ tzinfo (~> 2.0, >= 2.0.5)
+ uri (>= 0.13.1)
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ base64 (0.2.0)
+ benchmark (0.4.0)
+ bibtex-ruby (6.1.0)
+ latex-decode (~> 0.0)
+ racc (~> 1.7)
+ bigdecimal (3.1.9)
+ citeproc (1.1.0)
+ date
+ forwardable
+ json
+ namae (~> 1.0)
+ observer (< 1.0)
+ open-uri (< 1.0)
+ citeproc-ruby (2.1.1)
+ citeproc (~> 1.0, >= 1.0.9)
+ csl (~> 2.0)
+ observer (< 1.0)
+ classifier-reborn (2.3.0)
+ fast-stemmer (~> 1.0)
+ matrix (~> 0.4)
+ colorator (1.1.0)
+ concurrent-ruby (1.3.5)
+ connection_pool (2.5.3)
+ crass (1.0.6)
+ csl (2.1.0)
+ forwardable (~> 1.3)
+ namae (~> 1.2)
+ open-uri (< 1.0)
+ rexml (~> 3.0)
+ set (~> 1.1)
+ singleton (< 1.0)
+ time (< 1.0)
+ csl-styles (2.0.1)
+ csl (~> 2.0)
+ css_parser (1.21.1)
+ addressable
+ cssminify2 (2.0.1)
+ csv (3.3.4)
+ date (3.4.1)
+ deep_merge (1.2.2)
+ drb (2.2.3)
+ em-websocket (0.5.3)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0)
+ eventmachine (1.2.7)
+ execjs (2.10.0)
+ fast-stemmer (1.0.2)
+ feedjira (3.2.5)
+ loofah (>= 2.3.1, < 3)
+ sax-machine (>= 1.0, < 2)
+ ffi (1.17.2-aarch64-linux-gnu)
+ ffi (1.17.2-aarch64-linux-musl)
+ ffi (1.17.2-arm-linux-gnu)
+ ffi (1.17.2-arm-linux-musl)
+ ffi (1.17.2-arm64-darwin)
+ ffi (1.17.2-x86_64-darwin)
+ ffi (1.17.2-x86_64-linux-gnu)
+ ffi (1.17.2-x86_64-linux-musl)
+ forwardable (1.3.3)
+ forwardable-extended (2.6.0)
+ gemoji (4.1.0)
+ google-protobuf (4.31.0)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.0-aarch64-linux-gnu)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.0-aarch64-linux-musl)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.0-arm64-darwin)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.0-x86_64-darwin)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.0-x86_64-linux-gnu)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.0-x86_64-linux-musl)
+ bigdecimal
+ rake (>= 13)
+ html-pipeline (2.14.3)
+ activesupport (>= 2)
+ nokogiri (>= 1.4)
+ htmlcompressor (0.4.0)
+ http_parser.rb (0.8.0)
+ httparty (0.23.1)
+ csv
+ mini_mime (>= 1.0.0)
+ multi_xml (>= 0.5.2)
+ i18n (1.14.7)
+ concurrent-ruby (~> 1.0)
+ jekyll (4.4.1)
+ addressable (~> 2.4)
+ base64 (~> 0.2)
+ colorator (~> 1.0)
+ csv (~> 3.0)
+ em-websocket (~> 0.5)
+ i18n (~> 1.0)
+ jekyll-sass-converter (>= 2.0, < 4.0)
+ jekyll-watch (~> 2.0)
+ json (~> 2.6)
+ kramdown (~> 2.3, >= 2.3.1)
+ kramdown-parser-gfm (~> 1.0)
+ liquid (~> 4.0)
+ mercenary (~> 0.3, >= 0.3.6)
+ pathutil (~> 0.9)
+ rouge (>= 3.0, < 5.0)
+ safe_yaml (~> 1.0)
+ terminal-table (>= 1.8, < 4.0)
+ webrick (~> 1.7)
+ jekyll-archives-v2 (0.0.6)
+ activesupport
+ jekyll (>= 3.6, < 5.0)
+ jekyll-email-protect (1.1.0)
+ jekyll-feed (0.17.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-get-json (1.0.0)
+ deep_merge (~> 1.2)
+ jekyll (>= 3.0)
+ jekyll-imagemagick (1.4.0)
+ jekyll (>= 3.4)
+ jekyll-jupyter-notebook (0.0.6)
+ jekyll
+ jekyll-link-attributes (1.0.1)
+ jekyll-minifier (0.1.10)
+ cssminify2 (~> 2.0)
+ htmlcompressor (~> 0.4)
+ jekyll (>= 3.5)
+ json-minify (~> 0.0.3)
+ uglifier (~> 4.1)
+ jekyll-paginate-v2 (3.0.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-regex-replace (1.1.0)
+ jekyll-sass-converter (3.1.0)
+ sass-embedded (~> 1.75)
+ jekyll-scholar (7.2.0)
+ bibtex-ruby (~> 6.0)
+ citeproc-ruby (~> 2.0)
+ csl-styles (~> 2.0)
+ jekyll (~> 4.0)
+ jekyll-sitemap (1.4.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-tabs (1.2.1)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-toc (0.19.0)
+ jekyll (>= 3.9)
+ nokogiri (~> 1.12)
+ jekyll-twitter-plugin (2.1.0)
+ jekyll-watch (2.2.1)
+ listen (~> 3.0)
+ jemoji (0.13.0)
+ gemoji (>= 3, < 5)
+ html-pipeline (~> 2.2)
+ jekyll (>= 3.0, < 5.0)
+ json (2.12.2)
+ json-minify (0.0.3)
+ json (> 0)
+ kramdown (2.5.1)
+ rexml (>= 3.3.9)
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ latex-decode (0.4.0)
+ liquid (4.0.4)
+ listen (3.9.0)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ logger (1.7.0)
+ loofah (2.24.1)
+ crass (~> 1.0.2)
+ nokogiri (>= 1.12.0)
+ matrix (0.4.2)
+ mercenary (0.4.0)
+ mini_mime (1.1.5)
+ minitest (5.25.5)
+ multi_xml (0.7.2)
+ bigdecimal (~> 3.1)
+ namae (1.2.0)
+ racc (~> 1.7)
+ nokogiri (1.18.8-aarch64-linux-gnu)
+ racc (~> 1.4)
+ nokogiri (1.18.8-aarch64-linux-musl)
+ racc (~> 1.4)
+ nokogiri (1.18.8-arm-linux-gnu)
+ racc (~> 1.4)
+ nokogiri (1.18.8-arm-linux-musl)
+ racc (~> 1.4)
+ nokogiri (1.18.8-arm64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.18.8-x86_64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.18.8-x86_64-linux-gnu)
+ racc (~> 1.4)
+ nokogiri (1.18.8-x86_64-linux-musl)
+ racc (~> 1.4)
+ observer (0.1.2)
+ open-uri (0.5.0)
+ stringio
+ time
+ uri
+ ostruct (0.6.1)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (6.0.2)
+ racc (1.8.1)
+ rake (13.2.1)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.11.1)
+ ffi (~> 1.0)
+ rexml (3.4.1)
+ rouge (4.5.2)
+ safe_yaml (1.0.5)
+ sass-embedded (1.89.0-aarch64-linux-gnu)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.0-aarch64-linux-musl)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.0-arm-linux-gnueabihf)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.0-arm-linux-musleabihf)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.0-arm64-darwin)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.0-x86_64-darwin)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.0-x86_64-linux-gnu)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.0-x86_64-linux-musl)
+ google-protobuf (~> 4.31)
+ sax-machine (1.3.2)
+ securerandom (0.4.1)
+ set (1.1.2)
+ singleton (0.3.0)
+ stringio (3.1.7)
+ terminal-table (3.0.2)
+ unicode-display_width (>= 1.1.1, < 3)
+ terser (1.2.5)
+ execjs (>= 0.3.0, < 3)
+ time (0.4.1)
+ date
+ tzinfo (2.0.6)
+ concurrent-ruby (~> 1.0)
+ uglifier (4.2.1)
+ execjs (>= 0.3.0, < 3)
+ unicode-display_width (2.6.0)
+ uri (1.0.3)
+ webrick (1.9.1)
+
+PLATFORMS
+ aarch64-linux
+ aarch64-linux-gnu
+ aarch64-linux-musl
+ arm-linux-gnu
+ arm-linux-gnueabihf
+ arm-linux-musl
+ arm-linux-musleabihf
+ arm64-darwin
+ x86_64-darwin
+ x86_64-linux
+ x86_64-linux-gnu
+ x86_64-linux-musl
+
+DEPENDENCIES
+ classifier-reborn
+ css_parser
+ feedjira
+ httparty
+ jekyll
+ jekyll-archives-v2
+ jekyll-email-protect
+ jekyll-feed
+ jekyll-get-json
+ jekyll-imagemagick
+ jekyll-jupyter-notebook
+ jekyll-link-attributes
+ jekyll-minifier
+ jekyll-paginate-v2
+ jekyll-regex-replace
+ jekyll-scholar
+ jekyll-sitemap
+ jekyll-tabs
+ jekyll-terser!
+ jekyll-toc
+ jekyll-twitter-plugin
+ jemoji
+ observer
+ ostruct
+
+BUNDLED WITH
+ 2.6.9
diff --git a/INSTALL.md b/INSTALL.md
index e4279273..20614935 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,11 +1,12 @@
-# Table of Contents
+# Installing and Deploying
-- [Table of Contents](#table-of-contents)
+
- [Installing and Deploying](#installing-and-deploying)
- [Recommended Approach](#recommended-approach)
- [Local setup on Windows](#local-setup-on-windows)
- [Local setup using Docker (Recommended)](#local-setup-using-docker-recommended)
- [Build your own docker image](#build-your-own-docker-image)
+ - [Have Bugs on Docker Image?](#have-bugs-on-docker-image)
- [Local Setup with Development Containers](#local-setup-with-development-containers)
- [Local Setup (Legacy, no longer supported)](#local-setup-legacy-no-longer-supported)
- [Deployment](#deployment)
@@ -13,18 +14,18 @@
- [For project pages](#for-project-pages)
- [Enabling automatic deployment](#enabling-automatic-deployment)
- [Manual deployment to GitHub Pages](#manual-deployment-to-github-pages)
+ - [Deploy on Netlify](#deploy-on-netlify)
- [Deployment to another hosting server (non GitHub Pages)](#deployment-to-another-hosting-server-non-github-pages)
- [Deployment to a separate repository (advanced users only)](#deployment-to-a-separate-repository-advanced-users-only)
- [Upgrading from a previous version](#upgrading-from-a-previous-version)
-
-# Installing and Deploying
+
## Recommended Approach
The recommended approach for using **al-folio** is to first create your own site using the template with as few changes as possible, and only when it is up and running customize it however you like. This way it is easier to pinpoint what causes a potential issue in case of a bug. The minimum steps required to create your own site are ([video tutorial here](assets/video/tutorial_al_folio.mp4)):
1. Create a new repository using this template. For this, click on [Use this template -> Create a new repository](https://github.com/new?template_name=al-folio&template_owner=alshedivat) above the file list. If you plan to upload your site to `.github.io`, note that the name of your repository :warning: **MUST BE** :warning: `.github.io` or `.github.io`, as stated in the [GitHub pages docs](https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites).
-2. In this new repository, go to `Settings -> Actions -> General -> Workflow permissions` and give `Read and write permissions` to GitHub Actions.
+2. In this new repository, go to [Settings -> Actions -> General -> Workflow permissions](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-default-github_token-permissions) and give `Read and write permissions` to GitHub Actions.
3. Open file `_config.yml`, set `url` to `https://.github.io` and leave `baseurl` **empty** (do NOT delete it), as `baseurl:`.
4. Wait until the GitHub action with subtitle `Deploy site` finishes (check your repository **Actions** tab), which takes ~4 min. Now, in addition to the `main` branch, your repository has a newly built `gh-pages` branch.
5. Finally, in the repository page go to `Settings -> Pages -> Build and deployment`, make sure that `Source` is set to `Deploy from a branch` and set the branch to `gh-pages` (NOT to main).
@@ -75,6 +76,36 @@ $ docker compose up --build
If you want to use a specific docker version, you can do so by changing `latest` tag to `your_version` in `docker-compose.yaml`. For example, you might have created your website on `v0.10.0` and you want to stick with that.
+### Have Bugs on Docker Image?
+
+Sometimes, there might be some bugs in the current docker image. It might be version mismatch or anything. If you want to debug and easily solve the problem for yourself you can do the following steps:
+
+```
+docker compose up -d
+docker compose logs
+```
+
+Then you can see the bug! You can enter the container via this command:
+
+```
+docker compose exec -it jekyll /bin/bash
+```
+
+Then you can run the script:
+
+```
+./bin/entry_point.sh
+```
+
+You might see problems for package dependecy or something which is not available. You can fix it now by using
+
+```
+bundle install
+./bin/entry_point.sh
+```
+
+Most likely, this will solve the problem but it shouldn't really happen. So, please open a bug report for us.
+
## Local Setup with Development Containers
`al-folio` supports [Development Containers](https://containers.dev/supporting).
@@ -210,7 +241,7 @@ If you installed **al-folio** as described above, you can manually update your c
# Assuming the current directory is
$ git remote add upstream https://github.com/alshedivat/al-folio.git
$ git fetch upstream
-$ git rebase v0.13.4
+$ git rebase v0.14.6
```
If you have extensively customized a previous version, it might be trickier to upgrade.
diff --git a/LICENSE b/LICENSE
index f2b86815..368a8aac 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2022 Maruan Al-Shedivat.
+Copyright (c) 2025 Maruan Al-Shedivat.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff --git a/_bibliography/papers.bib b/_bibliography/papers.bib
index 168c3ea5..2e988361 100644
--- a/_bibliography/papers.bib
+++ b/_bibliography/papers.bib
@@ -1083,4 +1083,4 @@ @article{Lack2005
url = {https://ascpt.onlinelibrary.wiley.com/doi/abs/10.1016/j.clpt.2004.12.268},
html = {https://ascpt.onlinelibrary.wiley.com/doi/abs/10.1016/j.clpt.2004.12.268},
year = {2005}
-}
\ No newline at end of file
+}
diff --git a/_config.yml b/_config.yml
index dc99ee23..48b30f3e 100644
--- a/_config.yml
+++ b/_config.yml
@@ -52,6 +52,7 @@ navbar_fixed: true
footer_fixed: true
search_enabled: false
socials_in_search: true
+posts_in_search: true
bib_search: false
# Dimensions
@@ -63,10 +64,10 @@ max_width: 930px
# Open Graph & Schema.org
# -----------------------------------------------------------------------------
# Display links to the page with a preview object on social media.
+# see https://schema.org/docs/faq.html for more information
serve_og_meta: false # Include Open Graph meta tags in the HTML head
serve_schema_org: false # Include Schema.org in the HTML head
og_image: # The site-wide (default for all links) Open Graph preview image
-
# -----------------------------------------------------------------------------
# Analytics and search engine verification
@@ -84,6 +85,8 @@ bing_site_verification: # out your bing-site-verification ID (Bing Webmaster)
# -----------------------------------------------------------------------------
collections:
+ posts:
+ output: false
news:
defaults:
layout: post
@@ -96,11 +99,6 @@ collections:
# output: true
# permalink: /projects/:path/
-announcements:
- enabled: true
- scrollable: false # adds a vertical scroll bar if there are more than 3 news items
- limit: # leave blank to include all the news in the `_news` folder
-
# -----------------------------------------------------------------------------
# Jekyll settings
# -----------------------------------------------------------------------------
@@ -111,7 +109,7 @@ highlighter: rouge
kramdown:
input: GFM
syntax_highlighter_opts:
- css_class: 'highlight'
+ css_class: "highlight"
span:
line_numbers: false
block:
@@ -163,7 +161,7 @@ plugins:
- jekyll-twitter-plugin
- jemoji
-# Sitemap/layout settings
+# Sitemap settings
defaults:
- scope:
path: "assets"
@@ -178,13 +176,16 @@ defaults:
values:
layout: post
+sass:
+ style: compressed
+
# -----------------------------------------------------------------------------
# Jekyll Minifier
# -----------------------------------------------------------------------------
jekyll-minifier:
compress_javascript: false # set to false since we are using terser as the js minifier
- # exclude: ["robots.txt", "assets/js/search/*.js"]
+ exclude: ["robots.txt", "assets/js/search/*.js"]
# -----------------------------------------------------------------------------
# Terser
@@ -194,24 +195,6 @@ terser:
compress:
drop_console: true
-# -----------------------------------------------------------------------------
-# Jekyll Archives
-# -----------------------------------------------------------------------------
-
-jekyll-archives:
- enabled: [year, tags, categories] # enables year, tag and category archives (remove if you need to disable one of them).
- layouts:
- year: archive-year
- tag: archive-tag
- category: archive-category
- permalinks:
- year: '/blog/:year/'
- tag: '/blog/tag/:name/'
- category: '/blog/category/:name/'
-
-display_tags: ["formatting", "images", "links", "math", "code", "blockquotes"] # these tags will be displayed on the front page of your blog
-display_categories: ["external-services"] # these categories will be displayed on the front page of your blog
-
# -----------------------------------------------------------------------------
# Jekyll Scholar
# -----------------------------------------------------------------------------
@@ -219,7 +202,7 @@ display_categories: ["external-services"] # these categories will be displayed o
scholar:
last_name: [Lack]
first_name: [Nathan, N., N. A., Nathan A., Nathan A, N.A.]
- author_url: https://lacklab.ku.edu.tr/team/nathan/
+ author_url: https://lacklab.org/team/nathan/
style: apa
locale: en
@@ -251,11 +234,35 @@ enable_publication_badges:
inspirehep: false # Inspire HEP badge (https://help.inspirehep.net/knowledge-base/citation-metrics/)
# Filter out certain bibtex entry keywords used internally from the bib output
-filtered_bibtex_keywords: [abbr, abstract, arxiv, bibtex_show, html, pdf, selected, supp, blog, code, poster, slides, website, preview, altmetric]
+filtered_bibtex_keywords:
+ [
+ abbr,
+ abstract,
+ additional_info,
+ altmetric,
+ annotation,
+ arxiv,
+ award,
+ award_name,
+ bibtex_show,
+ blog,
+ code,
+ google_scholar_id,
+ html,
+ inspirehep_id,
+ pdf,
+ poster,
+ preview,
+ selected,
+ slides,
+ supp,
+ video,
+ website,
+ ]
# Maximum number of authors to be shown for each publication (more authors are visible on click)
-max_author_limit: # leave blank to always show all authors
-more_authors_animation_delay: 10 # more authors are revealed on click using animation; smaller delay means faster animation
+max_author_limit: # leave blank to always show all authors
+more_authors_animation_delay: 10 # more authors are revealed on click using animation; smaller delay means faster animation
# Enables publication thumbnails. If disabled, none of the publications will display thumbnails, even if specified in the bib entry.
enable_publication_thumbnails: false
@@ -271,7 +278,6 @@ external_links:
target: _blank
exclude:
-
# -----------------------------------------------------------------------------
# Responsive WebP Images
# -----------------------------------------------------------------------------
@@ -478,6 +484,12 @@ third_party_libraries:
url:
js: "https://cdn.jsdelivr.net/npm/photoswipe@{{version}}/dist/photoswipe-lightbox.esm.min.js"
version: "5.4.4"
+ plotly:
+ integrity:
+ js: "sha256-oy6Be7Eh6eiQFs5M7oXuPxxm9qbJXEtTpfSI93dW16Q="
+ url:
+ js: "https://cdn.jsdelivr.net/npm/plotly.js@{{version}}/dist/plotly.min.js"
+ version: "3.0.1"
polyfill:
url:
js: "https://cdnjs.cloudflare.com/polyfill/v{{version}}/polyfill.min.js?features=es6"
@@ -546,7 +558,6 @@ third_party_libraries:
js: "https://cdn.jsdelivr.net/npm/venobox@{{version}}/dist/venobox.min.js"
version: "2.1.8"
-
# -----------------------------------------------------------------------------
# Get external JSON data
# -----------------------------------------------------------------------------
diff --git a/_data/coauthors.yml b/_data/coauthors.yml
index 5f4550db..b42e383c 100644
--- a/_data/coauthors.yml
+++ b/_data/coauthors.yml
@@ -80,4 +80,4 @@
"yu":
- firstname: ["Ivan", "Pak Lok Ivan", "Ivan Pak Lok", "I.P.L.", "Ivan P. L."]
- url: \#
\ No newline at end of file
+ url: \#
diff --git a/_data/cv.yml b/_data/cv.yml
index 8418e2b9..d37cfee3 100644
--- a/_data/cv.yml
+++ b/_data/cv.yml
@@ -59,4 +59,4 @@
- VCHRI Rising Star Scientific Award
- year: 2010
items:
- - Lorne Sullivan - Best Basic Science Research Award
\ No newline at end of file
+ - Lorne Sullivan - Best Basic Science Research Award
diff --git a/_data/repositories.yml b/_data/repositories.yml
new file mode 100644
index 00000000..c2d7269e
--- /dev/null
+++ b/_data/repositories.yml
@@ -0,0 +1,14 @@
+github_users:
+ - torvalds
+ - alshedivat
+
+repo_description_lines_max: 2
+
+github_repos:
+ - alshedivat/al-folio
+ - jekyll/jekyll
+ - twbs/bootstrap
+ - jquery/jquery
+ - FortAwesome/Font-Awesome
+ - mathjax/MathJax
+ - jpswalsh/academicons
diff --git a/_data/venues.yml b/_data/venues.yml
new file mode 100644
index 00000000..41963201
--- /dev/null
+++ b/_data/venues.yml
@@ -0,0 +1,9 @@
+"AJP":
+ url: https://aapt.scitation.org/journal/ajp
+ color: "#00369f"
+
+"PhysRev":
+ url: https://journals.aps.org/
+
+"Vision":
+ color: "#009f36"
diff --git a/_includes/distill_scripts.liquid b/_includes/distill_scripts.liquid
index 82bf5936..12d365df 100644
--- a/_includes/distill_scripts.liquid
+++ b/_includes/distill_scripts.liquid
@@ -81,6 +81,17 @@
{% endif %}
+{% if page.chart and page.chart.plotly %}
+
+
+
+{% endif %}
+
{% if page.chart and page.chart.vega_lite %}
-
+
{% endif %}
{% if site.enable_cronitor_analytics %}
-
+
{% endif %}
{% if site.enable_pirsch_analytics %}
{% endif %}
{% if site.enable_openpanel_analytics %}
-
+
{% endif %}
@@ -229,7 +240,7 @@
>
{% endif %}
{% if page.images.photoswipe %}
-
+
{% endif %}
{% if page.images.slider %}
{% endif %}
-
-{% if site.newsletter.enabled %}
-
-{% endif %}
diff --git a/_includes/figure.liquid b/_includes/figure.liquid
index 6cda2cd8..5bf96bdf 100644
--- a/_includes/figure.liquid
+++ b/_includes/figure.liquid
@@ -14,20 +14,22 @@
https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images for info on defining 'sizes' for responsive images
-->
{% if site.imagemagick.enabled %}
-
+ {% unless include.avoid_scaling %}
+
+ {% endunless %}
{% endif %}
Impressum.
+ {% endif %}
+ {% if site.last_updated %}
+ Last updated: {{ 'now' | date: '%B %d, %Y' }}.
+ {% endif %}
+ {% endcapture %}
+
{% if site.footer_fixed %}
{% else %}
@@ -21,17 +25,8 @@
{% endif %}