Commit Graph

100 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
e6e96ac8f9 Check local disk before VFS, removing need for manual vfs.track()
exists() and olderThan() now check the local filesystem first and only
consult the VFS as a fallback. This means freshly written files are
found naturally without callers needing to register them.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 09:27:00 -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
fc4aa746c3 Re-enable EU/JP/AP updaters 2026-02-16 16:32:56 -08:00
Matt Isenhower
4f482f3a40 Add unit tests for LocalizationProcessor and br2nl
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:55:31 -08:00
Matt Isenhower
38caca3e48 Add unit tests for ImageProcessor
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:45:20 -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
e6004154b9 Migrate ESLint to v9 with flat config
- eslint: 8.57.0 → 9.39.2
- eslint-plugin-vue: 9.23.0 → 10.8.0
- eslint-plugin-jsdoc: 48.2.1 → 62.5.5
- Replaced .eslintrc.cjs with eslint.config.mjs (flat config)
- Removed @vue/eslint-config-airbnb and eslint-plugin-import
- Added @eslint/js, globals, vue-eslint-parser, typescript as deps
- Removed stale eslint-disable comments for import/no-unresolved
- Simplified lint script (ESLint 9 handles extensions/ignores via config)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 11:02:09 -08:00
Matt Isenhower
c93854c610 Improve error logging for data loading and localization
Replace silent error handling with descriptive messages: log
HTTP status in i18n locale loading, log response details in
data store fetch, and warn on unexpected localization file
read errors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 20:04:34 -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
6dc7fd0bdb Download private storage before pulling data from Splatnet
Some checks are pending
Build frontend / build (20.x) (push) Waiting to run
Deploy / deploy-frontend (push) Waiting to run
Deploy / deploy-backend (push) Waiting to run
Fix code styles / build (push) Waiting to run
2024-12-14 16:02:49 -08:00
Matt Isenhower
06806c9de4 Disable non-US updaters for now
Some checks failed
Build frontend / build (20.x) (push) Has been cancelled
Deploy / deploy-frontend (push) Has been cancelled
Deploy / deploy-backend (push) Has been cancelled
Fix code styles / build (push) Has been cancelled
2024-12-12 09:20:14 -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
330a299e3e Ignore a weird issue with ESLint for now 2024-11-22 11:50:56 -08: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
441c0b262f Run all update operations in parallel 2024-11-20 21:45:56 -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
279671896e Formatting 2024-11-20 21:16:29 -08:00
Matt Isenhower
10c082a1c2 Retrieve localizations in parallel 2024-11-20 21:13:40 -08:00
Matt Isenhower
0fe794007e Prevent storing invalid images 2024-11-18 20:33:33 -08:00
Matt Isenhower
34c2d65b15 Download images concurrently 2024-11-17 21:16:24 -08:00
Matt Isenhower
16cf16e157 Fix some mistakes 2024-11-17 19:50:45 -08:00
Matt Isenhower
c286779cdc Linter 2024-11-17 19:35:17 -08:00
Matt Isenhower
cb76f65783 Add S3 syncer 2024-11-17 19:35:00 -08:00
Matt Isenhower
98bccc246b Update S3 config 2024-11-17 19:18:26 -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
c6091d822e Fix import errors 2024-03-17 10:12:13 -07:00
Matt Isenhower
8b55a5deba Fix linting issues 2024-03-16 22:31:20 -07:00
Matt Isenhower
3b85e1f59b Report to Sentry when an update fails 2023-12-02 17:25:46 -08: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
cde9aa111c Fix a bug causing localizations to be pulled more often than needed 2023-08-30 16:26:26 -07: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
e4e6051999 Run linter 2023-06-25 20:59:43 -07:00
Matt Isenhower
edfeb9b51c Retrieve translations for events 2023-06-01 09:32:42 -07:00
Matt Isenhower
b9ed1ff5ab Delete files after archiving them 2023-05-31 18:01:49 -07:00
Matt Isenhower
0e4d059602 Automatically archive new data 2023-05-30 20:46:32 -07:00
Matt Isenhower
f88538a798 Disable auto-delete for now 2023-05-30 20:18:04 -07:00