syntaxbullet
9e6bb8b148
fix: add non-null assertion for default rarity config fallback
...
Deploy to Production / test (push) Successful in 35s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-26 15:15:53 +01:00
syntaxbullet
0517cd638c
fix: add JSDoc header and null input test for rarity config
2026-03-18 21:49:10 +01:00
syntaxbullet
b8303a7e28
feat: add shared rarity config and helpers
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-18 21:46:21 +01:00
syntaxbullet
5a20ed23f4
fix: guard against undefined username in trivia won event
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 13:06:33 +01:00
syntaxbullet
0142508eb5
fix: add type safety and error handling to event bus
...
- Add DomainEventPayloads interface to events.ts for typed event payloads
- Wrap dashboard listeners with fireAndForget() to prevent unhandled promise rejections
- Type all listener parameters explicitly using DomainEventPayloads
- Add idempotency guard to registerDomainEventListeners to prevent double registration on hot-reload
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-18 13:04:32 +01:00
syntaxbullet
5863418ae9
refactor: replace dynamic imports with event bus pattern
...
Replace 12 dynamic `await import()` calls with domain events emitted
through the existing systemEvents bus, breaking circular dependencies
between services (economy/inventory/leveling -> quest, * -> dashboard).
- Add `emitAsync` to SystemEventEmitter for sequential listener awaiting,
preserving DB transaction atomicity for quest progress tracking
- Add DOMAIN event constants (BALANCE_CHANGED, XP_GAINED, ITEM_COLLECTED,
ITEM_USED, TRANSFER_COMPLETED, DAILY_CLAIMED, TRIVIA_*, EXAM_PASSED)
- Create shared/lib/eventWiring.ts to register all domain event listeners
- Convert quest event calls to `await systemEvents.emitAsync()` (5 calls)
- Convert dashboard event calls to `systemEvents.emit()` fire-and-forget (5 calls)
- Convert exam.service.ts userService import to static import (1 call)
- Convert dashboard.service.ts events import to static import (1 call)
- Leave inventory.service.ts validateAndExecuteEffect import unchanged (Task 3)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 12:59:15 +01:00
syntaxbullet
6eb4a32a12
refactor: consolidate config types and remove file-based config
...
Tickets: #2 , #3
- Remove duplicate type definitions from shared/lib/config.ts
- Import types from schema files (game-settings.ts, guild-settings.ts)
- Add GuildConfig interface to guild-settings.ts schema
- Rename ModerationConfig to ModerationCaseConfig in moderation.service.ts
- Delete shared/config/config.json and shared/scripts/migrate-config-to-db.ts
- Update settings API to use gameSettingsService exclusively
- Return DB format (strings) from API instead of runtime BigInts
- Fix moderation service tests to pass config as parameter
Breaking Changes:
- Removes legacy file-based configuration system
- API now returns database format with string values for BigInt fields
2026-02-13 13:24:02 +01:00
syntaxbullet
2d35a5eabb
feat: Introduce TimerKey enum and refactor timer key usage across services with new tests.
Deploy to Production / test (push) Failing after 27s
2026-02-13 13:11:16 +01:00
syntaxbullet
c2b1fb6db1
feat: implement database-backed game settings with a new schema, service, and migration script.
Deploy to Production / test (push) Failing after 26s
2026-02-12 16:42:40 +01:00
syntaxbullet
babccfd08a
feat(config): add getGuildConfig() for database-backed guild settings
...
Add function to fetch guild-specific config from database with:
- 60-second cache TTL
- Fallback to file-based config for migration period
- Cache invalidation helper
2026-02-12 15:00:21 +01:00
syntaxbullet
228005322e
feat(commands): add beta feature flag support to command system
...
- Add beta and featureFlag properties to Command interface
- Add beta access check in CommandHandler before command execution
- Show beta feature message to non-whitelisted users
2026-02-12 14:45:58 +01:00
syntaxbullet
34958aa220
feat: implement comprehensive item management system with admin UI, API, and asset handling utilities.
Deploy to Production / test (push) Successful in 44s
2026-02-06 12:19:14 +01:00
syntaxbullet
2f73f38877
feat: Add web admin page for quest management and refactor Discord bot's quest UI to use new components.
2026-01-15 17:21:49 +01:00
syntaxbullet
54944283a3
feat: implement centralized logger with file persistence
2026-01-14 17:58:28 +01:00
syntaxbullet
915f1bc4ad
fix(economy): improve daily cooldown message and consolidate UserError class
2026-01-14 16:26:27 +01:00
syntaxbullet
4af2690bab
feat: implement branded discord embeds and versioning
2026-01-14 16:10:23 +01:00
syntaxbullet
3a620a84c5
feat: add trivia category selection and sync trivia fixes
2026-01-11 16:08:11 +01:00
syntaxbullet
35bd1f58dd
feat: trivia command!
2026-01-11 14:37:17 +01:00
syntaxbullet
c6fd23b5fa
feat(dashboard): implement bot settings page with partial updates and serialization fixes
2026-01-08 22:35:46 +01:00
syntaxbullet
d46434de18
feat(dashboard): expand stats & remove admin token auth
2026-01-08 22:14:13 +01:00
syntaxbullet
19206b5cc7
fix: address security review findings, implement real cache clearing, and fix lifecycle promises
2026-01-08 21:29:09 +01:00
syntaxbullet
0f6cce9b6e
feat: implement administrative control panel with real-time bot actions
2026-01-08 21:19:16 +01:00
syntaxbullet
1251df286e
feat: implement real-time dashboard updates via WebSockets
2026-01-08 21:01:33 +01:00
syntaxbullet
3f028eb76a
refactor: consolidate config loading
2026-01-08 16:21:25 +01:00
syntaxbullet
2b641c952d
refactor: move config loading to shared directory
2026-01-08 16:15:55 +01:00
syntaxbullet
88b266f81b
refactor: initial moves
2026-01-08 16:09:26 +01:00