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
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
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
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
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