Commit Graph

439 Commits

Author SHA1 Message Date
Matt Isenhower
19d1fb5d3d Move updaters onto public and private storage
Updaters take a storage object instead of touching the filesystem: a
publicStorage (what the site serves: data/, assets/) and a privateStorage
(updater state). Two implementations share one small interface
(exists / readJson / writeJson / readBytes / writeText / writeBytes):

- FilesystemStorage over a directory, used by npm run splatnet, so dist/
  and storage/ end up exactly as they always have and the S3 sync is
  untouched;
- BucketStorage over an R2 bucket binding (MemoryBucket in tests), with a
  thin per-run cache: exists() lists a directory once and answers from
  memory, readJson() parses a document once, and writeJson() skips the put
  when the content is unchanged.

The updater base class and localization processor keep their original
structure with awaits added; the processor reads its document lazily and
writes once per update, as splatoon3.ink's does. Objects written to a
bucket carry the content type and cache-control the S3 sync used to apply.

Tests cover the storage contract (run against both implementations), the
BucketStorage cache behaviour, MemoryBucket's R2-style listing, the
localization processor, the updater base, and each concrete updater.
scripts/compare-data.mjs compares two data directories ignoring SplatNet's
random ordering and ICS timestamps.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 09:50:14 -07:00
Matt Isenhower
2c636257f3 Replace axios with fetch
The SplatNet client now uses the global fetch, matching splatoon3.ink.
Non-2xx responses throw with the status. getImage returns a Uint8Array
and getText serves the language-file utility, which no longer reaches
into the HTTP client. updateGear fetches Inkipedia directly. axios is
removed; the web build never used it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 19:58:35 -07:00
Matt Isenhower
6a4ad0e0b0 Convert Node-side code to ES modules
Scope ESM to src/app, src/common, src/utility, and test with nested
package.json files, keeping .js filenames and leaving the web build alone.
regions.esm.js becomes regions.js. make-runnable is replaced by a small
action runner and module-alias by relative imports; both are removed.
npm scripts point at explicit entry files.

