clone

a personal forge on plain git: static pages, stacked-diff reviews, signed local ci, repo sites and releases

Only owners with a public repo have a page

cat committed 51330a1
Every directory under the forge's root got an owner page, and forge user add makes one for each new user, so /<name>/ said who had an account. Owner pages are built only for owners with at least one public repo now, and a build of the index (or of one repo, or @owner) takes away the page of an owner who no longer has one, whose last repo went private or was removed. Scenario: no page for a user with no repos or only private ones, and one that goes when the last public repo does.
commit
51330a11d4f4f0236a1ee7b446832936c7f0beaa
parent
56690dd0e278f446809ace61f4728dce4b13c321
author
cat <admin@dev.site>
ci
✓ passed in 162s, signed by cat
kind
feat risk score 2.0 of 3, Jev's estimate
review
#30 Security: sign-in, invites, owner pages, lake, caps and the edge
ci attestation
forge-attestation 1
type ci
commit 51330a11d4f4f0236a1ee7b446832936c7f0beaa
tree 31ae4dfd1e299092acfc96efe3ea3b129d5bed36
script .forge/ci 8d2000a416f8160bcf710d98b72af9eb76287f58
result pass
exit 0
started 2026-10-19T07:50:26Z
duration 162s
runner (not shown here; refs/notes/ci has it)
system Darwin 25.5.0 arm64
env host
log sha256:e3cfb6eeb9991fa5e207c3ab5860b866030bb8da6a075c108701115fe27b15f3 320 lines
|pushed wip/i18n
|6b42563 running .forge/ci: greet.sh: say what it is
|  | sh: /bin/sh
|  | ok   greet
|6b42563 pass in 0s, signed
|pushed main
|remote: review #4: /dami/greet/reviews/4/
|pushed wip/i18n
|de64b24 running .forge/ci: wave at the world
|  | sh: /bin/sh
|  | FAIL greet : got 'hello, world o/', want 'hello, world'
|de64b24 fail in 0s, signed
|forge: 1 commit(s) did not pass
|remote: review #6: /dami/greet/reviews/6/
|pushed ana/wave
|f4cc753 running .forge/ci: update the test for the wave
|  | sh: /bin/sh
|  | ok   greet
|f4cc753 pass in 0s, signed
|remote: review #6: /dami/greet/reviews/6/
|pushed ana/wave
|warning: You appear to have cloned an empty repository.
|site home: deployed 79515b5 -> /sites/ana/dotfiles/home/
|created ana/notes
|remote: review #1: /ana/notes/reviews/1/
|pushed ana/todo
|landing #1 A todo list: ana/todo -> main
|c5e560a running .forge/ci: web, server and Python versions of greet
|  | sh: /bin/sh
|  | ok   greet
|c5e560a pass in 0s, signed
|pushed main
|cb833f5 running .forge/ci: messages: notes for the later regions
|  | sh: /bin/sh
|  | ok   greet
|cb833f5 pass in 0s, signed
|remote: review #7: /dami/greet/reviews/7/
|pushed dami/regions
|created dami/forge
|warning: You appear to have cloned an empty repository.
|site guide: mkdir -p guide/fonts && cp site/assets/fonts/*.woff2 guide/fonts/
|site guide: deployed 987b7dd -> /sites/dami/forge/guide/
|(node:63639) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time
|(Use `node --trace-warnings ...` to show where the warning was created)
|built ana/dotfiles in 1s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.vHNYYF/wt/demo/root/.forge/www
|(node:63845) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time
|(Use `node --trace-warnings ...` to show where the warning was created)
|built ana/notes in 1s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.vHNYYF/wt/demo/root/.forge/www
|(node:64067) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time
|(Use `node --trace-warnings ...` to show where the warning was created)
|built dami/forge in 1s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.vHNYYF/wt/demo/root/.forge/www
|(node:64277) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time
|(Use `node --trace-warnings ...` to show where the warning was created)
|built dami/greet in 4s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.vHNYYF/wt/demo/root/.forge/www
|(node:65154) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time
|(Use `node --trace-warnings ...` to show where the warning was created)
|built - in 1s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.vHNYYF/wt/demo/root/.forge/www
|235 of 235 pages render the same without 11ty
|guide: 8 files, links ok
|ok

Signature: good, cat

4 files changed, +48 -2
MREADME.md4+++-
Mbin/forge16++++++++++++++++
Mlib/forge.ts6+++++-
Atest/scenarios/people-owner-page.sh24++++++++++++++++++++++++
M README.md +3 -1
M bin/forge +16 -0
M lib/forge.ts +5 -1
A test/scenarios/people-owner-page.sh +24 -0