made by alan w smith ~ socials ~ other projects

Simple Site Builder

Overview

Simple Site Builder is my latest static site builder for my personal sites. It uses HTML, CSS, Vanilla JavaScript, Web Components, and JavaScript Libraries without requiring an underlying framework. It's specifically designed to compliment bitty.

The repo is at: https://github.com/alanwsmith/simple_site_builder if you want to check it out or tinker with it.

TODO/Goals:

Release Build Process

Examples

These examples cover the basics. Check out the source code to see the input.

Automatically Loaded Data

Processing .txt files with MiniJinja Worked!
{
  "_config": {
    "txtTest": "Processing .txt files with MiniJinja Worked!"
  },
  "examples": {
    "data": {
      "sample": {
        "dataset": {
          "alfa": "the quick brown fox",
          "bravo": [
            "the",
            "quick",
            "brown",
            "fox"
          ]
        }
      },
      "sample-2": {
        "anotherSample": "with some data"
      }
    }
  }
}

Inline Syntax Highlighting

CSS
.highlighted-css {
  color: goldenrod;
}
HTML
<div>highlighted HTML</div>
JSON
{ "json_key": "json_value" }
Lua
print('this is lua')
Python
print("this is python")
Rust
fn main() {
  println!("Highlighted rust");
}

Other languages can be added. It currently requires updating the source code.

File Syntax Highlighting


{
  "dataset": {
    "alfa": "the quick brown fox",
    "bravo": ["the", "quick", "brown", "fox"]
  }
}

Markdown File Inclusion

NOTE: Uses filter to render markdown for: examples/markdown/sample.md

