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. If not, feel free to ask a new question there.
- 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?
- 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?
- 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 is not displayed correctly (CSS and JS are not loaded properly). How do I fix that?
- Atom feed doesn't work. Why?
- My site doesn't work when I enable related_blog_posts. Why?
- 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 I manually run the Lighthouse Badger workflow, it fails with Error: Input required and not supplied: token. 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?
- 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?
- How do I upgrade from al-folio v1.0 to v1.1+ with minimal friction?
- Do I need to fork every v1 gem to customize layouts and Liquid files?
- How do I know when a local override is stale after a plugin update?
- Why does v1.x starter not have npm run build:css anymore?
- Jupyter posts are enabled, but my build says jupyter-nbconvert is missing. What are my options?
- How do I handle legacy Bootstrap-marked pages on Tailwind-first v1.x?
- How does sidebar table of contents work in v1.x?
- Why does pretty_table: true still work when Bootstrap compatibility is disabled?
- Why does Lightbox2 work without jQuery in v1.x?
- 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?
- How can I update icon library versions on the template
- How should I name plugins in v1.x?
- How can I propose featuring my plugin in al-folio?
- Why does plugin integration use Gemfile + _config.yml instead of a gemspec?
- What do all these GitHub actions/workflows mean?
- How can I use Google Search Console ID on the template?
- What are Code Wiki and DeepWiki?
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. (Relevant issue: 209.)
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.)
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 in INSTALL.md. You should have set the deployment branch to gh-pages. (Related issue: 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?
If the website does not load the theme, the layout looks weird, and all links are broken, being the main page displayed this way:
make sure to correctly specify the url and baseurl paths in _config.yml. Set url to https://<your-github-username>.github.io or to https://<your.custom.domain> if you are using a custom domain. If you are deploying a personal or organization website, leave baseurl empty (do NOT delete it). If you are deploying a project page, set baseurl: /<your-project-name>/. If all previous steps were done correctly, all is missing is for your browser to fetch again the site stylesheet. For this, you can:
- press Shift + F5 on Chromium-based or Ctrl + F5 on Firefox-based browsers to reload the page ignoring cached content
- clean your browser history
- simply try it in a private session, here's how to do it in Chrome and Firefox
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.
This is probably due to the 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 without meaningful words (i.e. only stop words) or even specific characters 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.
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 workflow, it fails with Error: Input required and not supplied: token. How do I fix that?
You need to create a personal access token and add it as a secret named LIGHTHOUSE_BADGER_TOKEN to your repository. For more information, check lighthouse-badger documentation 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?
We implemented support for Prettier code formatting in #2048. It basically ensures that your code is well formatted. If you want to ensure your code is compliant with Prettier, you have a few options:
- if you are running locally with
Dockerand using development containers,Prettieris already included - if you don't use
Docker, it is simple to integrate it with your preferred IDE using an extension - if you want to run it manually, you can follow the first 2 steps in this tutorial (
Installing node version manager (nvm)andInstalling Node (latest version)), then, install it usingnpm install prettierinside the project directory, or install it globally on your computer usingnpm install -g prettier. To runPrettieron your current directory usenpx prettier . --write.
You can also disable it for your repo. For this, just delete the file .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?
Probably your GitHub workflow is throwing an error like this:
/opt/hostedtoolcache/Ruby/3.0.2/x64/lib/ruby/gems/3.0.0/gems/bundler-2.5.5/lib/bundler/runtime.rb:304:in `check_for_activated_spec!': You have already activated uri 0.10.1, but your Gemfile requires uri 0.13.0. Since uri is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports uri as a default gem. (Gem::LoadError)or maybe displaying a warning like one of these:
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v2, actions/cache@v2. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
The following actions uses node12 which is deprecated and will be forced to run on node16: actions/checkout@v2, actions/cache@v2. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
If that's the case, you are using deprecated libraries/commands. This happens because you are using an old version of al-folio. Follow the upgrade guide and run the upgrade CLI:
bundle exec al-folio upgrade audit
bundle exec al-folio upgrade apply --safe
bundle exec al-folio upgrade reportNote 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.
Use the SemVer migration flow:
bundle updatebundle exec al-folio upgrade auditbundle exec al-folio upgrade overrides auditbundle exec al-folio upgrade apply --safe(optional)bundle exec al-folio upgrade report
Then resolve all Blocking findings in al-folio-upgrade-report.md. Non-blocking findings are deprecated patterns you can migrate incrementally.
For starter-based sites, keep theme: al_folio_core and avoid copying theme internals into your repo unless you intentionally need overrides.
No. In v1.x, gem-owned layouts/includes/assets provide the default runtime, but your site can still override a file locally by adding the same path in your starter repo, for example _layouts/bib.liquid or _includes/repository/repo.liquid.
Use this rule of thumb:
- Keep site-specific content, data, Sass, and intentional local overrides in your site repo.
- Remove old copied runtime files when v1 gems own them now, especially
_includes/head.liquid,_includes/scripts.liquid,assets/js/distillpub/**,assets/js/search/**, and old citation/external-post helper plugins. - Fork or pin a plugin only when you want to change plugin-owned behavior for every site using that plugin.
- Run
bundle exec al-folio upgrade overrides auditafter dependency updates to identify local overrides whose upstream plugin files changed. - Commit
.al-folio-overrides.ymlafter reviewing intentional overrides so future gem updates can flag stale copies explicitly.
Use the override audit workflow:
bundle exec al-folio upgrade overrides audit
bundle exec al-folio upgrade overrides diff _includes/repository/repo.liquid
bundle exec al-folio upgrade overrides accept _includes/repository/repo.liquidThe audit compares local overrides with files shipped by installed al-* gems. The acknowledgement file .al-folio-overrides.yml stores the upstream checksum you reviewed. When a future gem update changes that upstream file, the audit marks your local override as stale so you can reconcile it.
al-folio is a thin starter in v1.x. Tailwind/runtime build ownership moved to gem repos (primarily al_folio_core and feature gems), so starter builds do not require local npm CSS build commands.
Use starter tests for:
- visual regression/parity checks
- cross-gem integration checks
Use gem repos for:
- component correctness/unit tests
- plugin/runtime asset contract tests
See BOUNDARIES.md for the ownership contract.
jekyll-jupyter-notebook depends on Python tooling (jupyter + nbconvert), and Bundler cannot install Python packages for you.
Recommended options:
- Install Python deps locally:
./bin/setup-python-deps- Or install manually in your Python environment:
python3 -m pip install --user --break-system-packages jupyter nbconvert- If you do not need notebook rendering, disable/remove the plugin from
_config.yml.
In v1.x, missing jupyter-nbconvert is treated as warn-and-continue; notebook rendering is skipped until deps are installed.
v1.x core is Tailwind-first. If your content still relies on Bootstrap-marked classes or data-toggle behavior, enable compatibility mode temporarily:
al_folio:
compat:
bootstrap:
enabled: trueCompatibility timeline:
- Supported through
v1.2 - Deprecated in
v1.3 - Removed in
v2.0
The compatibility runtime (/assets/css/bootstrap-compat.css and /assets/js/bootstrap-compat.js) is provided by the al_folio_bootstrap_compat gem when enabled.
v1.x uses Tocbot for sidebar TOC rendering when page front matter includes:
toc:
sidebar: left # or right
collapse: expanded # or autoTocbot runtime assets are loaded from pinned CDN entries in _config.yml under third_party_libraries.tocbot.
If needed, heading labels can be overridden using data-toc-text attributes.
Use collapse: auto to expand nested TOC branches as the active section changes during scrolling.
When al_folio.compat.bootstrap.enabled: false, v1.x uses a built-in vanilla Tailwind table engine for table[data-toggle="table"] markup.
It supports search, pagination, sortable columns, and click-to-select without requiring Bootstrap Table runtime.
When compatibility is enabled, Bootstrap Table remains available for legacy content.
In v1.x, al_img_tools provides a plugin-owned lightbox adapter for data-lightbox markup, so lightbox galleries no longer depend on jQuery.
Author-facing markup stays the same (images.lightbox2: true and data-lightbox links).
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 in favor of using mermaid.js directly. Simply update your code to get the latest changes.
In v1.x, icon runtime ownership is provided by al_icons, and icons are loaded from pinned CDN URLs configured in _config.yml under third_party_libraries.
Update flow:
- Confirm
al_iconsis enabled inplugins. - Update version values in
_config.yml:third_party_libraries.fontawesome.versionthird_party_libraries.academicons.versionthird_party_libraries.scholar-icons.version
- Update corresponding
integrity.csshashes. - Rebuild your site and verify icon rendering on pages with socials/publications.
Do not copy icon fonts into assets/fonts/ or assets/webfonts/ in the starter for v1.x; those local runtime assets are no longer starter-owned.
Use the hybrid naming model:
- Theme-coupled plugins:
- repo:
al-folio-<feature> - gem/plugin id:
al_folio_<feature>
- repo:
- Reusable plugins:
- repo:
al-<feature>or neutral name - gem/plugin id aligned with plugin namespace
- repo:
Third-party non-al-* plugins are still valid and can be featured.
Use the Plugin Feature Proposal issue template in this repo and include:
- plugin repo URL
- gem name and Jekyll plugin id
- compatibility range (
al_folio_min/al_folio_max) - owner/maintainer contact
- demo page/post path
If maintainers decide to list it, update _data/featured_plugins.yml through a PR.
If maintainers decide to bundle it by default, that is a separate decision and requires wiring updates in Gemfile and _config.yml.
al-folio starter currently does not have a gemspec. Plugin integration is controlled by:
- Gemfile for dependency declarations
- _config.yml for Jekyll plugin activation/configuration
Any contribution guidance that references gemspec updates should be interpreted as starter wiring updates to those two files.
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.
Currently we ship the following workflows.
Build and deployment:
-
deploy.yml: builds the site and deploys it to GitHub Pages (thegh-pagesbranch) -
render-cv.yml: regenerates your CV PDF with RenderCV when_data/cv.ymlor the files underassets/rendercv/change -
update-citations.yml: runsbin/update_scholar_citations.pyon a schedule to refresh_data/citations.ymlwith Google Scholar citation counts. See Setting up a Personal Access Token (PAT) for Google Scholar Citation Updates -
update-tocs.yml: regenerates the<!--ts-->…<!--te-->table of contents blocks in changed Markdown files -
- 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?
- 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?
- 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 is not displayed correctly (CSS and JS are not loaded properly). How do I fix that?
- Atom feed doesn't work. Why?
- My site doesn't work when I enable related_blog_posts. Why?
- 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 I manually run the Lighthouse Badger workflow, it fails with Error: Input required and not supplied: token. 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?
- 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?
- How do I upgrade from al-folio v1.0 to v1.1+ with minimal friction?
- Do I need to fork every v1 gem to customize layouts and Liquid files?
- How do I know when a local override is stale after a plugin update?
- Why does v1.x starter not have npm run build:css anymore?
- Jupyter posts are enabled, but my build says jupyter-nbconvert is missing. What are my options?
- How do I handle legacy Bootstrap-marked pages on Tailwind-first v1.x?
- How does sidebar table of contents work in v1.x?
- Why does pretty_table: true still work when Bootstrap compatibility is disabled?
- Why does Lightbox2 work without jQuery in v1.x?
- 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?
- How can I update icon library versions on the template
- How should I name plugins in v1.x?
- How can I propose featuring my plugin in al-folio?
- Why does plugin integration use Gemfile + _config.yml instead of a gemspec?
- What do all these GitHub actions/workflows mean?
- How can I use Google Search Console ID on the template?
- What are Code Wiki and DeepWiki?
