Commit Graph

72 Commits

Author SHA1 Message Date
Matt Isenhower
7125f30bfc Remove inline base64 image embedding from iCal output
No major calendar client renders these inline binary attachments.
The ATTACH URL is kept, which links to the publicly hosted image.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 09:44:04 -08:00
Matt Isenhower
41c9f9a315 Add VFS layer to avoid downloading files only needed for existence checks
Uses S3 ListObjectsV2 to build an in-memory file listing at startup,
allowing exists() and olderThan() to resolve from the listing instead
of requiring files on disk. sync:download now skips assets/splatnet/,
data/xrank/, data/festivals.ranking.*, and status-screenshots/.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 09:26:05 -08:00
Matt Isenhower
60c61e6231 Fix bug with invalid data on disk 2026-02-17 21:35:21 -08:00
Matt Isenhower
af526403a1 Update cron to v4 and ical-generator to v10
cron v4: No code changes needed (positional constructor args still supported).
ical-generator v10: Removed `new` keyword (now a factory function) and
switched from `attachments` property to `createAttachment()` method.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:09:19 -08:00
Matt Isenhower
8b11900905 Revert jsonpath-plus back to jsonpath
jsonpath v1.2.1 (published Feb 2025) fixed the security vulnerability
that prompted the switch to jsonpath-plus. Reverting to the original
package simplifies the code by removing the jsonpathQuery/jsonpathApply
wrapper functions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 15:56:05 -08:00
Matt Isenhower
7adb9c313e Add mkdirp utility to avoid verbose fs.mkdir calls
Added mkdirp() helper to app/common/fs.mjs that wraps
fs.mkdir(dir, { recursive: true }). Updated all call sites to use it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 11:09:02 -08:00
Matt Isenhower
8780463c66 Replace deprecated and unmaintained packages
- Removed mkdirp in favor of native fs.mkdir({ recursive: true })
- Replaced ecstatic (unmaintained since 2021) with sirv
- Replaced jsonpath (security vulnerability) with jsonpath-plus
  - Added jsonpathQuery/jsonpathApply helpers in app/common/util.mjs
- Updated sharp: 0.32.6 → 0.34.5
- Updated puppeteer-core: 23.8.0 → 24.37.3

