From be2c38ac281cea1c9d8c8af139811c2750359fbe Mon Sep 17 00:00:00 2001 From: Trevor Taubitz Date: Sun, 22 Feb 2026 12:41:34 -0500 Subject: [PATCH 1/9] chore: Add additional image patterns to .gitattributes --- .gitattributes | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitattributes b/.gitattributes index 0e3c3f1..09104e2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,8 @@ *.png filter=lfs diff=lfs merge=lfs -text *.webp filter=lfs diff=lfs merge=lfs -text *.jpg filter=lfs diff=lfs merge=lfs -text +*.svg filter=lfs diff=lfs merge=lfs -text +*.jpeg filter=lfs diff=lfs merge=lfs -text +*.gif filter=lfs diff=lfs merge=lfs -text +*.bmp filter=lfs diff=lfs merge=lfs -text +*.tiff filter=lfs diff=lfs merge=lfs -text From 4762047efe9852251a24098e665ec837147ff56f Mon Sep 17 00:00:00 2001 From: Trevor Taubitz Date: Sun, 22 Feb 2026 13:00:58 -0500 Subject: [PATCH 2/9] chore: Switch to forked keystatic version --- .npmrc | 2 + keystatic.config.ts | 2 +- package-lock.json | 180 +++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 4 files changed, 182 insertions(+), 4 deletions(-) create mode 100644 .npmrc diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..506ab5a --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +@terrabitz:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN} \ No newline at end of file diff --git a/keystatic.config.ts b/keystatic.config.ts index bda0bf3..498ec7b 100644 --- a/keystatic.config.ts +++ b/keystatic.config.ts @@ -1,4 +1,4 @@ -import { config, fields, collection } from '@keystatic/core'; +import { config, fields, collection } from '@terrabitz/keystatic-core'; function contentField(collectionName: string) { return fields.markdoc({ diff --git a/package-lock.json b/package-lock.json index 70e0f9c..3c57140 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,8 +18,8 @@ "@cf-wasm/satori": "^0.3.5", "@fontsource/noto-sans": "^5.2.10", "@keystatic/astro": "^5.0.6", - "@keystatic/core": "^0.5.48", "@tailwindcss/vite": "^4.1.18", + "@terrabitz/keystatic-core": "^0.5.48-lfs.2", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "98.css": "^0.1.21", @@ -3666,6 +3666,7 @@ "resolved": "https://registry.npmjs.org/@keystatic/core/-/core-0.5.48.tgz", "integrity": "sha512-ar4zHMsG+YpQjIj2JT8utvAyyUN57eXTz0ibAr1MPkhTo75vQvgEzVHfBR65RZHJzmEix6iGbUYq3iJwPcVNfQ==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@braintree/sanitize-url": "^6.0.2", @@ -3748,6 +3749,7 @@ "resolved": "https://registry.npmjs.org/@markdoc/markdoc/-/markdoc-0.4.0.tgz", "integrity": "sha512-fSh4P3Y4E7oaKYc2oNzSIJVPDto7SMzAuQN1Iyx53UxzleA6QzRdNWRxmiPqtVDaDi5dELd2yICoG91csrGrAw==", "license": "MIT", + "peer": true, "engines": { "node": ">=14.7.0" }, @@ -3772,6 +3774,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -3781,6 +3784,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -3793,6 +3797,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", + "peer": true, "engines": { "node": ">= 4" } @@ -3801,13 +3806,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/@keystatic/core/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6806,6 +6813,175 @@ "vite": "^5.2.0 || ^6 || ^7" } }, + "node_modules/@terrabitz/keystatic-core": { + "version": "0.5.48-lfs.2", + "resolved": "https://npm.pkg.github.com/download/@terrabitz/keystatic-core/0.5.48-lfs.2/d897d038f9ae2a474a34031583596358fe59e768", + "integrity": "sha512-Dc/QuSZdO3jyiwQ1W4MWDBLbM5hwegZx2904bENf9ibNHX6iWQ5yWaOkSrTLsx/Fx6MfwaRxdPj6P+/DlpUx2A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@braintree/sanitize-url": "^6.0.2", + "@emotion/weak-memoize": "^0.3.0", + "@floating-ui/react": "^0.24.0", + "@internationalized/string": "^3.2.6", + "@keystar/ui": "^0.7.19", + "@markdoc/markdoc": "^0.4.0", + "@react-aria/focus": "^3.20.2", + "@react-aria/i18n": "^3.12.8", + "@react-aria/interactions": "^3.25.0", + "@react-aria/label": "^3.7.17", + "@react-aria/overlays": "^3.27.0", + "@react-aria/selection": "^3.24.0", + "@react-aria/utils": "^3.28.2", + "@react-aria/visually-hidden": "^3.8.22", + "@react-stately/collections": "^3.12.3", + "@react-stately/list": "^3.12.1", + "@react-stately/overlays": "^3.6.15", + "@react-stately/utils": "^3.10.6", + "@react-types/shared": "^3.29.0", + "@sindresorhus/slugify": "^1.1.2", + "@toeverything/y-indexeddb": "^0.10.0-canary.9", + "@ts-gql/tag": "^0.7.3", + "@types/react": "^19.0.8", + "@urql/core": "^5.0.4", + "@urql/exchange-auth": "^2.2.0", + "@urql/exchange-graphcache": "^7.1.2", + "@urql/exchange-persisted": "^4.3.0", + "cookie": "^1.0.0", + "emery": "^1.4.1", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "graphql": "^16.6.0", + "idb-keyval": "^6.2.1", + "ignore": "^5.2.4", + "is-hotkey": "^0.2.0", + "js-yaml": "^4.1.0", + "lib0": "^0.2.88", + "lru-cache": "^10.2.0", + "match-sorter": "^6.3.1", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-markdown": "^2.1.0", + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-mdxjs": "^3.0.0", + "minimatch": "^9.0.3", + "partysocket": "^0.0.22", + "prosemirror-commands": "^1.5.1", + "prosemirror-history": "^1.3.0", + "prosemirror-keymap": "^1.2.1", + "prosemirror-model": "^1.19.0", + "prosemirror-state": "^1.4.2", + "prosemirror-tables": "^1.3.4", + "prosemirror-transform": "^1.7.1", + "prosemirror-view": "^1.30.2", + "scroll-into-view-if-needed": "^3.0.3", + "slate": "^0.91.4", + "slate-history": "^0.86.0", + "slate-react": "^0.91.9", + "superstruct": "^1.0.4", + "unist-util-visit": "^5.0.0", + "urql": "^4.1.0", + "y-prosemirror": "^1.2.2", + "y-protocols": "^1.0.6", + "yjs": "^13.6.11" + }, + "peerDependencies": { + "react": "^18.2.0 || ^19.0.0", + "react-dom": "^18.2.0 || ^19.0.0" + } + }, + "node_modules/@terrabitz/keystatic-core/node_modules/@markdoc/markdoc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@markdoc/markdoc/-/markdoc-0.4.0.tgz", + "integrity": "sha512-fSh4P3Y4E7oaKYc2oNzSIJVPDto7SMzAuQN1Iyx53UxzleA6QzRdNWRxmiPqtVDaDi5dELd2yICoG91csrGrAw==", + "license": "MIT", + "engines": { + "node": ">=14.7.0" + }, + "optionalDependencies": { + "@types/markdown-it": "12.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/@terrabitz/keystatic-core/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@terrabitz/keystatic-core/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@terrabitz/keystatic-core/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@terrabitz/keystatic-core/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@terrabitz/keystatic-core/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/@terrabitz/keystatic-core/node_modules/minimatch": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", + "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@toeverything/y-indexeddb": { "version": "0.10.0-canary.9", "resolved": "https://registry.npmjs.org/@toeverything/y-indexeddb/-/y-indexeddb-0.10.0-canary.9.tgz", diff --git a/package.json b/package.json index 5603a40..af058a3 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,8 @@ "@cf-wasm/satori": "^0.3.5", "@fontsource/noto-sans": "^5.2.10", "@keystatic/astro": "^5.0.6", - "@keystatic/core": "^0.5.48", "@tailwindcss/vite": "^4.1.18", + "@terrabitz/keystatic-core": "^0.5.48-lfs.2", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "98.css": "^0.1.21", From 25a913ac5b27616418417c8197c04a0663ff5669 Mon Sep 17 00:00:00 2001 From: Trevor Taubitz Date: Sun, 22 Feb 2026 13:02:38 -0500 Subject: [PATCH 3/9] chore: Add permissions to GH token --- .github/workflows/pr-checks.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index c8506ef..a6a8d9e 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -7,6 +7,10 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +permissions: + contents: read + packages: read + jobs: lint: name: Lint From e5ddeecfa7bc3378514e6784bd2d3c73fba99f6d Mon Sep 17 00:00:00 2001 From: Trevor Taubitz Date: Sun, 22 Feb 2026 13:07:23 -0500 Subject: [PATCH 4/9] chore: Try explicitly passing env vars --- .github/workflows/pr-checks.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index a6a8d9e..b97e5e8 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -24,6 +24,8 @@ jobs: - name: Install dependencies run: npm ci + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: npm run lint:css @@ -43,6 +45,8 @@ jobs: - name: Install dependencies run: npm ci + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Run tests run: npm test @@ -65,6 +69,8 @@ jobs: - name: Install dependencies run: npm ci + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: build run: npm run build From ccfad74bc224d187bb810aadf5c7932d77237402 Mon Sep 17 00:00:00 2001 From: Trevor Taubitz Date: Sun, 22 Feb 2026 13:09:21 -0500 Subject: [PATCH 5/9] chore: Switch to job-specific permissions --- .github/workflows/pr-checks.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index b97e5e8..5c578de 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -7,14 +7,13 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true -permissions: - contents: read - packages: read - jobs: lint: name: Lint runs-on: ubuntu-latest + permissions: + contents: read + packages: read steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 @@ -32,7 +31,9 @@ jobs: unit-test: name: Unit Tests runs-on: ubuntu-latest - + permissions: + contents: read + packages: read steps: - uses: actions/checkout@v6 with: @@ -57,6 +58,7 @@ jobs: permissions: contents: read statuses: write + packages: read steps: - uses: actions/checkout@v6 with: From 01adb0de17e95b083ce7f6780ce70511ffe57594 Mon Sep 17 00:00:00 2001 From: Trevor Taubitz Date: Sun, 22 Feb 2026 13:25:45 -0500 Subject: [PATCH 6/9] chore: Proxy keystatic/core imports --- astro.config.mjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/astro.config.mjs b/astro.config.mjs index 2d71428..6b155e6 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -108,6 +108,11 @@ export default defineConfig({ }, vite: { + resolve: { + alias: { + '@keystatic/core': '@terrabitz/keystatic-core', + }, + }, plugins: [tailwindcss(), arraybuffer(), imagetools()], }, adapter: cloudflare({ From 0f75d460ec44d0914ab103d9af11c1d7efc8cfd5 Mon Sep 17 00:00:00 2001 From: Trevor Taubitz Date: Sun, 22 Feb 2026 13:32:00 -0500 Subject: [PATCH 7/9] Update src/content/anomalies/EID-112 --- src/content/anomalies/EID-112.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/anomalies/EID-112.md b/src/content/anomalies/EID-112.md index afff1b5..c9ace22 100644 --- a/src/content/anomalies/EID-112.md +++ b/src/content/anomalies/EID-112.md @@ -42,7 +42,7 @@ The anomaly is contained within a specialized temporal dampening field. The area ## Research Notes -Dr. Harrow's team has documented over 200 distinct audio recordings from the 1920s era. Analysis suggests a possible connection to historical events at the harbor. The temporal echo appears strongest during fog conditions. +Dr. Harrow's team has documented over 300 distinct audio recordings from the 1920s era. Analysis suggests a possible connection to historical events at the harbor. The temporal echo appears strongest during fog conditions. ## Warning From 1bb5985fe104f74364763f7c6b6cae6a7232b68d Mon Sep 17 00:00:00 2001 From: Trevor Taubitz Date: Sun, 22 Feb 2026 13:35:33 -0500 Subject: [PATCH 8/9] chore: Enable LFS support --- keystatic.config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keystatic.config.ts b/keystatic.config.ts index 498ec7b..06d0d48 100644 --- a/keystatic.config.ts +++ b/keystatic.config.ts @@ -25,7 +25,8 @@ const storage = import.meta.env.PUBLIC_KEYSTATIC_MODE === 'github' ? { repo: { owner: import.meta.env.PUBLIC_GITHUB_OWNER || '', name: import.meta.env.PUBLIC_GITHUB_REPO || '', - } + }, + lfs: true, } : { kind: 'local' as const } From 32cb9dca90d4847ed987674b52928e28c20f6b7f Mon Sep 17 00:00:00 2001 From: Trevor Taubitz Date: Sun, 22 Feb 2026 13:36:44 -0500 Subject: [PATCH 9/9] Update src/content/anomalies/EID-978 --- .../EID-978/1771785380018-redbox.png | 3 +++ src/content/anomalies/EID-978.md | 26 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/assets/content/anomalies/EID-978/1771785380018-redbox.png create mode 100644 src/content/anomalies/EID-978.md diff --git a/src/assets/content/anomalies/EID-978/1771785380018-redbox.png b/src/assets/content/anomalies/EID-978/1771785380018-redbox.png new file mode 100644 index 0000000..4391297 --- /dev/null +++ b/src/assets/content/anomalies/EID-978/1771785380018-redbox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9538ab8d9338d514732e037e01e72a5d5d6e00ca1bf4ea0cc6c9e8f04ab9d442 +size 2191865 diff --git a/src/content/anomalies/EID-978.md b/src/content/anomalies/EID-978.md new file mode 100644 index 0000000..eb70549 --- /dev/null +++ b/src/content/anomalies/EID-978.md @@ -0,0 +1,26 @@ +--- +id: EID-978 +name: The Red Box +classification: Class A +status: Uncontained +discoveryDate: 1996-05-18 +location: Northern Oregon +--- +EID-978 is a nondescript red box. It has no markings of any kind on any side. It is made out of a concrete material, weighing approximately 15.4 kilograms. It is not believed to be sentient, but does appear to have some psychic effects. + +Instances of EID-978 have occured in the following locations, though it's likely there have been many more undocumented occurances: + +- The Northern Oregon forest +- Locker 67 at ██████ stadium +- The janitor closet of EID-SITE-████ + +In each occurrence, EID-978 goes through a distinct lifecycle. + +- Phase 1: Exploration +- Phase 2: Extraction +- Phase 3: Exploitation +- Phase 4: Extinction + +In all known cases, it has first appeared to individuals who were undergoing a highly stressful time in their lives. It's not known whether this was coincidence or connected with EID-978's apparent psychic capabilities. + +![](@assets/content/anomalies/EID-978/1771785380018-redbox.png)