Skip to content

Merge develop: /bsc paint-on-mount perf fix#7842

Merged
lalalune merged 8 commits into
mainfrom
develop
May 20, 2026
Merged

Merge develop: /bsc paint-on-mount perf fix#7842
lalalune merged 8 commits into
mainfrom
develop

Conversation

@lalalune
Copy link
Copy Markdown
Member

@lalalune lalalune commented May 20, 2026

Summary

Promote develop (8 commits) to main. Headline change:

  • perf(cloud): paint /bsc credit form on first load, not after user fetch (641788b79f) — the amount input + "you pay / you receive" panel has zero dependency on auth state or any network call, but it lived inside the user-profile loading gate, so the entire right column of /bsc blanked for ~5s while /api/v1/user round-tripped. Lifted the static card out so it paints on first frame; replaced the full-blank loading state with a card-shaped skeleton sized to the final wallet/sign-in card so layout doesn't jank in. Also moved /api/crypto/status to fire on mount (it's a public endpoint) instead of serially after user-profile, cutting a second roundtrip and removing a "Direct wallet payments are not configured yet" flash.

Other commits: doc reorg, develop workflow regression fixes, test formatting, WIP follow-ups.

Test plan

  • Cloud CF Deploy fires on main → production Pages serves the new bundle.
  • Smoke https://elizacloud.ai/bsc cold-load: amount field + you-pay / you-receive should be visible immediately, with a skeleton card below until the wallet/sign-in panel mounts (~1–2s) — no more 5s right-column blank.
  • Smoke signed-in OAuth flow: the new AttachWalletCard ships unchanged from the earlier PR, this is purely a paint-timing fix.

🤖 Generated with Claude Code

Greptile Summary

This promote-to-main PR merges 8 develop commits, with the headline change being a paint-timing fix for the /bsc credit page: the static amount-input card is now rendered on first frame instead of inside the auth-loading gate, and /api/crypto/status (a public endpoint) is now fetched on mount in parallel with the user-profile call rather than serially after it.

  • packages/cloud-frontend/src/pages/bsc/page.tsx — Static credit form lifted out of the auth gate, crypto-status useEffect added with proper abort-via-cancel-flag pattern, and the full-blank DashboardLoadingState replaced with a card-shaped skeleton that matches the final panel's dimensions.
  • packages/benchmarks/orchestrator/ — GAIA benchmark retired from the orchestrator: gate, discovery config, constants, and agent-compatibility branch all removed; tests updated to reflect the new gate set.
  • MiscellaneousClawvilleOperatorSurface imports consolidated to the UI barrel; UI smoke-test selectors updated for phone/messages/contacts routes; users-me-wallet-attach test reformatted.

Confidence Score: 4/5

Safe to merge — the BSC paint-timing fix is well-structured and the cleanup changes are straightforward removals.

The BSC page refactor correctly decouples static UI from auth state and uses a proper cancellation pattern for the async fetch. The GAIA retirement is a clean removal with matching test updates. The only rough edge is a duplicate import * as React alongside the existing named React import in main.tsx, which is a minor style issue that won't affect runtime behaviour.

No files require special attention; packages/app/src/main.tsx has a minor duplicate import worth cleaning up.

Important Files Changed

