diff --git a/README.ja.md b/README.ja.md
new file mode 100644
index 0000000..f6bb4aa
--- /dev/null
+++ b/README.ja.md
@@ -0,0 +1,121 @@
+
+
+
+
+
+ Awesome JEV ギャラリーを見る ·
+ 注目プロジェクト ·
+ 全 44 プロジェクト ·
+ JSON カタログ ·
+ English ·
+ 简体中文
+
+
+Awesome JEV
+
+ソースコードを確認した JEV のプロジェクト、連携、ツール、オープンモデル、実験を集めたギャラリー。
+
+JEV が選択・採点・ルーティング・フィルタリングを担い、実行はアプリケーションコードが制御する実例を紹介します。
+
+概要
+
+| ソース確認済み | 1K+ Star リポジトリ | ユースケース分類 | スナップショット |
+| :---: | :---: | :---: | :---: |
+| **44** | **29** | **10** | **2026-09-20** |
+
+カテゴリから探す
+
+
+ ブラウザ・PC 操作 · 3 ·
+ SDK・フレームワーク · 9 ·
+ ルーティング · 4 ·
+ オープンモデル · 8 ·
+ 検索・データ · 4
+ 安全性・レビュー · 5 ·
+ Agent ワークフロー · 3 ·
+ UI・自動化 · 3 ·
+ 開発者ツール · 2 ·
+ 業務特化ツール · 3
+
+
+## 注目プロジェクト
+
+| | |
+| --- | --- |
+| [](https://github.com/browser-use/jev-ultrafast) | [](https://github.com/BerriAI/litellm) |
+| **[Jev Ultrafast](https://github.com/browser-use/jev-ultrafast)** · ブラウザ・PC 操作 · 9.5K Star
1 回の JEV リクエストでブラウザ操作と対象 DOM を選択します。
[オリジナル事例 · 294 万表示](https://x.com/gregpr07/status/2100411066966749359) · [固定コミットの根拠](https://github.com/browser-use/jev-ultrafast/blob/1231850a0bf1a0c0341fe408ef1668dbbfdfac46/jev_ultrafast/model.py) | **[LiteLLM · JEV Router](https://github.com/BerriAI/litellm)** · ルーティング · 59.2K Star
バックエンドモデルを選ぶ前にリクエストの複雑さを分類します。
[固定コミットの根拠](https://github.com/BerriAI/litellm/blob/56116079c8022da0e8f7ff9ccb017ad5aca5aed2/litellm/router_strategy/complexity_router/jev_classifier.py#L70) |
+| [](https://github.com/langchain-ai/langchain) | [](https://github.com/vercel/ai) |
+| **[LangChain · TypeSafe](https://github.com/langchain-ai/langchain)** · SDK 連携 · 146.7K Star
Python ワークフローで二値・分類・順序付き評価を扱います。
[固定コミットの根拠](https://github.com/langchain-ai/langchain/blob/eba445b7563d1709427bd8072892975a6ea59fdc/libs/partners/typesafe/langchain_typesafe/classifier.py) | **[Vercel AI SDK · TypeSafe](https://github.com/vercel/ai)** · SDK 連携 · 26.9K Star
choice、score、yes/no を共通の evaluate インターフェースへ変換します。
[固定コミットの根拠](https://github.com/vercel/ai/blob/73ec7015edd4f04ca9144ce93a8a037a731e5db8/packages/typesafe-ai/src/typesafe-ai-evaluation-model.ts) |
+| [](https://github.com/NandhaKishorM/laya) | [](https://github.com/can1357/jegrep) |
+| **[Laya](https://github.com/NandhaKishorM/laya)** · オープンモデル · 1.8K Star
多言語の型付き判断をオープンウェイトでローカル実行します。
[Hugging Face モデル](https://huggingface.co/convaiinnovations/laya) · [固定コミットの根拠](https://github.com/NandhaKishorM/laya/blob/d113dca2512fb3eaca313534bc54c7162d87c1d4/README.md) | **[jegrep](https://github.com/can1357/jegrep)** · 検索・データ
インデックスを作らず、実際のコードツリーを意味検索します。
[固定コミットの根拠](https://github.com/can1357/jegrep/blob/a280f14f6da8163bde67e0c49f58b23517a02882/src/jev.rs) |
+| [](https://github.com/trycua/cua) | [](https://github.com/agentgateway/agentgateway) |
+| **[Cua · JEV Use](https://github.com/trycua/cua)** · ブラウザ・PC 操作 · 24.7K Star
DOM や画面領域の説明から次のアクション ID を選択します。
[固定コミットの根拠](https://github.com/trycua/cua/blob/83f142c4290a0f7d9ed545ae8532858c6e4f8145/libs/cua-driver/examples/jev-use/python/jev_adapter.py#L11) | **[Agentgateway · JEV Guardrail](https://github.com/agentgateway/agentgateway)** · 安全性・レビュー · 4.9K Star
ゲートウェイで脱獄、有害コンテンツ、秘密情報漏えいを判定します。
[固定コミットの根拠](https://github.com/agentgateway/agentgateway/blob/6b0270efd25b5255932943e48b5ca47583d3ad28/examples/llm-guardrail-jev/guardrail.ts) |
+| [](https://github.com/elvisun/newsjack) | [](https://github.com/OpenByteInc/QuantDinger) |
+| **[NewsJack](https://github.com/elvisun/newsjack)** · Agent ワークフロー · 1.2K Star
大量のニュースを先に絞り込み、選ばれた機会だけを Agent が処理します。
[オリジナル事例 · 58.3 万表示](https://x.com/elvissun/status/2100951347080421409) · [固定コミットの根拠](https://github.com/elvisun/newsjack/tree/092d882fc69912622f620c50eb493afe625f99dc/demos/news-desk-dealer) | **[QuantDinger · JEV Gate](https://github.com/OpenByteInc/QuantDinger)** · 業務特化ツール · 11.8K Star
一部の実取引エントリー前に、根拠とリスクの判断ゲートを追加します。
[固定コミットの根拠](https://github.com/OpenByteInc/QuantDinger/blob/12c04eb2cdb8a9d08dc84502f5261ec3f1c56bf7/backend_api_python/app/services/ai_decision_filter.py) |
+
+フィルターと詳しい説明付きで見る →
+
+## 全 44 プロジェクト
+
+### ブラウザ・コンピューター操作(3)
+
+[Jev Ultrafast](https://github.com/browser-use/jev-ultrafast) · [Cua · JEV Use](https://github.com/trycua/cua) · [Agent Desktop · JEV Skill](https://github.com/lahfir/agent-desktop)
+
+### SDK・フレームワーク連携(9)
+
+[LangChain · TypeSafe](https://github.com/langchain-ai/langchain) · [Composio · TypeSafe Provider](https://github.com/ComposioHQ/composio) · [Vercel AI SDK · TypeSafe](https://github.com/vercel/ai) · [Pydantic AI · TypeSafe](https://github.com/pydantic/pydantic-ai) · [Eliza · TypeSafe Client](https://github.com/elizaOS/eliza) · [LangChain.js · TypeSafe](https://github.com/langchain-ai/langchainjs) · [Rig · TypeSafe Crate](https://github.com/0xPlaygrounds/rig) · [Ax · TypeSafe Client](https://github.com/ax-llm/ax) · [Vellum Assistant · JEV](https://github.com/vellum-ai/vellum-assistant)
+
+### ルーティング・最適化(4)
+
+[LiteLLM · JEV Router](https://github.com/BerriAI/litellm) · [Oh My Pi · JEV Judgments](https://github.com/can1357/oh-my-pi) · [OpenChamber · JEV Router](https://github.com/openchamber/openchamber) · [Firstmate · JEV Dispatch](https://github.com/kunchenguid/firstmate)
+
+### オープンモデル(8)
+
+[SemIf](https://github.com/TheoLeeCJ/SemIf) · [Laya](https://github.com/NandhaKishorM/laya) · [NanoJev](https://github.com/TianyuCodings/NanoJev) · [Jevlike](https://github.com/vinnylarouge/jevlike) · [Kev 0.5B](https://github.com/jaredpalmer/kev) · [Nimble](https://github.com/bespokelabsai/nimble) · [LocalJev](https://github.com/githubnext/localjev) · [Jeff](https://github.com/logan-markewich/jeff)
+
+### 検索・データ(4)
+
+[Jev Experiments](https://github.com/dabit3/jev-experiments) · [Tax Document Classifier](https://github.com/kyotofin/tax-doc-classifier) · [jev-semgrep](https://github.com/uehaj/jev-semgrep) · [jegrep](https://github.com/can1357/jegrep)
+
+### 安全性・レビュー(5)
+
+[Agentgateway · JEV Guardrail](https://github.com/agentgateway/agentgateway) · [Latitude · JEV Preclassifier](https://github.com/latitude-dev/latitude-llm) · [Abide](https://github.com/coldteadotai/abide) · [jev-align](https://github.com/sutro-sh/jev-align) · [Jev Reviewer](https://github.com/choxos/jev-reviewer)
+
+### Agent ワークフロー(3)
+
+[Jev Model Router](https://github.com/davila7/claude-code-templates) · [NewsJack](https://github.com/elvisun/newsjack) · [jev-gateway](https://github.com/vinilana/jev-gateway)
+
+### UI・自動化(3)
+
+[json-render · JEV Compose](https://github.com/vercel-labs/json-render) · [TipTour macOS](https://github.com/milind-soni/tiptour-macos) · [Live Jev](https://github.com/okinaaudio/live-jev)
+
+### 開発者ツール(2)
+
+[Fast Jev Compaction](https://github.com/tamaratran/fast-jev-compaction) · [Hono Jev Router](https://github.com/yusukebe/hono-jev-router)
+
+### 業務特化ツール(3)
+
+[AI Hedge Fund · JEV Adapter](https://github.com/virattt/ai-hedge-fund) · [QuantDinger · JEV Gate](https://github.com/OpenByteInc/QuantDinger) · [JEV Trader](https://github.com/jarrodwatts/jev-trader)
+
+
+データ、根拠、選定基準
+
+- 各項目には公開リポジトリ、固定コミットの根拠、JEV が担う具体的な判断を記録しています。
+- ソース確認で見つかった直接関連の 1K+ Star リポジトリを収録し、独自性のある小規模プロジェクトも残しています。
+- Star と表示回数は発見時点のスナップショットです。`source-reviewed` は性能再現、セキュリティ監査、開発者による推薦を意味しません。
+- 機械可読データ:[`data/projects.json`](./data/projects.json)
+- 追加・修正:[`CONTRIBUTING.md`](./CONTRIBUTING.md)
+
+
+
+## BeatAPI
+
+**[ギャラリーを見る](https://beatapi.io/ja/awesome-jev)** ·
+**[BeatAPI Key を作成](https://beatapi.io/ja/dashboard/apikeys)** ·
+**[コントリビュート](./CONTRIBUTING.md)**
+
+モデル ID、価格、実レスポンスが確認されるまで、JEV を BeatAPI の提供中エンドポイントとは表記しません。
+
+---
+
+BeatAPI がキュレーション · ライブギャラリー · ライセンスと注記
diff --git a/README.md b/README.md
index 6b9bd88..da924b2 100644
--- a/README.md
+++ b/README.md
@@ -7,33 +7,38 @@
Featured projects ·
All 44 projects ·
JSON catalogue ·
- 中文说明
+ 简体中文 ·
+ 日本語
-# Awesome JEV
+Awesome JEV
-**A source-reviewed gallery of JEV projects, integrations, tools, open models,
-and experiments—with primary discovery links and fixed-commit evidence kept together.**
+A source-reviewed gallery of JEV projects, integrations, tools, open models, and experiments.
-JEV is most useful when it handles a bounded judgment—**choose, score, route, or
-filter**—while ordinary code keeps control of thresholds, execution, and
-fallbacks. This collection makes those system boundaries inspectable.
+See where JEV chooses, scores, routes, or filters—while application code keeps control of execution.
-## At a glance
+At a glance
| Source-reviewed projects | Repositories ≥1K stars | Use-case groups | Snapshot |
-| ---: | ---: | ---: | :--- |
+| :---: | :---: | :---: | :---: |
| **44** | **29** | **10** | **2026-09-20** |
-Stars and views are discovery snapshots, not independent validation of runtime
-or benchmark claims. For a filterable experience, open the
-**[live gallery on BeatAPI](https://beatapi.io/awesome-jev)**.
+Browse by category
-## Featured project gallery
+
+ Browser & Computer Use · 3 ·
+ SDK Integrations · 9 ·
+ Routing · 4 ·
+ Open Models · 8 ·
+ Search & Data · 4
+ Safety & Review · 5 ·
+ Agent Workflows · 3 ·
+ Interfaces · 3 ·
+ Developer Tools · 2 ·
+ Domain Tools · 3
+
-Like the [MiniMax H3 prompt gallery](https://github.com/BeatAPI/awesome-minimax-h3-prompts),
-this README puts concrete examples first. Each project below links to its repository,
-the exact source revision reviewed, and—when available—the original discovery case.
+## Featured project gallery
| | |
| --- | --- |
@@ -48,7 +53,7 @@ the exact source revision reviewed, and—when available—the original discover
| [](https://github.com/elvisun/newsjack) | [](https://github.com/OpenByteInc/QuantDinger) |
| **[NewsJack](https://github.com/elvisun/newsjack)** · Agent workflow · 1.2K stars
Filters hundreds of live news items before an agent handles the selected opportunities.
[Original case · 583K views](https://x.com/elvissun/status/2100951347080421409) · [Fixed-commit evidence](https://github.com/elvisun/newsjack/tree/092d882fc69912622f620c50eb493afe625f99dc/demos/news-desk-dealer) | **[QuantDinger · JEV Gate](https://github.com/OpenByteInc/QuantDinger)** · Domain tool · 11.8K stars
Adds an evidence and risk gate before selected live-trading entries.
[Fixed-commit evidence](https://github.com/OpenByteInc/QuantDinger/blob/12c04eb2cdb8a9d08dc84502f5261ec3f1c56bf7/backend_api_python/app/services/ai_decision_filter.py) |
-**[Explore these projects with filters and full descriptions →](https://beatapi.io/awesome-jev)**
+Explore with filters and full descriptions →
## All 44 projects
@@ -92,75 +97,25 @@ the exact source revision reviewed, and—when available—the original discover
[AI Hedge Fund · JEV Adapter](https://github.com/virattt/ai-hedge-fund) · [QuantDinger · JEV Gate](https://github.com/OpenByteInc/QuantDinger) · [JEV Trader](https://github.com/jarrodwatts/jev-trader)
-## Why these projects matter
-
-```text
-noisy state + bounded options
- │
- ▼
- JEV: choose · score · route · filter
- │
- ▼
- local policy: threshold · fallback · approval
- │
- ▼
- tool, model, search, or action
-```
-
-The recurring pattern is not “replace the whole agent.” It is to move one
-frequent, well-bounded judgment onto a faster decision path and leave the final
-action under explicit application policy.
-
-## Use the catalogue
-
-```bash
-curl -s https://raw.githubusercontent.com/BeatAPI/awesome-jev/main/data/projects.json \
- | jq '.projects[] | {name, category, repoUrl, source, evidenceUrl}'
-```
-
-Each record includes its primary discovery source, repository metadata, localized
-summaries, the JEV decision point, and a permalink to the exact source version reviewed.
+
+Data, evidence, and selection notes
-## Selection standard
+- Every entry keeps a public repository, a fixed-commit evidence link, and a concrete JEV decision role.
+- Directly related repositories at or above 1,000 stars are included after source review; smaller projects remain when they add a distinct pattern.
+- Stars and views are discovery snapshots. `source-reviewed` does not mean BeatAPI reproduced benchmarks, audited security, or received maintainer endorsement.
+- Machine-readable data: [`data/projects.json`](./data/projects.json)
+- Corrections and additions: [`CONTRIBUTING.md`](./CONTRIBUTING.md)
-A project enters the main catalogue only when it has:
-
-- a public repository with a clear JEV or JEV-compatible implementation;
-- an original X case, GitHub source match, or another primary discovery source;
-- fixed-commit evidence that future readers can inspect;
-- a concrete, bounded decision role rather than a generic AI claim;
-- one canonical entry per project after deduplication.
-
-Every directly related repository at or above **1,000 stars** found by the source
-audit is included after review. Smaller entries such as `jegrep` can still be
-included when they add a distinct implementation pattern.
-
-`source-reviewed` does **not** mean we ran the project, reproduced its benchmark,
-audited its security, or received an endorsement from its maintainers.
-
-## Contributing
-
-Additions and evidence corrections are welcome. Read
-[`CONTRIBUTING.md`](./CONTRIBUTING.md) before opening a pull request.
+
## BeatAPI
-[BeatAPI](https://beatapi.io) is the professional capability layer for any
-agent. One platform key gives developers access to the BeatAPI capabilities
-available today.
-
-**[Browse Awesome JEV on BeatAPI](https://beatapi.io/awesome-jev)** ·
-**[Create a BeatAPI key](https://beatapi.io/dashboard/apikeys)**
-
-This repository does not claim that JEV is currently live in BeatAPI. JEV access
-will be announced only after its endpoint, model ID, pricing, and a real response
-are verified.
-
-## License
+**[Browse the live gallery](https://beatapi.io/awesome-jev)** ·
+**[Create a BeatAPI key](https://beatapi.io/dashboard/apikeys)** ·
+**[Contribute](./CONTRIBUTING.md)**
-BeatAPI-authored catalogue text and repository assets are MIT licensed. Listed
-projects retain their own licenses. See [`NOTICE.md`](./NOTICE.md).
+JEV is not claimed as a live BeatAPI endpoint until its model ID, pricing, and real response are verified.
---
-Curated and maintained by BeatAPI · Live gallery · beatapi.io
+Curated by BeatAPI · Live gallery · License & notices
diff --git a/README.zh-CN.md b/README.zh-CN.md
index dc7ec1f..bf9066c 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -7,31 +7,38 @@
精选项目 ·
全部 44 个项目 ·
JSON 目录 ·
- English
+ English ·
+ 日本語
-# Awesome JEV
+Awesome JEV
-**经过源码核对的 JEV 项目、集成、工具、开放模型与实验 Gallery。每个条目都保留
-一手发现来源、公开仓库和固定 commit 源码证据。**
+经过源码核对的 JEV 项目、集成、工具、开放模型与实验 Gallery。
-JEV 最适合处理有明确边界的判断:**选择、评分、路由、过滤**。最终阈值、
-执行动作和失败回退仍由本地代码控制,这个项目库重点展示的正是这种系统分工。
+看看 JEV 如何完成选择、评分、路由与过滤,同时由应用代码掌控执行。
-## 当前规模
+当前规模
| 已核对源码项目 | 1K+ Star 仓库 | 实践方向 | 数据快照 |
-| ---: | ---: | ---: | :--- |
+| :---: | :---: | :---: | :---: |
| **44** | **29** | **10** | **2026-09-20** |
-Star 和浏览量只是发现快照,不代表本站独立复现了运行结果或 Benchmark。需要筛选、
-搜索和完整中文说明,可以打开 **[BeatAPI 主站 Gallery](https://beatapi.io/zh/awesome-jev)**。
+按分类浏览
-## 精选项目 Gallery
+
+ 浏览器与电脑操作 · 3 ·
+ SDK 与框架集成 · 9 ·
+ 路由与优化 · 4 ·
+ 开放模型 · 8 ·
+ 搜索与数据 · 4
+ 安全与审查 · 5 ·
+ Agent 工作流 · 3 ·
+ 界面与自动化 · 3 ·
+ 开发者工具 · 2 ·
+ 垂直工具 · 3
+
-参考 [MiniMax H3 Prompt Gallery](https://github.com/BeatAPI/awesome-minimax-h3-prompts)
-的案例展示方式,先让项目本身可见。每个案例都提供仓库、固定版本源码证据,能找到
-原始传播案例的同时保留原链接。
+## 精选项目 Gallery
| | |
| --- | --- |
@@ -46,7 +53,7 @@ Star 和浏览量只是发现快照,不代表本站独立复现了运行结果
| [](https://github.com/elvisun/newsjack) | [](https://github.com/OpenByteInc/QuantDinger) |
| **[NewsJack](https://github.com/elvisun/newsjack)** · Agent 工作流 · 1.2K Star
先筛选数百条实时新闻,再让 Agent 继续处理少量入选机会。
[原始案例 · 58.3 万浏览](https://x.com/elvissun/status/2100951347080421409) · [固定版本源码](https://github.com/elvisun/newsjack/tree/092d882fc69912622f620c50eb493afe625f99dc/demos/news-desk-dealer) | **[QuantDinger · JEV Gate](https://github.com/OpenByteInc/QuantDinger)** · 垂直工具 · 11.8K Star
在部分真实交易入场前增加证据质量与风险判断闸门。
[固定版本源码](https://github.com/OpenByteInc/QuantDinger/blob/12c04eb2cdb8a9d08dc84502f5261ec3f1c56bf7/backend_api_python/app/services/ai_decision_filter.py) |
-**[在主站筛选并查看完整项目说明 →](https://beatapi.io/zh/awesome-jev)**
+在主站筛选并查看完整项目说明 →
## 全部 44 个项目
@@ -90,59 +97,25 @@ Star 和浏览量只是发现快照,不代表本站独立复现了运行结果
[AI Hedge Fund · JEV Adapter](https://github.com/virattt/ai-hedge-fund) · [QuantDinger · JEV Gate](https://github.com/OpenByteInc/QuantDinger) · [JEV Trader](https://github.com/jarrodwatts/jev-trader)
-## JEV 在系统里的位置
-
-```text
-复杂状态 + 有限选项
- │
- ▼
-JEV:选择 · 评分 · 路由 · 过滤
- │
- ▼
-本地策略:阈值 · 回退 · 人工确认
- │
- ▼
-工具、模型、搜索或实际动作
-```
-
-这些项目共同的思路不是“让 JEV 替代整个 Agent”,而是把一个高频、明确、
-有边界的判断放到更短的决策链路里。
-
-## 收录标准
+
+数据、证据与收录说明
-- 有公开仓库并能定位 JEV 或 JEV 兼容实现;
-- 有 X 原案例、GitHub 源码命中或其他一手发现来源;
-- 保留可长期核对的固定 commit 证据;
-- 能明确说明 JEV 在系统中负责哪一个有限判断;
-- 完成项目级去重。
+- 每个条目都保留公开仓库、固定 commit 证据和明确的 JEV 判断职责。
+- 源码搜索发现的直接相关 1K+ Star 仓库经核对后纳入;实践模式独特的小项目也会保留。
+- Star 和浏览量只是发现快照;`source-reviewed` 不代表 BeatAPI 已复现性能、完成安全审计或获得作者背书。
+- 机器可读数据:[`data/projects.json`](./data/projects.json)
+- 补充与纠错:[`CONTRIBUTING.md`](./CONTRIBUTING.md)
-源码搜索发现的直接相关 1K+ Star 仓库,经核对后全部纳入;像 `jegrep` 这样
-Star 较低但实践模式独特的项目也会作为精选案例保留。
-
-`source-reviewed` 只代表核对过公开源码,不代表 BeatAPI 已经运行项目、复现
-性能、完成安全审计或获得作者背书。
-
-## 参与维护
-
-欢迎补充项目或修正证据。提交前请阅读
-[`CONTRIBUTING.md`](./CONTRIBUTING.md)。
+
## BeatAPI
-[BeatAPI](https://beatapi.io) 是 **The professional capability layer for any
-agent**。开发者可以用一个平台 Key 使用 BeatAPI 当前已经上线的能力。
-
-**[浏览 Awesome JEV 主站 Gallery](https://beatapi.io/zh/awesome-jev)** ·
-**[创建 BeatAPI Key](https://beatapi.io/zh/dashboard/apikeys)**
-
-本仓库不宣称 JEV 已经在 BeatAPI 上线。只有端点、模型 ID、价格和真实返回完成
-核验后,才会正式公布 JEV 的接入方式。
-
-## License
+**[浏览主站 Gallery](https://beatapi.io/zh/awesome-jev)** ·
+**[创建 BeatAPI Key](https://beatapi.io/zh/dashboard/apikeys)** ·
+**[参与维护](./CONTRIBUTING.md)**
-BeatAPI 编写的目录文字和仓库资产采用 MIT License;被收录项目保留各自许可证。
-详见 [`NOTICE.md`](./NOTICE.md)。
+在模型 ID、价格和真实返回完成核验前,本仓库不宣称 JEV 已经作为 BeatAPI 端点上线。
---
-由 BeatAPI 策展与维护 · 主站 Gallery · beatapi.io
+由 BeatAPI 策展 · 主站 Gallery · 许可证与声明
diff --git a/scripts/validate.test.mjs b/scripts/validate.test.mjs
index 5d68aaa..71ffb22 100644
--- a/scripts/validate.test.mjs
+++ b/scripts/validate.test.mjs
@@ -44,18 +44,26 @@ test('catalogue covers multiple practical patterns', () => {
test('README identity and project-owned cover stay present', async () => {
const readme = await readFile(new URL('../README.md', import.meta.url), 'utf8');
const chineseReadme = await readFile(new URL('../README.zh-CN.md', import.meta.url), 'utf8');
- assert.match(readme, /# Awesome JEV/);
+ const japaneseReadme = await readFile(new URL('../README.ja.md', import.meta.url), 'utf8');
+ assert.match(readme, /Awesome JEV<\/h1>/);
assert.match(readme, /assets\/readme\/cover\.webp/);
assert.match(readme, /Powered by BeatAPI|BeatAPI/);
assert.match(readme, /https:\/\/beatapi\.io\/awesome-jev/);
assert.match(chineseReadme, /https:\/\/beatapi\.io\/zh\/awesome-jev/);
- assert.equal(
- [...readme.matchAll(/opengraph\.githubassets\.com\/awesome-jev-20260920\//g)].length,
- 10,
- );
+ assert.match(japaneseReadme, /https:\/\/beatapi\.io\/ja\/awesome-jev/);
+ assert.match(readme, /At a glance<\/h2>/);
+ assert.match(chineseReadme, /当前规模<\/h2>/);
+ assert.match(japaneseReadme, /概要<\/h2>/);
+ for (const localizedReadme of [readme, chineseReadme, japaneseReadme]) {
+ assert.equal(
+ [...localizedReadme.matchAll(/opengraph\.githubassets\.com\/awesome-jev-20260920\//g)].length,
+ 10,
+ );
+ }
for (const project of catalogue.projects) {
assert.ok(readme.includes(project.repoUrl), `README missing ${project.id}`);
assert.ok(chineseReadme.includes(project.repoUrl), `Chinese README missing ${project.id}`);
+ assert.ok(japaneseReadme.includes(project.repoUrl), `Japanese README missing ${project.id}`);
}
await access(new URL('../assets/readme/cover.webp', import.meta.url));
await access(new URL('../assets/readme/cover.png', import.meta.url));