Composite components, build fix (§S1 already landed via Sätteri opt-out),
canary preview, and legacy cutover. §S1 documents both Plan A (unified()
processor, chosen path) and Plan B fallback (Astro 6 downgrade, not
needed).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
## Summary
- New markdown-it plugin (`cli-command.ts`) renders `<CliCommand>` tags
as styled code blocks with proper shiki dual-theme color variables
(`--shiki-light` / `--shiki-dark`) for syntax highlighting: longbridge
binary (purple), subcommands (blue), args and inline comments (gray)
- Header changed from compact bar to h2-style title matching SDK Links
section; Install CLI link floats right with no border, pointing to
`/docs/cli`
- Single-line `<CliCommand>content</CliCommand>` tokens (parsed as
paragraph > inline by markdown-it) now correctly handled via Case 2
token splice
- Expanded all non-trade `<CliCommand>` blocks from single-line to
multi-line format with 2–4 real verified examples per command and
locale-aware comments (en / zh-CN / zh-HK) across quote pull, content,
subscribe, security, and watchlist docs
## Test plan
- [ ] Run `bun run dev` and verify CliCommand blocks render with correct
syntax highlighting in light and dark mode
- [ ] Verify h2 title "CLI" appears with Install CLI link on the right
(no border)
- [ ] Verify Install CLI link points to `/docs/cli`
- [ ] Check a few pages across en / zh-CN / zh-HK locales
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
## Summary
- **New `/skill` page** with full trilingual support (en / zh-CN /
zh-HK)
- **Interactive chat demo**: 4 scenarios (Live Quote, Portfolio,
Subscription, Earnings) × 5 AI clients (OpenClaw, ChatGPT, Claude,
Claude Code, Codex) with typewriter animation
- **Rich response rendering**: tables with Shadcn-style borders, mini
SVG sparkline charts, syntax-highlighted code blocks
- **Scenario cards section** below the demo describing use cases
- **Nav update**: Skill link added to all three locale nav configs
## Bug Fixes
- **Syntax highlighter**: replaced chained-regex approach with a
single-pass tokenizer. The old code ran number → keyword → string
regexes sequentially on the same string — the keyword regex matched
`class` inside generated `<span class="hl-n">` attributes, and the
string regex matched `"hl-n"` as a string literal, corrupting the HTML
structure entirely
- **v-html routing**: replaced `currentMessages[2]?.rich` template
condition with an explicit `isRichResponse` ref set in `runAnimation()`
to prevent incorrect branch selection when switching client tabs
## Test plan
- [ ] Visit `/skill`, `/zh-CN/skill`, `/zh-HK/skill` — page loads in all
locales
- [ ] Click through all 4 scenario tabs — animation plays correctly for
each
- [ ] Click through all 5 client tabs — correct message shown, Claude
Code tab shows syntax-highlighted code (not raw HTML)
- [ ] Verify sparkline charts render in the Live Quote / OpenClaw
scenario
- [ ] Verify table borders render correctly (outer border + row
dividers, no missing bottom border)
- [ ] Verify gain/loss values show green/red colors in tables
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>