Filename Overview
packages/cloud-frontend/src/pages/bsc/page.tsx Core perf fix: static credit form lifted out of auth gate and rendered on first paint; crypto-status fetch moved to mount-time useEffect with proper cancellation; loading state replaced with card-shaped skeleton.
packages/app/src/main.tsx Adds import * as React from "react" directly above an existing import { type ComponentType, lazy, StrictMode, Suspense } from "react", creating two imports from the same module that should be merged.
packages/benchmarks/orchestrator/adapters.py GAIA benchmark retired from the orchestrator: discovery config, _has_gaia_official_dataset gate, _agent_compatibility_for branch, and all related constants removed cleanly.
packages/benchmarks/orchestrator/tests/test_runtime_gates.py Tests updated to remove gaia_official_dataset gate and add osworld_docker gate; assertions updated to match the new gate set.
plugins/plugin-clawville/src/ui/ClawvilleOperatorSurface.tsx Import consolidation: types and hooks moved to the top-level @elizaos/ui barrel; unused RunActivitySummary type removed and replaced with inferred entry type in the map call.
packages/cloud-api/tests/users-me-wallet-attach.test.ts Pure formatting change — mock declarations reformatted; no logic changes.
packages/app/test/ui-smoke/all-pages-clicksafe.spec.ts Smoke test selectors for phone, messages, and contacts deep-link routes updated from chat-composer-textarea to page-specific headings and role selectors; mode: "all" added to enforce all checks pass.

Sequence Diagram

sequenceDiagram
    participant Browser
    participant BscPage
    participant CryptoAPI as /api/crypto/status
    participant UserAPI as /api/v1/user

    Note over Browser,UserAPI: BEFORE (old behaviour)
    Browser->>BscPage: mount
    BscPage->>UserAPI: fetch user profile
    Note over BscPage: right column blank (~5 s)
    UserAPI-->>BscPage: user data
    BscPage->>CryptoAPI: fetch crypto/status (serial)
    CryptoAPI-->>BscPage: status data
    BscPage->>Browser: render credit form + wallet panel

    Note over Browser,UserAPI: AFTER (this PR)
    Browser->>BscPage: mount
    BscPage->>Browser: render static credit card (first frame)
    BscPage->>Browser: render skeleton for auth panel
    par parallel fetches
        BscPage->>CryptoAPI: fetch crypto/status (public, no auth)
        BscPage->>UserAPI: fetch user profile
    end
    CryptoAPI-->>BscPage: status data
    UserAPI-->>BscPage: user data
    BscPage->>Browser: swap skeleton → wallet/sign-in panel
Loading

Reviews (1): Last reviewed commit: "perf(cloud): paint /bsc credit form on f..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

Shaw and others added 8 commits May 20, 2026 04:47
…obot

User directive: "thoroughly review and make sure that the information is
organized well and broken up between the OS, Runtime, App, Cloud, Chip,
Robot."

Nav restructure:
- Top-level tabs become: Get Started, OS, Runtime, App, Cloud, Chip, Robot,
  CLI, Reference (was: Get Started + 8 separate track tabs).
