5 Commits

Author SHA1 Message Date
fd8b2336ef Switch to bundled altcha
All checks were successful
Build Production Image / Build Production Image (push) Successful in 2m21s
2025-11-03 18:38:40 -08:00
fa89e86a2f Update board of directors positions 2025-11-03 18:37:14 -08:00
29ffaca0f7 Upgrade to node 22
Some checks failed
Build Production Image / Build Production Image (push) Failing after 3m9s
2025-09-20 15:09:36 -07:00
58a0260ebb Switch to altcha for listmonk 2025-09-20 15:09:22 -07:00
72dcb42147 Update action workflow versions
Some checks failed
Build Production Image / Build Production Image (push) Failing after 3m2s
2025-03-17 21:31:48 -07:00
6 changed files with 66 additions and 15 deletions

View File

@@ -15,17 +15,17 @@ jobs:
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2 uses: docker/setup-buildx-action@v3
- name: Login to Gitea Docker registry - name: Login to Gitea Docker registry
uses: docker/login-action@v2 uses: docker/login-action@v3
with: with:
registry: git.grosinger.net registry: git.grosinger.net
username: tgrosinger username: tgrosinger
password: ${{ secrets.CONTAINER_REGISTRY_ACCESS_TOKEN }} password: ${{ secrets.CONTAINER_REGISTRY_ACCESS_TOKEN }}
- name: Build and push - name: Build and push
uses: docker/build-push-action@v4 uses: docker/build-push-action@v6
with: with:
context: . context: .
push: true push: true

View File

@@ -1,4 +1,4 @@
FROM docker.io/library/node:18-alpine AS build-env FROM docker.io/library/node:22-alpine AS build-env
ENV NODE_ENV=production ENV NODE_ENV=production
ENV PORT=3000 ENV PORT=3000

52
package-lock.json generated
View File

