summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElizabeth Alexander Hunt <me@liz.coffee>2026-07-23 10:01:16 -0700
committerElizabeth Alexander Hunt <me@liz.coffee>2026-07-23 10:02:47 -0700
commit8ee2b45b5b889924e91f25f8072dbd584680315e (patch)
tree70ecacc0cf04ca1a0987dea3dab0fd7b874ff75f
parent8e09d75db41961ed72b0d12dcb5337049dda77ac (diff)
downloadlizdotcoffee-8ee2b45b5b889924e91f25f8072dbd584680315e.tar.gz
lizdotcoffee-8ee2b45b5b889924e91f25f8072dbd584680315e.zip
Add commit hash
-rwxr-xr-x.ci/ci.cjs8
-rw-r--r--.ci/ci.ts1
-rw-r--r--.ci/package-lock.json402
-rw-r--r--.ci/package.json7
-rw-r--r--.ci/tsconfig.json4
-rw-r--r--Dockerfile3
-rw-r--r--html/index.php12
7 files changed, 416 insertions, 21 deletions
diff --git a/.ci/ci.cjs b/.ci/ci.cjs
index b9d91e4..8f9c6f0 100755
--- a/.ci/ci.cjs
+++ b/.ci/ci.cjs
@@ -5044,10 +5044,12 @@ var BasePipelineBuilder = class {
};
var DefaultGitHookPipelineBuilder = class extends BasePipelineBuilder {
remoteUrl;
+ rev;
refname;
constructor(remoteUrl = process.env.remote, rev = process.env.rev, refname = process.env.refname) {
super();
this.remoteUrl = remoteUrl;
+ this.rev = rev;
this.refname = refname;
this.addStage({
parallelJobs: [
@@ -5065,6 +5067,9 @@ var DefaultGitHookPipelineBuilder = class extends BasePipelineBuilder {
getSourceDestination() {
return this.remoteUrl.replace(".git", "").split("/").at(-1) ?? "src";
}
+ getRev() {
+ return this.rev;
+ }
getBranch() {
const branchRefPrefix = "refs/heads/";
return this.refname.split(branchRefPrefix).at(1);
@@ -5103,7 +5108,8 @@ var getPipeline = () => {
context: gitHookPipeline.getSourceDestination(),
registry: REGISTRY,
namespace: NAMESPACE,
- imageTag: branch
+ imageTag: branch,
+ commit: gitHookPipeline.getRev()
};
const adeliePackageBuild = {
type: "build_docker_image.js",
diff --git a/.ci/ci.ts b/.ci/ci.ts
index ac4c9b4..1abbbc1 100644
--- a/.ci/ci.ts
+++ b/.ci/ci.ts
@@ -26,6 +26,7 @@ const getPipeline = () => {
registry: REGISTRY,
namespace: NAMESPACE,
imageTag: branch,
+ commit: gitHookPipeline.getRev(),
};
const adeliePackageBuild: BuildDockerImageJob = {
diff --git a/.ci/package-lock.json b/.ci/package-lock.json
index b400133..0b279a3 100644
--- a/.ci/package-lock.json
+++ b/.ci/package-lock.json
@@ -5,17 +5,18 @@
"packages": {
"": {
"dependencies": {
- "@emprespresso/ci_model": "^0.3.0"
+ "@emprespresso/ci_model": "^0.4.0"
},
"devDependencies": {
- "@types/node": "^24.10.1",
- "esbuild": "0.25.5"
+ "@types/node": "^24.13.3",
+ "esbuild": "0.25.5",
+ "typescript": "^7.0.2"
}
},
"node_modules/@emprespresso/ci_model": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@emprespresso/ci_model/-/ci_model-0.3.0.tgz",
- "integrity": "sha512-Ik7hYZXqsTr+VH70F+ms8HGHb0QeSOpojiFYgQoyW4iXvEdih5jsAH5npWOqxOHviynRu8PIeqJ3z5HizvO1JQ==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emprespresso/ci_model/-/ci_model-0.4.0.tgz",
+ "integrity": "sha512-pdX0LngjzuRtTQLgu1koKjdrAxpBI003XUM6ryVNeCF71tJjEjGAbOGOXoqRjkLgHWWA8uks3rSbk1OrcPFa+A==",
"dependencies": {
"@emprespresso/pengueno": "^0.0.17"
}
@@ -473,13 +474,353 @@
}
},
"node_modules/@types/node": {
- "version": "24.10.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.3.tgz",
- "integrity": "sha512-gqkrWUsS8hcm0r44yn7/xZeV1ERva/nLgrLxFRUGb7aoNMIJfZJ3AC261zDQuOAKC7MiXai1WCpYc48jAHoShQ==",
+ "version": "24.13.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz",
+ "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "undici-types": "~7.16.0"
+ "undici-types": "~7.18.0"
+ }
+ },
+ "node_modules/@typescript/typescript-aix-ppc64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz",
+ "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-darwin-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz",
+ "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-darwin-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz",
+ "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-freebsd-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz",
+ "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-freebsd-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz",
+ "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-arm": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz",
+ "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz",
+ "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-loong64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz",
+ "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-mips64el": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz",
+ "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-ppc64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz",
+ "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-riscv64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz",
+ "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-s390x": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz",
+ "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz",
+ "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-netbsd-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz",
+ "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-netbsd-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz",
+ "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-openbsd-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz",
+ "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-openbsd-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz",
+ "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-sunos-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz",
+ "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-win32-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz",
+ "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-win32-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz",
+ "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
}
},
"node_modules/esbuild": {
@@ -533,10 +874,45 @@
"node": ">=16.9.0"
}
},
+ "node_modules/typescript": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz",
+ "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc"
+ },
+ "engines": {
+ "node": ">=16.20.0"
+ },
+ "optionalDependencies": {
+ "@typescript/typescript-aix-ppc64": "7.0.2",
+ "@typescript/typescript-darwin-arm64": "7.0.2",
+ "@typescript/typescript-darwin-x64": "7.0.2",
+ "@typescript/typescript-freebsd-arm64": "7.0.2",
+ "@typescript/typescript-freebsd-x64": "7.0.2",
+ "@typescript/typescript-linux-arm": "7.0.2",
+ "@typescript/typescript-linux-arm64": "7.0.2",
+ "@typescript/typescript-linux-loong64": "7.0.2",
+ "@typescript/typescript-linux-mips64el": "7.0.2",
+ "@typescript/typescript-linux-ppc64": "7.0.2",
+ "@typescript/typescript-linux-riscv64": "7.0.2",
+ "@typescript/typescript-linux-s390x": "7.0.2",
+ "@typescript/typescript-linux-x64": "7.0.2",
+ "@typescript/typescript-netbsd-arm64": "7.0.2",
+ "@typescript/typescript-netbsd-x64": "7.0.2",
+ "@typescript/typescript-openbsd-arm64": "7.0.2",
+ "@typescript/typescript-openbsd-x64": "7.0.2",
+ "@typescript/typescript-sunos-x64": "7.0.2",
+ "@typescript/typescript-win32-arm64": "7.0.2",
+ "@typescript/typescript-win32-x64": "7.0.2"
+ }
+ },
"node_modules/undici-types": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
- "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "version": "7.18.2",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+ "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
"dev": true,
"license": "MIT"
}
diff --git a/.ci/package.json b/.ci/package.json
index e8b3c72..e71148e 100644
--- a/.ci/package.json
+++ b/.ci/package.json
@@ -4,11 +4,12 @@
"clean": "rm -rf dist ci.cjs"
},
"dependencies": {
- "@emprespresso/ci_model": "^0.3.0"
+ "@emprespresso/ci_model": "^0.4.0"
},
"devDependencies": {
- "@types/node": "^24.10.1",
- "esbuild": "0.25.5"
+ "@types/node": "^24.13.3",
+ "esbuild": "0.25.5",
+ "typescript": "^7.0.2"
},
"files": [
"dist/**/*",
diff --git a/.ci/tsconfig.json b/.ci/tsconfig.json
index 7cfeadc..6e44f85 100644
--- a/.ci/tsconfig.json
+++ b/.ci/tsconfig.json
@@ -3,7 +3,6 @@
"target": "ES2022",
"module": "ESNext",
"lib": ["ES2022"],
- "moduleResolution": "node",
"outDir": "./dist",
"rootDir": "./",
"composite": true,
@@ -21,7 +20,8 @@
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true,
"noImplicitReturns": true,
- "noFallthroughCasesInSwitch": true
+ "noFallthroughCasesInSwitch": true,
+ "types": ["node"]
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
diff --git a/Dockerfile b/Dockerfile
index 18fb23b..749feba 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,6 +9,9 @@ RUN rm -f /usr/share/nginx/html/index.html /usr/share/nginx/html/50x.html
COPY html /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
+ARG COMMIT=unknown
+RUN printf '%s' "$COMMIT" > /usr/share/nginx/commit
+
EXPOSE 80
CMD ["sh", "-c", "php-fpm84 -D && nginx -g 'daemon off;'"]
diff --git a/html/index.php b/html/index.php
index 12660e8..f2afded 100644
--- a/html/index.php
+++ b/html/index.php
@@ -1,6 +1,8 @@
<?php
$p = isset($_GET['p']) && $_GET['p'] === '1' ? 1 : 0;
+$commit = trim(@file_get_contents('/usr/share/nginx/commit') ?: '');
+
$pronounCount = 0;
function pronoun(...$forms) {
global $p, $pronounCount;
@@ -103,14 +105,14 @@ $penguin = implode(' ', array_map($gen, range(1, $n)));
<body>
<h1><?= pronoun('Elizabeth', 'Alexander') ?> Hunt (<?= pronoun('she', 'he') ?>) (ca 2003)</h1>
<div>
- [me at <a href="https://en.wikipedia.org/wiki/Logarithmic_integral_function" target="_blank">Li(z)</a> dot coffee (<a class="tt" href="mailto:me@liz.coffee">mailto</a>)] ·
+ [me at <a href="https://en.wikipedia.org/wiki/Logarithmic_integral_function" target="_blank">li(z)</a> dot coffee (<a class="tt" href="mailto:me@liz.coffee">mailto</a>)] ·
[<a href="https://code.liz.coffee">git hub</a>] ·
[<a href="https://linkedin.com/in/emprespresso">linkedin</a>] ·
[<a href="https://instagram.com/emprespresso">instagram</a>] ·
[<a href="https://x.com/emprespresso">twitter</a>]
</div>
- <marquee>If you <a href="https://web.archive.org/web/20260720071542/https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/marquee">don't like the marquee tag</a> then <?= pronoun('she', 'he') ?> will find you and <?= pronoun('she', 'he') ?> will blast you to smithereens.</marquee>
+ <marquee>If you <a href="https://web.archive.org/web/20260720071542/https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/marquee">take away <?= pronoun('her', 'his') ?> marquee tag</a> then <?= pronoun('she', 'he') ?> will find you and <?= pronoun('she', 'he') ?> will blast you to smithereens.</marquee>
<hr />
<div><p><?= pronoun('She', 'He') ?> is not particularly exceptional at anything, but can functionally do a fair bit of stuff, of which extremely variable ability perhaps is the only exceptional thing about <?= pronoun('her', 'him') ?>.</p></div>
@@ -128,6 +130,12 @@ $penguin = implode(' ', array_map($gen, range(1, $n)));
<p>Gus! Bread!</p>
<div><img src="assets/gus.jpeg" width="300"> <img src="assets/bread.jpeg" width="300"></div>
<div style="display: flex; align-items: center; justify-content: center;"><img width="100" src="assets/penguin.gif"><a href="https://liz.coffee"><img src="https://adelie.liz.coffee/img/blinkies/liz--coffee.gif" width="150" height="20"></a></div>
+ <div>
+<?php if ($commit !== ''): ?>
+ commit <a href="https://code.liz.coffee/lizdotcoffee.git/commit/?id=<?= htmlspecialchars($commit, ENT_QUOTES) ?>"><?= htmlspecialchars(substr($commit, 0, 8), ENT_QUOTES) ?></a>
+<?php endif; ?>
+ built with <a href="https://code.liz.coffee/ci.git/tree/">lizCI</a>
+ </div>
<hr>
<br>