Output verified identical to the CommonJS run (differences are SplatNet's
own key and array ordering), and the Vue build and tests pass.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 19:50:05 -07:00
Matt Isenhower
477ca7f4ac Match Splatoon 3 directory browser styling
Some checks failed
Deploy / deploy-frontend (push) Has been cancelled
Deploy / deploy-backend (push) Has been cancelled
The initial Worker used a simplified renderer that omitted the established layout styles and folder/file icon markup.
2026-09-02 20:42:48 -07:00
Matt Isenhower
d1a4c6a531 Add R2 directory index Worker 2026-09-02 20:22:18 -07:00
Matt Isenhower
acd77f5b82 Revert "Configure Workers static asset deployment"
This reverts commit d3b51ec4b9.
2026-09-02 19:45:20 -07:00
Matt Isenhower
d3b51ec4b9 Configure Workers static asset deployment 2026-09-02 15:21:21 -07:00
Matt Isenhower
4158c4479f Merge pull request #59 from misenhower/codex/split-public-private-storage
Split public and private storage credentials
2026-09-02 14:46:19 -07:00
Matt Isenhower
40d752cd59 Split public and private storage credentials 2026-09-02 14:37:07 -07:00
Matt Isenhower
0ce45ba5da Fix locale loading and dev server
Some checks failed
Deploy / deploy-frontend (push) Has been cancelled
Deploy / deploy-backend (push) Has been cancelled
2026-08-30 20:53:56 -07:00
Matt Isenhower
37db282b64 Replace dotenv with Node env loader
Some checks failed
Deploy / deploy-frontend (push) Has been cancelled
Deploy / deploy-backend (push) Has been cancelled
2026-08-30 19:23:29 -07:00
Matt Isenhower
5f19ccd2be Fix Co-op localization JSONPath queries 2026-08-30 19:20:52 -07:00
Matt Isenhower
33a9f11557 Update npm dependencies 2026-08-30 18:56:38 -07:00
Matt Isenhower
3d6ac63152 Fix Bluesky image ratios
Some checks failed
Deploy / deploy-frontend (push) Has been cancelled
Deploy / deploy-backend (push) Has been cancelled
2024-11-30 10:03:20 -05:00
Matt Isenhower
73aadd0c0a Add data directory listing
Some checks failed
Deploy / deploy-frontend (push) Has been cancelled
Deploy / deploy-backend (push) Has been cancelled
2024-11-16 21:51:58 -08:00
Matt Isenhower
0f3ead5ec2 Replace Twitter with Bluesky
Some checks are pending
Deploy / deploy-frontend (push) Waiting to run
Deploy / deploy-backend (push) Waiting to run
2024-11-16 15:42:49 -08:00
Matt Isenhower
00ab4021bc Fix Twitter bot 2024-11-16 15:03:57 -08:00
Matt Isenhower
2530dcba0d Skip if already posted 2024-11-16 14:48:32 -08:00
Matt Isenhower
8c1bb01f29 Adapt Twitter bot for Bluesky 2024-11-16 14:28:20 -08:00
Matt Isenhower
6029efd782 Merge pull request #58 from misenhower/develop
Release
2024-11-16 13:32:15 -08:00
Matt Isenhower
67d1c7b351 Remove old shipit example
Some checks failed
Deploy / deploy-frontend (push) Has been cancelled
Deploy / deploy-backend (push) Has been cancelled
2024-11-16 13:27:32 -08:00
Matt Isenhower
daed626dc0 Split out upload/download sync actions 2024-11-16 13:27:14 -08:00
Matt Isenhower
a2e1482a93 Update example
Some checks failed
Deploy / deploy-frontend (push) Has been cancelled
Deploy / deploy-backend (push) Has been cancelled
2024-11-14 22:10:14 -08:00
Matt Isenhower
e140657ce2 Update Docker Compose configs 2024-11-14 22:00:09 -08:00
Matt Isenhower
5951d7e4a4 Update readme 2024-11-14 21:48:34 -08:00
Matt Isenhower
004d47863c Remove old shipit config 2024-11-14 21:43:52 -08:00
Matt Isenhower
a971587e38 Set cache control on data directory
Some checks are pending
Deploy / deploy-frontend (push) Waiting to run
Deploy / deploy-backend (push) Waiting to run
2024-11-13 21:44:40 -08:00
Matt Isenhower
7d71c60254 Sync after generating Twitter images 2024-11-13 21:15:16 -08:00
Matt Isenhower
82c1aeed59 Fix env var 2024-11-13 21:13:08 -08:00
Matt Isenhower
0dd34b3e74 Switch to Browserless 2024-11-13 20:13:57 -08:00
Matt Isenhower
b3bf6ee1b3 Add S3 website config 2024-11-13 18:12:58 -08:00
Matt Isenhower
e786302fb6 Fix image name
Some checks are pending
Deploy / deploy-frontend (push) Waiting to run
Deploy / deploy-backend (push) Waiting to run
2024-11-12 21:09:09 -08:00
Matt Isenhower
57b813265f Fix tags 2024-11-12 21:02:45 -08:00
Matt Isenhower
a31ff98945 Update backend deploy script 2024-11-12 20:54:11 -08:00
Matt Isenhower
091b9f45f7 Add backend deploy script 2024-11-12 20:18:17 -08:00
Matt Isenhower
32c547cb8d Fix a mistake 2024-11-12 19:50:20 -08:00
Matt Isenhower
f690bfe881 Specify environment 2024-11-12 19:41:23 -08:00
Matt Isenhower
f1c03aba20 Update branches 2024-11-12 19:34:54 -08:00
Matt Isenhower
9df8b826f2 Add frontend deployment script 2024-11-12 19:34:18 -08:00
Matt Isenhower
ac00c528f2 Update env var name 2024-11-12 19:27:50 -08:00
Matt Isenhower
31b03b5356 Apply sync filters in both directions 2024-11-12 08:17:09 -08:00
Matt Isenhower
0eb54d4cb6 Update Docker config 2024-11-08 08:26:28 -08:00
Matt Isenhower
4d948b751d Update Puppeteer 2024-11-07 20:31:53 -08:00
Matt Isenhower
f63378397d Update About page 2024-11-07 20:26:52 -08:00
Matt Isenhower
1009c239e7 Save public Twitter images even without Twitter credentials 2024-11-07 20:25:08 -08:00
Matt Isenhower
6d56079b67 Update start command 2024-11-07 20:16:59 -08:00
Matt Isenhower
38b5d16467 Fix the fix 2024-11-07 09:31:28 -08:00
Matt Isenhower
2997c985d2 Fix more build errors 2024-11-07 09:22:43 -08:00
Matt Isenhower
542245964b Fix a build error 2024-11-07 08:49:26 -08:00
Matt Isenhower
95c072cb6e Use separate eslint config file
Adapted from splatoon3.ink
2024-11-07 08:45:36 -08:00