Files
nofx/docs/i18n
Lance c6d9ef469e release: merge dev into main (2026-04-20) (#1487)
* feat(store): prevent deletion of active strategies and update translations (#1461)

Co-authored-by: Dean <afei.wuhao@gmail.com>

* fix: allow model switching without re-entering wallet key

Users with existing wallets could not switch AI models because the
"Start Trading" button required a valid private key even when one was
already configured. Now the button is enabled when hasExistingWallet
is true, and handleSubmit passes an empty key so the backend preserves
the existing key.

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

* refactor: replace window.location with useNavigate for routing in auth components (#1470)

Co-authored-by: Dean <afei.wuhao@gmail.com>

* feat(trader): implement margin mode handling for order and leverage settings

* refactor(trader): update SetMarginMode to avoid legacy endpoint and improve logging

* feat(api): enhance strategy handling by integrating claw402 wallet key validation

Added validation for the claw402 model's wallet key during strategy test runs. If the selected AI model is claw402, the server now checks for a valid wallet key and returns appropriate error messages if it's missing or if the model fails to load. This ensures better error handling and user feedback when working with AI models.

* refactor(api): streamline claw402 wallet key retrieval and error handling

Refactored the strategy handling logic to encapsulate claw402 wallet key retrieval in a new method, `resolveStrategyDataWalletKey`. This improves code readability and maintains consistent error handling for missing or invalid wallet keys during strategy test runs. The changes enhance the overall robustness of the AI model integration.

* feat(trader): add claw402 wallet key resolution for trader configuration

Implemented a new method, `resolveTraderDataWalletKey`, to retrieve the claw402 wallet key based on the selected AI model and user ID. This enhancement allows for better integration of the claw402 model within the trader configuration, ensuring that the correct wallet key is used for trading operations. The `AutoTraderConfig` struct has been updated to include the new `Claw402WalletKey` field, improving the overall handling of wallet keys in the trading process.

* feat(claw402): preflight USDC balance before AI calls (#1479)

* chore: ignore nofx-server build artifact

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(claw402): preflight USDC balance before AI calls

Short-circuit claw402 Call/CallWithRequestFull when the wallet balance
can't cover the estimated cost of the call, surfacing ErrInsufficientFunds
instead of letting x402 fail mid-flight after the sign step.

- wallet: cached balance lookup (30s TTL, per-address mutex) to avoid
  hammering the Base RPC; separate error-returning and display-only APIs
  so callers can distinguish zero balance from an unreachable RPC.
- claw402: 1.5× safety multiplier on the flat per-call estimate, 4.0×
  for reasoner models whose chain-of-thought cost can blow past the
  flat rate. Fail-open on RPC errors — x402 still gates actually-empty
  wallets, and we prefer availability over extra strictness.
- shortAddr redacts the wallet in error strings to avoid leaking the
  full address into telemetry bundles.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix(telemetry): report token usage for SSE streaming paths (#1475)

* fix(telemetry): report token usage for SSE streaming paths

ParseSSEStream already parsed the usage block from SSE chunks but only
printed it, so claw402 streaming calls (and native streaming) never
fired TokenUsageCallback. GA4 therefore undercounted AI usage on the
streaming path.

Return the parsed usage from ParseSSEStream and have both callers fire
the callback with their own Provider/Model.

* chore: drop leftover debug Printf in ParseSSEStream

Telemetry is now wired via TokenUsageCallback, so the Printf is
redundant noise in the stream path.

* fix(gemini): update default model to gemini-3.1-pro

Google discontinued gemini-3-pro-preview on 2026-03-26 and directs all
callers to gemini-3.1-pro / gemini-3.1-pro-preview. Users on their own
API key were getting errors from the native Gemini endpoint because the
provider default pointed at the retired ID. Claw402 was unaffected
because its route map already used gemini-3.1-pro.

Align both the native provider default and the handler's preset list
with gemini-3.1-pro so every code path sends a live model ID.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: extract ResolveClaw402WalletKey to store layer and expand OKX margin mode tests

- Move duplicated claw402 wallet resolution logic into store.AIModelStore.ResolveClaw402WalletKey
- api/strategy.go and manager/trader_manager.go now delegate to the shared method
- Add detailed doc comment on OKX SetMarginMode explaining the local-state-only approach
  and why the legacy /api/v5/account/set-isolated-mode endpoint is not called
- Add 3 new test cases: cross mode leverage, OpenShort tdMode, SetTakeProfit tdMode

* fix(auth): prevent SetupPage remount from wiping freshly-set auth token (#1481)

After #1470 moved routing into react-router, SetupPage is rendered at two
different tree positions (top-level guard + /setup Route). When register
success flushSync-sets `user`, the top-level guard stops matching and the
Route-level SetupPage mounts as a new instance, re-running its cleanup
useEffect and removing the auth_token that handlePostAuthSuccess just wrote.
Subsequent requests 401 and bounce the user back to /login.

Redirect /setup to /welcome when user is already set so SetupPage is never
re-mounted during the auth transition.

* fix(wallet): handle JSON-RPC null error field in balance query

Some RPC implementations return explicit "error": null on success.
json.RawMessage deserializes this as the 4-byte literal "null", so
len() > 0 was true, causing every balance query to fail with
"rpc error: null". Skip the null literal to avoid false positives.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(readme): add quick demo video to localized READMEs (#1486)

* docs(README): add quick demo section with video link and image

* docs(README): update demo video link

* docs(i18n): add quick demo section with video link and image for multiple languages

---------

Co-authored-by: Dean <afei.wuhao@gmail.com>

---------

Co-authored-by: deanokk <wuhao@vergex.trade>
Co-authored-by: Dean <afei.wuhao@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: root <root@localhost.localdomain>
2026-04-20 01:12:43 +08:00
..
2025-12-28 23:29:59 +08:00
2025-12-21 01:36:16 +08:00

🌍 International Documentation / 国际化文档

NOFX documentation is available in multiple languages.

NOFX 文档提供多种语言版本。


📚 Available Languages / 可用语言

Language Main README Status Maintainers
🇬🇧 English README.md Complete Core Team
🇨🇳 Chinese (中文) README.md Complete Community
🇷🇺 Russian (Русский) README.md Complete Community
🇺🇦 Ukrainian (Українська) README.md Complete Community

🔗 Quick Access / 快速访问

English 🇬🇧

中文 🇨🇳

Русский 🇷🇺

Українська 🇺🇦


🤝 Help with Translations / 帮助翻译

Want to Contribute Translations? / 想要贡献翻译?

We welcome translation contributions! / 我们欢迎翻译贡献!

What needs translation? / 需要翻译什么?

  • Main README (complete for 4 languages)
  • 🚧 Deployment guides (partial)
  • 📋 User guides (needed)
  • 📋 Contributing guide (needed for RU/UK)

How to contribute translations? / 如何贡献翻译?

  1. Check existing translations / 检查现有翻译

    • Browse this directory
    • See what's missing
  2. Claim a translation task / 认领翻译任务

    • Open a GitHub Issue
    • Title: [TRANSLATION] Document name to Language
    • Example: [TRANSLATION] CONTRIBUTING.md to Chinese
  3. Submit translation / 提交翻译

    • Follow Contributing Guide
    • Place file in appropriate language folder
    • Keep formatting and structure consistent
  4. Get recognized / 获得认可

    • Listed as translator in credits
    • Eligible for contributor badges
    • Possible bounty rewards ($50-200)

📝 Translation Guidelines / 翻译指南

File Naming Convention / 文件命名规范

Pattern: document-name.{language-code}.md

Examples:

README.md                    → en (default)
docker-deploy.zh-CN.md       → Chinese
docker-deploy.ru.md          → Russian
faq.zh-CN.md                 → Chinese FAQ

Language Codes:

  • en - English (default, no suffix needed)
  • zh-CN - Simplified Chinese
  • ru - Russian
  • uk - Ukrainian
  • ja - Japanese (future)
  • ko - Korean (future)

Quality Standards / 质量标准

Must have / 必须具备:

  • Accurate technical terms
  • Natural, fluent language
  • Consistent terminology
  • Preserved formatting (markdown)
  • Working internal links

Avoid / 避免:

  • Machine translation without review
  • Inconsistent terminology
  • Broken links or formatting
  • Cultural insensitivity

Technical Terms / 技术术语

Keep in English (don't translate):

  • API, HTTP, REST, JSON
  • Docker, Kubernetes
  • GitHub, Git, Pull Request
  • Specific tool names (Binance, Hyperliquid)

Example - Chinese:

  • "启动 Docker 容器" (start Docker container)
  • "启动 多克 容器" (transliterated Docker)

🌐 Request a New Language / 请求新语言

Want NOFX in your language? / 希望 NOFX 支持你的语言?

Steps / 步骤:

  1. Check if it's planned / 检查是否已计划

    • See list below
    • Search GitHub Issues
  2. Create a request / 创建请求

    • Open GitHub Issue
    • Title: [TRANSLATION REQUEST] Language name
    • Explain: Number of potential users, your willingness to help
  3. Volunteer to help / 志愿帮助

    • Offer to translate
    • Find other speakers to review
    • Commit to maintaining updates

Planned Languages / 计划中的语言

Language Status Need Volunteers?
🇯🇵 Japanese 📋 Planned Yes
🇰🇷 Korean 📋 Planned Yes
🇪🇸 Spanish 📋 Planned Yes
🇫🇷 French 📋 Planned Yes
🇩🇪 German 📋 Planned Yes

👥 Translation Team / 翻译团队

Current Translators / 当前翻译者

Language Translators Status
🇨🇳 Chinese Community Active
🇷🇺 Russian Community Active
🇺🇦 Ukrainian Community Active

Want to join the team? / 想加入团队?


📊 Translation Progress / 翻译进度

Document Coverage / 文档覆盖率

Document EN 中文 РУ УК
Main README
CONTRIBUTING 🚧 🚧
CODE_OF_CONDUCT 🚧 🚧
SECURITY 🚧 🚧
Docker Deploy
FAQ

Legend / 图例:

  • Complete / 完成
  • 🚧 In Progress / 进行中
  • Not Started / 未开始

🎯 Priority Translations / 优先翻译

High Priority / 高优先级:

  1. CONTRIBUTING.md (all languages)
  2. Docker deployment guides
  3. FAQ sections

Medium Priority / 中优先级:

  1. User guides
  2. Troubleshooting docs
  3. API reference

Low Priority / 低优先级:

  1. Architecture docs (technical, less urgent)
  2. Advanced configuration guides

🆘 Translation Help / 翻译帮助

Questions? / 有问题?

Resources / 资源:


← Back to Documentation Home