- logger uses config/env for LOG_DIR and LOG_LEVEL (single source of truth)
- Document absolute LOG_DIR for wipe/redeploy (Jenkins) in env and .env.example
- setup-kord-user-log-file.sh reads LOG_DIR from KORD_HOME/.env and syncs
StandardOutput/StandardError/ExecStartPre mkdir to the same path
Made-with: Cursor
When StandardOutput=append points under ~/kord/logs, systemd opens the
file before ExecStart; a missing directory causes status 209/STDOUT.
Inject mkdir -p via ExecStartPre so restarts survive a deleted logs folder.
Made-with: Cursor
node-postgres ignores Prisma's ?schema= query param, so connections
defaulted to public. Parse the schema from the URL, set search_path on
the pool, and pass schema to PrismaPg (see prisma/prisma#28611).
Made-with: Cursor
- Wrap mkdir in ensureLogDir with stderr message on failure.
- Trim LOG_DIR; note in .env.example that the directory is created at startup.
Made-with: Cursor
- Replace console logger with log4js dateFile under LOG_DIR (default logs).
- No console appender; daily rotation with 7-day retention (numBackups).
- Add LOG_LEVEL and LOG_DIR to env and .env.example; document in env.ts.
Made-with: Cursor
- Replace mojibake in ko.ts with proper Korean aligned to en.ts.
- Strip UTF-8 BOM from the 9 other text files (docs, commands, services, tests, en.ts).
Made-with: Cursor
- interactionCreate: deferReply(ephemeral) immediately for chat commands, then getInteractionLocale.
- All slash handlers use editReply; remove redundant deferReply in audit/fishing/music.
- localeHelper: parallelize user/guild Prisma lookups for getInteractionLocale and getContextLocale.
Note: deferred replies are ephemeral; public-only responses (e.g. music queue) are now user-visible only.
Made-with: Cursor
- Drop ioredis, docker-compose redis service, and REDIS_* env vars.
- Remove src/cache; use Map-based invite and webhook caching in services.
- Run global command registration and voice boot sync without distributed locks.
- Update README, agent rules, and docs to match the new stack.
Made-with: Cursor