@mcptoolshop/registry-stats 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ja.md CHANGED
@@ -1,15 +1,15 @@
1
- <p align="center">
2
- <a href="README.md">English</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
- </p>
4
-
1
+ <p align="center">
2
+ <a href="README.md">English</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
5
  <p align="center">
6
6
  <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/registry-stats/readme.png" alt="registry-stats logo" width="400" />
7
7
  </p>
8
-
8
+
9
9
  <p align="center">
10
10
  Five registries. One engine. Dashboard included.
11
11
  </p>
12
-
12
+
13
13
  <p align="center">
14
14
  <a href="https://github.com/mcp-tool-shop-org/registry-stats/actions/workflows/pages.yml"><img src="https://github.com/mcp-tool-shop-org/registry-stats/actions/workflows/pages.yml/badge.svg" alt="CI"></a>
15
15
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License"></a>
@@ -17,7 +17,7 @@
17
17
  <a href="https://mcp-tool-shop-org.github.io/registry-stats/dashboard/"><img src="https://img.shields.io/badge/Dashboard-live-green" alt="Dashboard"></a>
18
18
  <a href="https://mcp-tool-shop-org.github.io/registry-stats/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
19
19
  </p>
20
-
20
+
21
21
  <p align="center">
22
22
  <a href="#dashboard">Dashboard</a> &middot;
23
23
  <a href="#desktop-app">Desktop App</a> &middot;
@@ -28,53 +28,57 @@
28
28
  <a href="#config-file">Config</a> &middot;
29
29
  <a href="#license">License</a>
30
30
  </p>
31
-
31
+
32
32
  ---