Find and Replace from: support/find-replace/*.txt

This should say `TEST_VAR_2_WORKED`: TEST_VAR_2_DID_NOT_WORK

Confirm Find and Replace works in included files

This should say `TEST_VAR_3_WORKED` in the array:

Could not load file to highlight: _includes/test-highlight-with-find-replace.js
  

Bitty Test

Waiting for click

Current File

null

Folders List

[
  {
    "name": "_includes",
    "parent": ""
  },
  {
    "name": "_release-notes",
    "parent": ""
  },
  {
    "name": "_wrappers",
    "parent": ""
  },
  {
    "name": "components",
    "parent": ""
  },
  {
    "name": "examples",
    "parent": ""
  },
  {
    "name": "favicons",
    "parent": ""
  },
  {
    "name": "images",
    "parent": ""
  },
  {
    "name": "releases",
    "parent": ""
  },
  {
    "name": "scripts",
    "parent": ""
  },
  {
    "name": "styles",
    "parent": ""
  },
  {
    "name": "tests",
    "parent": ""
  },
  {
    "name": "data",
    "parent": "examples"
  },
  {
    "name": "markdown",
    "parent": "examples"
  },
  {
    "name": "aarch64-apple-darwin",
    "parent": "releases"
  },
  {
    "name": "0.3.0",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.4.0",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.5.0",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.6.0",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.6.1",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.6.2",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.6.3",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.7.0",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.7.1",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.7.2",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.7.3",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.7.4",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.8.0",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.8.1",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.8.2",
    "parent": "releases/aarch64-apple-darwin"
  },
  {
    "name": "0.8.3",
    "parent": "releases/aarch64-apple-darwin"
  }
]

File List

[
  {
    "extension": "json",
    "file_move_type": "Skip",
    "folder": "",
    "input_path": "_config.json",
    "name": "_config.json",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": null,
    "stem": "_config"
  },
  {
    "extension": "ico",
    "file_move_type": "Copy",
    "folder": "",
    "input_path": "favicon.ico",
    "name": "favicon.ico",
    "output_folder": "",
    "output_name": "favicon.ico",
    "parent_folder_name": null,
    "stem": "favicon"
  },
  {
    "extension": "html",
    "file_move_type": "Transform",
    "folder": "",
    "input_path": "index.html",
    "name": "index.html",
    "output_folder": "",
    "output_name": "index.html",
    "parent_folder_name": null,
    "stem": "index"
  },
  {
    "extension": "html",
    "file_move_type": "Transform",
    "folder": "",
    "input_path": "ping.html",
    "name": "ping.html",
    "output_folder": "",
    "output_name": "ping.html",
    "parent_folder_name": null,
    "stem": "ping"
  },
  {
    "extension": "js",
    "file_move_type": "Skip",
    "folder": "_includes",
    "input_path": "_includes/test-highlight-with-find-replace.js",
    "name": "test-highlight-with-find-replace.js",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_includes",
    "stem": "test-highlight-with-find-replace"
  },
  {
    "extension": "txt",
    "file_move_type": "Skip",
    "folder": "_includes",
    "input_path": "_includes/txt-test.txt",
    "name": "txt-test.txt",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_includes",
    "stem": "txt-test"
  },
  {
    "extension": "md",
    "file_move_type": "Skip",
    "folder": "_release-notes",
    "input_path": "_release-notes/v0.3.0.md",
    "name": "v0.3.0.md",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_release-notes",
    "stem": "v0.3.0"
  },
  {
    "extension": "md",
    "file_move_type": "Skip",
    "folder": "_release-notes",
    "input_path": "_release-notes/v0.4.0.md",
    "name": "v0.4.0.md",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_release-notes",
    "stem": "v0.4.0"
  },
  {
    "extension": "md",
    "file_move_type": "Skip",
    "folder": "_release-notes",
    "input_path": "_release-notes/v0.5.0.md",
    "name": "v0.5.0.md",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_release-notes",
    "stem": "v0.5.0"
  },
  {
    "extension": "md",
    "file_move_type": "Skip",
    "folder": "_release-notes",
    "input_path": "_release-notes/v0.6.0.md",
    "name": "v0.6.0.md",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_release-notes",
    "stem": "v0.6.0"
  },
  {
    "extension": "md",
    "file_move_type": "Skip",
    "folder": "_release-notes",
    "input_path": "_release-notes/v0.6.1.md",
    "name": "v0.6.1.md",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_release-notes",
    "stem": "v0.6.1"
  },
  {
    "extension": "md",
    "file_move_type": "Skip",
    "folder": "_release-notes",
    "input_path": "_release-notes/v0.6.2.md",
    "name": "v0.6.2.md",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_release-notes",
    "stem": "v0.6.2"
  },
  {
    "extension": "md",
    "file_move_type": "Skip",
    "folder": "_release-notes",
    "input_path": "_release-notes/v0.6.3.md",
    "name": "v0.6.3.md",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_release-notes",
    "stem": "v0.6.3"
  },
  {
    "extension": "md",
    "file_move_type": "Skip",
    "folder": "_release-notes",
    "input_path": "_release-notes/v0.6.4.md",
    "name": "v0.6.4.md",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_release-notes",
    "stem": "v0.6.4"
  },
  {
    "extension": "md",
    "file_move_type": "Skip",
    "folder": "_release-notes",
    "input_path": "_release-notes/v0.8.3.md",
    "name": "v0.8.3.md",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_release-notes",
    "stem": "v0.8.3"
  },
  {
    "extension": "html",
    "file_move_type": "Skip",
    "folder": "_wrappers",
    "input_path": "_wrappers/main.html",
    "name": "main.html",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "_wrappers",
    "stem": "main"
  },
  {
    "extension": "js",
    "file_move_type": "Skip",
    "folder": "components",
    "input_path": "components/_js-include-test.js",
    "name": "_js-include-test.js",
    "output_folder": null,
    "output_name": null,
    "parent_folder_name": "components",
    "stem": "_js-include-test"
  },
  {
    "extension": "js",
    "file_move_type": "Copy",
    "folder": "components",
    "input_path": "components/bitty-1.0.0-rc4.full.js",
    "name": "bitty-1.0.0-rc4.full.js",
    "output_folder": "components",
    "output_name": "bitty-1.0.0-rc4.full.js",
    "parent_folder_name": "components",
    "stem": "bitty-1.0.0-rc4.full"
  },
  {
    "extension": "js",
    "file_move_type": "Copy",
    "folder": "components",
    "input_path": "components/page.js",
    "name": "page.js",
    "output_folder": "components",
    "output_name": "page.js",
    "parent_folder_name": "components",
    "stem": "page"
  },
  {
    "extension": "json",
    "file_move_type": "Copy",
    "folder": "examples/data",
    "input_path": "examples/data/sample-2.json",
    "name": "sample-2.json",
    "output_folder": "examples/data",
    "output_name": "sample-2.json",
    "parent_folder_name": "data",
    "stem": "sample-2"
  },
  {
    "extension": "json",
    "file_move_type": "Copy",
    "folder": "examples/data",
    "input_path": "examples/data/sample.json",
    "name": "sample.json",
    "output_folder": "examples/data",
    "output_name": "sample.json",
    "parent_folder_name": "data",
    "stem": "sample"
  },
  {
    "extension": "md",
    "file_move_type": "Transform",
    "folder": "examples/markdown",
    "input_path": "examples/markdown/sample.md",
    "name": "sample.md",
    "output_folder": "examples/markdown",
    "output_name": "sample.md",
    "parent_folder_name": "markdown",
    "stem": "sample"
  },
  {
    "extension": "png",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/android-chrome-192x192.png",
    "name": "android-chrome-192x192.png",
    "output_folder": "favicons",
    "output_name": "android-chrome-192x192.png",
    "parent_folder_name": "favicons",
    "stem": "android-chrome-192x192"
  },
  {
    "extension": "png",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/android-chrome-512x512.png",
    "name": "android-chrome-512x512.png",
    "output_folder": "favicons",
    "output_name": "android-chrome-512x512.png",
    "parent_folder_name": "favicons",
    "stem": "android-chrome-512x512"
  },
  {
    "extension": "png",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/apple-touch-icon.png",
    "name": "apple-touch-icon.png",
    "output_folder": "favicons",
    "output_name": "apple-touch-icon.png",
    "parent_folder_name": "favicons",
    "stem": "apple-touch-icon"
  },
  {
    "extension": "xml",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/browserconfig.xml",
    "name": "browserconfig.xml",
    "output_folder": "favicons",
    "output_name": "browserconfig.xml",
    "parent_folder_name": "favicons",
    "stem": "browserconfig"
  },
  {
    "extension": "png",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/favicon-16x16.png",
    "name": "favicon-16x16.png",
    "output_folder": "favicons",
    "output_name": "favicon-16x16.png",
    "parent_folder_name": "favicons",
    "stem": "favicon-16x16"
  },
  {
    "extension": "png",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/favicon-32x32.png",
    "name": "favicon-32x32.png",
    "output_folder": "favicons",
    "output_name": "favicon-32x32.png",
    "parent_folder_name": "favicons",
    "stem": "favicon-32x32"
  },
  {
    "extension": "ico",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/favicon.ico",
    "name": "favicon.ico",
    "output_folder": "favicons",
    "output_name": "favicon.ico",
    "parent_folder_name": "favicons",
    "stem": "favicon"
  },
  {
    "extension": "png",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/mstile-150x150.png",
    "name": "mstile-150x150.png",
    "output_folder": "favicons",
    "output_name": "mstile-150x150.png",
    "parent_folder_name": "favicons",
    "stem": "mstile-150x150"
  },
  {
    "extension": "svg",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/safari-pinned-tab.svg",
    "name": "safari-pinned-tab.svg",
    "output_folder": "favicons",
    "output_name": "safari-pinned-tab.svg",
    "parent_folder_name": "favicons",
    "stem": "safari-pinned-tab"
  },
  {
    "extension": "webmanifest",
    "file_move_type": "Copy",
    "folder": "favicons",
    "input_path": "favicons/site.webmanifest",
    "name": "site.webmanifest",
    "output_folder": "favicons",
    "output_name": "site.webmanifest",
    "parent_folder_name": "favicons",
    "stem": "site"
  },
  {
    "extension": "jpg",
    "file_move_type": "Copy",
    "folder": "images",
    "input_path": "images/test-image.jpg",
    "name": "test-image.jpg",
    "output_folder": "images",
    "output_name": "test-image.jpg",
    "parent_folder_name": "images",
    "stem": "test-image"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.3.0",
    "input_path": "releases/aarch64-apple-darwin/0.3.0/ssb",
    "name": "ssb",
    "output_folder": "releases/aarch64-apple-darwin/0.3.0",
    "output_name": "ssb",
    "parent_folder_name": "0.3",
    "stem": "ssb"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.4.0",
    "input_path": "releases/aarch64-apple-darwin/0.4.0/ssb",
    "name": "ssb",
    "output_folder": "releases/aarch64-apple-darwin/0.4.0",
    "output_name": "ssb",
    "parent_folder_name": "0.4",
    "stem": "ssb"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.5.0",
    "input_path": "releases/aarch64-apple-darwin/0.5.0/ssb",
    "name": "ssb",
    "output_folder": "releases/aarch64-apple-darwin/0.5.0",
    "output_name": "ssb",
    "parent_folder_name": "0.5",
    "stem": "ssb"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.6.0",
    "input_path": "releases/aarch64-apple-darwin/0.6.0/ssb-0-6-x",
    "name": "ssb-0-6-x",
    "output_folder": "releases/aarch64-apple-darwin/0.6.0",
    "output_name": "ssb-0-6-x",
    "parent_folder_name": "0.6",
    "stem": "ssb-0-6-x"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.6.1",
    "input_path": "releases/aarch64-apple-darwin/0.6.1/ssb-0-6-x",
    "name": "ssb-0-6-x",
    "output_folder": "releases/aarch64-apple-darwin/0.6.1",
    "output_name": "ssb-0-6-x",
    "parent_folder_name": "0.6",
    "stem": "ssb-0-6-x"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.6.2",
    "input_path": "releases/aarch64-apple-darwin/0.6.2/ssb-0-6-x",
    "name": "ssb-0-6-x",
    "output_folder": "releases/aarch64-apple-darwin/0.6.2",
    "output_name": "ssb-0-6-x",
    "parent_folder_name": "0.6",
    "stem": "ssb-0-6-x"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.6.3",
    "input_path": "releases/aarch64-apple-darwin/0.6.3/ssb-0-6-x",
    "name": "ssb-0-6-x",
    "output_folder": "releases/aarch64-apple-darwin/0.6.3",
    "output_name": "ssb-0-6-x",
    "parent_folder_name": "0.6",
    "stem": "ssb-0-6-x"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.7.0",
    "input_path": "releases/aarch64-apple-darwin/0.7.0/ssb-0-7",
    "name": "ssb-0-7",
    "output_folder": "releases/aarch64-apple-darwin/0.7.0",
    "output_name": "ssb-0-7",
    "parent_folder_name": "0.7",
    "stem": "ssb-0-7"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.7.1",
    "input_path": "releases/aarch64-apple-darwin/0.7.1/ssb-0-7",
    "name": "ssb-0-7",
    "output_folder": "releases/aarch64-apple-darwin/0.7.1",
    "output_name": "ssb-0-7",
    "parent_folder_name": "0.7",
    "stem": "ssb-0-7"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.7.2",
    "input_path": "releases/aarch64-apple-darwin/0.7.2/ssb-0-7",
    "name": "ssb-0-7",
    "output_folder": "releases/aarch64-apple-darwin/0.7.2",
    "output_name": "ssb-0-7",
    "parent_folder_name": "0.7",
    "stem": "ssb-0-7"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.7.3",
    "input_path": "releases/aarch64-apple-darwin/0.7.3/ssb-0-7",
    "name": "ssb-0-7",
    "output_folder": "releases/aarch64-apple-darwin/0.7.3",
    "output_name": "ssb-0-7",
    "parent_folder_name": "0.7",
    "stem": "ssb-0-7"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.7.4",
    "input_path": "releases/aarch64-apple-darwin/0.7.4/ssb-0-7",
    "name": "ssb-0-7",
    "output_folder": "releases/aarch64-apple-darwin/0.7.4",
    "output_name": "ssb-0-7",
    "parent_folder_name": "0.7",
    "stem": "ssb-0-7"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.8.0",
    "input_path": "releases/aarch64-apple-darwin/0.8.0/ssb-0-8",
    "name": "ssb-0-8",
    "output_folder": "releases/aarch64-apple-darwin/0.8.0",
    "output_name": "ssb-0-8",
    "parent_folder_name": "0.8",
    "stem": "ssb-0-8"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.8.1",
    "input_path": "releases/aarch64-apple-darwin/0.8.1/ssb-0-8",
    "name": "ssb-0-8",
    "output_folder": "releases/aarch64-apple-darwin/0.8.1",
    "output_name": "ssb-0-8",
    "parent_folder_name": "0.8",
    "stem": "ssb-0-8"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.8.2",
    "input_path": "releases/aarch64-apple-darwin/0.8.2/ssb-0-8",
    "name": "ssb-0-8",
    "output_folder": "releases/aarch64-apple-darwin/0.8.2",
    "output_name": "ssb-0-8",
    "parent_folder_name": "0.8",
    "stem": "ssb-0-8"
  },
  {
    "extension": null,
    "file_move_type": "Copy",
    "folder": "releases/aarch64-apple-darwin/0.8.3",
    "input_path": "releases/aarch64-apple-darwin/0.8.3/ssb-0-8",
    "name": "ssb-0-8",
    "output_folder": "releases/aarch64-apple-darwin/0.8.3",
    "output_name": "ssb-0-8",
    "parent_folder_name": "0.8",
    "stem": "ssb-0-8"
  },
  {
    "extension": "js",
    "file_move_type": "Copy",
    "folder": "scripts",
    "input_path": "scripts/transform.mj.js",
    "name": "transform.mj.js",
    "output_folder": "scripts",
    "output_name": "transform.mj.js",
    "parent_folder_name": "scripts",
    "stem": "transform.mj"
  },
  {
    "extension": "css",
    "file_move_type": "Copy",
    "folder": "styles",
    "input_path": "styles/highlight-base16-ocean-dark.css",
    "name": "highlight-base16-ocean-dark.css",
    "output_folder": "styles",
    "output_name": "highlight-base16-ocean-dark.css",
    "parent_folder_name": "styles",
    "stem": "highlight-base16-ocean-dark"
  },
  {
    "extension": "css",
    "file_move_type": "Copy",
    "folder": "styles",
    "input_path": "styles/highlight-base16-ocean-light.css",
    "name": "highlight-base16-ocean-light.css",
    "output_folder": "styles",
    "output_name": "highlight-base16-ocean-light.css",
    "parent_folder_name": "styles",
    "stem": "highlight-base16-ocean-light"
  },
  {
    "extension": "css",
    "file_move_type": "Copy",
    "folder": "styles",
    "input_path": "styles/main.css",
    "name": "main.css",
    "output_folder": "styles",
    "output_name": "main.css",
    "parent_folder_name": "styles",
    "stem": "main"
  },
  {
    "extension": "md",
    "file_move_type": "Transform",
    "folder": "tests",
    "input_path": "tests/README.md",
    "name": "README.md",
    "output_folder": "tests",
    "output_name": "README.md",
    "parent_folder_name": "tests",
    "stem": "README"
  }
]

Test Transforming .txt Files

This should say something about it working here: Processing .txt files with MiniJinja Worked!

Test Transform JS with `.mj.js` extension

Test Raw

new

Release Notes

Version 0.8.3

  • A bunch of stuff changed that wasn't documented. See the todo checklist at the top where things show what's what

  • Deprecated markdown_file in favor of using filter markdown

  • changed file to file_details in the output that's available to files.

  • Added parent_folder_name to file_deatils

Version 0.6.4

DATE: TBD

  • TODO...

Version 0.6.3

Oct. 4. 2025

  • Removed deprecated message about find and replace not being included (it was added back in 0.6.2)

  • Removed deprecated JavaScript highlighting for all .js files (highlighting is done on a per file/pre request basis from the templates)

Version 0.6.2

Oct. 4, 2025

  • Set up find/replace to work with files that get highlighted or processed by markdown by doing the prep in the .build-files dir

Version 0.6.1

Oct. 4, 2025

  • Added highlight_file("file_path") function to replace original highlight_file["file_path"]

  • Added markdown_file("file_path") function to replace original markdown_file["file_path"]

  • Moved config/find-replace.txt to support/find-replace/*.txt directory that supports multiple text files.

Version 0.6.0

  • Added basic MiniJinja errors if something freaks out.

  • Starting to include the version numbers in the binary output for now so that older versions can hang around and be used on sites that are built with them and not have to worry about making breaking changes.

    Names are like ssb-0.6.x so that that non-breaking patches can be applied without changing the base number (for now, the second number (e.g. .6 is the major version that changes when breaking changes occur. Eventually it'll move to full semantic numbering with Major/Minor/Patch, but things need to stabilize more before a 1.0.0 is set)

  • Looked at Updating so that .js files are treated as templates (e.g. can do include stuff from minijinja), but took it back out as it's to possible that the .js will have something that fights with MiniJinja.

  • Removed scripts/file-prep that ran against every file as a pre-processor. It bogged down on a moderately sized site. Might add it back in at some point since the issue is really the speed of the script/process that's being called out to.

  • Renamed scripts dir to support which will contain scripts as well as plugins, find replace files, and data files.

Version 0.5.0

  • The content tree is moved to a .build-files directory and the build occurs from those files.

  • Scripts inside the scripts/file-prep directory are run over txt files during the move to the .build-files directory to do things like find and replace or any other pre-processing work that needs to be done.

Version 0.4.0

Sept. 24, 2025

  • renamed highlight to highlight_file (highlight shows a deprecation message)

  • renamed markdown to markdown_file (markdown shows a deprecation message)

Version 0.3.0

Sept. 6, 2025

  • Ready for general personal use

  • See home page for details on features and functionality.

JSON Data Test

Processing .txt files with MiniJinja Worked!

File Details


{
  "extension": "html",
  "file_move_type": "Transform",
  "folder": "",
  "input_path": "index.html",
  "name": "index.html",
  "output_folder": "",
  "output_name": "index.html",
  "parent_folder_name": null,
  "stem": "index"
}