Commit Graph

64 Commits

Author SHA1 Message Date
안명현 b9d509a9e8 fix(fishing): clear stale sessions for deleted threads 2026-04-09 13:48:33 +09:00
안명현 55fc7b46fc fix(fishing): avoid stale no-session response on session end 2026-04-09 13:12:24 +09:00
안명현 7022900eff fix(fishing): use editReply for deferred slash responses 2026-04-09 12:52:29 +09:00
안명현 233615e6d0 Merge branch 'main' into myong_dev 2026-04-09 12:46:45 +09:00
안명현 9f903f676f chore: remove BOM from fishing-related files 2026-04-09 12:39:07 +09:00
안명현 1432e0d090 fix(commands): re-sync global commands when definitions change 2026-04-09 12:25:04 +09:00
안명현 c80bcffb08 Implement fishing progression features 2026-04-09 12:02:54 +09:00
mineseo-kim dbadd936ca feat(logging): wire LOG_DIR through env and align systemd helper
- 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
2026-04-09 10:00:58 +09:00
mineseo-kim 5280f1987b chore(scripts): add systemd ExecStartPre for kord log directory
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
2026-04-09 09:56:46 +09:00
mineseo-kim ca9413e665 fix(db): honor DATABASE_URL schema for pg Pool and PrismaPg
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
2026-04-09 09:45:10 +09:00
mineseo-kim f317be9eab fix(logging): clarify LOG_DIR creation and bootstrap errors
- 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
2026-04-09 09:38:59 +09:00
mineseo-kim f2ffdb64a8 feat(logging): switch to log4js with file output and env-driven level
- 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
2026-04-09 09:34:15 +09:00
mineseo-kim f5f597d73d fix(i18n): restore ko locale and remove UTF-8 BOM
- 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
2026-04-09 09:23:14 +09:00
mineseo-kim 586f516d4a Respect DOTENV_CONFIG_PATH for dotenv load path
Matches systemd Environment=DOTENV_CONFIG_PATH=/home/psa/.env so keys are not reported as 0 when only ~/.env exists.

Made-with: Cursor
2026-04-09 09:14:57 +09:00
mineseo-kim 1a4652c185 Fix slash command timeouts: defer before locale DB reads
- 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
2026-04-09 09:09:32 +09:00
mineseo-kim a2e755b708 Remove Redis and replace with in-memory caches
- 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
2026-04-09 08:50:53 +09:00
안명현 80e104a9f4 Merge pull request 'Add fishing rarity rewards and result art' (#5) from myong_dev into main
Reviewed-on: #5
2026-04-01 08:20:43 +00:00
안명현 9876a331c1 Add fishing rarity rewards and result art 2026-04-01 17:19:23 +09:00
안명현 bcaf378111 Merge pull request 'Restore UTF-8 encoding in docs index' (#4) from myong_dev into main
Reviewed-on: #4
2026-03-31 10:20:37 +00:00
안명현 25b84592c0 Restore UTF-8 encoding in docs index 2026-03-31 19:06:04 +09:00
안명현 e7d435d7ea Merge pull request 'Complete fishing minigame phase 1' (#3) from myong_dev into main
Reviewed-on: #3
2026-03-31 09:49:57 +00:00
안명현 45d2b22978 Complete fishing minigame phase 1 2026-03-31 18:46:00 +09:00
이정수 f9769ba87c feat: initialize project structure with documentation and modular Prisma schemas 2026-03-31 10:16:07 +09:00
이정수 ba253a8ad3 Merge branch 'feautre/minigame' 2026-03-31 10:16:01 +09:00
안명현 d51eadb8c4 Merge pull request 'Implement YouTube music playback workflow' (#2) from myong_dev into main
Reviewed-on: #2
2026-03-30 17:14:17 +00:00
안명현 85f5057fd7 Implement YouTube music playback workflow 2026-03-31 02:12:27 +09:00
안명현 019cb314be Merge pull request 'myong_dev' (#1) from myong_dev into main
Reviewed-on: #1
2026-03-30 09:28:32 +00:00
안명현 c459dfff02 Merge origin/main into myong_dev 2026-03-30 18:28:02 +09:00
이정수 49a2855f2b feat: externalize refinement and battle balance configurations to database with runtime caching 2026-03-30 18:00:46 +09:00
이정수 2762801fbd feat: implement daily battle limits, refine win rate logic, and update weapon sell pricing 2026-03-30 17:54:57 +09:00
이정수 cc26613377 feat: increase max refinement level to 25 and rebalance success rates and PvP rewards 2026-03-30 17:46:05 +09:00
이정수 793bba5a6a feat: refactor refinement cost logic and update success rates and combat reward formulas 2026-03-30 17:41:20 +09:00
안명현 6eb3826737 Implement event scheduling workflow 2026-03-30 17:37:32 +09:00
이정수 0c7a562b00 feat: update weapon refinement cost formula and add durability and destruction mechanics 2026-03-30 17:30:29 +09:00
이정수 f504024bd5 feat: implement minigame refinement system with weapon upgrading, battle mechanics, and fever activity tracking 2026-03-30 17:24:53 +09:00
안명현 f9206ce7b2 Add event schedule management plan 2026-03-30 16:31:24 +09:00
이정수 122f20d031 docs: update project documentation and agent routine guidelines 2026-03-30 10:31:04 +09:00
이정수 4cc14d8153 refactor: flatten command structures by replacing subcommand groups with action-based string options 2026-03-30 10:27:11 +09:00
이정수 63c9930fd9 docs: update kord_routine rules for improved agent behavior consistency 2026-03-30 09:57:36 +09:00
이정수 7dd437c373 docs: update Kord agent routine rules. 2026-03-27 18:31:07 +09:00
이정수 5e41bea74e feat: Add instance ID and implement Redis lock for global command registration to support multi-instance deployments. 2026-03-27 18:29:46 +09:00
이정수 031a8b3146 refactor: Consolidate voice-related commands into `voice.ts` and audit-related commands into `audit.ts`. 2026-03-27 17:54:55 +09:00
이정수 0ccbbf9d31 feat: Introduce and separate `BOOT` audit log category from `SYSTEM`, defaulting both to disabled. 2026-03-27 17:53:00 +09:00
이정수 47dc4ab124 feat: Introduce a script to identify hardcoded i18n strings in test files, add a `check-i18n` command to package.json, and include ignore comments in i18n tests. 2026-03-27 17:38:07 +09:00
이정수 90064491d6 refactor: Relocate `config` translation keys and types under the `commands` namespace. 2026-03-27 17:24:03 +09:00
이정수 4246eb90a5 feat: Implement `/config` command for managing bot features, refactor Big Emoji into a dedicated service, and update guild configuration schema with new defaults. 2026-03-27 17:16:15 +09:00
이정수 b81bc6b146 feat: Add an audit log category selection step to the setup wizard, shifting subsequent steps and updating related logic and translations. 2026-03-27 16:56:37 +09:00
이정수 bdd91f6737 feat: Implement a multi-step setup wizard with i18n support and dedicated interaction handlers. 2026-03-27 15:57:50 +09:00
이정수 9f891112d9 feat: Introduce guild-specific configuration for temporary voice channels with a new command, updated service logic, and corresponding database schema changes. 2026-03-27 15:41:27 +09:00
이정수 234a0e96fe feat: Implement an audit log system with a new `AuditChannel` model, `/audit-channel` command, and `AuditLogService` to log various application events. 2026-03-27 15:30:03 +09:00