diff --git a/backend/app.py b/backend/app.py index c615c31..5debc52 100644 --- a/backend/app.py +++ b/backend/app.py @@ -1055,8 +1055,16 @@ def local_syncer_save_summary(account_id): applied_dir = root / "state" / "applied" paths = { - "us": applied_dir / f"psopeeps_us.site.{account}.json", - "eu": applied_dir / f"psopeeps_eu.site.{account}.json", + "us": [ + applied_dir / f"psopeeps_us.us-live.site.{account}.json", + applied_dir / f"psopeeps_us.us-test.site.{account}.json", + applied_dir / f"psopeeps_us.us-hardcore.site.{account}.json", + ], + "eu": [ + applied_dir / f"psopeeps_eu.eu-live.site.{account}.json", + applied_dir / f"psopeeps_eu.eu-test.site.{account}.json", + applied_dir / f"psopeeps_eu.eu-hardcore.site.{account}.json", + ], } def parse_time(value): @@ -1079,19 +1087,36 @@ def local_syncer_save_summary(account_id): "manifest_sha256": None, } - if path.exists(): + states = [] + errors = [] + + for path in paths[region]: + if not path.exists(): + continue try: data = json.loads(path.read_text()) - info.update({ - "status": "seen", - "label": "Seen", - "style": "warn", - "host": data.get("host"), - "applied_at": data.get("applied_at"), - "manifest_sha256": data.get("manifest_sha256"), - }) + data["_path"] = str(path) + states.append(data) except Exception as e: - info["error"] = str(e) + errors.append(f"{path.name}: {e}") + + if states: + latest_state = max(states, key=lambda x: str(x.get("applied_at") or "")) + hashes = {x.get("manifest_sha256") for x in states if x.get("manifest_sha256")} + info.update({ + "status": "seen", + "label": "Seen", + "style": "warn", + "host": latest_state.get("host"), + "applied_at": latest_state.get("applied_at"), + "manifest_sha256": latest_state.get("manifest_sha256"), + "targets_seen": len(states), + "targets_expected": len(paths[region]), + "all_targets_same_hash": len(hashes) == 1, + }) + + if errors: + info["errors"] = errors regions[region] = info diff --git a/site/account-ready.html b/site/account-ready.html index f4a9548..e74b95e 100644 --- a/site/account-ready.html +++ b/site/account-ready.html @@ -32,13 +32,9 @@

Account Dashboard

chuudoku

-

- Manage your Blue Burst login and the serial/access keys you use for DC V2, PC V2, and GC V3. - Linked saves are mirrored between US and EU automatically. -

-BB account ready + Account ready Saves synced
@@ -54,12 +50,25 @@
-

Blue Burst Account

- -

Blue Burst is limited to one account per website account. Password reset can come later.

+

Blue Burst

+

BB username chuudoku
BB account ID 0126326509

+ +
@@ -88,10 +97,13 @@ - + + + + - +
diff --git a/site/app.js b/site/app.js index 2a9de21..d253af4 100644 --- a/site/app.js +++ b/site/app.js @@ -388,7 +388,10 @@ if (!hero || !title) return; for (const p of Array.from(hero.querySelectorAll("p"))) { - if (p.textContent.includes("Manage your Blue Burst login")) { + if ( + p.textContent.includes("Manage your Blue Burst login") || + p.classList.contains("account-email-line") + ) { p.remove(); } } @@ -575,7 +578,10 @@ renderAccountEmail(accountData); updateAccountStatusBadges(accountData); - renderBBCard(accountData); + + // Account dashboard BB card is server-rendered. + // Do not let the generic app bootstrap rewrite it into a stale layout. + return; } async function boot() {