33
-
34
- npm、PyPI、NuGet、Visual Studio Code Marketplace、Docker Hub などのプラットフォームに公開できます。現在、「私のパッケージの状況はどうなっているか?」を知るには、5つの異なるサイトを確認する必要があります。**registry-stats** は、それらを統合したプラットフォームです。TypeScript で構築されたエンジン(CLI + API + REST サーバー)、リアルタイムの Web ダッシュボード、そしてネイティブの Windows デスクトップ アプリケーション。これらはすべて、1つのリポジトリから提供されます。
35
-
36
- 実行時の依存関係はありません。ネイティブの `fetch()` を使用します。Node 18 以降が必要です。
37
-
38
- ## 構成要素
39
-
40
- | レイヤー | 機能 |
41
- |-------|-------------|
42
- | **Engine** | TypeScript ライブラリ + CLI + REST サーバー。1つのインターフェースで、5つのレジストリをクエリできます。npm で `@mcptoolshop/registry-stats` として公開されています。 |
43
- | **Dashboard** | Astro で構築された Web アプリケーション。主要な指標、成長状況、データ健全性、スパークライン付きのランキングなどを表示します。毎週、CI によって再構築されます。 |
44
- | **Desktop** | WinUI 3 + WebView2 を使用したネイティブ Windows アプリケーション。ダッシュボードをオフラインで利用できるようにバンドルし、必要に応じてリアルタイムの統計情報を取得します。 |
45
-
46
- ## ダッシュボード
47
-
48
- 自己更新型の統計ダッシュボードは、[`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/) にあります。
49
-
50
- - **主要な指標**:毎週の状況を1文でまとめた情報。トップのレジストリ、パッケージ、成長率、ポートフォリオの集中度、データの信頼性。
51
- - **成長状況**:トップの成長パッケージ、減少パッケージ、新規アクティブパッケージ(npm の過去 7 日と現在の 7 日の比較)。
52
- - **データ健全性**:各レジストリのカバー率、信頼性バッジ(正常 / 一部 / 不明)、詳細なエラー情報。
53
- - **スナップショットの差分**:Docker、VS Code、NuGet などの累積データのみのレジストリにおける、週ごとの変化。
54
- - **ランキング**:すべてのパッケージを、毎週のダウンロード数でランク付けし、各行に 30 日間のスパークラインを表示。
55
- - **テーマ**:システム設定に従って、ダークモードまたはライトモードを切り替え。
56
-
57
- データはビルド時に取得され、毎週 CI によって再構築されます(月曜日 06:00 UTC)。追跡するパッケージは、`site/src/data/packages.json` で設定します。
58
-
59
- ## デスクトップ アプリケーション
60
-
61
- ダッシュボードをローカルの WebView2 シェルでラップした、ネイティブの Windows アプリケーションです。
62
-
63
- - **オフライン対応**:HTML/CSS/JS がバンドルされているため、インターネット接続なしで動作します。
64
- - **リアルタイム更新**:GitHub Pages から `stats.json` をオンデマンドで取得します。
65
- - **CSV エクスポート**:ランキングデータをワンクリックで CSV 形式でエクスポートできます。
66
- - **MSIX パッケージ**:CI で `desktop-ci.yml` を使用してビルドおよび署名されます。
67
-
68
- デスクトップアプリケーションのソースコードは、`desktop/` にあります。 .NET 10 MAUI を使用して、WinUI 3 をターゲットに構築されています。
69
-
70
- ## インストール
71
-
33
+
34
+ npm、PyPI、NuGet、Visual Studio Code Marketplace、Docker Hub などのプラットフォームに公開できます。現在、「私のパッケージの状況はどうなっているか?」を知るには、5つの異なるサイトを確認する必要があります。**registry-stats** は、それらを統合したプラットフォームです。TypeScript で構築されたエンジン(CLI + API + REST サーバー)、リアルタイムの Web ダッシュボード、そしてネイティブの Windows デスクトップ アプリケーション。これらはすべて、1つのリポジトリから提供されます。
35
+
36
+ 実行時の依存関係はありません。ネイティブの `fetch()` を使用します。Node 18 以降が必要です。
37
+
38
+ ## 構成要素
39
+
40
+ | レイヤー | 機能 |
41
+ |-------|-------------|
42
+ | **Engine** | TypeScript ライブラリ + CLI + REST サーバー。1つのインターフェースで、5つのレジストリをクエリできます。npm で `@mcptoolshop/registry-stats` として公開されています。 |
43
+ | **Dashboard** | Astro で構築された Web アプリケーション。AI チャットアシスタント、6つのインタラクティブチャート、スマート成長エンジン、タブ付きヘルプガイド。毎週、CI によって再構築されます。 |
44
+ | **Desktop** | WinUI 3 + WebView2 を使用したネイティブ Windows アプリケーション。ダッシュボードをオフラインで利用できるようにバンドルし、必要に応じてリアルタイムの統計情報を取得します。 |
45
+
46
+ ## ダッシュボード
47
+
48
+ 自己更新型の統計ダッシュボードは、[`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/) にあります。
49
+
50
+ - **タブインターフェース** — Home、Analytics、Leaderboard、Help タブ
51
+ - **AI チャットアシスタント** Ollama を使用した Registry Assistant。RAG コンテキスト注入、ストリーミング応答、モデルセレクター、会話メモリ
52
+ - **エグゼクティブスナップショット** ヘルススコア(0–100)、多様性インデックス、週次変動、全レジストリの合計ダウンロード数
53
+ - **6つのインタラクティブチャート** 30日トレンド(合計 / レジストリ別 / トップ5切り替え)、レジストリシェア(ポーラーエリア)、ポートフォリオリスク(分布ヒストグラム + Gini & P90)、トップ10モメンタム、スパークライン付きベロシティトラッカー、30日ヒートマップ(スパイク検出 >2σ)
54
+ - **スマート成長エンジン** 小さな分母の歪みを処理。ベースライン閾値、パーセンテージキャップ、減衰ベロシティ式
55
+ - **アクション可能なインサイト** — 自動生成された推奨事項と減少パッケージの注意アラート
56
+ - **ランキング** — 全パッケージを週次ダウンロード数でランク付け、30日スパークラインとスマートトレンドバッジ付き
57
+ - **セットアップページ** ポートフォリオエディター、バリデーション、registry-sync コンパニオンセクション、パイプライン概要
58
+ - **ヘルプタブ** — 各タブ、キーコンセプト、AI アシスタントの使い方、データパイプライン、便利なリンクをカバーする人間に優しいガイド
59
+ - **テーマ** — システム設定に従って、ダークモードまたはライトモードを切り替え。
60
+
61
+ データはビルド時に取得され、毎週 CI によって再構築されます(月曜日 06:00 UTC)。追跡するパッケージは、`site/src/data/packages.json` で設定します。
62
+
63
+ ## デスクトップ アプリケーション
64
+
65
+ ダッシュボードをローカルの WebView2 シェルでラップした、ネイティブの Windows アプリケーションです。
66
+
67
+ - **オフライン対応**:HTML/CSS/JS がバンドルされているため、インターネット接続なしで動作します。
68
+ - **リアルタイム更新**:GitHub Pages から `stats.json` をオンデマンドで取得します。
69
+ - **CSV エクスポート**:ランキングデータをワンクリックで CSV 形式でエクスポートできます。
70
+ - **MSIX パッケージ**:CI で `desktop-ci.yml` を使用してビルドおよび署名されます。
71
+
72
+ デスクトップアプリケーションのソースコードは、`desktop/` にあります。 .NET 10 MAUI を使用して、WinUI 3 をターゲットに構築されています。
73
+
74
+ ## インストール
75
+
72
76
  ```bash
73
77
  npm install @mcptoolshop/registry-stats
74
78
  ```
