Skip to content

Latest commit

 

History

History
350 lines (230 loc) · 26.3 KB

File metadata and controls

350 lines (230 loc) · 26.3 KB

Frequently Asked Questions

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.

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 the previous section. 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:

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?

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 Docker and using development containers, Prettier is 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) and Installing Node (latest version)), then, install it using npm install prettier inside the project directory, or install it globally on your computer using npm install -g prettier. To run Prettier on your current directory use npx 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 report

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.

How do I upgrade from al-folio v1.0 to v1.1+ with minimal friction?

Use the SemVer migration flow:

  1. bundle update
  2. bundle exec al-folio upgrade audit
  3. bundle exec al-folio upgrade overrides audit
  4. bundle exec al-folio upgrade apply --safe (optional)
  5. 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.

Do I need to fork every v1 gem to customize layouts and Liquid files?

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 audit after dependency updates to identify local overrides whose upstream plugin files changed.
  • Commit .al-folio-overrides.yml after reviewing intentional overrides so future gem updates can flag stale copies explicitly.

How do I know when a local override is stale after a plugin update?

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.liquid

The 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.

Why does v1.x starter not have npm run build:css anymore?

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.

Jupyter posts are enabled, but my build says jupyter-nbconvert is missing. What are my options?

jekyll-jupyter-notebook depends on Python tooling (jupyter + nbconvert), and Bundler cannot install Python packages for you.

Recommended options:

  1. Install Python deps locally:
./bin/setup-python-deps
  1. Or install manually in your Python environment:
python3 -m pip install --user --break-system-packages jupyter nbconvert
  1. 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.

How do I handle legacy Bootstrap-marked pages on Tailwind-first v1.x?

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: true

Compatibility 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.

How does sidebar table of contents work in v1.x?

v1.x uses Tocbot for sidebar TOC rendering when page front matter includes:

toc:
  sidebar: left # or right
  collapse: expanded # or auto

Tocbot 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.

Why does pretty_table: true still work when Bootstrap compatibility is disabled?

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.

Why does Lightbox2 work without jQuery in v1.x?

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.

How can I update icon library versions on the template

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:

  1. Confirm al_icons is enabled in plugins.
  2. Update version values in _config.yml:
    • third_party_libraries.fontawesome.version
    • third_party_libraries.academicons.version
    • third_party_libraries.scholar-icons.version
  3. Update corresponding integrity.css hashes.
  4. 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.

How should I name plugins in v1.x?

Use the hybrid naming model:

  • Theme-coupled plugins:
    • repo: al-folio-<feature>
    • gem/plugin id: al_folio_<feature>
  • Reusable plugins:
    • repo: al-<feature> or neutral name
    • gem/plugin id aligned with plugin namespace

Third-party non-al-* plugins are still valid and can be featured.

How can I propose featuring my plugin in al-folio?

Use the Plugin Feature Proposal issue template in this repo and include:

  1. plugin repo URL
  2. gem name and Jekyll plugin id
  3. compatibility range (al_folio_min / al_folio_max)
  4. owner/maintainer contact
  5. 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.

Why does plugin integration use Gemfile + _config.yml instead of a gemspec?

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.

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.

Currently we have the following workflows:

  • axe.yml: does some accessibility testing in your site. It uses the axe cli tool with a chrome driver to render the webpage and allow the analysis. Must be run manually, since fixing some of the issues is not straightforward
  • broken-links-site.yml: checks for broken links in your built website with the lychee-action
  • broken-links.yml: checks for broken links in your repository with the lychee-action
  • deploy-docker-tag.yml: adds some metadata to the docker image and pushes it to Docker Hub
  • deploy-image.yml: deploys a new docker image with the latest changes to Docker Hub
  • deploy.yml: deploys the website to GitHub Pages
  • docker-slim.yml: deploys a smaller version of the docker image to Docker Hub with the docker-slim-action
  • lighthouse-badger.yml: runs a lighthouse test for your site with the lighthouse-badger-action, saving the results in the repository for easy inspecting, as can be seen here. For more information on how to enable this workflow, check our FAQ question about it
  • 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
  • prettier.yml: runs prettier on the code to ensure it is well formatted. For more information, check our FAQ question about it

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,

  • Generate your HTML tag by following https://support.google.com/webmasters/answer/9008080?hl=en#meta_tag_verification&zippy=%2Chtml-tag with URL prefix option.
  • In the verify ownership option choose HTML tag and copy the tag contents which should look like <meta name="google-site-verification" content="GoogleSearchConsoleID" />.
  • The string against content is the Google Search Console ID that can be used in the template. e.g. google-site-verification: GoogleSearchConsoleID. Now set the property enable_google_verification: true.

It looks like the Domain type property in the Google Search Console to verify the ownership of all URLs across all subdomains with GitHub Pages does not work.

What are Code Wiki and DeepWiki?

Code Wiki and DeepWiki are AI-powered tools that help you understand GitHub repositories through interactive documentation. They should be treated as supplementary resources when you cannot find the information you need in the official project documentation.

When to use these tools

Use Code Wiki and DeepWiki only after:

  • You have reviewed the relevant documentation files in this repository (README.md, INSTALL.md, CUSTOMIZE.md, FAQ.md, or CONTRIBUTING.md)
  • You have checked the GitHub Discussions Q&A section for similar questions
  • You have searched existing GitHub Issues

What they do

Code Wiki (powered by Google Gemini) generates interactive documentation from your repository code. It allows you to:

  • Browse your repository's structure and architecture
  • Search for specific functions or modules
  • Understand how different parts of the codebase work together
  • Get diagrams and visual representations of your code architecture

DeepWiki provides an AI-powered interface to ask questions about a repository, similar to having an engineer available 24/7. It allows you to:

  • Ask natural language questions about the codebase
  • Get instant answers about how specific features work
  • Search for code patterns and implementations

Limitations

These tools are generated automatically from our code and may not always reflect the most current documentation standards or best practices specific to this project. They should not replace official documentation but rather complement it when you need deeper technical insights.

Access these tools