Simo and Cursor
d69e3f5da5
fix(test): mock db in admin-alerts suite for push hook
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 15:58:17 +02:00
Simo and Cursor
811cf5719b
fix(admin): cast clothing-set hard-fail mock return type
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 15:57:14 +02:00
Simo and Cursor
2194aa1239
fix(admin): type-fix clothing-set hard-fail test mock
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 15:56:53 +02:00
Simo and Cursor
16191cef14
fix(admin): harden clothing/pets/effects/clone imports
...
Align grids on data.items, only treat SSE done as success, hard-fail
clothing sets when libs fail, and add Cancel via AbortController.
Co-authored-by: Cursor <[email protected] >
2026-08-01 15:56:38 +02:00
Simo and Cursor
9c4949186c
feat(admin): server-safe StatusCard and Import hub polish
...
CI / check (push) Failing after 8s
CI / release (push) Skipped
CI / deploy (push) Skipped
Split OnlineUsersWidget from StatusCard, decouple ad delete button, sync badge import to ExternalTexts+WebsiteBadges, add Import section hub with cancelable SSE jobs and upload SQL option.
Co-authored-by: Cursor <[email protected] >
2026-08-01 15:48:21 +02:00
Simo and Cursor
db957d7fb1
fix(ops): narrow DB_BACKUP_DIR for jobs-worker typecheck
...
CI / check (push) Failing after 9s
CI / release (push) Skipped
CI / deploy (push) Skipped
Co-authored-by: Cursor <[email protected] >
2026-08-01 15:27:01 +02:00
Simo and Cursor
725e1cb338
feat(ops): health-fail alerts, optional DB backup, admin UX polish
...
Wire jobs-worker health probes to Discord/email alerts with cooldown, optional mysqldump, rate-limit /api/health, mark-all-read alerts, ConfirmDialog on destructive admin actions, and raise coverage floors.
Co-authored-by: Cursor <[email protected] >
2026-08-01 15:25:47 +02:00
Simo and Cursor
3bd712e744
fix(admin): polish tickets, photos purge note, drizzle contracts
...
CI / check (push) Failing after 9s
CI / release (push) Skipped
CI / deploy (push) Skipped
Add queue banners/counts on ticket detail pages, document local-only photo purge, and harden Drizzle Kit smoke contracts after Prisma removal.
Co-authored-by: Cursor <[email protected] >
2026-08-01 15:07:54 +02:00
Simo and Cursor
ba82789166
chore(db): finish Prisma cutover to Drizzle Kit tooling
...
CI / check (push) Failing after 9s
CI / release (push) Skipped
CI / deploy (push) Skipped
Move CMS SQL to drizzle/migrations, drop prisma packages/schema, wire drizzle-kit scripts, and regenerate schema names from src/db/schema.ts.
Co-authored-by: Cursor <[email protected] >
2026-08-01 15:02:21 +02:00
Simo and Cursor
d8199ea1e4
feat(admin): unified ticket inbox over CMS and help-center queues
...
CI / check (push) Successful in 22s
CI / release (push) Skipped
CI / deploy (push) Successful in 57s
Merged read-model inbox at /admin/tickets and /mod/tickets with type badges and deep links; CMS-only lists moved to /desk. No DB schema merge.
Co-authored-by: Cursor <[email protected] >
2026-08-01 14:49:19 +02:00
Simo and Cursor
24d0b735c1
chore(db): remove Prisma facade and drop prisma:generate from CI (2)
...
CI / check (push) Successful in 22s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m0s
Co-authored-by: Cursor <[email protected] >
2026-08-01 14:39:20 +02:00
Simo and Cursor
422567272c
chore(db): remove Prisma facade and drop prisma:generate from CI
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 14:38:42 +02:00
Simo and Cursor
ca72966a37
refactor(db): migrate app pages and APIs from Prisma facade to Drizzle (6)
...
CI / check (push) Successful in 24s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m2s
Co-authored-by: Cursor <[email protected] >
2026-08-01 14:15:43 +02:00
Simo and Cursor
30b54e99e7
refactor(db): migrate app pages and APIs from Prisma facade to Drizzle (5)
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 14:15:39 +02:00
Simo and Cursor
9aa4f331bf
refactor(db): migrate app pages and APIs from Prisma facade to Drizzle (4)
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 14:15:36 +02:00
Simo and Cursor
580972c0a0
refactor(db): migrate app pages and APIs from Prisma facade to Drizzle (3)
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 14:15:32 +02:00
Simo and Cursor
2cd0863cb8
refactor(db): migrate app pages and APIs from Prisma facade to Drizzle (2)
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 14:15:28 +02:00
Simo and Cursor
7c39aef5d9
refactor(db): migrate app pages and APIs from Prisma facade to Drizzle
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 14:15:12 +02:00
Simo and Cursor
53b350057d
fix(test): mock @/lib/db in send-currency tests for pre-push
...
CI / check (push) Successful in 24s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m2s
Co-authored-by: Cursor <[email protected] >
2026-08-01 13:30:16 +02:00
Simo and Cursor
65b2fbee6a
refactor(db): finish Drizzle migration for remaining actions and services
...
Co-authored-by: Cursor <[email protected] >
2026-08-01 13:27:59 +02:00
Simo and Cursor
22234fe102
fix(test): type drizzle mock callbacks for tsc
...
CI / check (push) Successful in 24s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m4s
Co-authored-by: Cursor <[email protected] >
2026-08-01 13:18:10 +02:00
Simo and Cursor
096f55b394
test: align remaining action tests with Drizzle mocks
...
EOF
Co-authored-by: Cursor <[email protected] >
2026-08-01 13:17:35 +02:00
Simo and Cursor
ed9c23c702
refactor(db): migrate staff and app actions from Prisma facade to Drizzle
...
Co-authored-by: Cursor <[email protected] >
2026-07-31 21:35:05 +02:00
Simo and Cursor
9854719cfd
feat(admin): drizzle trade-lock + RCON sync and photo local purge
...
CI / check (push) Successful in 24s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m2s
Co-authored-by: Cursor <[email protected] >
2026-07-31 21:14:03 +02:00
Simo and Cursor
67656a9aad
fix(ci): migrate on tag release and wire drizzle schema generate
...
CI / check (push) Successful in 23s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m1s
Co-authored-by: Cursor <[email protected] >
2026-07-31 21:03:54 +02:00
Simo and Cursor
20b85381fe
fix(db): accumulate many-includes and nest relations in prisma facade
...
CI / check (push) Successful in 26s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m12s
Co-authored-by: Cursor <[email protected] >
2026-07-31 20:57:52 +02:00
openhands
e5ff7ec9e5
chore: clean up biome lint warnings — all non- intentional resolved
...
CI / check (push) Successful in 33s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m25s
- Remove 25 unused imports across 14 test files
- Remove 1 unused variable (rename with _ prefix)
- Fix 2 noBannedTypes (Function → (...args: unknown[]) => unknown)
- Fix 1 useTemplate lint (string concat → template literal in merge-config.cjs)
- Fix 1 useNodejsImportProtocol (merge-config.cjs)
- Fix 2 noTemplateCurlyInString (generate-drizzle-schema.mjs generator code)
- Auto-fix formatting + import sorting across modified files
- 221 remaining warnings: intentional noExplicitAny in prisma-facade.ts (Prisma compat layer)
- 0 tsc errors, 583 tests passing
2026-07-31 15:26:39 +02:00
openhands
7f7971f578
fix: resolve all biome lint errors and type issues
...
CI / check (push) Successful in 30s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m26s
- Add file-level biome-ignore for noExplicitAny in prisma-facade.ts
(intentional any for Prisma API compatibility surface)
- Fix noNonNullAssertion errors in cached-db.ts (redis null-guard fixes)
- Auto-fix formatting + organizeImports across modified files
- 0 tsc errors, 0 biome errors, 583 tests passing
2026-07-31 15:15:15 +02:00
openhands
d1807ca814
perf: cache online API endpoints with Redis-first cache
...
CI / check (push) Successful in 31s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m27s
- Upgrade lib/cache.ts: Redis-first cached() with in-memory fallback
(was in-memory only, broken across PM2 instances)
- Cache /api/online user list (10s TTL, was uncached per-request)
eliminates DB query on every poll request
- Add uncached() invalidation helper for write-after-cache patterns
- 0 tsc errors, 583 tests passing
2026-07-31 15:09:56 +02:00
openhands
ef5e706ee1
perf: optimize DB layer with caching and pool tuning
...
CI / check (push) Successful in 36s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m35s
- Add Redis cache wrapper (cached-db.ts) — cachedQuery + invalidate helpers
- Add cached login user lookup (auth.ts: getLoginUser) — short 15s TTL
for brute-force protection, cache invalidation on password/rank changes
- Switch auth.ts login flow from Prisma facade to raw SQL via db.execute
(avoids abstraction overhead for this hot path)
- Cache invalidation wired in: login password upgrade, updateUser, resetPassword
- Connection pool tuning: enableKeepAlive, namedPlaceholders,
prepared statement cache (Node 22+), multipleStatements off (SQLi hardening)
- 0 tsc errors, 583 tests passing
2026-07-31 15:01:34 +02:00
openhands
c0bbcae5d6
ci: update CI for Drizzle ORM migration
...
CI / check (push) Successful in 35s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m36s
- Update CI comments to reference Drizzle ORM + Prisma facade (not legacy Prisma runtime)
- Clarify that src/db/schema.ts is committed (no drizzle-kit generate needed in CI)
- Update release notes template: 'Prisma 7' -> 'Drizzle ORM'
- Rename release 'Generate Prisma Client' section to 'Generate Prisma Type Stubs (Dev Only)'
- Note that Prisma type stubs are for facade type-checking only (no runtime engine)
2026-07-31 14:39:36 +02:00
openhands
2f030deb42
fix: switch Google Fonts to runtime <link> tags for build environments without internet
...
CI / check (push) Successful in 33s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m38s
- Replace next/font/google with <link> tags in <head> (loads fonts client-side at runtime)
- Define --font-nunito and --font-pixel CSS variables in globals.css with font-family fallbacks
- Remove @prisma/client from serverExternalPackages in next.config.ts (devDep only)
2026-07-31 14:33:33 +02:00
openhands
9a8905c726
docs: update README for Drizzle ORM migration
...
CI / check (push) Successful in 28s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m35s
- Document Drizzle ORM as primary data layer with CLI usage examples
- Add Prisma compatibility facade section (backwards compatibility)
- Document legacy Prisma CLI removal (migrate dev, studio, db push no longer used)
- Update architecture tree with src/db/ and scripts/ directories
- Update migration count (19 SQL files)
- Add contributing guidelines for Drizzle-based code
2026-07-31 14:26:09 +02:00
openhands
beae86194d
fix: resolve biome lint errors in prisma-facade
...
CI / check (push) Successful in 29s
CI / release (push) Skipped
CI / deploy (push) Failing after 1m23s
- Fix noPrecisionLoss on BIGINT UNSIGNED max value (2^64-1) with biome-ignore comments
- Fix noThenProperty on custom thenable with biome-ignore comment
- Auto-format remaining files (biome check --write)
- Re-stage auto-fixed files from previous commit
2026-07-31 14:17:06 +02:00
openhands
56061e41d4
refactor: replace Prisma ORM runtime with Drizzle ORM facade
...
CI / check (push) Failing after 12s
CI / deploy (push) Skipped
CI / release (push) Skipped
- Replace Prisma client runtime with Drizzle ORM (zero Prisma engine/query engine in production)
- Add Prisma-compatible facade (@/lib/prisma-facade.ts) backed by Drizzle for backwards compatibility
- Runtime queries route through Drizzle ORM; @prisma/client is now devDependency (types only)
- Remove @prisma/adapter-mariadb dependency; delete prisma-pool.ts and types/prisma.ts
- New Drizzle schema layer: src/db/schema.ts (176 tables) and src/lib/db.ts (connection)
- Update README documenting the dual-layer ORM architecture
- Restore src/generated/ gitignore (build artifact for local type generation)
- 0 TypeScript errors, 583 tests passing
The facade intentionally uses `any` types to match the Prisma Client API surface,
allowing existing code to run unmodified while routing queries through Drizzle at runtime.
2026-07-31 14:11:03 +02:00
remco
9d1c71d926
chore(deps): update dependency lint-staged to ^17.3.0
CI / check (pull_request) Successful in 21s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
CI / check (push) Successful in 22s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m14s
2026-07-31 09:04:53 +00:00
remco
744e224fd0
chore(deps): update dependency knip to ^6.30.0
CI / check (pull_request) Successful in 21s
CI / deploy (pull_request) Skipped
CI / release (pull_request) Skipped
CI / check (push) Successful in 22s
CI / release (push) Skipped
CI / deploy (push) Successful in 58s
2026-07-31 08:00:29 +00:00
remco
a2acac2c4c
chore(deps): update All dependencies
CI / check (pull_request) Successful in 22s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
CI / check (push) Successful in 22s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m10s
2026-07-30 22:00:34 +00:00
Simo and Cursor
0224b34f15
feat(admin): configurable sidebar menu order and visibility
...
CI / check (push) Successful in 24s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m7s
Co-authored-by: Cursor <[email protected] >
2026-07-30 21:45:53 +02:00
Simo and Cursor
1127807aaa
chore(test): raise coverage floors to 6/4/5/6
...
CI / check (push) Successful in 24s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m1s
Co-authored-by: Cursor <[email protected] >
2026-07-30 21:36:30 +02:00
Simo and Cursor
3ac5d6f4f6
chore(ops): strip redundant force-dynamic and probe Redis in ops health
...
CI / check (push) Successful in 25s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m8s
Co-authored-by: Cursor <[email protected] >
2026-07-30 21:33:40 +02:00
Simo and Cursor
3e584aadaf
ci: unify check and production deploy into one workflow
...
CI / check (push) Successful in 25s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m8s
Co-authored-by: Cursor <[email protected] >
2026-07-30 20:58:40 +02:00
Simo and Cursor
bfbc02c75d
fix(ci): remove duplicate deploy job that raced production Deploy
...
CI / check (push) Successful in 21s
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 58s
Co-authored-by: Cursor <[email protected] >
2026-07-30 20:50:05 +02:00
Simo and Cursor
98613af875
feat(admin): items_base browser and AdminPageShell on core pages
...
CI / check (push) Successful in 21s
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 59s
CI / deploy (push) Failing after 9s
Co-authored-by: Cursor <[email protected] >
2026-07-30 20:41:31 +02:00
openhands
7138ae4445
fix: correct indentation in deploy workflow shell block
...
CI / check (push) Successful in 27s
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m19s
CI / deploy (push) Failing after 9s
The prisma:generate block had inconsistent indentation (11 spaces
instead of 10), causing YAML to misinterpret the shell block structure.
2026-07-30 20:29:19 +02:00
Simo and Cursor
3ad3f9512c
feat(admin): ban appeals, photos polish, economy adjust, staff smoke
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m17s
CI / check (push) Successful in 25s
CI / deploy (push) Failing after 11s
Co-authored-by: Cursor <[email protected] >
2026-07-30 20:23:03 +02:00
openhands
fe46bd0544
fix: unset placeholder DATABASE_URL after prisma:generate so build/migrate use real .env
...
CI / check (push) Successful in 25s
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m13s
CI / deploy (push) Failing after 9s
prisma:generate needs DATABASE_URL to resolve the schema but doesn't
connect to the DB. After generate, unset the placeholder so that
pnpm build and pnpm db:migrate pick up the real DATABASE_URL from
the live .env (symlinked into the stage directory).
2026-07-30 20:20:39 +02:00
openhands
822dfd6a1c
fix: use real DATABASE_URL from .env for migrations in deploy workflow
...
CI / check (push) Successful in 24s
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m12s
CI / deploy (push) Failing after 10s
The deploy job was overwriting DATABASE_URL with a placeholder for
prisma:generate, but this persisted when db:migrate ran later, causing
ER_ACCESS_DENIED_ERROR. Since the stage directory already symlinks to
the live .env, the real DATABASE_URL is available without override.
2026-07-30 20:16:24 +02:00
openhands
525f58cd24
fix: provide dummy DATABASE_URL for prisma generate during deploy
CI / check (push) Successful in 29s
Deploy / release (push) Skipped
Deploy / deploy (push) Failing after 2m8s
CI / deploy (push) Failing after 10s
2026-07-30 20:07:49 +02:00
openhands
d805e54053
fix: update postcss override to 8.5.25 for lockfile consistency
...
CI / check (push) Successful in 25s
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m15s
CI / deploy (push) Failing after 10s
- Update pnpm-workspace.yaml postcss override to ^8.5.25
- Sync lockfile with package.json postcss update
2026-07-30 20:02:11 +02:00