FAQ & Troubleshooting
Answers to the most common questions and build errors for jekyll-infops-theme — Sass, Ruby, Docker, GitHub Pages and browser quirks.
Table of Contents
Collected answers to everything that tends to go wrong during setup, customisation and deployment.
Build & installation
bundle install fails on Windows
# Force native Ruby platform (no native extensions)
bundle config set --local force_ruby_platform true
bundle install
If you get SSL errors:
gem update --system
gem install bundler
bundle install
Sass @import deprecation warning
This theme uses Dart Sass @use / @forward. The warning appears if your environment falls back to LibSass (sassc gem):
# Ensure jekyll-sass-converter 3.x is installed
bundle update jekyll-sass-converter
bundle exec jekyll serve
Check which converter is active: bundle info jekyll-sass-converter.
Line numbers appear inside code blocks
Set line_numbers: false in _config.yml:
kramdown:
syntax_highlighter_opts:
block:
line_numbers: false
Then restart Jekyll. Existing _site/ files may be stale — run bundle exec jekyll clean first.
"Could not locate Gemfile" or missing include
Ensure you’re in the project root when running bundle exec jekyll serve. Double-check that all files referenced by Liquid include tags exist in _includes/.
Jekyll builds successfully but the site looks broken
- Check
baseurlin_config.yml— for a GitHub Pages project site it must be/repo-name, for a user/org site it must be"" - Open browser DevTools → Console for 404s on CSS/JS
- Run
bundle exec jekyll build --verbosefor the full build log
Layout & display
Sidebar disappears on mobile
Expected — at < 1100px the sidebar collapses below the content and switches to a 2-column grid. At < 768px it becomes a single column. This is by design and controlled in _sass/_responsive.scss.
Canvas background is invisible
- Check
canvas.enabled: truein_config.yml - DevTools → Console: look for JS errors in
canvas.js - Reduce
particle_countto40and lowermax_distanceto80to rule out performance issues - Some ad-blockers block canvas API calls — test in a private window
Hero section is too tall
# _data/theme.yml
hero:
min_height: 40 # vh — reduce this; set to 0 for auto height
Post card left border missing
The coloured left border comes from .post-card::before in _sass/_layout.scss. If you’ve customised SCSS, verify this rule exists and isn’t overridden by a display: none or content: none somewhere.
Search bar does nothing
The search page is at /search/. Confirm:
pages/search.htmlhas the front matter block at the very top of the file (no Liquid tags before the---)search.jsonexists at the repo root with alayout: nullfront matter- The
search-json-urlmeta tag is present in<head>(check_site/search/index.html) - Open DevTools → Network — the fetch to
/search.jsonshould return 200 with valid JSON
Terminal
Terminal color doesn’t persist across pages
The terminal color is stored in sessionStorage, not localStorage. It persists within the same tab session but resets when the tab is closed or a new tab is opened. This is intentional — it’s a visual preference for the current session, not a permanent setting.
Games feel too fast or too slow
Game speed is frame-rate dependent (60fps assumed). On very high refresh-rate monitors (144Hz+), games run faster because requestAnimationFrame fires more frequently. A fix using performance.now() delta timing could be added to each game file if needed.
Terminal doesn’t respond to keyboard input
Click inside the terminal window first — the hidden <input> needs focus. If the terminal is minimised (yellow dot), click the dot to restore it.
Analytics
GoatCounter shows — for visitor count
Two causes:
Public stats disabled: GoatCounter dashboard → Settings → Allow public access to stats → Enable.
CORS blocked: Open DevTools → Network → filter goatcounter.com. A 403 means public stats are off. A CORS error means a browser extension is blocking the request. Check the console for [infops] GoatCounter stats: auth-required.
Analytics fire in development
Check that analytics.html wraps all script tags inside a if jekyll.environment == "production" Liquid condition. Run bundle exec jekyll serve (not --env production or JEKYLL_ENV=production).
GA4 shows no data for 24–48 hours
Normal — GA4 processes data asynchronously with up to 48h delay. Verify the Measurement ID starts with G- (not the old UA- Universal Analytics format).
GitHub Pages
Build fails in GitHub Actions
Check the Actions tab for the error. Common causes:
| Error | Fix |
|---|---|
Gem not found |
Add the gem to Gemfile and commit Gemfile.lock |
Plugin not whitelisted |
The .github/workflows/pages.yml Action-based workflow bypasses the whitelist — ensure Source is set to GitHub Actions, not Deploy from branch |
baseurl mismatch |
Match baseurl in _config.yml to your repo name |
| Jekyll build error in a post | Run bundle exec jekyll build locally to see the exact error |
Site deploys but shows old content
GitHub Actions build + deploy takes 1–3 minutes. Check Actions → latest workflow run for status. If the run succeeded but the site is still stale, try a hard refresh (Ctrl+Shift+R) — GitHub Pages serves behind a CDN with some caching.
Custom domain returns 404
- Ensure a
CNAMEfile exists at the repo root containing your domain (e.g.blog.yourdomain.com) - Add a
CNAMEDNS record pointing toyour-username.github.io - Wait up to 24h for DNS propagation
- In repo Settings → Pages → Custom domain — GitHub checks DNS and provisions a TLS certificate automatically
Docker
docker compose up fails on first run
# Full reset — remove containers, volumes and cached layers
docker compose down -v
docker compose build --no-cache
docker compose up
Changes not reflected after docker compose up
Confirm the source directory is mounted as a volume in docker-compose.yml:
volumes:
- .:/srv/jekyll
If you edited _config.yml, livereload is not sufficient — restart the container: docker compose restart jekyll.
Comments