Skip to content

Status-first Market Data settings: coverage map + Advanced fold#323

Merged
luokerenx4 merged 1 commit into
masterfrom
data-issue
Jun 11, 2026
Merged

Status-first Market Data settings: coverage map + Advanced fold#323
luokerenx4 merged 1 commit into
masterfrom
data-issue

Conversation

@luokerenx4

Copy link
Copy Markdown
Contributor

Summary

  • Market Data settings redesigned around the hub-first reality: main view = Data Hub status card (live ping dot via new GET /api/market-data/hub-status) + read-only Data Sources coverage map showing the effective source per data family; the only CTA is the FMP "Add key" row, which expands Advanced and highlights the field.
  • All deep customization (provider keys regrouped FMP-unlock / hub-covered / long-tail, chart vendor routing, self-host hub endpoint) folds into a collapsed Advanced section — fresh installs see a fully green status page, not empty key forms.
  • Fixes a latent useConfigPage autosave loop (PUT echo adopted with fresh identity → re-armed the autosave effect → silent PUT every 600ms after any edit, on every config page). Echo now adopted only when content differs.
  • Demo handlers synced: marketData section in /api/config mock, PUT echo, hub-status mock.

Test plan

  • npx tsc --noEmit clean (root)
  • cd ui && npx tsc -b clean
  • pnpm test — 1804 passed
  • Walked dev:demo: main view renders, Add key → Advanced expand + scroll + highlight, hub toggle off flips coverage rows to local/needs-keys, no unmocked-endpoint warnings, PUT loop gone (was ~10 PUTs / 6s)
  • Production hub fx-rates envelope verified (meta present — what the ping shape-checks)

🤖 Generated with Claude Code

… fold

The settings page now answers "where is my data coming from, is it
healthy" instead of presenting a wall of key forms:

- Data Hub card: live status dot (server-side ping via new
  GET /api/market-data/hub-status, probing the hub's cheapest cached
  endpoint), hub on/off toggle. URL field moved to Advanced.
- Data Sources coverage map: effective source per data family
  (boards / economy series / calendars / FX / charts / equity
  fundamentals), derived from hub state + configured keys — mirrors
  the backend's hub-first fallback chain. The only CTA is the FMP
  "Add key" row (the one key that unlocks data the hub doesn't serve);
  it expands Advanced and highlights the FMP field.
- Advanced (collapsed by default): provider keys regrouped to tell the
  real story (FMP unlock / hub-covered / long tail), chart vendor
  routing, self-host hub endpoint.

Also fixes a latent autosave loop in useConfigPage: the PUT echo was
adopted unconditionally with a fresh object identity, re-arming
useAutoSave's [data] effect — any edit on any config page kept
re-PUTting every 600ms forever. Echo is now adopted only when its
content differs. Demo handlers updated to match (marketData section in
/api/config, PUT echo, hub-status mock).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
openalice-demo Ready Ready Preview, Comment Jun 11, 2026 10:12am

Request Review

@luokerenx4 luokerenx4 merged commit 9f828dd into master Jun 11, 2026
5 checks passed
pull Bot pushed a commit to jinzaizhichi/OpenAlice that referenced this pull request Jun 12, 2026
Headless sessions become reopenable + the ~/.openalice data root + sealed
broker credentials + the UTA order lifecycle closes. release.yml tags
v0.42.0-beta.1 + publishes the prerelease on master push.

Highlights:
- Headless runs are now real sessions: all four agent CLIs' session ids are
  captured from headless stdout while running, full output logs persist on
  disk, and a finished run reopens as a normal interactive session
  (resume-by-id). UI: collapsed "headless · N" tier under each workspace +
  output viewer in the Automation panel (TraderAlice#326).
- User data moves to ~/.openalice (OPENALICE_HOME); broker credentials are
  sealed at rest (AES-256-GCM, machine-bound key, migration 0009); desktop
  relocates packaged data on first launch.
- UTA order lifecycle closed: auto-sync poller + fill data + PnL invariant
  (TraderAlice#325); externally-placed orders observed as squashed [observed] commits
  with configurable cadence (TraderAlice#327); Alpaca error bodies surfaced, bybit
  spot+swap order sweep, listing-driven sync perf (TraderAlice#328).
- CLI is the default workspace tool access; trading lands on the CLI surface
  as the alice-uta export family (TraderAlice#319, TraderAlice#320).
- Self-host hardening: configurable ports, MCP loopback bind + lock, Docker
  self-host image, Guardian owns the Vite dev port (TraderAlice#303TraderAlice#308, TraderAlice#322).
- Market data: status-first settings page with coverage map (TraderAlice#323), hub FX
  table, keyless yfinance fallbacks, long-tail fetcher fixes (TraderAlice#310TraderAlice#317).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant