From 4997b493cb660b8af04804c819afd9f3f95cecd5 Mon Sep 17 00:00:00 2001 From: Pan YANG Date: Sun, 2 Aug 2026 19:42:56 +0800 Subject: [PATCH] feat(catalog): add Pi and VSCodium --- cspell.json | 8 ++ data/data-health.json | 36 ++--- data/github-stars.json | 2 + data/vendor-company-stages.json | 10 ++ docs/DATA-HEALTH.md | 20 +-- manifests/clis/pi.json | 130 +++++++++++++++++ manifests/ides/vscode.json | 10 +- manifests/ides/vscodium.json | 134 ++++++++++++++++++ manifests/vendors/earendil.json | 62 ++++++++ manifests/vendors/vscodium.json | 67 +++++++++ .../[locale]/open-source-rank/page.client.tsx | 7 +- src/lib/generated/clis.ts | 2 + src/lib/generated/ides.ts | 2 + src/lib/generated/metadata.ts | 6 +- src/lib/generated/vendors.ts | 4 + src/lib/repository-license.ts | 14 ++ tests/repository-license.test.ts | 16 +++ 17 files changed, 495 insertions(+), 35 deletions(-) create mode 100644 manifests/clis/pi.json create mode 100644 manifests/ides/vscodium.json create mode 100644 manifests/vendors/earendil.json create mode 100644 manifests/vendors/vscodium.json create mode 100644 src/lib/repository-license.ts create mode 100644 tests/repository-license.test.ts diff --git a/cspell.json b/cspell.json index 5a3dd004..ec3b7403 100644 --- a/cspell.json +++ b/cspell.json @@ -65,6 +65,7 @@ "Seções", "Versionierungsschema", "benchmarkları", + "berlisensi", "eşzamanlı", "interoperáveis", "mengkomunikasikan", @@ -79,6 +80,8 @@ "acli", "aaif", "anomalyco", + "Earendil", + "earendil", "aracidir", "glab", "Rovo", @@ -87,6 +90,7 @@ "Zcode", "Zekâ", "Zekâsı", + "zekâdan", "zcode", "xhigh", "personalizer", @@ -146,6 +150,10 @@ "Kiro", "kirodotdev", "Kode", + "Lefos", + "VSCodium", + "vscodium", + "VSX", "lmstudio", "multiherramienta", "komutlari", diff --git a/data/data-health.json b/data/data-health.json index ed41f9a7..4d206a88 100644 --- a/data/data-health.json +++ b/data/data-health.json @@ -1,5 +1,5 @@ { - "asOf": "2026-08-01", + "asOf": "2026-08-02", "thresholds": { "models": 30, "providers": 30, @@ -10,18 +10,18 @@ "vendors": 90 }, "summary": { - "totalRecords": 249, - "recordsWithSources": 249, - "verifiedRecords": 249, - "provenanceComplete": 249, + "totalRecords": 253, + "recordsWithSources": 253, + "verifiedRecords": 253, + "provenanceComplete": 253, "staleVerifiedRecords": 0, "translationPlaceholderValues": 300, "danglingRelationships": 0, "modelBenchmarkCoverage": 9.5, - "productsWithPricing": 64, - "productRecords": 64, - "communityUrlsPopulated": 327, - "communityUrlsWithProvenance": 327, + "productsWithPricing": 66, + "productRecords": 66, + "communityUrlsPopulated": 331, + "communityUrlsWithProvenance": 331, "duplicatedVendorCommunityUrls": 0, "errors": 0, "warnings": 0, @@ -29,15 +29,15 @@ }, "byCategory": { "ides": { - "total": 8, - "verified": 8, - "provenanceComplete": 8, + "total": 9, + "verified": 9, + "provenanceComplete": 9, "stale": 0 }, "clis": { - "total": 26, - "verified": 26, - "provenanceComplete": 26, + "total": 27, + "verified": 27, + "provenanceComplete": 27, "stale": 0 }, "desktops": { @@ -65,9 +65,9 @@ "stale": 0 }, "vendors": { - "total": 45, - "verified": 45, - "provenanceComplete": 45, + "total": 47, + "verified": 47, + "provenanceComplete": 47, "stale": 0 } }, diff --git a/data/github-stars.json b/data/github-stars.json index 0fb37612..da56e439 100644 --- a/data/github-stars.json +++ b/data/github-stars.json @@ -11,6 +11,7 @@ "codota/TabNine": 10800, "continuedev/continue": 35100, "cursor/cursor": 33100, + "earendil-works/pi": 81700, "github/copilot-cli": 11000, "google-antigravity/antigravity-cli": 1700, "google-gemini/gemini-cli": 106200, @@ -29,6 +30,7 @@ "stagewise-io/stagewise": 6800, "Trae-AI/TRAE": 900, "verdentAI/docs": 0, + "VSCodium/vscodium": 32600, "xai-org/grok-build": 22800, "zed-industries/zed": 87600 } diff --git a/data/vendor-company-stages.json b/data/vendor-company-stages.json index 1e92f4da..6fcf352d 100644 --- a/data/vendor-company-stages.json +++ b/data/vendor-company-stages.json @@ -288,6 +288,11 @@ "stage": "startup", "source": null }, + { + "vendorId": "earendil", + "stage": "startup", + "source": null + }, { "vendorId": "kilo", "stage": "startup", @@ -333,6 +338,11 @@ "stage": "startup", "source": null }, + { + "vendorId": "vscodium", + "stage": "startup", + "source": null + }, { "vendorId": "zed-industries", "stage": "startup", diff --git a/docs/DATA-HEALTH.md b/docs/DATA-HEALTH.md index 3245bfde..0a22a955 100644 --- a/docs/DATA-HEALTH.md +++ b/docs/DATA-HEALTH.md @@ -1,21 +1,21 @@ # Data Health Report -Snapshot date: 2026-08-01. Regenerate with `pnpm data-health:report`. +Snapshot date: 2026-08-02. Regenerate with `pnpm data-health:report`. ## Scorecard | Metric | Value | | --- | ---: | -| Manifest records | 249 | -| Records with structured sources | 249 | -| Verified records | 249 | -| Verified with complete provenance | 249 | +| Manifest records | 253 | +| Records with structured sources | 253 | +| Verified records | 253 | +| Verified with complete provenance | 253 | | Stale verified records | 0 | | Non-English values identical to English | 300 | | Dangling product relationships | 0 | | Model benchmark coverage | 9.5% | -| Products with pricing | 64/64 | -| Community URLs with provenance | 327/327 | +| Products with pricing | 66/66 | +| Community URLs with provenance | 331/331 | | Duplicated vendor community URLs | 0 | | Errors / warnings / info | 0 / 0 / 0 | @@ -23,13 +23,13 @@ Snapshot date: 2026-08-01. Regenerate with `pnpm data-health:report`. | Category | Total | Verified | Provenance complete | Stale | | --- | ---: | ---: | ---: | ---: | -| ides | 8 | 8 | 8 | 0 | -| clis | 26 | 26 | 26 | 0 | +| ides | 9 | 9 | 9 | 0 | +| clis | 27 | 27 | 27 | 0 | | desktops | 12 | 12 | 12 | 0 | | extensions | 18 | 18 | 18 | 0 | | models | 123 | 123 | 123 | 0 | | providers | 17 | 17 | 17 | 0 | -| vendors | 45 | 45 | 45 | 0 | +| vendors | 47 | 47 | 47 | 0 | ## Translation Placeholder Proxy diff --git a/manifests/clis/pi.json b/manifests/clis/pi.json new file mode 100644 index 00000000..60a2111e --- /dev/null +++ b/manifests/clis/pi.json @@ -0,0 +1,130 @@ +{ + "$schema": "../$schemas/cli.schema.json", + "id": "pi", + "name": "Pi", + "familyId": "pi", + "description": "Pi is an open source terminal coding harness and interactive coding-agent CLI. It supports interactive, print/JSON, RPC, and SDK modes plus TypeScript extensions, skills, themes, and packages.", + "translations": { + "de": { + "description": "Pi ist ein quelloffenes Terminal-Coding-Harness und eine interaktive Coding-Agent-CLI. Es bietet interaktive, Print-/JSON-, RPC- und SDK-Modi sowie TypeScript-Erweiterungen, Skills und Pakete." + }, + "es": { + "description": "Pi es un entorno de código abierto para terminal y una CLI interactiva de agente de programación. Incluye modos interactivo, impresión/JSON, RPC y SDK, además de extensiones TypeScript." + }, + "fr": { + "description": "Pi est un environnement de codage open source pour terminal et une CLI interactive d’agent de codage. Il propose des modes interactif, impression/JSON, RPC et SDK, ainsi que des extensions TypeScript." + }, + "id": { + "description": "Pi adalah harness coding terminal sumber terbuka dan CLI agen coding interaktif. Pi mendukung mode interaktif, cetak/JSON, RPC, dan SDK serta ekstensi TypeScript, skill, tema, dan paket." + }, + "ja": { + "description": "Piは、対話、印刷/JSON、RPC、SDKの各モードを備えた、オープンソースのターミナル向けコーディングハーネス兼対話型コーディングエージェントCLIです。TypeScript拡張、スキル、プロンプトテンプレート、テーマ、パッケージで拡張できます。" + }, + "ko": { + "description": "Pi는 대화형, 출력/JSON, RPC, SDK 모드를 제공하는 오픈 소스 터미널 코딩 하네스이자 대화형 코딩 에이전트 CLI입니다. TypeScript 확장, 스킬, 프롬프트 템플릿, 테마, 패키지로 확장할 수 있습니다." + }, + "pt": { + "description": "Pi é um ambiente de programação de código aberto para terminal e uma CLI interativa de agente de programação. Oferece modos interativo, impressão/JSON, RPC e SDK, além de extensões TypeScript." + }, + "ru": { + "description": "Pi — терминальная среда программирования с открытым кодом и интерактивный CLI-агент. Поддерживает интерактивный режим, print/JSON, RPC и SDK, а также расширения TypeScript, навыки и пакеты." + }, + "tr": { + "description": "Pi, açık kaynaklı bir terminal kodlama altyapısı ve etkileşimli bir kodlama ajanı komut satırı aracıdır. Etkileşimli, yazdırma/JSON, RPC ve SDK modları ile TypeScript uzantıları ve paketler sunar." + }, + "zh-Hans": { + "description": "Pi 是一款开源终端编码工具框架和交互式编码 Agent CLI,支持交互、打印/JSON、RPC 与 SDK 模式,并可通过 TypeScript 扩展、技能、提示词模板、主题和软件包进行扩展。" + }, + "zh-Hant": { + "description": "Pi 是一款開放原始碼終端機程式設計工具框架和互動式程式設計 Agent CLI,支援互動、列印/JSON、RPC 與 SDK 模式,並可透過 TypeScript 擴充功能、技能、提示詞範本、主題和套件進行擴充。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://pi.dev/docs/latest", + "title": "Pi documentation", + "fields": ["name", "description", "websiteUrl", "docsUrl"] + }, + { + "url": "https://pi.dev/docs/latest/quickstart", + "title": "Pi quickstart", + "fields": ["description", "vendor", "releaseTracking", "resourceUrls.download", "platforms"] + }, + { + "url": "https://github.com/earendil-works/pi", + "title": "Pi official repository", + "fields": [ + "description", + "githubUrl", + "license", + "pricing", + "resourceUrls.issue", + "communityUrls.github" + ] + }, + { + "url": "https://github.com/earendil-works/pi/releases/tag/v0.83.0", + "title": "Pi v0.83.0 release", + "fields": ["latestVersion", "resourceUrls.changelog"] + } + ], + "lastVerifiedAt": "2026-08-01", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://pi.dev", + "docsUrl": "https://pi.dev/docs/latest", + "vendor": "Earendil Inc.", + "latestVersion": "0.83.0", + "releaseTracking": { + "provider": "npm", + "identifier": "@earendil-works/pi-coding-agent" + }, + "githubUrl": "https://github.com/earendil-works/pi", + "license": "MIT", + "pricing": [ + { + "name": "Open Source", + "value": 0, + "currency": null, + "per": null, + "category": "Individual" + } + ], + "resourceUrls": { + "download": "https://pi.dev/docs/latest/quickstart", + "changelog": "https://github.com/earendil-works/pi/releases", + "pricing": null, + "issue": "https://github.com/earendil-works/pi/issues" + }, + "communityUrls": { + "linkedin": null, + "twitter": null, + "github": "https://github.com/earendil-works/pi", + "youtube": null, + "discord": null, + "reddit": null, + "blog": null + }, + "relatedProducts": [], + "platforms": [ + { + "os": "macOS", + "installCommand": "npm install -g --ignore-scripts @earendil-works/pi-coding-agent", + "launchCommand": "pi", + "installPath": null + }, + { + "os": "Windows", + "installCommand": "npm install -g --ignore-scripts @earendil-works/pi-coding-agent", + "launchCommand": "pi", + "installPath": null + }, + { + "os": "Linux", + "installCommand": "npm install -g --ignore-scripts @earendil-works/pi-coding-agent", + "launchCommand": "pi", + "installPath": null + } + ] +} diff --git a/manifests/ides/vscode.json b/manifests/ides/vscode.json index 54d2d757..c87d2987 100644 --- a/manifests/ides/vscode.json +++ b/manifests/ides/vscode.json @@ -39,7 +39,7 @@ } }, "verified": true, - "lastVerifiedAt": "2026-07-31", + "lastVerifiedAt": "2026-08-01", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://code.visualstudio.com", @@ -50,7 +50,8 @@ "license": "Proprietary", "sourceCode": { "status": "partial", - "repositoryRole": "source" + "repositoryRole": "source", + "license": "MIT" }, "pricing": [ { @@ -133,6 +134,11 @@ "title": "Visual Studio Code source repository", "fields": ["githubUrl", "sourceCode", "resourceUrls.issue", "communityUrls.github"] }, + { + "url": "https://github.com/microsoft/vscode/blob/main/LICENSE.txt", + "title": "Visual Studio Code source repository license", + "fields": ["sourceCode.license"] + }, { "url": "https://x.com/code", "title": "Visual Studio Code twitter community", diff --git a/manifests/ides/vscodium.json b/manifests/ides/vscodium.json new file mode 100644 index 00000000..369b5942 --- /dev/null +++ b/manifests/ides/vscodium.json @@ -0,0 +1,134 @@ +{ + "$schema": "../$schemas/ide.schema.json", + "id": "vscodium", + "name": "VSCodium", + "familyId": "vscodium", + "description": "VSCodium is a community-driven, freely licensed binary distribution of VS Code. It provides MIT-licensed builds without Microsoft branding or telemetry and uses Open VSX for extensions.", + "translations": { + "de": { + "description": "VSCodium ist eine von der Community betriebene, frei lizenzierte Binärdistribution von VS Code. Sie bietet MIT-lizenzierte Builds ohne Microsoft-Branding oder Telemetrie und nutzt Open VSX." + }, + "es": { + "description": "VSCodium es una distribución binaria de VS Code, impulsada por la comunidad y con licencia libre. Ofrece compilaciones MIT sin marca ni telemetría de Microsoft y usa Open VSX." + }, + "fr": { + "description": "VSCodium est une distribution binaire de VS Code, pilotée par la communauté et sous licence libre. Elle propose des builds MIT sans marque ni télémétrie Microsoft et utilise Open VSX." + }, + "id": { + "description": "VSCodium adalah distribusi biner VS Code berlisensi bebas yang digerakkan komunitas. VSCodium menyediakan build berlisensi MIT tanpa merek atau telemetri Microsoft dan memakai Open VSX." + }, + "ja": { + "description": "VSCodiumは、コミュニティ主導で自由なライセンスのVS Codeバイナリディストリビューションです。Microsoftのブランドやテレメトリを含まないMITライセンスのビルドを提供し、拡張機能にはOpen VSXを使用します。" + }, + "ko": { + "description": "VSCodium은 커뮤니티가 주도하는 자유 라이선스의 VS Code 바이너리 배포판입니다. Microsoft 브랜딩과 원격 측정이 없는 MIT 라이선스 빌드를 제공하며 확장 기능에 Open VSX를 사용합니다." + }, + "pt": { + "description": "VSCodium é uma distribuição binária do VS Code, orientada pela comunidade e com licença livre. Oferece builds MIT sem marca ou telemetria da Microsoft e usa o Open VSX." + }, + "ru": { + "description": "VSCodium — управляемый сообществом свободно лицензируемый бинарный дистрибутив VS Code. Он предлагает сборки MIT без брендинга и телеметрии Microsoft и использует Open VSX." + }, + "tr": { + "description": "VSCodium, topluluk tarafından yürütülen ve özgürce lisanslanan bir VS Code ikili dağıtımıdır. Microsoft markası ve telemetrisi olmayan MIT lisanslı yapılar sunar ve Open VSX kullanır." + }, + "zh-Hans": { + "description": "VSCodium 是由社区驱动、采用自由许可的 VS Code 二进制发行版,提供不含 Microsoft 品牌和遥测的 MIT 许可构建,并使用 Open VSX 获取扩展。" + }, + "zh-Hant": { + "description": "VSCodium 是由社群驅動、採用自由授權的 VS Code 二進位發行版,提供不含 Microsoft 品牌和遙測的 MIT 授權建置,並使用 Open VSX 取得擴充功能。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://vscodium.com/", + "title": "VSCodium official site", + "fields": [ + "name", + "description", + "websiteUrl", + "docsUrl", + "pricing", + "resourceUrls.download", + "platforms" + ] + }, + { + "url": "https://github.com/VSCodium/vscodium", + "title": "VSCodium official repository", + "fields": [ + "description", + "githubUrl", + "license", + "pricing", + "resourceUrls.issue", + "communityUrls.github", + "platforms" + ] + }, + { + "url": "https://github.com/VSCodium/vscodium/releases/tag/1.126.04524", + "title": "VSCodium 1.126.04524 release", + "fields": ["latestVersion", "releaseTracking", "resourceUrls.changelog"] + } + ], + "lastVerifiedAt": "2026-08-01", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://vscodium.com", + "docsUrl": "https://github.com/VSCodium/vscodium/tree/master/docs", + "vendor": "VSCodium", + "latestVersion": "1.126.04524", + "releaseTracking": { + "provider": "github-release", + "identifier": "VSCodium/vscodium" + }, + "githubUrl": "https://github.com/VSCodium/vscodium", + "license": "MIT", + "pricing": [ + { + "name": "Open Source", + "value": 0, + "currency": null, + "per": null, + "category": "Individual" + } + ], + "resourceUrls": { + "download": "https://github.com/VSCodium/vscodium/releases/latest", + "changelog": "https://github.com/VSCodium/vscodium/releases", + "pricing": null, + "issue": "https://github.com/VSCodium/vscodium/issues" + }, + "communityUrls": { + "linkedin": null, + "twitter": null, + "github": "https://github.com/VSCodium/vscodium", + "youtube": null, + "discord": null, + "reddit": null, + "blog": null + }, + "relatedProducts": [], + "platforms": [ + { + "os": "macOS", + "installCommand": "brew install --cask vscodium", + "launchCommand": null, + "installPath": null + }, + { + "os": "Windows", + "installCommand": "winget install -e --id VSCodium.VSCodium", + "launchCommand": null, + "installPath": null + }, + { + "os": "Linux", + "installCommand": "snap install codium --classic", + "launchCommand": null, + "installPath": null + } + ] +} diff --git a/manifests/vendors/earendil.json b/manifests/vendors/earendil.json new file mode 100644 index 00000000..39e8222e --- /dev/null +++ b/manifests/vendors/earendil.json @@ -0,0 +1,62 @@ +{ + "$schema": "../$schemas/vendor.schema.json", + "id": "earendil", + "name": "Earendil Inc.", + "description": "Earendil develops Pi and Lefos, tools built in the open to help people harness AI and adapt it to their workflows.", + "translations": { + "de": { + "description": "Earendil entwickelt Pi und Lefos, offen entwickelte Werkzeuge, mit denen Menschen KI nutzen und an ihre Arbeitsabläufe anpassen können." + }, + "es": { + "description": "Earendil desarrolla Pi y Lefos, herramientas creadas de forma abierta para ayudar a las personas a aprovechar la IA y adaptarla a sus flujos de trabajo." + }, + "fr": { + "description": "Earendil développe Pi et Lefos, des outils conçus ouvertement pour aider chacun à exploiter l’IA et à l’adapter à ses flux de travail." + }, + "id": { + "description": "Earendil mengembangkan Pi dan Lefos, alat yang dibangun secara terbuka untuk membantu orang memanfaatkan AI dan menyesuaikannya dengan alur kerja mereka." + }, + "ja": { + "description": "Earendilは、AIを活用して各自のワークフローに適応させるためのオープンなツール、PiとLefosを開発しています。" + }, + "ko": { + "description": "Earendil은 사람들이 AI를 활용하고 자신의 워크플로에 맞게 조정할 수 있도록 공개적으로 개발되는 도구인 Pi와 Lefos를 만듭니다." + }, + "pt": { + "description": "A Earendil desenvolve Pi e Lefos, ferramentas criadas abertamente para ajudar as pessoas a aproveitar a IA e adaptá-la aos seus fluxos de trabalho." + }, + "ru": { + "description": "Earendil разрабатывает Pi и Lefos — открыто создаваемые инструменты, которые помогают использовать ИИ и адаптировать его к своим рабочим процессам." + }, + "tr": { + "description": "Earendil, insanların yapay zekâdan yararlanmasına ve onu iş akışlarına uyarlamasına yardımcı olan, açık biçimde geliştirilen Pi ve Lefos araçlarını üretir." + }, + "zh-Hans": { + "description": "Earendil 开发 Pi 和 Lefos,这些工具以开放方式构建,帮助人们利用 AI 并使其适应自己的工作流程。" + }, + "zh-Hant": { + "description": "Earendil 開發 Pi 和 Lefos,這些工具以開放方式建置,協助人們運用 AI 並使其適應自己的工作流程。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://earendil.com/", + "title": "Earendil official site", + "fields": ["name", "description", "websiteUrl", "communityUrls.github"] + } + ], + "lastVerifiedAt": "2026-08-01", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://earendil.com", + "communityUrls": { + "linkedin": null, + "twitter": null, + "github": "https://github.com/earendil-works", + "youtube": null, + "discord": null, + "reddit": null, + "blog": null + } +} diff --git a/manifests/vendors/vscodium.json b/manifests/vendors/vscodium.json new file mode 100644 index 00000000..068edffc --- /dev/null +++ b/manifests/vendors/vscodium.json @@ -0,0 +1,67 @@ +{ + "$schema": "../$schemas/vendor.schema.json", + "id": "vscodium", + "name": "VSCodium", + "description": "VSCodium is the community project that builds freely licensed VS Code binaries without Microsoft branding or telemetry.", + "translations": { + "de": { + "description": "VSCodium ist das Community-Projekt, das frei lizenzierte VS-Code-Binärdateien ohne Microsoft-Branding oder Telemetrie erstellt." + }, + "es": { + "description": "VSCodium es el proyecto comunitario que crea binarios de VS Code con licencia libre, sin marca ni telemetría de Microsoft." + }, + "fr": { + "description": "VSCodium est le projet communautaire qui produit des binaires VS Code sous licence libre, sans marque ni télémétrie Microsoft." + }, + "id": { + "description": "VSCodium adalah proyek komunitas yang membangun biner VS Code berlisensi bebas tanpa merek atau telemetri Microsoft." + }, + "ja": { + "description": "VSCodiumは、Microsoftのブランドやテレメトリを含まない、自由なライセンスのVS Codeバイナリを構築するコミュニティプロジェクトです。" + }, + "ko": { + "description": "VSCodium은 Microsoft 브랜딩과 원격 측정이 없는 자유 라이선스의 VS Code 바이너리를 빌드하는 커뮤니티 프로젝트입니다." + }, + "pt": { + "description": "VSCodium é o projeto comunitário que cria binários do VS Code com licença livre, sem marca ou telemetria da Microsoft." + }, + "ru": { + "description": "VSCodium — общественный проект, создающий свободно лицензируемые бинарные сборки VS Code без брендинга и телеметрии Microsoft." + }, + "tr": { + "description": "VSCodium, Microsoft markası ve telemetrisi olmadan özgürce lisanslanan VS Code ikili dosyaları oluşturan topluluk projesidir." + }, + "zh-Hans": { + "description": "VSCodium 是一个社区项目,构建采用自由许可且不含 Microsoft 品牌和遥测的 VS Code 二进制文件。" + }, + "zh-Hant": { + "description": "VSCodium 是一個社群專案,建置採用自由授權且不含 Microsoft 品牌和遙測的 VS Code 二進位檔案。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://vscodium.com/", + "title": "VSCodium official site", + "fields": ["name", "description", "websiteUrl"] + }, + { + "url": "https://github.com/VSCodium", + "title": "VSCodium GitHub organization", + "fields": ["description", "communityUrls.github"] + } + ], + "lastVerifiedAt": "2026-08-01", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://vscodium.com", + "communityUrls": { + "linkedin": null, + "twitter": null, + "github": "https://github.com/VSCodium", + "youtube": null, + "discord": null, + "reddit": null, + "blog": null + } +} diff --git a/src/app/[locale]/open-source-rank/page.client.tsx b/src/app/[locale]/open-source-rank/page.client.tsx index 746c7fcd..425b47d5 100644 --- a/src/app/[locale]/open-source-rank/page.client.tsx +++ b/src/app/[locale]/open-source-rank/page.client.tsx @@ -11,6 +11,7 @@ import { desktopsData } from '@/lib/generated/desktops' import { extensionsData } from '@/lib/generated/extensions' import { githubStarsData } from '@/lib/generated/github-stars' import { idesData } from '@/lib/generated/ides' +import { getRepositoryLicense } from '@/lib/repository-license' import type { ManifestBaseProduct } from '@/types/manifests' type ProductType = 'ide' | 'cli' | 'desktop' | 'extension' @@ -147,8 +148,10 @@ function buildRepositoryProjects(): RepositoryProject[] { surface => getRepositoryRole(surface.product) === 'source' && surface.repositoryScope !== 'related' ) - const repositoryLicense = catalogSurfaces.find(surface => surface.product.sourceCode?.license) - ?.product.sourceCode?.license + const repositorySurface = catalogSurfaces.find(surface => surface.product.sourceCode?.license) + const repositoryLicense = repositorySurface + ? getRepositoryLicense(repositorySurface.product) + : undefined const openSourceLicense = catalogSurfaces.find( surface => surface.repositoryScope !== 'related' && diff --git a/src/lib/generated/clis.ts b/src/lib/generated/clis.ts index 00c1b8dd..1812d05b 100644 --- a/src/lib/generated/clis.ts +++ b/src/lib/generated/clis.ts @@ -27,6 +27,7 @@ import KiroCli from '../../../manifests/clis/kiro-cli.json' import Kode from '../../../manifests/clis/kode.json' import Omp from '../../../manifests/clis/omp.json' import Opencode from '../../../manifests/clis/opencode.json' +import Pi from '../../../manifests/clis/pi.json' import QoderCli from '../../../manifests/clis/qoder-cli.json' import QwenCode from '../../../manifests/clis/qwen-code.json' import VibeCli from '../../../manifests/clis/vibe-cli.json' @@ -56,6 +57,7 @@ export const clisData = [ Kode, Omp, Opencode, + Pi, QoderCli, QwenCode, VibeCli, diff --git a/src/lib/generated/ides.ts b/src/lib/generated/ides.ts index 0b49aa59..7e07c16a 100644 --- a/src/lib/generated/ides.ts +++ b/src/lib/generated/ides.ts @@ -10,6 +10,7 @@ import IntellijIdea from '../../../manifests/ides/intellij-idea.json' import Kiro from '../../../manifests/ides/kiro.json' import Trae from '../../../manifests/ides/trae.json' import Vscode from '../../../manifests/ides/vscode.json' +import Vscodium from '../../../manifests/ides/vscodium.json' import Windsurf from '../../../manifests/ides/windsurf.json' import Zed from '../../../manifests/ides/zed.json' import type { ManifestIDE } from '../../types/manifests' @@ -21,6 +22,7 @@ export const idesData = [ Kiro, Trae, Vscode, + Vscodium, Windsurf, Zed, ] as unknown as ManifestIDE[] diff --git a/src/lib/generated/metadata.ts b/src/lib/generated/metadata.ts index 6932a8c6..3b7b3af1 100644 --- a/src/lib/generated/metadata.ts +++ b/src/lib/generated/metadata.ts @@ -3565,11 +3565,11 @@ export const faqMetadata: Record = { } export const stackCounts: Record = { - ides: 8, - clis: 26, + ides: 9, + clis: 27, desktops: 12, extensions: 18, models: 123, 'model-providers': 17, - vendors: 45, + vendors: 47, } diff --git a/src/lib/generated/vendors.ts b/src/lib/generated/vendors.ts index 1ceb88a3..074e3a0a 100644 --- a/src/lib/generated/vendors.ts +++ b/src/lib/generated/vendors.ts @@ -19,6 +19,7 @@ import Cognition from '../../../manifests/vendors/cognition.json' import Continue from '../../../manifests/vendors/continue.json' import Deepinfra from '../../../manifests/vendors/deepinfra.json' import Deepseek from '../../../manifests/vendors/deepseek.json' +import Earendil from '../../../manifests/vendors/earendil.json' import FactoryAi from '../../../manifests/vendors/factory-ai.json' import FireworksAi from '../../../manifests/vendors/fireworks-ai.json' import Github from '../../../manifests/vendors/github.json' @@ -45,6 +46,7 @@ import Tabnine from '../../../manifests/vendors/tabnine.json' import Tencent from '../../../manifests/vendors/tencent.json' import TogetherAi from '../../../manifests/vendors/together-ai.json' import VerdentAi from '../../../manifests/vendors/verdent-ai.json' +import Vscodium from '../../../manifests/vendors/vscodium.json' import Xai from '../../../manifests/vendors/xai.json' import Xiaomi from '../../../manifests/vendors/xiaomi.json' import ZAi from '../../../manifests/vendors/z-ai.json' @@ -67,6 +69,7 @@ export const vendorsData = [ Continue, Deepinfra, Deepseek, + Earendil, FactoryAi, FireworksAi, Github, @@ -93,6 +96,7 @@ export const vendorsData = [ Tencent, TogetherAi, VerdentAi, + Vscodium, Xai, Xiaomi, ZAi, diff --git a/src/lib/repository-license.ts b/src/lib/repository-license.ts new file mode 100644 index 00000000..2a8e1bfb --- /dev/null +++ b/src/lib/repository-license.ts @@ -0,0 +1,14 @@ +export type RepositoryLicenseProduct = { + license: string + sourceCode?: { + license?: string + } +} + +/** + * Prefer the linked repository's license when classifying GitHub projects. + * The distributed product may use a different license from its source repository. + */ +export function getRepositoryLicense(product: RepositoryLicenseProduct): string { + return product.sourceCode?.license ?? product.license +} diff --git a/tests/repository-license.test.ts b/tests/repository-license.test.ts new file mode 100644 index 00000000..29642257 --- /dev/null +++ b/tests/repository-license.test.ts @@ -0,0 +1,16 @@ +import { describe, expect, it } from 'vitest' + +import vscode from '../manifests/ides/vscode.json' +import { getRepositoryLicense } from '../src/lib/repository-license' + +describe('repository license classification', () => { + it('classifies the open-source VS Code repository separately from its product distribution', () => { + expect(vscode.license).toBe('Proprietary') + expect(vscode.sourceCode.license).toBe('MIT') + expect(getRepositoryLicense(vscode)).toBe('MIT') + }) + + it('falls back to the product license when no repository-specific license is recorded', () => { + expect(getRepositoryLicense({ license: 'Apache-2.0' })).toBe('Apache-2.0') + }) +})