The events page NREs when the schedule references real activities: the
client renders their panels and requests per-activity data
(GetActivityHotData/GetActiveActivityData/...) that this PS cannot fill
yet, Sync(nil) -> black screen. The synthetic list resolves to nothing
and keeps the page open (empty but usable).
realActivitySchedule stays in handlers_activity_data.go for the future
round where per-activity data handlers exist.
The synthetic 1000-60000 ranges filled the Travel Log with entries the
client cannot resolve. Replaced with the 147 real (activityId, panelId)
rows dumped from the March7th PS ActivityConfig (matches the 4.6.51
client), keeping the Apocalyptic Shadow panel 21001 block that the AS
tab requires
- mihoyo-variant KCP in pure Go (28-byte conv+token header), UDP gateway
with 0xFF/0x145/0x194 handshake, ms-precision KCP clock + retransmit ticker
- protobuf for 4.6.51 generated from the AstralOS StarRail.proto (4932
messages) plus CmdID map from // CmdID: comments (2114 ids)
- sdkserver port: query_dispatch/query_gateway (Gateserver pb + base64),
hotfix fetch, auth endpoints, SRTools freesr-data.json upload
- gameserver handlers: login flow, scene load/spawn with real monster
entity tracking, lineup, avatar/skin, missions, tutorials (1249+855),
bag/equip, challenge incl. StartChallenge 1787 layout + Tierce 8973 +
peak 8948, all raw tierce replies
- SceneCastSkill camera bug fix: only real scene monsters (tracked per
session) trigger battle; attacking props/NPCs/air replies retcode 0
without battle_info so the camera stays locked on the character
- end-to-end smoke test simulating a client over real UDP: handshake,
PlayerGetToken, and both SceneCastSkill paths
- reuses the Rust PS data files unchanged (freesr-data.json, persistent,
res.json, teleports.json, challenge_data.json, mission_unlocks.json)