Repo for sharing things
  • HTML 99.2%
  • Just 0.8%
Find a file
emet f5bf70bbf8
All checks were successful
Sync to Pages / sync (push) Successful in 3s
chore(nslb): refresh scaffolds for current schema
2026-05-07 15:15:16 -05:00
.claude chore(nslb): refresh scaffolds for current schema 2026-05-07 15:15:16 -05:00
.forgejo/workflows fix(ci): use nix runner label 2026-01-09 12:14:20 -06:00
a774 feat(a774): UX enhancements - progress bar, scroll spy, a11y, print styles 2026-01-09 18:30:27 -06:00
asa/leylines fix(asa): recover leylines page from git-pages blob storage 2026-03-27 22:48:09 -05:00
cmp fix(cmp): remove signal-decoder.md from terminal ls and cat 2026-03-28 02:56:54 -05:00
h2 fix(h2): soften tablet timing from 90s to 10-15 min window 2026-04-05 13:22:28 -05:00
.gitattributes chore(nslb): initialize NSLB gitignore + gitattributes + justfile 2026-04-27 11:16:09 -05:00
.gitignore chore(nslb): initialize NSLB gitignore + gitattributes + justfile 2026-04-27 11:16:09 -05:00
justfile chore(nslb): initialize NSLB gitignore + gitattributes + justfile 2026-04-27 11:16:09 -05:00
README.md docs: fix README — topic-based paths, not author names 2026-03-27 23:37:30 -05:00

trebuchet

Shared static pages served at pages.databender.io/trebuchet/.

How to publish

  1. Add your page as a directory named by topic/purpose with an index.html:

    my-project/
    my-project/index.html
    my-project/style.css      (optional)
    my-project/assets/...     (optional)
    
  2. Commit and push to master:

    git add my-project/
    git commit -m "feat(my-project): short description"
    git push origin master
    
  3. CI automatically syncs master to the pages branch and triggers a rebuild. Your page will be live at:

    https://pages.databender.io/trebuchet/my-project/
    

Rules

  • Push to master only. Never push directly to the pages branch — CI force-syncs master to pages on every push. Direct pages-branch commits will be overwritten and lost.
  • Don't delete /data/git-pages/ on the server. The git-pages cache rebuilds from the pages branch via webhook. If you delete the cache, you must manually trigger a rebuild (see below).
  • Don't modify the webhook or git-pages service unless you understand the full chain: Forgejo webhook > http://127.0.0.1:8787/trebuchet/ > git-pages clones pages branch > serves content.

Access control

Bot blocking is enabled on pages.databender.io. Browsers work normally. Programmatic access (curl/wget) requires the API key:

curl -H "X-Api-Key: $GIT_PAGES_API_KEY" https://pages.databender.io/trebuchet/my-project/

The $GIT_PAGES_API_KEY env var is available on all fleet devices in Fish shell.

How it works

git push origin master
  > CI: git push --force origin HEAD:pages
    > Forgejo webhook POST to http://127.0.0.1:8787/trebuchet/
      > git-pages clones emet/trebuchet.git pages branch
        > content served at pages.databender.io/trebuchet/

Manual rebuild (emergency only)

If the git-pages cache is lost or stale, run on acc01ade:

curl -X POST \
  -H "Host: emet.pages.databender.io" \
  -H "Content-Type: application/json" \
  -H "X-Forgejo-Event: push" \
  -H "X-Forgejo-Delivery: $(uuidgen)" \
  -d '{"ref":"refs/heads/pages","repository":{"full_name":"emet/trebuchet","name":"trebuchet","owner":{"login":"emet"},"clone_url":"https://git.databender.io/emet/trebuchet.git"}}' \
  http://127.0.0.1:8787/trebuchet/

The POST path must be /trebuchet/ (not /). Posting to / triggers an index-repo rebuild which will fail.

Current pages

Path Description
/trebuchet/a774/ The Testament of a774
/trebuchet/asa/leylines/ Ley Lines of Earth
/trebuchet/cmp/ Algorithmic Trading Research