## Summary
- Clarifies that US stocks can be shorted directly with no additional
setup
- Clarifies that HK short selling requires activation via the mobile
app: place first HK short sell order → triggers SBL agreement signing →
wait for approval
- Notes that HK short selling is subject to a fee levied by the Hong
Kong Inland Revenue Department, with details in the in-app agreement
- Documents API error `602301` returned before the HK SBL agreement is
signed
- Updates `docs/{en,zh-CN,zh-HK}/docs/cli/orders/order.md` and
`skills/longbridge/references/cli/overview.md`
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- Adds short selling documentation to
`docs/{en,zh-CN,zh-HK}/docs/cli/orders/order.md` and
`skills/longbridge/references/cli/overview.md`
- Documents that US and HK markets must each be activated separately via
the mobile app before short selling is available via CLI/API/MCP
- Activation flow: place first short sell order in the mobile app →
triggers SBL agreement signing → wait for review approval
- Notes API error `602301` returned before the SBL agreement is signed
- Notes A-share (SH/SZ) short selling is not supported
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
Ref #1003
- Replace the SG market code entry with a blockquote note explaining
that Singapore real-time quotes are currently unavailable via Longbridge
Developers (API / CLI / MCP)
- Direct users to the Longbridge client (app or desktop) for SG market
quotes
- Remove SG from the Basic quote permission level description in all
three language versions (en / zh-CN / zh-HK)
## Test plan
- [ ] Verify the note renders correctly as a blockquote in all three
locale pages
- [ ] Confirm the quote permission table looks correct without SG in the
Basic row
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- **Quote restructure**: Split flat `pull/` (25 items) into semantic
groups — `stocks/`, `options/`, `warrants/`, `analytics/`
- **Subscribe**: Merged `push/` into `subscribe/` (renamed to
"Subscribe"); added Overview page explaining WebSocket subscription
model and pull API reference links
- **Market**: Extracted `quote/market/` to standalone top-level
`market/` section (position 3.2) to accommodate future additions like
rankings, screeners, IPO
- **Trade ordering**: Fixed `execution/` (History→Today) and `order/`
(Submit→Today→History→Details→Replace→Cancel→Estimate) sidebar ordering
- **Titles**: Optimized all Quote section titles with proper securities
industry terminology; renamed "Withdraw Order" → "Cancel Order"; "Update
Watchlist Group" → "Manage Group Securities"
- **Watchlist**: Renamed group label and sorted items; `update_group`
title now reflects its actual function (add/remove securities in group)
- **Appendix**: Moved `security_list` to socket appendix as "Overnight
Eligible Securities" with accurate description
## Test plan
- [ ] Build and verify sidebar structure renders correctly
- [ ] Verify existing URLs still resolve (absolute slugs preserved for
moved files)
- [ ] Verify new `/market/*` URLs work
- [ ] Check Subscribe Overview links resolve correctly
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Translates the new CLI v0.21.0 command documentation (business-segments,
industry-rank, industry-peers, financial-report snapshot,
institution-rating --views) from English to Simplified and Traditional
Chinese.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
## Summary
Adds changelog entry for CLI v0.21.0 (consolidating v0.20.1~v0.20.3),
with MCP v0.3.0 mentioned inline.
### CLI v0.21.0
- Industry Intelligence: `industry-rank`, `industry-peers`
- Revenue Segment Breakdown: `business-segments`
- AI Earnings Snapshot: `financial-report snapshot`
- Analyst Conviction Trends: `institution-rating --views`
- MCP server updated with the same capabilities (133 tools total)
Written for end users — less technical, more about what you can now do.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
## Problem
PR #992 merged a version of `pack-skills.yml` that was **missing the
environment-selection logic**. Both canary and release always upload
regardless of what you select.
## Two root causes
1. **Wrong version merged** — the file in #992 didn't include
`workflow_dispatch` inputs, the `Resolve environment` step, or the `if:`
conditions
2. **Reserved keyword** — the step used `id: env`, but `env` is a
built-in GitHub Actions context. Using it as a step ID causes
`steps.env.outputs.*` to silently fail, making every `if:` evaluate to
`true`
## Fix
- Adds `workflow_dispatch` inputs: `canary` / `release` / `both`
(default: `canary`)
- Adds `Resolve environment` step with `id: setup` (not `env`)
- Adds `if:` conditions: canary step only runs when target is `canary`
or `both`; release step only when `release` or `both`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
## Summary
Adds `pack-skills.yml` — triggered by `repository_dispatch` from
`longbridge/skills` or manually via `workflow_dispatch`.
## Changes from previous version
Added `environment` input parameter:
| Value | Behaviour |
|---|---|
| `canary` (default) | Upload to canary OSS only — safe for testing, no
production impact |
| `release` | Upload to release OSS only |
| `both` | Upload to both (full release) |
## How to test safely
1. Run `workflow_dispatch` in `longbridge/developers` → select
**`canary`**
2. Verify zip files appear at `oss://lb-assets/github/canary/.../skill/`
3. Once confirmed, run with **`both`** to push to production
## Secrets used
Reuses existing secrets — no new secrets needed:
- `FE_LB_ASSET_ACCESS_KEY_ID`
- `FE_LB_ASSET_ACCESS_KEY_SECRET`
## Counterpart
PR #23 in `longbridge/skills` — sends the dispatch event (also updated
to manual-only + passes `environment`).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
## Summary
- Add JSON `mcpServers` config block to Method B (MCP) section of the
Skill install guide
- Clarifies that the JSON format works for Claude Desktop, Cursor, Zed,
Gemini CLI, and other JSON-config-based clients
- Updated all three language versions (en, zh-CN, zh-HK)
## Test plan
- [ ] Verify the JSON block renders correctly in the docs
- [ ] Check all three language versions display properly
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Add a "Refresh Access Token" subsection covering Python, JavaScript,
Rust, Java, and C++ examples. Each example shows refreshing with a
3-year expiry and using the returned token to create a new Config.
## Summary
- Add hidden HTML comment at the top of all three locale files (`en` /
`zh-CN` / `zh-HK`) instructing the AI to follow a strict install order —
regardless of user prompts to skip steps:
1. Install CLI or configure MCP
2. Complete authentication (`longbridge auth login`)
3. Verify with "Get the latest price for TSLA" and confirm live data
4. Only then install the Skill (Step 2)
- Update English screenshots to latest versions for Claude Desktop and
Codex
- Clarify that both **Chat** and **Cowork** modes in Claude Desktop are
restricted (not just Chat)
## Test plan
- [ ] Verify HTML comments are not visible on the rendered page
- [ ] Confirm new screenshots render correctly in the en locale
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- Reorder steps: connect to Longbridge platform (CLI or MCP) first,
install Skill second — the old order had Skill as Step 1, which is
useless without data access
- Lead intro with terminal-based AI tools (Claude Code, Codex, opencode,
OpenClaw) as the recommended/quickest path
- Clarify CLI vs MCP framing: CLI = best experience but needs local
install; MCP = easier, just a URL
- Add **Known restrictions by tool** section with clear guidance and
screenshots:
- **Claude Desktop Chat mode**: network whitelist blocks CLI/MCP —
switch to Code tab instead (screenshot added)
- **Codex Cloud mode**: same network restrictions — must select "Work
locally" (screenshot added)
- **Claude.ai / ChatGPT.com web**: redirect to Claude Desktop Code tab
- Add mainland China accelerated MCP endpoint
(`https://openapi.longbridge.cn/mcp`) to English version
- Rename section heading "Connect your Longbridge account" → "Connect to
the Longbridge platform"
- All changes synced across en / zh-CN / zh-HK
## Test plan
- [ ] Preview skill install page in all three locales
- [ ] Verify screenshots render correctly
- [ ] Check all links resolve (CLI reference, Claude Desktop download)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- Trade commands (`buy`, `sell`, `cancel`, `replace`, `executions`,
`orders`) were missing the `order` parent command prefix — all now use
`longbridge order <subcommand>`
- `longbridge order <id>` → `longbridge order detail <id>`
- `longbridge topics SYMBOL` → `longbridge topic SYMBOL` (no trailing
`s`)
- `longbridge capital dist/flow SYMBOL` → `longbridge capital SYMBOL` /
`longbridge capital SYMBOL --flow` (`dist`/`flow` are not valid
subcommands)
- `longbridge topic create SYMBOL "body"` → `longbridge topic create
--body "..." --tickers SYMBOL` (positional args not supported)
- `longbridge watchlist update <id> --add A B` → `--add A --add B`
(`--add` is not multi-value, must be repeated)
## Test plan
- [ ] Verified each corrected command format against `longbridge <cmd>
--help`
- [ ] All 13 files updated; only `docs/en/` affected (zh-CN / zh-HK
counterparts do not exist)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- New `ipo` command group docs (subscriptions, wait-listing, listed,
calendar, detail, orders, profit-loss; HK + US variants)
- New `financial-statement` command doc (detailed hierarchical IS/BS/CF
with YoY)
- New `valuation-rank` command doc (daily PE/PB/PS industry percentile
rank)
- New `analyst-estimates` command doc (EPS consensus estimates)
- New `bank-cards`, `withdrawals`, `deposits` account command docs
- Updated `institution-rating` with `--history` and `--industry-rank`
examples
- Updated `news` and `topic` with `search` subcommand examples
- Updated `portfolio` with `short-margin` subcommand
- Added v0.20.0 Release Notes (en/zh-CN/zh-HK)
All documentation is trilingual (en / zh-CN / zh-HK).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- Build now clones `longbridge/skills@main` and packs its `skills/`
contents into `longbridge.zip`, instead of zipping the local
`skills/longbridge/` folder.
- Fails the build if the clone fails or the upstream `skills/` directory
is missing — the published zip can no longer go silently stale.
- Each upstream skill (`longbridge-capital-flow`, `longbridge-depth`, …)
becomes a top-level entry in the zip, so unzip directly into
`.claude/skills/` keeps working.
## Test plan
- [ ] CI build passes and uploads `longbridge.zip`
- [ ] `unzip -l longbridge.zip` shows the upstream `longbridge-*` skill
folders at the top level
- [ ] Manually break the clone (e.g. wrong URL) locally and confirm the
build aborts with the new error message
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
## Summary
Fixes incorrect API endpoint URLs in the API Reference documentation
examples.
## Problem
Many API Reference examples were using incorrect URLs with the wrong
domain, e.g.:
```
curl --request GET \
--url 'https://openapi.longbridge.com/watchlist/
```
## Changes
- Updated 21 incorrect API endpoint URLs in `openapi.yaml` to use the
correct domain/base URL
- Ensures all curl examples in the API Reference reflect the accurate
endpoint addresses
## Files Changed
- `openapi.yaml`: 21 URL corrections (42 lines changed)
🤖 Auto-generated by Endless.
Co-authored-by: 老袁 Yuan Zhanghong <zhanghong.yuan@longbridge-inc.com>
## Summary
- **ArchCanvas**: replace all `--brand-color` usages with neutral vars
(`--vp-c-text-1/3`, `--vp-c-divider`, `--vp-c-bg-elv`) on arrows,
labels, API Gateway box, hover states
- **ProductCLI**: active feature item border/icon uses `--vp-c-text-2`
(dark, not brand); section gets `border-top` + `border-bottom`
- **Gray section borders**: ProductMCP, GetStarted, MarketCoverage all
get `border-top` + `border-bottom` to delineate from adjacent white
sections
- **CapSection**: switched from `bg-soft` to `bg` (white) to break
consecutive gray run with MCP section above it
- **CoreFeaturesSection**: 6 card accents now cover distinct hues across
the color wheel — teal, orange, blue, green, amber, purple (was
duplicating teal and blue-purple)
- **ProductSkill**: top-center radial gradient (`#00dbb6` 7%/12%
light/dark); code stream blocks get lighter background with solid border
- **ProductOpenAPI**: side-cell brand gradient raised from 8% → 13% for
better visibility
- **GetStarted**: removed messy 135deg multi-color gradient, replaced
with flat `bg-soft`
## Test plan
- [ ] Light mode: verify section alternation (white/gray/white) is
visually clear throughout the page
- [ ] Dark mode: verify Skill section teal gradient is visible; section
borders are subtle but present
- [ ] Developer Tools cards: confirm all 6 cards read as distinct colors
- [ ] Platform Architecture diagram: arrows and labels should appear
neutral/monochrome
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
Fixes the Pricing page mobile layout issues and replaces the dynamic
QRCode (which failed to render on mobile) with a hardcoded static SVG QR
code.
## Changes
- **Pricing.vue**: Fix responsive layout breakpoints and grid/flex rules
so the pricing comparison table renders correctly on small screens
- **Pricing.vue**: Replace dynamic QRCode component with a pre-generated
static SVG to ensure reliable display on all devices
## Motivation
The Pricing page had broken layout on mobile viewports, and the dynamic
QR code component was not rendering on mobile devices. Using a static
SVG eliminates the rendering dependency and ensures consistent display
across all platforms.
## Related
Builds on top of the Pricing page introduced in #951 and the
UnoCSS/PostCSS fixes from #955.
🤖 Auto-generated by Endless.
---------
Co-authored-by: Huacnlee Li Huashun <huacnlee@longbridge-inc.com>
Co-authored-by: Jason Lee <huacnlee@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- Remove API Reference from top navigation bar (all 3 locales)
- Add API Reference entry to Docs sidebar, positioned after LLMs item
- Opens in new tab (`target: '_blank'`)
- External-link icon appended to label to signal new-tab behavior
- Add `external-link` SVG to `SIDEBAR_ICONS_MAP` in `gen.ts`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
Implements a dedicated pricing page similar to
[financialdatasets.ai/pricing](https://www.financialdatasets.ai/pricing)
that visually compares different market data subscription levels and
their capabilities.
## Changes
- **`Pricing.vue`**: New Vue component that displays market data
subscription tiers in a pricing comparison table format, highlighting
feature availability and pricing across different permission levels
- **`index.ts`**: Registers the new `Pricing` component for use in
VitePress pages
- **`docs/en/docs/pricing.md`**: English pricing page
- **`docs/zh-CN/docs/pricing.md`**: Simplified Chinese pricing page
- **`docs/zh-HK/docs/pricing.md`**: Traditional Chinese pricing page
## Motivation
Users need a clear way to understand what market data features are
available at each subscription tier and how the tiers differ in price
and capability. A pricing comparison page makes it easy to evaluate
which subscription level fits their needs.
🤖 Auto-generated by Endless.
---------
Co-authored-by: Huacnlee Li Huashun <huacnlee@longbridge-inc.com>
Co-authored-by: Jason Lee <huacnlee@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- Add `FeaturesMenu` Vue component — a mega-menu dropdown in the main
nav featuring 9 financial data product categories (Live Market Quotes,
Price History, Financial Statements, Analyst Estimates, Company News,
SEC Filings, Institutional Ownership, Options & Warrants, Order
Execution)
- Desktop: hover-triggered dropdown with 3×3 grid, icons, titles and
descriptions
- Mobile: collapsible list via `screenMenu` prop (matches VitePress
native nav screen style)
- Full i18n: en / zh-CN / zh-HK via `useData().lang`
- Replaces the Home nav link across all three locales
## Test plan
- [ ] Desktop: hover "Features" button shows dropdown with 9 items in 3
columns
- [ ] Desktop dark mode: shadow and border render cleanly
- [ ] Mobile (<768px): hamburger menu shows collapsible "Features / 功能"
section
- [ ] Switch locale (en / zh-CN / zh-HK): menu label and item text
updates accordingly
- [ ] Click any item: navigates to correct page and closes menu
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- Add CLI v0.19.2 release notes to `cli.md` and `changelog.md` (EN /
zh-CN / zh-HK)
- Update `finance-calendar` command examples to reflect new subcommand
structure (`report`, `dividend`, `split`, `ipo`, `macrodata`, `closed`)
and `--filter watchlist|positions` option
## Changes
- `finance-calendar` revamp: restructured from single `<event_type>`
argument into subcommands; new `--filter` option scopes events to
watchlist or holdings
- `quote`: new "Last Chg%" column
- `corp-action`: defaults to 30 items, `--all` for full list
- `update --force`: skip version check; auto-retries with `sudo` on
permission error
- TUI: full mouse support; chart type toggle (line / candlestick) in
stock detail view
## Test plan
- [ ] Verify examples in `finance-calendar` section match `longbridge
finance-calendar --help` output
- [ ] Check all three language versions are consistent
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
## Summary
- Add `useLoginState.ts` composable with module-level `isLoginState` ref
shared across components
- `UserAvatar` and `DashboardNavLink` both use `isLoginState` — reactive
to mock toggle without page reload
- Add `MockLoginPanel.vue` (dev-only, fixed bottom-left) to simulate
login/logout state
- `DashboardNavLink` uses `window.location.href` to bypass VitePress
router for `/account` navigation
- `initLoginState()` reads from `localStorage` in dev mode,
`window.longportInternal.isLogin()` in prod
## Test plan
- [ ] In dev mode: Mock Login/Logout button appears at bottom-left
- [ ] Clicking toggles Dashboard link and Avatar/Login button reactively
- [ ] In prod build: MockLoginPanel is not included
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>