75
-
76
- ## CLI (コマンドラインインターフェース)
77
-
79
+
80
+ ## CLI (コマンドラインインターフェース)
81
+
78
82
  ```bash
79
83
  # Query a single registry
80
84
  registry-stats express -r npm
@@ -112,11 +116,11 @@ registry-stats express -r npm --range 2025-01-01:2025-06-30 --format chart
112
116
  # Start a REST API server
113
117
  registry-stats serve --port 3000
114
118
  ```
115
-
116
- ## 設定ファイル
117
-
118
- プロジェクトのルートディレクトリに`registry-stats.config.json`を作成します(または、`registry-stats --init`を実行します)。
119
-
119
+
120
+ ## 設定ファイル
121
+
122
+ プロジェクトのルートディレクトリに`registry-stats.config.json`を作成します(または、`registry-stats --init`を実行します)。
123
+
120
124
  ```json
121
125
  {
122
126
  "registries": ["npm", "pypi", "nuget", "vscode", "docker"],
@@ -135,11 +139,11 @@ registry-stats serve --port 3000
135
139
  "concurrency": 5
136
140
  }
137
141
  ```
138
-
139
- 設定されたすべてのパッケージの統計情報を取得するには、引数なしで`registry-stats`を実行します。CLIは、現在の作業ディレクトリから上位のディレクトリを検索し、最も近い設定ファイルを見つけます。
140
-
141
- 設定ファイルは、プログラム的に利用することも可能です。
142
-
142
+
143
+ 設定されたすべてのパッケージの統計情報を取得するには、引数なしで`registry-stats`を実行します。CLIは、現在の作業ディレクトリから上位のディレクトリを検索し、最も近い設定ファイルを見つけます。
144
+
145
+ 設定ファイルは、プログラム的に利用することも可能です。
146
+
143
147
  ```typescript
144
148
  import { loadConfig, defaultConfig, starterConfig } from '@mcptoolshop/registry-stats';
145
149
 
@@ -147,9 +151,9 @@ const config = loadConfig(); // finds nearest config file, or null
147
151
  const defaults = defaultConfig(); // returns default Config object
148
152
  const template = starterConfig(); // returns starter JSON string
149
153
  ```
