Commit Graph

625 Commits

Author SHA1 Message Date
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
6b686fb7f4 Add lazy loading to splatfest images to reduce concurrent requests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:08:18 -08:00
Matt Isenhower
94aa3d7ece Replace # private class members with _ prefix convention for consistency
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:01:09 -08:00
Matt Isenhower
111118cbb0 Simplify data auto-refresh with regular polling and visibility detection
Replace hourly-only refresh with a 5-minute polling interval that also
aligns to hour boundaries, add tab visibility change detection, and
debounce overlapping triggers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 15:56:26 -08:00
Matt Isenhower
c1664590b5 Auto-update social media avatars
Some checks failed
Build frontend / build (22.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
Tests / test (22.x) (push) Has been cancelled
2026-02-20 08:56:19 -08:00
Matt Isenhower
00f0ee4cf1 Add Claude.md 2026-02-17 22:35:26 -08:00
Matt Isenhower
2d8113ae92 Ignore todo file 2026-02-17 22:31:57 -08:00
Matt Isenhower
76b12efd61
Merge pull request #104 from misenhower/fix-threads
Some checks failed
Build frontend / build (22.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
Tests / test (22.x) (push) Has been cancelled
Fix Threads client
2026-02-17 22:29:09 -08:00
Matt Isenhower
09c2031ece Improve logging 2026-02-17 22:27:25 -08:00
Matt Isenhower
f363d9551e Use Threads-specific URL 2026-02-17 22:24:31 -08:00
Matt Isenhower
1b8a866548 Update Threads client 2026-02-17 22:20:51 -08:00
Matt Isenhower
811cd7fcd3 Improve error reporting 2026-02-17 22:05:05 -08:00
Matt Isenhower
60c61e6231 Fix bug with invalid data on disk 2026-02-17 21:35:21 -08:00
Matt Isenhower
eb7aa11245
Merge pull request #103 from misenhower/nxapi-auth
Some checks failed
Build frontend / build (22.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
Tests / test (22.x) (push) Has been cancelled
Nxapi auth
2026-02-16 16:40:04 -08:00
Matt Isenhower
fc4aa746c3 Re-enable EU/JP/AP updaters 2026-02-16 16:32:56 -08:00
Matt Isenhower
79c7325f1a Add nxapi-auth support 2026-02-16 16:32:46 -08:00
Matt Isenhower
eba99cbb10
Merge pull request #102 from misenhower/add-tests
Add tests
2026-02-16 15:53:24 -08:00
Matt Isenhower
7cfe3775fe Remove unused variable in util test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 15:51:53 -08:00
Matt Isenhower
d6ea4827b6 Disable Threads for now
Some checks are pending
Build frontend / build (22.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
2026-02-15 18:37:43 -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
6fba6f3076 Remove stale jsonpath tests from util.test.mjs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:55:28 -08:00
Matt Isenhower
ecce394315 Add unit tests for Pinia stores
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:45:20 -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
6e4b57f6a7 Add unit tests for fs utilities and ValueCache
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:45:20 -08:00
Matt Isenhower
b0083d08cc Add unit tests for getDurationParts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:45:20 -08:00
Matt Isenhower
7257c26869 Add unit tests for app/common/util
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:45:20 -08:00
Matt Isenhower
7084b3c5ae Set up Vitest and CI workflow for unit tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:45:20 -08:00
Matt Isenhower
120f6e4dca
Merge pull request #101 from misenhower/update-packages
Some checks are pending
Build frontend / build (22.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
Update packages
2026-02-15 16:38:07 -08:00
Matt Isenhower
bfcea5cca0 Fix issues with node 22 2026-02-15 16:36:59 -08:00
Matt Isenhower
5bff658212 Revert eslint 2026-02-15 16:36:53 -08:00
Matt Isenhower
f8707b7e9a Update Vite to v7, @vitejs/plugin-vue, and @eslint/js to 10.0.1
Vite 7: No code changes needed for this project's config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:25:48 -08:00
Matt Isenhower
bb78a7e6e2 Update ESLint and @eslint/js to v10
No config changes needed — already using flat config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:23:27 -08:00
Matt Isenhower
ff6ce5a0a1 Update nxapi to latest next release (1.6.1-next.248)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:20:33 -08:00
Matt Isenhower
d625a2dc90 Update pinia to v3 and vue-router to v5
Both are non-breaking upgrades for this project's usage patterns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:17:56 -08:00
Matt Isenhower
e8714d335a Update dotenv to v17, p-limit to v7, p-queue to v9
dotenv v17: Added quiet option to suppress new default logging.
p-limit v7 and p-queue v9: No code changes needed (only dropped older Node).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:10:14 -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
6bf8696746 Update minor dependencies
- dotenv: 16.4.5 → 16.6.1
- p-limit: 6.1.0 → 6.2.0
- p-queue: 8.0.1 → 8.1.1
- nxapi: 1.6.1-next.170 → 1.6.1 (pre-release → stable)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:02:47 -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
misenhower
f92267d0bf Fix styling 2026-02-15 22:04:22 +00:00
Matt Isenhower
29482689f4 Migrate Tailwind CSS from v3 to v4
- Replace JS config (tailwind.config.js) with CSS @theme block in base.css
- Switch from PostCSS to @tailwindcss/vite plugin
- Convert all bg-opacity-*/border-opacity-* to slash syntax (e.g. bg-zinc-900/70)
- Add @custom-variant for mobile and ss variants
- Add @reference to Vue scoped styles using @apply
- Rename v3 utilities: rounded→rounded-sm, backdrop-blur-sm→backdrop-blur-xs,
  drop-shadow→drop-shadow-sm, rotate-[25deg]→rotate-25
- Delete obsolete tailwind.config.js and postcss.config.js
- Rename vite.config.js to .mjs for ESM compatibility

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 13:52:27 -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
d5c97a5bf6 Update vue-i18n from v9 to v11
vue-i18n: 9.10.2 → 11.2.8

Resolves XSS and prototype pollution vulnerabilities in vue-i18n v9.
Total vulnerabilities now down to 1 (axios in threads-api transitive
dependency).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:58:39 -08:00
Matt Isenhower
0462cc2d8c Update Vite from v3 to v6
- vite: 3.2.8 → 6.4.1
- @vitejs/plugin-vue: 3.2.0 → 5.2.4
- Replaced @intlify/vite-plugin-vue-i18n with @intlify/unplugin-vue-i18n
- Narrowed i18n include pattern to *.json to avoid parsing .mjs files

This resolves the esbuild moderate severity vulnerability that was
present in Vite <=6.1.6.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:58:07 -08:00
Matt Isenhower
7c901f9ae7 Update social media API SDKs
- @atproto/api (Bluesky): 0.11.2 → 0.18.21
- masto (Mastodon): 6.7.0 → 7.10.1
- twitter-api-v2: 1.18.1 → 1.29.0

threads-api left at 1.6.3 (no newer version available; vulnerable
axios dependency is a transitive issue in that package).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:52:07 -08:00
Matt Isenhower
89daffe6c1 Update Sentry from v7 to v10
@sentry/node: 7.107.0 → 10.38.0

The project uses only Sentry.init() and Sentry.captureException(),
which are compatible across versions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:48:28 -08:00
Matt Isenhower
4a5a2aca42 Update Vue ecosystem packages
- vue: 3.4.21 → 3.5.28
- vue-router: 4.3.0 → 4.5.0
- pinia: 2.2.2 → 2.3.1
- @headlessui/vue: 1.7.19 → 1.7.23
- @heroicons/vue: 2.1.1 → 2.2.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:47:26 -08:00
Matt Isenhower
c20642feb4 Upgrade Node.js from 20 to 22 LTS
Node 20 LTS reaches end-of-life April 2026. Updated all references:
- Dockerfile base image to node:22
- All GitHub Actions workflows to Node 22
- Bumped actions/checkout and actions/setup-node to v4 where outdated
- Added .nvmrc file for local development

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:46:54 -08:00