- OS tab: tracks/elizaos/* (Linux + AOSP + install).
- Runtime tab: agent + framework + plugin tracks merged with runtime/,
  agents/, plugins/ internals + architecture + connectors + Eliza-1 model.
  This is the largest tab — most builders work here.
- App tab: agent-app + framework-app + apps/* + dashboard/* + app developer
  guides. Splits the "build a product shell" work cleanly from the runtime.
- Cloud tab: tracks/cloud/* + cloud guides.
- Chip tab: NEW. Eight pages on the Eliza E1 RISC-V SoC — overview,
  architecture, RTL & verification, software/BSP, physical design,
  simulation & FPGA, manufacturing.
- Robot tab: tracks/training/robot + tracks/training/feed. (Embodiment.)

Content updates:
- New tracks/chip/{overview,architecture,rtl-verify,software,
  physical-design,simulation,manufacturing}.mdx sourced from
  packages/chip/README + AGENTS.md + CLAUDE.md.
- Rewrite tracks/training/eliza-1.mdx with real model facts: 5 sizes
  (0.8B/2B/4B/9B/27B) on Qwen3.5/3.6 bases, APOLLO + apollo_mini
  optimizer split, three real quant methods (PolarQuant, TurboQuant,
  QJL), GGUF variants, pipeline order.
- Rewrite tracks/overview.mdx + index.mdx around the 6 dimensions and add
  a package-mapping table so readers know exactly where each dimension
  lives in the monorepo.

Validation: 195 pages, 0 orphans, 0 missing nav targets, 13/13 docs
tests pass, mintlify broken-links reports "no broken links found."

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…bile SDK versions

Addresses gaps flagged in final review:

1. Coverage gaps:
   - New plugins/scenarios.md: documents @elizaos/scenario-runner
     (the eliza-scenarios CLI for end-to-end runtime tests).
   - New apps/ui-library.md: documents @elizaos/ui shared component
     library (used by every app shell).
   - Wired both into nav (Runtime > Plugin internals, App > Apps).

2. Accuracy fix:
   - apps/mobile.md: corrected iOS minimum (iOS 14+ armv7 -> iOS 16+
     arm64, matches IPHONEOS_DEPLOYMENT_TARGET=16.0 in the Xcode
     project) and Android compileSdkVersion (35 -> 36, matches
     packages/app/android/variables.gradle).

3. Explicit coverage contract:
   - New COVERAGE.md: maps every packages/ subdir to its docs surface
     OR records why it's intentionally omitted (workflows, contracts,
     native, bun-ios-runtime, electrobun-carrots, browser-bridge-extension,
     swe-bench-workspace, shared, cloud-infra, cloud-routing, scripts,
     test). Establishes the PR-level contract: every new package
     lands with a coverage decision.

Result: 197 pages, 0 orphans, 0 missing nav, 13/13 docs tests pass,
mintlify broken-links clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sweeps up pending modifications across the develop worktree:
benchmark adapters (compactbench, hermes-adapter, openclaw-adapter,
loca-bench, orchestrator, registry), app smoke spec + main.tsx,
docs additions (ui-library, scenarios), plugin-clawville operator
surface, and imagegen evidence snapshots.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

# Conflicts:
#	packages/app/src/main.tsx
The amount input / "you pay" / "you receive" panel has zero dependency on
auth state, the user-profile fetch, or the crypto-status fetch — but it
lived inside the `!isReady || isLoading -> Loading account` gate, so the
entire right column blanked for ~5s while `/api/v1/user` round-tripped.

Lift the static Cloud-credit card out of the gated block so it paints
immediately. Below it:

  - while user-profile is loading: card-shaped skeleton sized to the
    final wallet/sign-in card so layout doesn't jank when it lands
  - signed-out: Sign in CTA (unchanged)
  - signed-in: Suspense fallback uses the same skeleton until the lazy
    wallet/attach chunk loads
  - signed-in + wallet attached: DirectCryptoCreditCard (unchanged)
  - signed-in + no wallet: AttachWalletCard (unchanged)

Also kick off `/api/crypto/status` on mount instead of after user
resolves. The endpoint is public; serializing it behind the auth fetch
made DirectCryptoCreditCard flash a "Direct wallet payments are not
configured yet" state for a beat once the user landed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@lalalune lalalune merged commit 317c232 into main May 20, 2026
46 of 53 checks passed
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 20, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: bd9f9208-700e-4b4f-ac74-9c46dd4415a2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 20, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

Comment thread packages/app/src/main.tsx
Comment on lines +108 to 109
import * as React from "react";
import { type ComponentType, lazy, StrictMode, Suspense } from "react";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Two separate imports from "react" were introduced here — the new namespace import sits directly above the existing named-import line. They should be merged into a single statement to avoid a redundant module reference and keep the import section consistent.

Suggested change
import * as React from "react";
import { type ComponentType, lazy, StrictMode, Suspense } from "react";
import * as React from "react";
import type { ComponentType } from "react";
import { lazy, StrictMode, Suspense } from "react";

@github-actions
Copy link
Copy Markdown
Contributor

LifeOps Multi-Tier Benchmark

Suite: smoke — Tiers requested: large,frontier

large

LifeOps Multi-Tier Benchmark

Tier: large
Suite: smoke

frontier

LifeOps Multi-Tier Benchmark

Tier: frontier
Suite: smoke

Artifacts: lifeops-multi-tier-large-26161969843, lifeops-multi-tier-frontier-26161969843

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant