tiennm99
df240a5db0
feat(stock): persist per-user dividend history
2026-07-22 16:17:29 +07:00
tiennm99
8de459b131
fix(renderer): use consistent wheel label colors
2026-07-22 14:34:01 +07:00
tiennm99
7a0163ec01
feat: format compact portfolio numbers
2026-07-22 12:27:52 +07:00
tiennm99
7487d21499
fix(stock): note currency in portfolio title
2026-07-22 10:59:40 +07:00
tiennm99
cc7dd4aa10
docs: remove completed implementation records
2026-07-21 19:13:34 +07:00
tiennm99
d14b34d8ce
docs(deploy): refresh persisted storage layout
2026-07-21 19:13:28 +07:00
tiennm99
5980c384c7
refactor(coin): retire completed startup cleanup
2026-07-21 19:13:23 +07:00
tiennm99
bfa04974a8
refactor(metrics): remove unused AI counters
2026-07-21 19:13:15 +07:00
tiennm99
ec06095ee7
chore(stock): log dividend event checks
2026-07-21 18:50:48 +07:00
tiennm99
01efb83df7
fix(coin): remove stale dividend cursor fields
2026-07-21 18:50:30 +07:00
tiennm99
ee2c520944
docs(stock): document dividend event buttons
2026-07-21 18:20:14 +07:00
tiennm99
d0098dafdd
feat(stock): add dividend event buttons
2026-07-21 18:19:50 +07:00
tiennm99
53718dc8b8
docs(stock): research dividend event APIs
2026-07-21 17:13:43 +07:00
tiennm99
96ba34384a
refactor(portfolio): retire completed migrations
2026-07-21 17:13:19 +07:00
tiennm99
7083079b39
feat(portfolio): nest asset positions
2026-07-21 16:42:33 +07:00
tiennm99
7711029f4c
docs(portfolio): document cost basis and P&L
2026-07-21 15:52:30 +07:00
tiennm99
0dd93e3bf9
feat(portfolio): track stock and coin cost basis
2026-07-21 15:52:05 +07:00
tiennm99
d2c3129d41
refactor(commands): standardize parameter conventions
2026-07-21 14:51:28 +07:00
tiennm99
a211b7f8b7
fix(commands): remove examples from command discovery
2026-07-21 13:52:53 +07:00
tiennm99
b5c7427520
fix(commands): render examples conditionally with inline help code
2026-07-21 13:21:01 +07:00
tiennm99
f5ba9d4032
feat(commands): improve discovery and normalize parameters
2026-07-21 11:45:20 +07:00
tiennm99
3316eec74c
test: provision MongoDB 8 with Testcontainers
2026-07-21 09:39:06 +07:00
tiennm99
f0d361eab5
refactor: adopt cross-platform Go development workflow
2026-07-21 09:05:20 +07:00
tiennm99
6ceb7aff02
docs(stock): document dividend commands
2026-07-20 17:33:10 +07:00
tiennm99
8b2ac571d9
feat(stock): add ratio dividend commands
2026-07-20 17:32:37 +07:00
tiennm99
6c934f6807
feat(modules): remove world cup module
...
The 2026 tournament has ended, so the schedule and daily digest commands
have no upcoming matches to report. Drops the module, its catalog entry,
command menu entries, and the WC_FOOTBALL_DATA_TOKEN env var.
Stored subscriber and match-cache documents are left in place.
2026-07-20 11:03:59 +07:00
tiennm99
15c383d6f1
feat(misc): add protected /ff giving-up template
...
Replies with a fixed Vietnamese copypasta for when T1 starts losing, built
from the local community's running jokes. Protected, so it stays out of the
public command menu like the other gated commands.
2026-07-19 20:09:22 +07:00
tiennm99
7c82842c1a
feat(modules): match commands case-insensitively
...
Mobile keyboards autocapitalize, so a typed /Ping silently did nothing and
read as the bot being broken. Registered names are lowercase-only per
validateCommand, so folding case cannot make two commands collide, and the
canonical Command.Name still drives stats, metrics, hooks, and logs.
2026-07-19 20:09:16 +07:00
tiennm99
566b06a461
feat(renderer): add local GIF render CLI
2026-07-15 15:50:34 +07:00
tiennm99
963e8087a8
docs: clean legacy plans and document local GIFs
2026-07-15 15:01:00 +07:00
tiennm99
dfd20b699a
docs(renderer): record adaptive label rollout
2026-07-15 14:42:57 +07:00
tiennm99
440ec899d2
fix(renderer): improve adaptive label readability
2026-07-15 14:42:33 +07:00
tiennm99
2e1c3be0a4
docs(renderer): record wrapped label rollout
2026-07-15 12:21:25 +07:00
tiennm99
d57009e63b
feat(renderer): add bold wrapped wheel labels
2026-07-15 12:21:14 +07:00
tiennm99
55f2142d65
build: update Go toolchain and crypto dependency
2026-07-09 18:18:01 +07:00
tiennm99
337b7de18c
refactor(stats): remove completed startup migrations
2026-07-09 15:44:23 +07:00
tiennm99
1560d804a7
fix(misc): fall back wheelofnames to text reply
2026-07-09 14:38:04 +07:00
tiennm99
3646f9c02c
feat(misc): promote wheelofnames gif command
2026-07-09 13:14:11 +07:00
tiennm99
3904aa6750
refactor(misc): share disclaimer template
2026-07-09 11:34:53 +07:00
tiennm99
5c5fc5c168
feat(misc): add VNG disclaimer aliases
2026-07-07 11:19:27 +07:00
tiennm99
8e748c3153
docs(plans): remove plan artifacts
2026-07-07 10:19:51 +07:00
tiennm99
aa74379f81
feat(coin): allow upstream-supported tickers
2026-07-07 10:12:29 +07:00
tiennm99
00dc4c7800
feat(misc): add wheelofnamesbeta render API
2026-07-07 00:12:58 +07:00
tiennm99
4632e87150
fix(renderer): apply single eased wheel spin
2026-07-07 00:11:32 +07:00
tiennm99
8ab45eb5ea
fix(renderer): correct pie slice angle conversion
2026-07-06 23:44:41 +07:00
tiennm99
407d4f3a2c
fix(renderer): align wheel pointer and labels
2026-07-06 23:12:51 +07:00
tiennm99
da92e9b443
fix: align wheel labels and compose env
2026-07-06 22:50:11 +07:00
tiennm99
3f5ed700bb
feat: initialize wheelofnames API
2026-07-06 22:20:48 +07:00
tiennm99
194caf17eb
fix(lol): rename next week command
2026-07-06 20:46:10 +07:00
tiennm99
00a5ff1c0b
feat(lol): add tomorrow and next-week schedules
2026-07-06 20:20:07 +07:00