Commit Graph
32 Commits
Author SHA1 Message Date
tiennm99 039780749a feat(stock): persist per-user dividend history 2026-07-22 16:17:29 +07:00
tiennm99 9849fcec87 docs(deploy): refresh persisted storage layout 2026-07-21 19:13:28 +07:00
tiennm99 dbe0c9ca70 refactor(portfolio): retire completed migrations 2026-07-21 17:13:19 +07:00
tiennm99 6fe91f0e4e feat(portfolio): nest asset positions 2026-07-21 16:42:33 +07:00
tiennm99 1c6e0ad8a0 docs(portfolio): document cost basis and P&L 2026-07-21 15:52:30 +07:00
tiennm99 2180c2a59f fix(commands): remove examples from command discovery 2026-07-21 13:52:53 +07:00
tiennm99 a809646828 fix(commands): render examples conditionally with inline help code 2026-07-21 13:21:01 +07:00
tiennm99 341255c766 feat(commands): improve discovery and normalize parameters 2026-07-21 11:45:20 +07:00
tiennm99 af85886521 refactor: adopt cross-platform Go development workflow 2026-07-21 09:05:20 +07:00
tiennm99 2ec0ae119a 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 5d460f8afe refactor(stats): remove completed startup migrations 2026-07-09 15:44:23 +07:00
tiennm99 121e770818 fix(misc): fall back wheelofnames to text reply 2026-07-09 14:38:04 +07:00
tiennm99 5c27888850 feat(misc): promote wheelofnames gif command 2026-07-09 13:14:11 +07:00
tiennm99 044eab1e57 feat(misc): add wheelofnamesbeta render API 2026-07-07 00:12:58 +07:00
tiennm99 3ec608c9a1 refactor: remove completed startup migrations 2026-07-01 11:42:59 +07:00
tiennm99 87799e95bf feat(stats): migrate command history 2026-07-01 11:10:36 +07:00
tiennm99 2315618811 feat: rename lol schedule module 2026-07-01 10:38:49 +07:00
tiennm99 6fd65729ac feat(stats): use queryable Mongo usage records 2026-07-01 10:22:03 +07:00
tiennm99 632fec8885 refactor(modules): remove twentyq genai integration 2026-06-29 10:07:21 +07:00
tiennm99 0f5d82e5fd refactor(config): remove price URL env overrides 2026-06-29 09:23:20 +07:00
tiennm99 10ad9a09aa feat(server): register command menu on startup 2026-06-29 01:08:51 +07:00
tiennm99 559e636d89 feat(wc): add world cup schedule module 2026-06-29 00:59:30 +07:00
tiennm99 7a4f822e8d fix(deploynotify): preserve coolify source commit 2026-06-29 00:20:04 +07:00
tiennm99 5cabf4e1f4 refactor(deploy): remove retired aws support 2026-06-29 00:11:42 +07:00
tiennm99 35be2c0acb build(coolify): rename compose file 2026-06-29 00:00:22 +07:00
tiennm99 a48694fe67 fix(deploynotify): reference SOURCE_COMMIT in compose so it reaches container
Coolify passes predefined vars to Docker Compose via --env-file for
interpolation only; a var reaches the container solely if the compose file
references it. Removing the reference left SOURCE_COMMIT unset, so deploynotify
reported "unknown". Re-add SOURCE_COMMIT: ${SOURCE_COMMIT:-} per Coolify docs.
2026-06-28 23:30:03 +07:00
tiennm99 6a123f6de7 fix(deploynotify): stop clobbering Coolify-injected SOURCE_COMMIT
Declaring SOURCE_COMMIT: ${SOURCE_COMMIT:-} in compose resolved to an empty
string at parse time and overrode the value Coolify auto-injects into the
container at runtime, so gitSHA stayed empty and the owner DM was skipped.
Remove the declaration; the bot already reads SOURCE_COMMIT from the container
env at startup.
2026-06-28 23:17:27 +07:00
tiennm99 fc24e39c01 fix(deploynotify): read commit SHA from Coolify SOURCE_COMMIT runtime env
Baking SOURCE_COMMIT as a Docker build arg never worked: Coolify exposes it
as a runtime env var, not a build arg, so gitSHA was always empty and the owner
DM was skipped. Read SOURCE_COMMIT from the container env at startup (falling
back to the ldflags-baked gitSHA for local builds), forward it via the compose
environment, and drop the dead build-arg baking.
2026-06-28 23:08:17 +07:00
tiennm99 19a2b2597e build(coolify): use SOURCE_COMMIT build arg for deploynotify
Coolify sets SOURCE_COMMIT automatically; consume it as the build arg
feeding the baked commit SHA instead of a manually-passed GIT_SHA.
2026-06-28 22:15:12 +07:00
tiennm99 b81b6501c5 refactor(storage): replace KVStore with generic typed DocStore[T]
Delete the byte-oriented KVStore/VersionedStore abstraction and the
DynamoDB/memory KV backends. Add a generic typed store (DocStore[T] with
Provider/Collection/Typed) persisting each value as a flattened native
Mongo document (storedDoc[T] via bson inline) — no value envelope.

- MongoDB is the only runtime backend; memory kept for tests/local.
- All modules + deploynotify use typed stores; persisted structs carry
  bson tags == json names (incl. nested lolschedule/wordle types).
- lolschedule wraps its array/scalar values in named structs.
- migrate-dynamo-to-mongo writes the flattened shape via Typed[bson.M]
  with wrap rules; Scan/--dry-run/--verify retained.

Verified: go vet/build clean; full go test green hermetically and
in-container vs real Mongo 7 + DynamoDB Local (storage integration +
migrator e2e).
2026-06-28 18:02:11 +07:00
tiennm99 a03770cf6b feat(storage): store mongo values as native BSON documents
Implement mongodb_value_codec to encode portfolio/gold/stock values as native
BSON documents instead of JSON-serialized byte strings. Reduces storage size,
improves query efficiency, and eliminates unmarshal overhead. Native BSON
encoding preserves int64 fidelity and enables future native-format queries.
Add NativeValueRepresentation and Int64Fidelity tests validating lossless
encoding. Update migration tool comments. Document native-value behavior
in deploy guide. Update phase-01 plan with implementation notes.
2026-06-28 12:52:48 +07:00
tiennm99 74643efdb3 docs(selfhost): add Coolify deploy + AWS decommission guides; retire AWS docs
Add comprehensive Coolify deployment guide with MongoDB Atlas + networking setup.
Add AWS decommission runbook for safe teardown. Update AWS guides to note
deprecation. Update main README with self-hosted quickstart and architecture overview.
2026-06-28 09:58:37 +07:00