150
-
151
- ## プログラムAPI
152
-
154
+
155
+ ## プログラムAPI
156
+
153
157
  ```typescript
154
158
  import { stats, calc, createCache } from '@mcptoolshop/registry-stats';
155
159
 
@@ -190,41 +194,41 @@ const cache = createCache();
190
194
  await stats('npm', 'express', { cache }); // fetches
191
195
  await stats('npm', 'express', { cache }); // cache hit
192
196
  ```
193
-
194
- ## レジストリのサポート
195
-
196
- | レジストリ | パッケージ形式 | 時系列データ | 利用可能なデータ |
197
- |----------|---------------|-------------|----------------|
198
- | `npm` | `express`, `@scope/pkg` | はい (549日間) | lastDay (直近1日), lastWeek (直近1週間), lastMonth (直近1ヶ月) |
199
- | `pypi` | `requests` | はい (180日間) | lastDay (直近1日), lastWeek (直近1週間), lastMonth (直近1ヶ月), total (合計) |
200
- | `nuget` | `Newtonsoft.Json` | No | total (合計) |
201
- | `vscode` | `publisher.extension` | No | total (インストール数), rating (評価), trends (傾向) |
202
- | `docker` | `namespace/repo` | No | total (ダウンロード数), stars (スター数) |
203
-
204
- ## 組み込みの信頼性
205
-
206
- - 429/5xxエラーが発生した場合、指数関数的なバックオフによる自動再試行
207
- - `Retry-After`ヘッダーを尊重
208
- - 大量リクエストに対する同時実行数の制限
209
- - オプションのTTLキャッシュ (プラグイン可能。`StatsCache`インターフェースを通じて、独自のRedis/ファイルバックエンドを提供)
210
-
211
- ## REST APIサーバー
212
-
213
- マイクロサービスとして実行するか、独自のサーバーに組み込むことができます。
214
-
197
+
198
+ ## レジストリのサポート
199
+
200
+ | レジストリ | パッケージ形式 | 時系列データ | 利用可能なデータ |
201
+ |----------|---------------|-------------|----------------|
202
+ | `npm` | `express`, `@scope/pkg` | はい (549日間) | lastDay (直近1日), lastWeek (直近1週間), lastMonth (直近1ヶ月) |
203
+ | `pypi` | `requests` | はい (180日間) | lastDay (直近1日), lastWeek (直近1週間), lastMonth (直近1ヶ月), total (合計) |
204
+ | `nuget` | `Newtonsoft.Json` | No | total (合計) |
205
+ | `vscode` | `publisher.extension` | No | total (インストール数), rating (評価), trends (傾向) |
206
+ | `docker` | `namespace/repo` | No | total (ダウンロード数), stars (スター数) |
207
+
208
+ ## 組み込みの信頼性
209
+
210
+ - 429/5xxエラーが発生した場合、指数関数的なバックオフによる自動再試行
211
+ - `Retry-After`ヘッダーを尊重
212
+ - 大量リクエストに対する同時実行数の制限
213
+ - オプションのTTLキャッシュ (プラグイン可能。`StatsCache`インターフェースを通じて、独自のRedis/ファイルバックエンドを提供)
214
+
215
+ ## REST APIサーバー
216
+
217
+ マイクロサービスとして実行するか、独自のサーバーに組み込むことができます。
218
+
215
219
  ```bash
216
220
  registry-stats serve --port 3000
217
221
  ```
218
-
222
+
219
223
  ```
220
224
  GET /stats/:package # all registries
221
225
  GET /stats/:registry/:package # single registry
222
226
  GET /compare/:package?registries=npm,pypi
223
227
  GET /range/:registry/:package?start=YYYY-MM-DD&end=YYYY-MM-DD&format=json|csv|chart
224
228
  ```
225
-
226
- カスタムサーバーまたはサーバーレス環境でのプログラム的な利用方法。
227
-
229
+
230
+ カスタムサーバーまたはサーバーレス環境でのプログラム的な利用方法。
231
+
228
232
  ```typescript
229
233
  import { createHandler, serve } from '@mcptoolshop/registry-stats';
230
234
 
@@ -236,9 +240,9 @@ import { createServer } from 'node:http';
236
240
  const handler = createHandler();
237
241
  createServer(handler).listen(3000);
238
242
  ```