@@ -22,6 +22,7 @@
"@types/react": "18.2.18", "@types/react": "18.2.18",
"@types/react-dom": "18.2.7", "@types/react-dom": "18.2.7",
"@types/webpack-env": "^1.18.1", "@types/webpack-env": "^1.18.1",
"altcha": "2.2.3",
"autoprefixer": "^10.4.12", "autoprefixer": "^10.4.12",
"cheerio": "^1.0.0-rc.12", "cheerio": "^1.0.0-rc.12",
"clsx": "^1.2.1", "clsx": "^1.2.1",
@@ -67,6 +68,12 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/@altcha/crypto": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/@altcha/crypto/-/crypto-0.0.1.tgz",
"integrity": "sha512-qZMdnoD3lAyvfSUMNtC2adRi666Pxdcw9zqfMU5qBOaJWqpN9K+eqQGWqeiKDMqL0SF+EytNG4kR/Pr/99GJ6g==",
"license": "MIT"
},
"node_modules/@babel/runtime": { "node_modules/@babel/runtime": {
"version": "7.22.6", "version": "7.22.6",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz",
@@ -559,6 +566,19 @@
"url": "https://opencollective.com/unts" "url": "https://opencollective.com/unts"
} }
}, },
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.18.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
"integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rushstack/eslint-patch": { "node_modules/@rushstack/eslint-patch": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz",
@@ -1143,6 +1163,18 @@
"ajv": "^6.9.1" "ajv": "^6.9.1"
} }
}, },
"node_modules/altcha": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/altcha/-/altcha-2.2.3.tgz",
"integrity": "sha512-LcGCNTOYtkcRthJgFU5ycgVE6ffcp3/WMSrAMri/UN+WcBEwfzb0RnUmhWee9VA52cHUL9ONeQsrE/zCkUoZiQ==",
"license": "MIT",
"dependencies": {
"@altcha/crypto": "^0.0.1"
},
"optionalDependencies": {
"@rollup/rollup-linux-x64-gnu": "4.18.0"
}
},
"node_modules/ansi-align": { "node_modules/ansi-align": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -10550,6 +10582,11 @@
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
"integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="
}, },
"@altcha/crypto": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/@altcha/crypto/-/crypto-0.0.1.tgz",
"integrity": "sha512-qZMdnoD3lAyvfSUMNtC2adRi666Pxdcw9zqfMU5qBOaJWqpN9K+eqQGWqeiKDMqL0SF+EytNG4kR/Pr/99GJ6g=="
},
"@babel/runtime": { "@babel/runtime": {
"version": "7.22.6", "version": "7.22.6",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz",
@@ -10864,6 +10901,12 @@
"tslib": "^2.6.0" "tslib": "^2.6.0"
} }
}, },
"@rollup/rollup-linux-x64-gnu": {
"version": "4.18.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
"integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
"optional": true
},
"@rushstack/eslint-patch": { "@rushstack/eslint-patch": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz",
@@ -11354,6 +11397,15 @@
"peer": true, "peer": true,
"requires": {} "requires": {}
}, },
"altcha": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/altcha/-/altcha-2.2.3.tgz",
"integrity": "sha512-LcGCNTOYtkcRthJgFU5ycgVE6ffcp3/WMSrAMri/UN+WcBEwfzb0RnUmhWee9VA52cHUL9ONeQsrE/zCkUoZiQ==",
"requires": {
"@altcha/crypto": "^0.0.1",
"@rollup/rollup-linux-x64-gnu": "4.18.0"
}
},
"ansi-align": { "ansi-align": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",

View File

@@ -24,6 +24,7 @@
"@types/react": "18.2.18", "@types/react": "18.2.18",
"@types/react-dom": "18.2.7", "@types/react-dom": "18.2.7",
"@types/webpack-env": "^1.18.1", "@types/webpack-env": "^1.18.1",
"altcha": "2.2.3",
"autoprefixer": "^10.4.12", "autoprefixer": "^10.4.12",
"cheerio": "^1.0.0-rc.12", "cheerio": "^1.0.0-rc.12",
"clsx": "^1.2.1", "clsx": "^1.2.1",

View File

@@ -72,11 +72,11 @@ export default function Club() {
</thead> </thead>
<tbody className="divide-y divide-gray-200 "> <tbody className="divide-y divide-gray-200 ">
<tr> <tr>
<TableLeftHeading>Lisa Pedersen</TableLeftHeading> <TableLeftHeading>Leslie Brown</TableLeftHeading>
<TableCell>President</TableCell> <TableCell>President</TableCell>
</tr> </tr>
<tr> <tr>
<TableLeftHeading>Betsy Wareham</TableLeftHeading> <TableLeftHeading>Lisa Pedersen</TableLeftHeading>
<TableCell>Vice President</TableCell> <TableCell>Vice President</TableCell>
</tr> </tr>
<tr> <tr>
@@ -84,15 +84,11 @@ export default function Club() {
<TableCell>Secretary</TableCell> <TableCell>Secretary</TableCell>
</tr> </tr>
<tr> <tr>
<TableLeftHeading>Tony Grosinger</TableLeftHeading> <TableLeftHeading>David Clough</TableLeftHeading>
<TableCell>Treasurer</TableCell> <TableCell>Treasurer</TableCell>
</tr> </tr>
<tr> <tr>
<TableLeftHeading>Leslie Brown</TableLeftHeading> <TableLeftHeading>Betsy Wareham</TableLeftHeading>
<TableCell>Director</TableCell>
</tr>
<tr>
<TableLeftHeading>Linn Hulley</TableLeftHeading>
<TableCell>Director</TableCell> <TableCell>Director</TableCell>
</tr> </tr>
</tbody> </tbody>

View File

@@ -1,5 +1,7 @@
"use client" "use client"
import "altcha";
export default function MailingListSignupForm(): React.JSX.Element { export default function MailingListSignupForm(): React.JSX.Element {
return (<form method="post" action="https://lists.orcas.community/subscription/form" className="listmonk-form"> return (<form method="post" action="https://lists.orcas.community/subscription/form" className="listmonk-form">
<div className="flex flex-col gap-y-2"> <div className="flex flex-col gap-y-2">
@@ -24,8 +26,8 @@ export default function MailingListSignupForm(): React.JSX.Element {
placeholder="Jane Doe" /> placeholder="Jane Doe" />
</div> </div>
<input className="hidden" type="checkbox" name="l" checked value="ea5f1e67-2ff0-4762-8893-0645e93a8306" /> <input className="hidden" type="checkbox" name="l" checked value="ea5f1e67-2ff0-4762-8893-0645e93a8306" />
<div className="h-captcha flex justify-center" data-sitekey="77aeddb4-cfda-4a3e-b262-0288a4e4664a"></div> <altcha-widget challengeurl="https://lists.orcas.community/api/public/captcha/altcha"></altcha-widget>
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
<input <input
className="w-full rounded-md flex justify-center border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2" className="w-full rounded-md flex justify-center border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"
id="submit" id="submit"