Vulnerabilities reduced from 40 to 1 (only remaining: axios in
threads-api transitive dependency).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 11:05:49 -08:00
Matt Isenhower
011430f344 Fix code inconsistencies across frontend and backend
Use strict equality in TricolorBox, add async keyword to
CoopUpdater/GearUpdater getData() for consistency, and add
missing HMR accept for useCoopGearStore.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 20:04:05 -08:00
Matt Isenhower
ba44aec52a Make the data archive optional
Some checks failed
Deploy / deploy-frontend (push) Has been cancelled
Deploy / deploy-backend (push) Has been cancelled
2024-11-29 14:35:52 -05:00
Matt Isenhower
71965990bd Make festival update atomic
Some checks are pending
Deploy / deploy-frontend (push) Waiting to run
Deploy / deploy-backend (push) Waiting to run
2024-11-21 22:09:16 -08:00
Matt Isenhower
7d4b9cc038 Skip "no need to update" message 2024-11-20 21:46:45 -08:00
Matt Isenhower
fbdea0f3c2 Update X-Rank data in parallel 2024-11-20 21:39:39 -08:00
Matt Isenhower
002ca2e34a Update festival data in parallel 2024-11-20 21:39:12 -08:00
Matt Isenhower
10c082a1c2 Retrieve localizations in parallel 2024-11-20 21:13:40 -08:00
Matt Isenhower
34c2d65b15 Download images concurrently 2024-11-17 21:16:24 -08:00
Matt Isenhower
c726f25910 Fix X-Rank updater 2024-09-12 10:36:29 -07:00
Matt Isenhower
2736996f05 Tweak Splatfest updater to handle new paginated query 2024-09-05 08:01:12 -07:00
Matt Isenhower
37ee0c4dc9 Prefer single quotes and enforce semicolons 2024-03-17 10:20:17 -07:00
Matt Isenhower
e87a4b241d lint-fix 2024-03-17 10:15:18 -07:00
Matt Isenhower
8b55a5deba Fix linting issues 2024-03-16 22:31:20 -07:00
Matt Isenhower
cce839e3bd Tweak festival updater 2023-12-02 11:13:54 -08:00
Matt Isenhower
6173693520 Make updaters more configurable
This should reduce the number of queries needed during high-load times (like waiting for Splatfest results).
2023-12-02 11:06:45 -08:00
Matt Isenhower
6909cfb864 Cleanup 2023-12-02 10:21:29 -08:00
Matt Isenhower
77c1680bb9 Use new boss data 2023-11-29 20:09:20 -08:00
Matt Isenhower
10ee1f862a Fix festival ranking updater 2023-08-13 19:46:16 -07:00
Matt Isenhower
51348effc8 Prevent issues with nulls 2023-07-23 08:36:43 -07:00
Matt Isenhower
edfeb9b51c Retrieve translations for events 2023-06-01 09:32:42 -07:00
Matt Isenhower
840d45373a Move archives back to storage dir and use precise time for X-Rank 2023-05-30 19:33:37 -07:00
Matt Isenhower
69ea3962cb Fix a mistake 2023-05-23 17:51:46 -07:00
Matt Isenhower
ba54d94e09 Make data archives more accessible, and store only one file per hour 2023-05-23 17:48:30 -07:00
Matt Isenhower
ce838a7652 Fix broken X-Rank images 2023-04-29 09:24:45 -07:00
Matt Isenhower
4b142c890e Only update X-Rank details when needed 2023-04-22 14:33:51 -07:00
Matt Isenhower
142f2a82c5 Fix a bug with outdated festival data 2023-04-22 14:27:55 -07:00
Matt Isenhower
46fdbbe8c7 Clean up the way we detect whether an update is needed 2023-04-22 14:05:59 -07:00
Matt Isenhower
cda854de0b Add a utility function to check whether a file exists 2023-04-22 13:33:04 -07:00
Matt Isenhower
b7d47a297b Retrieve data for previous X-Rank seasons as well as current ones 2023-04-22 12:41:28 -07:00
Matt Isenhower
14f89d3eb8 Add stages.json 2023-04-20 09:49:42 -07:00
Matt Isenhower
03c2837a85 Don't add King Salmonid predictions for Eggstra Work schedules 2023-04-13 10:40:55 -07:00
Matt Isenhower
11372de7db Add King Salmonid guesses 2023-03-13 21:25:45 -07:00
Matt Isenhower
625a0b5422 Fix a mistake 2023-02-12 19:42:59 -08:00
Matt Isenhower
2c1a77e63a Improve readability for X-Rank season IDs 2023-02-12 09:22:36 -08:00
Matt Isenhower
8b2cd71e5f Add X-Rank leaderboard data 2023-02-12 09:07:02 -08:00
Matt Isenhower
63a4654481 Remove the redundant "current festival" updater
This was originally added as an experiment. It provides no additional data over the main festival updater and from looking at access logs nobody seems to actually be using it anyway.
2023-02-12 07:25:11 -08:00
Matt Isenhower
554fdd2e40 Retrieve localized names for each Splatfest 2023-02-11 15:27:49 -08:00
Matt Isenhower
916fa590a1 Cache festival detail data to reduce the number of requests needed 2023-02-11 14:48:44 -08:00
Matt Isenhower
2b6a37755f Set derived festival IDs in festival data 2023-02-11 14:31:34 -08:00
Matt Isenhower
9719317a53 Consolidate festival ID parsing functions 2023-02-11 14:25:52 -08:00
Samuel Elliott
30beaad6f3 Use decoded fest ID in ranking filename 2022-12-31 08:42:36 +00:00
Samuel Elliott
5455788cbe Fetch all fest ranking holders 2022-12-31 08:41:53 +00:00
Samuel Elliott
59277a01df Don't attempt to fetch fest rankings before result is available 2022-12-31 08:36:48 +00:00