239
-
240
- ## カスタムレジストリ
241
-
243
+
244
+ ## カスタムレジストリ
245
+
242
246
  ```typescript
243
247
  import { registerProvider, type RegistryProvider } from '@mcptoolshop/registry-stats';
244
248
 
@@ -259,9 +263,9 @@ const cargo: RegistryProvider = {
259
263
  registerProvider(cargo);
260
264
  await stats('cargo', 'serde');
261
265
  ```
262
-
263
- ## リポジトリの構成
264
-
266
+
267
+ ## リポジトリの構成
268
+
265
269
  ```
266
270
  registry-stats/
267
271
  ├── src/ # TypeScript engine (published to npm)
@@ -269,9 +273,9 @@ registry-stats/
269
273
  ├── desktop/ # WinUI 3 desktop app (.NET 10 MAUI)
270
274
  └── test/ # Library tests (vitest)
271
275
  ```
272
-
273
- ## 開発
274
-
276
+
277
+ ## 開発
278
+
275
279
  ```bash
276
280
  # Engine
277
281
  npm install && npm run build && npm test
@@ -282,36 +286,36 @@ npm run site:dev
282
286
  # Dashboard (production build)
283
287
  npm run site:build
284
288
  ```
285
-
286
- ## セキュリティとデータ範囲
287
-
288
- | 側面 | 詳細 |
289
- |--------|--------|
290
- | **Data touched** | npm、PyPI、NuGet、Visual Studio Code Marketplace、Docker Hub から取得する公開ダウンロード統計。オプションで、メモリ内キャッシュを使用します。 |
291
- | **Data NOT touched** | テレメトリー、分析、認証情報の保存、ユーザーデータ、ファイル書き込みは一切行いません。 |
292
- | **Permissions** | 読み込み:HTTPS を使用した公開レジストリ API。書き込み:標準出力/標準エラー出力のみ。 |
293
- | **Network** | HTTPS を使用して公開レジストリ API にアクセスします。オプションで、ローカルの REST サーバーを使用します。 |
294
- | **Telemetry** | 収集または送信されるデータはありません。 |
295
-
296
- 脆弱性に関する報告については、[SECURITY.md](SECURITY.md) を参照してください。
297
-
298
- ## スコアカード
299
-
300
- | カテゴリ | スコア |
301
- |----------|-------|
302
- | A. セキュリティ | 10 |
303
- | B. エラー処理 | 10 |
304
- | C. 運用ドキュメント | 10 |
305
- | D. ソフトウェアの品質 | 10 |
306
- | E. 識別情報(重要度:低) | 10 |
307
- | **Overall** | **50/50** |
308
-
309
- 詳細な監査:[SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
310
-
311
- ## ライセンス
312
-
313
- MIT
314
-
289
+
290
+ ## セキュリティとデータ範囲
291
+
292
+ | 側面 | 詳細 |
293
+ |--------|--------|
294
+ | **Data touched** | npm、PyPI、NuGet、Visual Studio Code Marketplace、Docker Hub から取得する公開ダウンロード統計。オプションで、メモリ内キャッシュを使用します。 |
295
+ | **Data NOT touched** | テレメトリー、分析、認証情報の保存、ユーザーデータ、ファイル書き込みは一切行いません。 |
296
+ | **Permissions** | 読み込み:HTTPS を使用した公開レジストリ API。書き込み:標準出力/標準エラー出力のみ。 |
297
+ | **Network** | HTTPS を使用して公開レジストリ API にアクセスします。オプションで、ローカルの REST サーバーを使用します。 |
298
+ | **Telemetry** | 収集または送信されるデータはありません。 |
299
+
300
+ 脆弱性に関する報告については、[SECURITY.md](SECURITY.md) を参照してください。
301
+
302
+ ## スコアカード
303
+
304
+ | カテゴリ | スコア |
305
+ |----------|-------|
306
+ | A. セキュリティ | 10 |
307
+ | B. エラー処理 | 10 |
308
+ | C. 運用ドキュメント | 10 |
309
+ | D. ソフトウェアの品質 | 10 |
310
+ | E. 識別情報(重要度:低) | 10 |
311
+ | **Overall** | **50/50** |
312
+
313
+ 詳細な監査:[SHIP_GATE.md](SHIP_GATE.md) · [SCORECARD.md](SCORECARD.md)
314
+
315
+ ## ライセンス
316
+
317
+ MIT
318
+
315
319
  ---
316
-
317
- <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>によって作成されました。
320
+
321
+ <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>によって作成されました。
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
- <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
- </p>
4
-
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
5
  <p align="center">
6
6
  <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/registry-stats/readme.png" alt="registry-stats logo" width="400" />
7
7
  </p>
@@ -40,18 +40,22 @@ Zero runtime dependencies. Uses native `fetch()`. Node 18+.
40
40
  | Layer | What it does |
41
41
  |-------|-------------|
42
42
  | **Engine** | TypeScript library + CLI + REST server. Query five registries with one interface. Published to npm as `@mcptoolshop/registry-stats`. |
43
- | **Dashboard** | Astro-powered web app. Executive snapshots, growth pulse, data health, leaderboard with sparklines. Rebuilt weekly by CI. |
43
+ | **Dashboard** | Astro-powered web app with AI chat assistant, six interactive charts, smart growth engine, and tabbed Help guide. Rebuilt weekly by CI. |
44
44
  | **Desktop** | WinUI 3 + WebView2 native Windows app. Bundles the dashboard offline, fetches live stats on demand. |
45
45
 
46
46
  ## Dashboard
47
47
 
48
48
  A self-updating stats dashboard lives at [`/dashboard/`](https://mcp-tool-shop-org.github.io/registry-stats/dashboard/).
49
49
 
50
- - **Executive snapshot** — one-sentence weekly narrative: top registry, top package, top gainer, portfolio concentration, data confidence
51
- - **Growth Pulse** — top gainers, decliners, and newly active packages (npm 7d vs prior 7d)
52
- - **Data Health** — per-registry coverage, confidence badges (ok / partial / missing), expandable error details
53
- - **Snapshot deltas** — week-over-week tracking for cumulative-only registries (Docker, VS Code, NuGet)
54
- - **Leaderboard** — all packages ranked by weekly downloads with per-row 30-day sparklines
50
+ - **Tabbed interface** — Home, Analytics, Leaderboard, and Help tabs
51
+ - **AI chat assistant** — Ollama-powered Registry Assistant with RAG context, streaming responses, model selector, and conversation memory
52
+ - **Executive snapshot** — health score (0–100), diversity index, weekly change, total downloads across all registries
53
+ - **Six interactive charts** — 30-day trend (aggregate / per-registry / top-5 toggles), registry share (polar area), portfolio risk (histogram + Gini & P90), top-10 momentum, velocity tracker with sparklines, and 30-day heatmap with spike detection (>2σ)
54
+ - **Smart growth engine** — handles small-denominator distortion with baseline threshold, percentage cap, and damped velocity formula
55
+ - **Actionable insights** — auto-generated recommendations and attention alerts for declining packages
56
+ - **Leaderboard** — all packages ranked by weekly downloads with inline 30-day sparklines and smart trend badges
57
+ - **Setup page** — portfolio editor with validation, registry-sync companion section, and pipeline overview
58
+ - **Help tab** — human-friendly guide covering every tab, key concepts, AI assistant tips, data pipeline, and useful links
55
59
  - **Dark / light theme** — follows system preference
56
60
 
57
61
  Data is fetched at build time and rebuilt weekly by CI (Mondays 06:00 UTC). Configure tracked packages in `site/src/data/packages.json`.