How all the sites under johnesco.github.io are set up
All GitHub Pages sites share a single GitHub account (Johnesco). There are two deployment patterns:
| Pattern | How it works | Deploy trigger |
|---|---|---|
| Direct | Entire repo is the site. Push to main and GitHub serves it. |
git push |
| Actions | Only the web/ subdirectory is deployed via a GitHub Actions workflow. |
git push triggers .github/workflows/deploy-pages.yml |
| URL | Repo | Local path | Deploy | What it is |
|---|---|---|---|---|
| johnesco.github.io | Johnesco.github.io | C:\code\Johnesco.github.io\ |
Direct | Landing page, portfolio hub, small apps |
| /zork1/ | zork1 | C:\code\i7\zork1\ |
Actions | Zork I — Inform 7 Edition (4 versions) |
| /dracula/ | dracula | C:\code\i7\dracula\ |
Actions | Dracula — Inform 7 game |
| /RNG/ | RNG | C:\code\i7\RNG\ |
Actions | RNG — Inform 7 practice game |
The Johnesco.github.io repo is a special GitHub user pages repository.
Everything in the repo root is served directly at https://johnesco.github.io/.
No build step, no workflow — just push and it's live.
The Inform 7 game repos contain source code, tests, and build artifacts that should NOT be published.
Only the web/ subdirectory gets deployed. A GitHub Actions workflow handles this:
All three Inform 7 projects use the same workflow file:
name: Deploy to GitHub Pages
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: web
- id: deployment
uses: actions/deploy-pages@v4
The key line is path: web — only the web/ directory becomes the site root.
To publish a new Inform 7 game (or any project) at johnesco.github.io/<name>/:
gh repo create Johnesco/<name> --public --source=..github/workflows/deploy-pages.ymlweb/ directorygh api repos/Johnesco/<name>/pages -X POST -f build_type=workflowmain — the workflow deploys automaticallyC:\code\i7\inform7\tools\web\setup-web.sh to bootstrap the web/
directory with Parchment libraries and the base64-encoded game binary.
Inform 7 compiles to a .ulx (Glulx) binary. To play in a browser:
.ulx file is base64-encoded and wrapped as JSONP: processBase64Zcode('...')main.js (Parchment loader) fetches this file via JSONPSeven library files are required in web/lib/parchment/:
| File | Role |
|---|---|
jquery.min.js | DOM library |
main.js | Parchment game loader |
main.css | Layout styling |
parchment.css | Engine styling |
parchment.js | Engine variant |
quixe.js | JS Glulx interpreter (loaded at runtime) |
glulxe.js | WASM Glulx interpreter (loaded at runtime) |
quixe.js or glulxe.js is missing,
the page loads fine but then fails with "Error loading engine: 404".
These engine files are fetched asynchronously by main.js, so the error
only appears after the page renders. Always copy all seven files.