Commit Graph

  • 4b5c3b905e test(admin): update MissionMeta round-trip test to new wire types master gamer147 2026-07-04 19:51:31 -04:00
  • eecad64655 build(entrypoint): cross-platform Steamworks-lib copy target gamer147 2026-07-04 19:44:59 -04:00
  • d815bfa994 fix(admin): parse mission_change_time as wire datetime string gamer147 2026-07-04 18:25:28 -04:00
  • c8e4bda6af feat(admin): shared-secret auth for /admin/import_viewer + Swagger authorize gamer147 2026-07-04 18:24:59 -04:00
  • 7a13e99df7 fix(guild): emit is_friend / is_friend_apply in /guild/info members gamer147 2026-07-04 16:18:22 -04:00
  • 1bdcd8397b config(battle-node): require NodeServerUrl from appsettings, no fallback gamer147 2026-07-04 15:10:23 -04:00
  • 6b0b467f31 config(default-grants): zero out shipped Crystals/Rupees/Ether gamer147 2026-07-04 14:54:43 -04:00
  • 05d143d2e8 fix(mypage): populate unread_present_count from ViewerPresents gamer147 2026-07-04 14:44:52 -04:00
  • c087f9b08f fix(pack): disable stale rotation-specific pack rows gamer147 2026-07-04 14:29:54 -04:00
  • 7309488748 fix(pack): route /tutorial/pack_open through the normal path gamer147 2026-07-04 14:21:52 -04:00
  • 9813f82edc feat(mission): wire rank_achieved emit at RankBattleController gamer147 2026-07-04 13:35:23 -04:00
  • e9c13ae5f4 feat(rank-progress): RankProgressResult carries TierAdvanced signal gamer147 2026-07-04 13:32:45 -04:00
  • 8e41739bde feat(mission): wire class_level_up emits from every XP-granting controller gamer147 2026-07-04 13:31:04 -04:00
  • a2048a4d54 feat(battle-xp): BattleXpGrantResult carries LeveledUp signal gamer147 2026-07-04 13:23:34 -04:00
  • 42b0fd3d6e feat(mission): wire Tier 1 emits — rank/free/challenge match events gamer147 2026-07-04 13:22:02 -04:00
  • 94622a526d refactor(arena-tk2): FinishAsync returns RunFinishOutcome with WasFullClear signal gamer147 2026-07-04 13:17:23 -04:00
  • f3c8b46469 feat(mission): add RankTier + Class/Ranked/Free/Challenge/ClassLevel/Rank builders gamer147 2026-07-04 13:15:11 -04:00
  • 0f6c8d5e41 feat(bootstrap): validate seed event_type against MissionEventKeys registry gamer147 2026-07-04 12:59:48 -04:00
  • 652011ea74 refactor(controllers): migrate practice/story/item_purchase to MissionEventKeys gamer147 2026-07-04 12:59:34 -04:00
  • fa89c32110 refactor(calendar): expose AllTime via GameCalendarPeriods, not the concrete service gamer147 2026-07-04 12:59:24 -04:00
  • e1b38d5649 feat(mission): add MissionEventKeys registry with Practice numeric→named mapping gamer147 2026-07-04 12:59:15 -04:00
  • 6e6856db4f refactor(calendar): delete JstPeriod, update doc comments gamer147 2026-07-04 12:00:18 -04:00
  • 448153d592 refactor(admin,item-purchase): migrate to IGameCalendarService gamer147 2026-07-04 11:52:53 -04:00
  • 2b0cd516f0 refactor(mission): migrate MissionProgressService + MissionAssembler to IGameCalendarService gamer147 2026-07-04 11:51:27 -04:00
  • 70ec063c0f refactor(login-bonus): migrate LoginBonusService to IGameCalendarService gamer147 2026-07-04 11:49:54 -04:00
  • a6b2c47b98 refactor(pack): migrate PackController to IGameCalendarService gamer147 2026-07-04 11:49:17 -04:00
  • 90d420d97a feat(calendar): add IGameCalendarService — UTC reset-boundary primitive gamer147 2026-07-04 11:46:12 -04:00
  • 81fe842c15 fix(pack): daily half-off single spends crystals and gates re-purchase gamer147 2026-07-04 11:23:51 -04:00
  • 4ce1cd172a feat(rank): AI-start SelfInfo carries viewer rank progress gamer147 2026-07-04 10:25:29 -04:00
  • 7ff8a7bd92 feat(rank): wire RankProgressService into RankBattleController.Finish gamer147 2026-07-04 10:21:12 -04:00
  • f18cfb58b8 feat(rank): viewer repo LoadForRankProgressAsync gamer147 2026-07-04 10:16:10 -04:00
  • 4e87957306 feat(rank): RankProgressService — pure +100/-50 tier-floored math gamer147 2026-07-04 10:15:34 -04:00
  • 9f97837211 feat(rank): add ViewerRankProgress owned entity + migration gamer147 2026-07-04 10:13:50 -04:00
  • 94ed6734c7 tune(battle-xp): raise defaults to XpPerWin=200 / XpPerLoss=50 gamer147 2026-07-04 09:34:01 -04:00
  • 8199a95356 feat(battle-xp): wire story first-clear /finish through IBattleXpService gamer147 2026-07-04 09:06:47 -04:00
  • a03bff3ea7 feat(battle-xp): wire colosseum /finish through IBattleXpService, extend response DTO gamer147 2026-07-04 09:02:25 -04:00
  • 91ec14fc7e feat(battle-xp): wire free-battle /finish through IBattleXpService gamer147 2026-07-04 09:00:29 -04:00
  • 1e9693e56d feat(battle-xp): wire rank + AI-rank /finish through IBattleXpService gamer147 2026-07-04 08:59:01 -04:00
  • c3da6079b2 feat(battle-xp): wire /practice/finish through IBattleXpService gamer147 2026-07-04 08:56:59 -04:00
  • f85f221bfa refactor(battle-xp): retire ArenaTwoPickConfig.ClassXpPerBattle for shared BattleXpService gamer147 2026-07-04 08:54:52 -04:00
  • 81771bb0a0 feat(battle-xp): IBattleXpService with per-mode overrides and auto level-up gamer147 2026-07-04 08:51:43 -04:00
  • 4541378885 feat(battle-xp): config section + viewer loader for class XP grants gamer147 2026-07-04 08:44:11 -04:00
  • 57df329923 content: wire Serilog into SVSim.ContentServer gamer147 2026-07-04 02:08:44 -04:00
  • 9a47ac8d90 app: wire Serilog into SVSim.EmulatedEntrypoint gamer147 2026-07-04 02:07:41 -04:00
  • a7843adfe6 hosting: add SVSim.Hosting with Serilog extension gamer147 2026-07-04 01:55:58 -04:00
  • 87891f9896 cull(engine-cleanup): pass-9 cascade round 2 after UILabel stub gamer147 2026-07-03 23:46:27 -04:00
  • 773844165b cull(engine-cleanup): pass-9 cascade round 1 after UILabel stub gamer147 2026-07-03 23:45:28 -04:00
  • ed6f6f1d68 cull(engine-cleanup): pass-9 — stub UILabel to live surface gamer147 2026-07-03 23:44:22 -04:00
  • 737f375ea7 cull(engine-cleanup): pass-9 cascade round 3 after NGUIText stub gamer147 2026-07-03 23:39:49 -04:00
  • 39ae2b0c0a cull(engine-cleanup): pass-9 cascade round 2 after NGUIText stub gamer147 2026-07-03 23:38:51 -04:00
  • 08c6bca58c cull(engine-cleanup): pass-9 cascade round 1 after NGUIText stub gamer147 2026-07-03 23:37:54 -04:00
  • 9183625ac2 cull(engine-cleanup): pass-9 — stub NGUIText to live surface gamer147 2026-07-03 23:36:53 -04:00
  • 699e78755b cull(engine-cleanup): pass-9 cascade round 6 after UIPanel stub gamer147 2026-07-03 23:34:56 -04:00
  • c6319696f3 cull(engine-cleanup): pass-9 cascade round 5 after UIPanel stub gamer147 2026-07-03 23:33:54 -04:00
  • 01f9635d50 cull(engine-cleanup): pass-9 cascade round 4 after UIPanel stub gamer147 2026-07-03 23:32:57 -04:00
  • 0103050fe0 cull(engine-cleanup): pass-9 cascade round 3 after UIPanel stub gamer147 2026-07-03 23:31:57 -04:00
  • 18844b2233 cull(engine-cleanup): pass-9 cascade round 2 after UIPanel stub gamer147 2026-07-03 23:30:59 -04:00
  • 36bd90c2b3 cull(engine-cleanup): pass-9 cascade round 1 after UIPanel stub gamer147 2026-07-03 23:29:52 -04:00
  • 853b060f02 cull(engine-cleanup): pass-9 — stub UIPanel to live surface gamer147 2026-07-03 23:28:50 -04:00
  • b54e79f1fb cull(engine-cleanup): pass-9 cascade round 3 after DialogBase stub gamer147 2026-07-03 23:25:54 -04:00
  • 6eb7d51d53 cull(engine-cleanup): pass-9 cascade round 2 after DialogBase stub gamer147 2026-07-03 23:24:59 -04:00
  • 4e3bb6f88f cull(engine-cleanup): pass-9 cascade round 1 after DialogBase stub gamer147 2026-07-03 23:23:59 -04:00
  • 6de5f03956 cull(engine-cleanup): pass-9 — stub DialogBase to live surface gamer147 2026-07-03 23:22:43 -04:00
  • 840ac27027 chore(engine-cleanup): pass-8 phase-2 — sync stub headers with post-cascade state gamer147 2026-07-03 22:38:17 -04:00
  • 0ee97cdd93 cull(engine-cleanup): pass-8 phase-2 cascade round 5 after CardDetailUI stub gamer147 2026-07-03 22:37:13 -04:00
  • 4950a57b11 cull(engine-cleanup): pass-8 phase-2 cascade round 4 after CardDetailUI stub gamer147 2026-07-03 22:36:16 -04:00
  • 0bf981ce4d cull(engine-cleanup): pass-8 phase-2 cascade round 3 after CardDetailUI stub gamer147 2026-07-03 22:35:21 -04:00
  • 99120ec858 cull(engine-cleanup): pass-8 phase-2 cascade round 2 after CardDetailUI stub gamer147 2026-07-03 22:34:23 -04:00
  • 3d641e9e35 cull(engine-cleanup): pass-8 phase-2 cascade round 1 after CardDetailUI stub gamer147 2026-07-03 22:33:26 -04:00
  • 8e6dbad56b cull(engine-cleanup): pass-8 phase-2 — stub CardDetailUI to live surface gamer147 2026-07-03 22:32:22 -04:00
  • f26e8ceaec cull(engine-cleanup): pass-8 phase-2 cascade round 4 after GachaUI stub gamer147 2026-07-03 22:28:42 -04:00
  • 4e49a1236d cull(engine-cleanup): pass-8 phase-2 cascade round 3 after GachaUI stub gamer147 2026-07-03 22:27:45 -04:00
  • 78971adc46 cull(engine-cleanup): pass-8 phase-2 cascade round 2 after GachaUI stub gamer147 2026-07-03 22:26:45 -04:00
  • e3b8b8dc0c cull(engine-cleanup): pass-8 phase-2 cascade round 1 after GachaUI stub gamer147 2026-07-03 22:25:44 -04:00
  • a0533bf2e3 cull(engine-cleanup): pass-8 phase-2 — stub GachaUI to live surface gamer147 2026-07-03 22:24:38 -04:00
  • 59de7a8b86 cull(engine-cleanup): pass-8 phase-2 cascade round 5 after AreaSelectUI stub gamer147 2026-07-03 22:22:31 -04:00
  • 80abda90bf cull(engine-cleanup): pass-8 phase-2 cascade round 4 after AreaSelectUI stub gamer147 2026-07-03 22:21:26 -04:00
  • 9d4d5ff1ec cull(engine-cleanup): pass-8 phase-2 cascade round 3 after AreaSelectUI stub gamer147 2026-07-03 22:20:18 -04:00
  • b148eb2968 cull(engine-cleanup): pass-8 phase-2 cascade round 2 after AreaSelectUI stub gamer147 2026-07-03 22:19:20 -04:00
  • ad525456be cull(engine-cleanup): pass-8 phase-2 cascade round 1 after AreaSelectUI stub gamer147 2026-07-03 22:18:12 -04:00
  • 7aabb6a405 cull(engine-cleanup): pass-8 phase-2 — stub AreaSelectUI to live surface gamer147 2026-07-03 22:17:04 -04:00
  • 41ddba8fda cull(engine-cleanup): pass-8 phase-2 cascade round 7 after MyPageItemHome stub gamer147 2026-07-03 22:05:22 -04:00
  • 7938c6198c cull(engine-cleanup): pass-8 phase-2 cascade round 6 after MyPageItemHome stub gamer147 2026-07-03 22:04:24 -04:00
  • 4aa0ccaea7 cull(engine-cleanup): pass-8 phase-2 cascade round 5 after MyPageItemHome stub gamer147 2026-07-03 22:03:27 -04:00
  • e07cacc55e cull(engine-cleanup): pass-8 phase-2 cascade round 4 after MyPageItemHome stub gamer147 2026-07-03 22:02:30 -04:00
  • 17b436d33d cull(engine-cleanup): pass-8 phase-2 cascade round 3 after MyPageItemHome stub gamer147 2026-07-03 22:01:31 -04:00
  • e9b112d083 cull(engine-cleanup): pass-8 phase-2 cascade round 2 after MyPageItemHome stub gamer147 2026-07-03 22:00:30 -04:00
  • 6cf95bcfd6 cull(engine-cleanup): pass-8 phase-2 cascade round 1 after MyPageItemHome stub gamer147 2026-07-03 21:59:29 -04:00
  • d89e7d9634 cull(engine-cleanup): pass-8 phase-2 — stub MyPageItemHome to live surface gamer147 2026-07-03 21:58:31 -04:00
  • 57312b64be cull(engine-cleanup): pass-8 phase-2 cascade round 7 after MyPageItemBattle stub gamer147 2026-07-03 21:56:59 -04:00
  • 200b865728 cull(engine-cleanup): pass-8 phase-2 cascade round 6 after MyPageItemBattle stub gamer147 2026-07-03 21:55:58 -04:00
  • b404ff40c0 cull(engine-cleanup): pass-8 phase-2 cascade round 5 after MyPageItemBattle stub gamer147 2026-07-03 21:54:57 -04:00
  • 8e7fc8b15a cull(engine-cleanup): pass-8 phase-2 cascade round 4 after MyPageItemBattle stub gamer147 2026-07-03 21:54:00 -04:00
  • d1f56e6dda cull(engine-cleanup): pass-8 phase-2 cascade round 3 after MyPageItemBattle stub gamer147 2026-07-03 21:53:04 -04:00
  • 22ef593593 cull(engine-cleanup): pass-8 phase-2 cascade round 2 after MyPageItemBattle stub gamer147 2026-07-03 21:52:04 -04:00
  • 006a6ae7ab cull(engine-cleanup): pass-8 phase-2 cascade round 1 after MyPageItemBattle stub gamer147 2026-07-03 21:51:02 -04:00
  • 57dee92570 cull(engine-cleanup): pass-8 phase-2 — stub MyPageItemBattle to live surface gamer147 2026-07-03 21:49:55 -04:00
  • 3a652479f6 cull(engine-cleanup): pass-8 phase-2 cascade round 6 gamer147 2026-07-03 21:23:50 -04:00
  • 7d1ea2b38d cull(engine-cleanup): pass-8 phase-2 cascade round 5 gamer147 2026-07-03 21:22:48 -04:00
  • 8b07f6a0b2 cull(engine-cleanup): pass-8 phase-2 cascade round 4 gamer147 2026-07-03 21:21:46 -04:00