Pivot site from Jekyll to Interleaved#8
Open
lilith wants to merge 7 commits into
Open
Conversation
Migrates imageflow-web from Jekyll to the Interleaved CMS. Old _layouts/_includes/_pages/_posts/_data/_sass/_config.yml directories are still tracked for reference; new content lives in: templates/ — Liquid layouts + partials content/ — markdown + HTML pages, posts under content/posts/ data/ — site.toml, authors.toml, tokens.toml static/ — css, js, fonts, images, CNAME, robots.txt, sitemap, feed .pages.yml — Interleaved admin schema PORT-NOTES.md — what changed and the gap list Engine: Liquid (LiquidJS), same syntax family as Jekyll. Most existing template logic ports directly. Filters that diverged (strip_html → striphtml, truncatewords → excerpt, etc.) are documented in PORT-NOTES.md. Frontmatter: TOML (+++…+++) preferred for new files; YAML (---…---) still works on the existing posts. Builds 23 pages in ~70 ms via: npx tsx ../interleaved/scripts/build-site.ts --src . --out _site Known gaps (deferred — see PORT-NOTES.md): site.posts/site.pages/ site.tags/site.categories globals, paginator, jekyll.environment, the landing-page spotlight + featured-posts blocks, sitemap/feed auto-update.
Vendors the minimum Interleaved build pieces (lib/renderer/ + lib/serialization.ts + build script) so the site builds standalone with `npm install && npm run build`. Cloudflare Pages picks this up automatically. Workflow: npm install # one-time npm run build # produces _site/ npm run preview # builds + serves on http://localhost:8000 Vendored files mirror upstream imazen/interleaved at f346f11. When we want the latest renderer features (e.g. when site.time, paginator, or pluggable markdown renderers ship), `cp -R` from the upstream lib/renderer/ tree. Initial deploy live at https://imageflow-web.pages.dev/ (Cloudflare Pages project: imageflow-web, production branch: interleaved).
The Jekyll site's static/css/ contained .scss source files with Jekyll-
specific Liquid + include_relative directives. Sass alone can't process
them (frontmatter, {{ site.baseurl }}, {% include_relative %}). The
Cloudflare Pages build had no compiled main.css, so /css/main.css 404'd
back to the SPA fallback (delivering index.html with text/html, breaking
all styling).
Replaced the source .scss files with the already-compiled .css served by
the live www.imageflow.io site. main.css, fonts.css, ie8.css, ie9.css
ship as static assets — no build-time sass step needed.
If we later want to edit styles, options are:
- Edit the .css files directly (simplest)
- Restore the .scss sources to a separate sass/ dir, add a sass build
step that pre-resolves the Jekyll-specific syntax
- Migrate to a different styling approach (Tailwind, plain CSS)
Live: https://imageflow-web.pages.dev/css/main.css
Same root cause as ddf97c0 (CSS): static/js/all-except-main-and-ie8.js was a Jekyll-source bundle with `{% include_relative %}` directives, not real JavaScript. Browsers received 11 lines of frontmatter + Liquid tags and did nothing. Replaced with the already-bundled output served by www.imageflow.io (jQuery 1.11.3 + scrollex + scrolly + skel + skel-layout + util, 605 lines minified).
The original Jekyll landing.html doesn't show a recent-posts section. What looked like blog posts under content/posts/ are actually categorised content for the /works/ and /topics/ subpages (categories: works, topics) and were never meant to appear on the home page. Restores visual parity with the live www.imageflow.io. site.posts is still exposed as a render global; templates that want a blog feed can opt in with `{% for p in site.posts | where: "categories", "blog" %}` once a real blog post exists.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migrates imageflow.io from Jekyll to Interleaved, the Claude-native CMS we've been building. The original Jekyll source is left in place under
_layouts/_includes/_pages/_posts/_data/_config.ymlfor reference; the new Interleaved layout lives alongside it.New layout:
templates/— Liquid layouts + partials (LiquidJS, runs identically in Node and Cloudflare Workers)content/— markdown + HTML pages, posts undercontent/posts/data/—site.toml,authors.toml,tokens.toml(TOML preferred for new files; YAML still works on existing)static/— css, js, fonts, images, CNAME, robots.txt, sitemap, feed.pages.yml— Interleaved admin schema, makes the site editable through the admin UIPORT-NOTES.md— what changed and the remaining Jekyll gapsWhat works today:
npx tsx ../interleaved/scripts/build-site.ts --src . --out _sitesite.posts,site.pages,site.categories.<x>,site.tags.<x>populated from frontmatter (Jekyll-compat globals — recently shipped in Interleaved main)site.navindata/site.tomlsite.socialsite.posts | sortBy: "date", "desc")Open Jekyll gaps (each documented in
PORT-NOTES.mdwith a workaround):paginator— Jekyll's built-in paginationsite.time— render-time clock; replaced with hard-codedsite.this_yearinsite.tomljekyll.environment— replaced withsite.productiontogglesite.pagesnow if desired)Hosting note
GitHub Pages serves one site per repo. To run both Jekyll and Interleaved side-by-side during the cutover, recommend Cloudflare Pages — two projects against this same repo, different build configs and subdomains (e.g.
www.imageflow.iofor the Jekyll build,next.imageflow.iofor the Interleaved build). Vercel and Netlify support the same pattern. Details in comment thread on request.Test plan
PORT-NOTES.mdfor the gap listnpx tsx ../interleaved/scripts/build-site.ts --src . --out _siteproduces 23 pages_layouts/_includes/_pages/_posts/_data/_config.yml/_sassafter the cutover or keep them indefinitely