koishi-plugin-market-next 3.4.4 → 3.4.6

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/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  本文件记录 `koishi-plugin-market-next` 已发布到 npm 的版本差异。
4
4
 
5
+ ## 3.4.6
6
+
7
+ - ChatLuna Tool 优化:增强工具描述,让模型更容易在插件搜索、推荐、对比、最近新增/更新、热门和风险查询场景调用市场工具。
8
+ - ChatLuna Tool 输入增加 `intent`、`requirements`、`names`,并允许 `category`、`status`、`names` 使用数组、单字符串或逗号分隔字符串。
9
+ - ChatLuna Tool 输出从 Markdown 列表改为 JSON 字符串,包含 `summary`、`filters`、`results`、`nextQueries` 和 stale/error 信息。
10
+ - ChatLuna Tool 注册增加成功、失败和注销诊断日志。
11
+ - 弱网优化:市场冷启动无缓存时先返回 loading payload,页面显示当前 registry、超时和自动路由状态,后端请求完成后自动刷新市场数据。
12
+
13
+ ## 3.4.5
14
+
15
+ - CI 和发布 workflow 增加 `audit:package`,要求 market-next 自身发布依赖树排除 peer runtime 后为 0 漏洞。
16
+ - 保留完整安装树的高危 audit 门禁,继续阻止 high / critical 漏洞进入发布。
17
+ - README 补充 Koishi peer runtime 中危的来源和边界,避免把上游运行时链路误判为 market-next 发布包本体漏洞。
18
+
5
19
  ## 3.4.4
6
20
 
7
21
  - 安全审计:通过 npm override 将 `@koishijs/plugin-console` 链路中的 `uuid` 收敛到 `11.1.1` 以上。
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # koishi-plugin-market-next
2
2
 
3
- ![Version](https://img.shields.io/badge/version-3.4.4-blue)
3
+ ![Version](https://img.shields.io/badge/version-3.4.6-blue)
4
4
  ![Koishi](https://img.shields.io/badge/Koishi-%5E4.18.11-6f42c1)
5
5
  ![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178c6)
6
6
  ![License](https://img.shields.io/badge/license-AGPL--3.0-orange)
@@ -181,9 +181,12 @@ koishi_plugin_market_search
181
181
 
182
182
  | 参数 | 说明 |
183
183
  | --- | --- |
184
+ | `intent` | 查询意图:`search`、`recommend`、`recent`、`popular`、`risk`、`compare`。省略时会根据参数自动推断。 |
184
185
  | `query` | 关键词搜索,匹配插件名、短名、描述和 keywords。 |
185
- | `category` | 分类过滤,例如 `adapter`、`ai`、`tool`、`game`、`webui`。 |
186
- | `status` | 状态过滤:`verified`、`insecure`、`preview`、`portable`、`deprecated`。 |
186
+ | `requirements` | 用户自然语言需求,例如“找一个好用的 onebot 适配器”。 |
187
+ | `names` | 插件包名或短名列表,用于精确查询或对比。 |
188
+ | `category` | 分类过滤,例如 `adapter`、`ai`、`tool`、`game`、`webui`。支持数组、单个字符串或逗号分隔字符串。 |
189
+ | `status` | 状态过滤:`verified`、`insecure`、`preview`、`portable`、`deprecated`。支持数组、单个字符串或逗号分隔字符串。 |
187
190
  | `createdAfter` / `createdBefore` | 创建时间范围,支持 `YYYY-MM-DD` 或 ISO 日期。 |
188
191
  | `updatedAfter` / `updatedBefore` | 更新时间范围。 |
189
192
  | `createdWithinDays` | 最近新增,例如 `30` 表示最近 30 天新增。 |
@@ -206,13 +209,20 @@ koishi_plugin_market_search
206
209
 
207
210
  ```json
208
211
  {
209
- "category": ["ai"],
210
- "updatedWithinDays": 30,
211
- "status": ["verified"]
212
+ "intent": "recommend",
213
+ "requirements": "找一个稳定的 AI 聊天插件",
214
+ "status": "verified"
212
215
  }
213
216
  ```
214
217
 
215
- 工具会在进程内缓存市场索引 10 分钟。请求失败但已有旧缓存时,会返回 stale 结果并标注失败原因;请求失败且没有缓存时,会返回明确错误。
218
+ ```json
219
+ {
220
+ "intent": "compare",
221
+ "names": ["koishi-plugin-adapter-onebot"]
222
+ }
223
+ ```
224
+
225
+ 工具返回 JSON 字符串,包含 `summary`、`results`、`filters` 和 `nextQueries`。工具会在进程内缓存市场索引 10 分钟。请求失败但已有旧缓存时,会返回 `stale: true` 的旧结果并标注失败原因;请求失败且没有缓存时,会返回 JSON 错误对象。
216
226
 
217
227
  ## 和原版 market 的区别
218
228
 
@@ -297,6 +307,8 @@ plugins:
297
307
 
298
308
  ```bash
299
309
  npm install
310
+ npm run audit:package
311
+ npm run audit:high
300
312
  npm run build
301
313
  npm pack --dry-run
302
314
  ```
@@ -305,6 +317,8 @@ npm pack --dry-run
305
317
 
306
318
  | 命令 | 说明 |
307
319
  | --- | --- |
320
+ | `npm run audit:package` | 审计插件自身发布依赖树,排除 Koishi peer runtime。 |
321
+ | `npm run audit:high` | 审计完整安装树的高危及严重漏洞。 |
308
322
  | `npm run build` | 生成 TypeScript 声明、后端 bundle 和前端 `dist`。 |
309
323
  | `npm run build:dts` | 只生成 TypeScript 声明。 |
310
324
  | `npm run build:js` | 只运行 JS / Console 构建。 |
@@ -325,7 +339,7 @@ lib/ 后端与类型构建产物
325
339
 
326
340
  仓库内置两个 GitHub Actions workflows:
327
341
 
328
- - `.github/workflows/ci.yml`:普通 push 和 pull request 运行 `npm ci`、`npm audit --audit-level=high`、`npm run build` 和 `npm pack --dry-run`,只验证,不发布。
342
+ - `.github/workflows/ci.yml`:普通 push 和 pull request 运行 `npm ci`、`npm run audit:package`、`npm run audit:high`、`npm run build` 和 `npm pack --dry-run`,只验证,不发布。
329
343
  - `.github/workflows/publish.yml`:`v*` tag 或手动触发时运行同样的校验,然后通过 npm Trusted Publishing 发布到 npm。
330
344
 
331
345
  首次使用前,需要在 npm 包设置里添加 Trusted Publisher:
@@ -338,13 +352,13 @@ lib/ 后端与类型构建产物
338
352
  发布新版本时先提交 `package.json`、`README.md`、`CHANGELOG.md` 等版本变更,再推送匹配版本号的 tag:
339
353
 
340
354
  ```bash
341
- git tag v3.4.4
342
- git push origin v3.4.4
355
+ git tag v3.4.6
356
+ git push origin v3.4.6
343
357
  ```
344
358
 
345
359
  也可以在 GitHub Actions 页面手动运行 `Publish to npm`,但输入版本必须与 `package.json` 一致,并且只能从默认分支触发。workflow 会先检查 npm 上是否已经存在同版本,存在则直接失败,避免覆盖发布。
346
360
 
347
- 当前安全策略是把高危 audit 作为发布门禁;中危来自 Koishi / Cordis 上游链路且修复路径会降级 Console 时,不强行处理,避免为了 audit 破坏插件兼容性。
361
+ 当前安全策略分两层:`npm run audit:package` 要求插件自身发布依赖树没有已知漏洞;`npm run audit:high` 要求完整安装树没有高危或严重漏洞。完整 `npm audit` 中剩余的中危来自 Koishi peer runtime 的 Cordis / `file-type` 链路,npm 给出的修复路径会降级 Koishi 或跨 Cordis 主版本,因此不强行处理,避免为了 audit 破坏插件兼容性。
348
362
 
349
363
  ## 发布包内容
350
364
 
@@ -358,6 +372,20 @@ git push origin v3.4.4
358
372
 
359
373
  ## 版本更新
360
374
 
375
+ ### 3.4.6
376
+
377
+ - ChatLuna Tool 优化:增强工具描述,让模型更容易在插件搜索、推荐、对比、最近新增/更新、热门和风险查询场景调用市场工具。
378
+ - ChatLuna Tool 输入增加 `intent`、`requirements`、`names`,并允许 `category`、`status`、`names` 使用数组、单字符串或逗号分隔字符串。
379
+ - ChatLuna Tool 输出从 Markdown 列表改为 JSON 字符串,包含 `summary`、`filters`、`results`、`nextQueries` 和 stale/error 信息。
380
+ - ChatLuna Tool 注册增加成功、失败和注销诊断日志。
381
+ - 弱网优化:市场冷启动无缓存时先返回 loading payload,页面显示当前 registry、超时和自动路由状态,后端请求完成后自动刷新市场数据。
382
+
383
+ ### 3.4.5
384
+
385
+ - CI 和发布 workflow 增加 `audit:package`,要求 market-next 自身发布依赖树排除 peer runtime 后为 0 漏洞。
386
+ - 保留完整安装树的高危 audit 门禁,继续阻止 high / critical 漏洞进入发布。
387
+ - README 补充 Koishi peer runtime 中危的来源和边界,避免把上游运行时链路误判为 market-next 发布包本体漏洞。
388
+
361
389
  ### 3.4.4
362
390
 
363
391
  - 安全审计:通过 npm override 将 `@koishijs/plugin-console` 链路中的 `uuid` 收敛到 `11.1.1` 以上。
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- .market-filter-item[data-v-b9c0ec9c]{display:flex;margin:4px 0;color:var(--k-text-normal);transition:color .5s;align-items:center;z-index:2;height:24px;cursor:pointer}.market-filter-item[data-v-b9c0ec9c]:hover{color:var(--k-text-dark)}.market-filter-item.active[data-v-b9c0ec9c]{color:var(--k-text-active)}.market-filter-item.active.verified[data-v-b9c0ec9c],.market-filter-item.active.newborn[data-v-b9c0ec9c]{color:var(--k-color-success)}.market-filter-item.active.preview[data-v-b9c0ec9c],.market-filter-item.active.portable[data-v-b9c0ec9c]{color:var(--k-color-warning)}.market-filter-item.active.insecure[data-v-b9c0ec9c]{color:var(--k-color-danger)}.market-filter-item.disabled[data-v-b9c0ec9c]{opacity:.5;text-decoration:line-through 2px}.market-filter-item .icon[data-v-b9c0ec9c]{display:inline-flex;width:1.75rem;margin-right:4px;align-items:center;justify-content:center}.market-filter-item:not(.active) .order[data-v-b9c0ec9c]{display:none}.market-filter-item .order[data-v-b9c0ec9c]{display:inline-flex;width:1.75rem;align-items:center;justify-content:center}.market-filter-item svg[data-v-b9c0ec9c]{height:1rem;max-width:1.125rem}.market-filter-item .text[data-v-b9c0ec9c],.market-filter-item .count[data-v-b9c0ec9c]{line-height:20px;font-size:14px;font-weight:500}.market-filter-item .count[data-v-b9c0ec9c]{margin-right:4px}.market-filter-item .spacer[data-v-b9c0ec9c]{flex:1}.cursor-pointer[data-v-9f322549]{cursor:pointer}.market-package[data-v-9f322549]{width:100%;max-width:540px;height:calc(12.5rem + 2px);margin:0;padding:1rem 1.25rem;box-sizing:border-box;transition:box-shadow .3s ease;box-shadow:0 0 0 2px inset transparent}.market-package[data-v-9f322549]:hover{box-shadow:0 0 0 2px inset var(--k-color-primary)}.market-package .market-icon[data-v-9f322549]{height:1em;display:inline}.market-package .header[data-v-9f322549],.market-package .footer[data-v-9f322549]{flex:0 0 auto}.market-package .header[data-v-9f322549]{position:relative}.market-package .header .left[data-v-9f322549]{width:3.5rem;height:3.5rem;border-radius:8px;border:1px solid var(--k-color-border);box-sizing:border-box}.market-package .header .left svg[data-v-9f322549]{height:1.75rem}.market-package .header h2[data-v-9f322549]{font-size:1.125rem;margin:0;line-height:1;display:flex;align-items:center}.market-package .header h2 .title[data-v-9f322549]{flex:0 1 auto;line-height:1.5rem;display:inline-block}.market-package .header h2 .icon[data-v-9f322549]{margin-left:.6rem;height:1.125rem;width:1.125rem;vertical-align:-2px;position:relative;display:inline-block;cursor:pointer}.market-package .header h2 .icon .market-icon[data-v-9f322549]{height:100%;transition:color .3s ease;z-index:10;position:relative}.market-package .header h2 .icon.verified[data-v-9f322549],.market-package .header h2 .icon.newborn[data-v-9f322549]{color:var(--k-color-success)}.market-package .header h2 .icon.preview[data-v-9f322549]{color:var(--k-color-warning)}.market-package .header h2 .icon.insecure[data-v-9f322549]{color:var(--k-color-danger)}.market-package .header h2 .icon.verified[data-v-9f322549]:before,.market-package .header h2 .icon.insecure[data-v-9f322549]:before{position:absolute;top:25%;left:25%;right:25%;bottom:25%;content:"";z-index:0;border-radius:100%;background-color:#fff}.market-package .header .rating[data-v-9f322549]{height:1.5rem;display:inline-flex;align-items:center;gap:0 .25rem;width:fit-content}.market-package .header .rating .market-icon[data-v-9f322549]{color:var(--k-color-warning);height:.875rem;transition:color .3s ease}.market-package .desc[data-v-9f322549]{margin:0;font-size:15px;flex:1 1 auto;line-height:1.5;overflow:hidden;word-break:break-word;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.market-package .footer[data-v-9f322549]{display:flex;gap:.5rem;align-items:center;height:1.5rem;margin-bottom:-.25rem;cursor:default;font-size:14px;transition:color .3s ease;overflow:hidden}.market-package .footer[data-v-9f322549]>*{flex:0 0 auto}.market-package .footer .spacer[data-v-9f322549]{flex:0 2 .5rem}.market-package .footer .long-spacer[data-v-9f322549]{flex:1 1 auto}.market-package .footer .market-icon[data-v-9f322549]{height:12px;width:16px;margin-right:6px;vertical-align:-1px}.market-package .footer .avatars[data-v-9f322549]{display:flex;gap:.25rem}.market-package .footer .avatars .avatar[data-v-9f322549]{cursor:pointer}.market-package .footer .avatars img[data-v-9f322549]{height:1.5rem;width:1.5rem;border-radius:100%;vertical-align:middle}.package-list[data-v-c6afd4f6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(336px,1fr));gap:var(--card-margin);justify-items:center;flex:1 0 auto}.virtual-spacer[data-v-c6afd4f6]{grid-column:1/-1;width:100%;pointer-events:none}.k-empty[data-v-c6afd4f6]{flex:1 0 auto}.load-more[data-v-c6afd4f6],.load-complete[data-v-c6afd4f6]{margin:var(--card-margin) 0;display:flex;justify-content:center;color:var(--el-text-color-secondary);font-size:14px}.search-box[data-v-c2c992aa]{display:flex;margin:2rem auto 0;width:100%;max-width:600px;border-radius:1.5rem;align-items:center}.search-container[data-v-c2c992aa]{flex:1 1 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px 6px;padding:.75rem 1.25rem;padding-right:0}.search-container input[data-v-c2c992aa]{flex:1 1 auto;height:1.25rem;min-width:10rem;font-size:.9em;padding:0;box-sizing:border-box;color:inherit;background-color:transparent;border:none;outline:none}.search-action[data-v-c2c992aa]{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;width:3rem;height:2.5rem;cursor:pointer}.search-action .market-icon[data-v-c2c992aa]{height:1rem;opacity:.5}.search-action:hover .market-icon.search[data-v-c2c992aa]{display:none}.search-action:not(:hover) .market-icon.close[data-v-c2c992aa]{display:none}.search-word[data-v-c2c992aa]{flex:0 0 auto;display:inline-block;font-size:14px;height:1.25rem;line-height:1rem;border-radius:4px;padding:2px 6px;box-sizing:border-box;color:#fff;font-weight:500;white-space:nowrap;vertical-align:baseline;background-color:var(--k-fill-normal);cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .3s ease,background-color .3s ease}.search-word.invalid[data-v-c2c992aa]{opacity:.5;text-decoration:line-through}.search-word.invalid[data-v-c2c992aa]:hover{opacity:1}.manual-panel .k-comment{margin-top:0}.dep-package-view[data-v-8af0472c]{height:3rem;position:relative}.dep-package-view .el-button[data-v-8af0472c]{width:4rem}.dep-package-view .version-status[data-v-8af0472c]{display:inline-block;max-width:10rem;white-space:normal;line-height:1.3;font-size:.85em}.dep-package-view .version-status.muted[data-v-8af0472c]{color:var(--fg2)}.dep-package-view .version-status.danger[data-v-8af0472c]{color:var(--danger)}.page-deps{display:flex;flex-flow:column}.page-deps .body-container{transform:translateY(1px);margin-top:-1px}.page-deps table tr:first-child{border-top:none}.page-deps tbody tr{transition:.3s ease}.page-deps tbody tr:hover{background-color:var(--k-side-bg)}@media(max-width:768px){.page-deps td{padding:.5em}}.theme-color.primary{color:var(--primary)}.theme-color.success{color:var(--success)}.theme-color.warning{color:var(--warning)}.theme-color.danger{color:var(--danger)}.install-panel .el-dialog__header{display:flex;gap:0 .5em;align-items:center;padding-right:36px;padding-bottom:4px}.install-panel .el-dialog__header .el-dialog__title{font-weight:500;color:var(--fg1);margin-right:.5rem;flex:0 0 auto}.install-panel .el-dialog__header .el-select{flex:1 1 auto;max-width:12.5rem;margin:-2px 0 -4px}.install-panel .warning{color:var(--k-color-warning)}.install-panel .danger{color:var(--k-color-danger)}.install-panel .version-badges{float:right;margin-right:-12px}.install-panel .el-dialog__body{padding:0 20px;min-height:40px}.install-panel .el-dialog__body>div{margin:1rem 0}.install-panel .el-dialog__body:last-child{padding-bottom:1rem}.install-panel table thead td,.install-panel table thead th,.install-panel table tbody td,.install-panel table tbody th{padding:.5em .875em;white-space:nowrap}.install-panel span.link:hover{cursor:pointer;text-decoration:underline}.install-panel .el-button+.el-button{margin-left:1rem}.install-panel .el-dialog__footer{display:flex;justify-content:space-between;align-items:center}.install-panel .wrapper{position:relative;display:inline-flex}.install-panel .wrapper .shadow{letter-spacing:1px;visibility:hidden;padding-right:22px}.install-panel .wrapper .el-select{position:absolute;left:0;top:50%;right:0;transform:translateY(-50%)}.dot-hint:before{content:"";position:absolute;border-radius:100%;width:.5rem;height:.5rem;top:50%;right:20px;transform:translateY(-50%);background-color:currentColor;transition:background-color .3s ease;box-shadow:1px 1px 2px #3333}.confirm-panel td.arrow{padding:0}.confirm-panel td.arrow span{display:flex;justify-content:center;align-items:center}.confirm-panel .el-dialog__footer{display:flex;justify-content:space-between;align-items:center}.page-market .layout-main .el-scrollbar__view{padding:0 var(--card-margin);display:flex;flex-direction:column;min-height:100%}.page-market .layout-left .market-filter-group{padding:0 1.5rem;margin:2rem 0}.page-market .layout-left h2{margin:0;font-size:14px;padding:8px 0}.search-box{background-color:var(--k-card-bg);box-shadow:var(--k-card-shadow);transition:var(--color-transition)}.market-hint{width:100%;margin:1rem 0 -.5rem;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);font-weight:var(--el-font-weight-primary);transition:color .3s ease}.market-hint .el-checkbox{margin-left:1.5rem}.market-stale.k-comment{width:100%;box-sizing:border-box;margin:1.25rem 0 -.25rem}.market-stale.k-comment p{margin:.25rem 0}.market-debug.k-comment{width:100%;box-sizing:border-box;margin:1.25rem 0 -.25rem;font-size:12px}.market-debug.k-comment p{margin:.25rem 0 .5rem}.market-debug-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.25rem 1rem}.market-debug-item{display:flex;justify-content:space-between;gap:.75rem;min-width:0}.market-debug-item span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg1)}.market-debug-timings,.market-debug-routes{display:flex;flex-wrap:wrap;gap:.35rem .75rem;margin-top:.5rem;color:var(--fg2)}.market-debug-route{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.market-container .k-button{padding:.35em .85em;transform:translateY(-1px);margin-left:1rem}.market-error.k-comment{margin-left:2rem;margin-right:2rem}.k-status .el-progress-bar{width:120px;margin-right:2px}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.grid{display:grid}.my-8{margin-top:2rem;margin-bottom:2rem}.ms{margin-inline-start:1rem}.inline{display:inline}.inline-block{display:inline-block}.hidden{display:none}.h2{height:.5rem}.flex{display:flex}.inline-flex{display:inline-flex}.shrink-0{flex-shrink:0}.grow-1{flex-grow:1}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.items-center{align-items:center}.justify-center{justify-content:center}.justify-around{justify-content:space-around}.gap-1{gap:.25rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-4{column-gap:1rem}.gap-y-2{row-gap:.5rem}.overflow-hidden{overflow:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b,.border{border-width:1px}.px{padding-left:1rem;padding-right:1rem}.pl-8{padding-left:2rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.shadow{--un-shadow:var(--un-shadow-inset) 0 1px 3px 0 var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 1px 2px -1px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.outline{outline-style:solid}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}
1
+ .market-filter-item[data-v-c2d502ec]{display:flex;margin:4px 0;color:var(--k-text-normal);transition:color .5s;align-items:center;z-index:2;height:24px;cursor:pointer}.market-filter-item[data-v-c2d502ec]:hover{color:var(--k-text-dark)}.market-filter-item.active[data-v-c2d502ec]{color:var(--k-text-active)}.market-filter-item.active.verified[data-v-c2d502ec],.market-filter-item.active.newborn[data-v-c2d502ec]{color:var(--k-color-success)}.market-filter-item.active.preview[data-v-c2d502ec],.market-filter-item.active.portable[data-v-c2d502ec]{color:var(--k-color-warning)}.market-filter-item.active.insecure[data-v-c2d502ec]{color:var(--k-color-danger)}.market-filter-item.disabled[data-v-c2d502ec]{opacity:.5;text-decoration:line-through 2px}.market-filter-item .icon[data-v-c2d502ec]{display:inline-flex;width:1.75rem;height:1rem;margin-right:4px;align-items:center;justify-content:center;overflow:hidden}.market-filter-item:not(.active) .order[data-v-c2d502ec]{display:none}.market-filter-item .order[data-v-c2d502ec]{display:inline-flex;width:1.75rem;height:1rem;align-items:center;justify-content:center;overflow:hidden}.market-filter-item[data-v-c2d502ec] .market-icon{display:block;width:1.125rem;height:1rem;max-width:1.125rem;flex:0 0 auto}.market-filter-item .text[data-v-c2d502ec],.market-filter-item .count[data-v-c2d502ec]{line-height:20px;font-size:14px;font-weight:500}.market-filter-item .count[data-v-c2d502ec]{margin-right:4px}.market-filter-item .spacer[data-v-c2d502ec]{flex:1}.cursor-pointer[data-v-9f322549]{cursor:pointer}.market-package[data-v-9f322549]{width:100%;max-width:540px;height:calc(12.5rem + 2px);margin:0;padding:1rem 1.25rem;box-sizing:border-box;transition:box-shadow .3s ease;box-shadow:0 0 0 2px inset transparent}.market-package[data-v-9f322549]:hover{box-shadow:0 0 0 2px inset var(--k-color-primary)}.market-package .market-icon[data-v-9f322549]{height:1em;display:inline}.market-package .header[data-v-9f322549],.market-package .footer[data-v-9f322549]{flex:0 0 auto}.market-package .header[data-v-9f322549]{position:relative}.market-package .header .left[data-v-9f322549]{width:3.5rem;height:3.5rem;border-radius:8px;border:1px solid var(--k-color-border);box-sizing:border-box}.market-package .header .left svg[data-v-9f322549]{height:1.75rem}.market-package .header h2[data-v-9f322549]{font-size:1.125rem;margin:0;line-height:1;display:flex;align-items:center}.market-package .header h2 .title[data-v-9f322549]{flex:0 1 auto;line-height:1.5rem;display:inline-block}.market-package .header h2 .icon[data-v-9f322549]{margin-left:.6rem;height:1.125rem;width:1.125rem;vertical-align:-2px;position:relative;display:inline-block;cursor:pointer}.market-package .header h2 .icon .market-icon[data-v-9f322549]{height:100%;transition:color .3s ease;z-index:10;position:relative}.market-package .header h2 .icon.verified[data-v-9f322549],.market-package .header h2 .icon.newborn[data-v-9f322549]{color:var(--k-color-success)}.market-package .header h2 .icon.preview[data-v-9f322549]{color:var(--k-color-warning)}.market-package .header h2 .icon.insecure[data-v-9f322549]{color:var(--k-color-danger)}.market-package .header h2 .icon.verified[data-v-9f322549]:before,.market-package .header h2 .icon.insecure[data-v-9f322549]:before{position:absolute;top:25%;left:25%;right:25%;bottom:25%;content:"";z-index:0;border-radius:100%;background-color:#fff}.market-package .header .rating[data-v-9f322549]{height:1.5rem;display:inline-flex;align-items:center;gap:0 .25rem;width:fit-content}.market-package .header .rating .market-icon[data-v-9f322549]{color:var(--k-color-warning);height:.875rem;transition:color .3s ease}.market-package .desc[data-v-9f322549]{margin:0;font-size:15px;flex:1 1 auto;line-height:1.5;overflow:hidden;word-break:break-word;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.market-package .footer[data-v-9f322549]{display:flex;gap:.5rem;align-items:center;height:1.5rem;margin-bottom:-.25rem;cursor:default;font-size:14px;transition:color .3s ease;overflow:hidden}.market-package .footer[data-v-9f322549]>*{flex:0 0 auto}.market-package .footer .spacer[data-v-9f322549]{flex:0 2 .5rem}.market-package .footer .long-spacer[data-v-9f322549]{flex:1 1 auto}.market-package .footer .market-icon[data-v-9f322549]{height:12px;width:16px;margin-right:6px;vertical-align:-1px}.market-package .footer .avatars[data-v-9f322549]{display:flex;gap:.25rem}.market-package .footer .avatars .avatar[data-v-9f322549]{cursor:pointer}.market-package .footer .avatars img[data-v-9f322549]{height:1.5rem;width:1.5rem;border-radius:100%;vertical-align:middle}.package-list[data-v-c6afd4f6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(336px,1fr));gap:var(--card-margin);justify-items:center;flex:1 0 auto}.virtual-spacer[data-v-c6afd4f6]{grid-column:1/-1;width:100%;pointer-events:none}.k-empty[data-v-c6afd4f6]{flex:1 0 auto}.load-more[data-v-c6afd4f6],.load-complete[data-v-c6afd4f6]{margin:var(--card-margin) 0;display:flex;justify-content:center;color:var(--el-text-color-secondary);font-size:14px}.search-box[data-v-c2c992aa]{display:flex;margin:2rem auto 0;width:100%;max-width:600px;border-radius:1.5rem;align-items:center}.search-container[data-v-c2c992aa]{flex:1 1 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px 6px;padding:.75rem 1.25rem;padding-right:0}.search-container input[data-v-c2c992aa]{flex:1 1 auto;height:1.25rem;min-width:10rem;font-size:.9em;padding:0;box-sizing:border-box;color:inherit;background-color:transparent;border:none;outline:none}.search-action[data-v-c2c992aa]{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;width:3rem;height:2.5rem;cursor:pointer}.search-action .market-icon[data-v-c2c992aa]{height:1rem;opacity:.5}.search-action:hover .market-icon.search[data-v-c2c992aa]{display:none}.search-action:not(:hover) .market-icon.close[data-v-c2c992aa]{display:none}.search-word[data-v-c2c992aa]{flex:0 0 auto;display:inline-block;font-size:14px;height:1.25rem;line-height:1rem;border-radius:4px;padding:2px 6px;box-sizing:border-box;color:#fff;font-weight:500;white-space:nowrap;vertical-align:baseline;background-color:var(--k-fill-normal);cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .3s ease,background-color .3s ease}.search-word.invalid[data-v-c2c992aa]{opacity:.5;text-decoration:line-through}.search-word.invalid[data-v-c2c992aa]:hover{opacity:1}.manual-panel .k-comment{margin-top:0}.dep-package-view[data-v-8af0472c]{height:3rem;position:relative}.dep-package-view .el-button[data-v-8af0472c]{width:4rem}.dep-package-view .version-status[data-v-8af0472c]{display:inline-block;max-width:10rem;white-space:normal;line-height:1.3;font-size:.85em}.dep-package-view .version-status.muted[data-v-8af0472c]{color:var(--fg2)}.dep-package-view .version-status.danger[data-v-8af0472c]{color:var(--danger)}.page-deps{display:flex;flex-flow:column}.page-deps .body-container{transform:translateY(1px);margin-top:-1px}.page-deps table tr:first-child{border-top:none}.page-deps tbody tr{transition:.3s ease}.page-deps tbody tr:hover{background-color:var(--k-side-bg)}@media(max-width:768px){.page-deps td{padding:.5em}}.theme-color.primary{color:var(--primary)}.theme-color.success{color:var(--success)}.theme-color.warning{color:var(--warning)}.theme-color.danger{color:var(--danger)}.install-panel .el-dialog__header{display:flex;gap:0 .5em;align-items:center;padding-right:36px;padding-bottom:4px}.install-panel .el-dialog__header .el-dialog__title{font-weight:500;color:var(--fg1);margin-right:.5rem;flex:0 0 auto}.install-panel .el-dialog__header .el-select{flex:1 1 auto;max-width:12.5rem;margin:-2px 0 -4px}.install-panel .warning{color:var(--k-color-warning)}.install-panel .danger{color:var(--k-color-danger)}.install-panel .version-badges{float:right;margin-right:-12px}.install-panel .el-dialog__body{padding:0 20px;min-height:40px}.install-panel .el-dialog__body>div{margin:1rem 0}.install-panel .el-dialog__body:last-child{padding-bottom:1rem}.install-panel table thead td,.install-panel table thead th,.install-panel table tbody td,.install-panel table tbody th{padding:.5em .875em;white-space:nowrap}.install-panel span.link:hover{cursor:pointer;text-decoration:underline}.install-panel .el-button+.el-button{margin-left:1rem}.install-panel .el-dialog__footer{display:flex;justify-content:space-between;align-items:center}.install-panel .wrapper{position:relative;display:inline-flex}.install-panel .wrapper .shadow{letter-spacing:1px;visibility:hidden;padding-right:22px}.install-panel .wrapper .el-select{position:absolute;left:0;top:50%;right:0;transform:translateY(-50%)}.dot-hint:before{content:"";position:absolute;border-radius:100%;width:.5rem;height:.5rem;top:50%;right:20px;transform:translateY(-50%);background-color:currentColor;transition:background-color .3s ease;box-shadow:1px 1px 2px #3333}.confirm-panel td.arrow{padding:0}.confirm-panel td.arrow span{display:flex;justify-content:center;align-items:center}.confirm-panel .el-dialog__footer{display:flex;justify-content:space-between;align-items:center}.page-market .layout-main .el-scrollbar__view{padding:0 var(--card-margin);display:flex;flex-direction:column;min-height:100%}.page-market .layout-left .market-filter-group{padding:0 1.5rem;margin:2rem 0}.page-market .layout-left h2{margin:0;font-size:14px;padding:8px 0}.search-box{background-color:var(--k-card-bg);box-shadow:var(--k-card-shadow);transition:var(--color-transition)}.market-hint{width:100%;margin:1rem 0 -.5rem;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);font-weight:var(--el-font-weight-primary);transition:color .3s ease}.market-hint .el-checkbox{margin-left:1.5rem}.market-stale.k-comment{width:100%;box-sizing:border-box;margin:1.25rem 0 -.25rem}.market-stale.k-comment p{margin:.25rem 0}.market-loading-detail{color:var(--el-text-color-secondary);font-size:12px}.market-loading-warning.k-comment{max-width:640px;margin:2rem auto;box-sizing:border-box}.market-loading-warning.k-comment p{margin:.25rem 0}.market-debug.k-comment{width:100%;box-sizing:border-box;margin:1.25rem 0 -.25rem;font-size:12px}.market-debug.k-comment p{margin:.25rem 0 .5rem}.market-debug-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.25rem 1rem}.market-debug-item{display:flex;justify-content:space-between;gap:.75rem;min-width:0}.market-debug-item span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg1)}.market-debug-timings,.market-debug-routes{display:flex;flex-wrap:wrap;gap:.35rem .75rem;margin-top:.5rem;color:var(--fg2)}.market-debug-route{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.market-container .k-button{padding:.35em .85em;transform:translateY(-1px);margin-left:1rem}.market-error.k-comment{margin-left:2rem;margin-right:2rem}.k-status .el-progress-bar{width:120px;margin-right:2px}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.grid{display:grid}.my-8{margin-top:2rem;margin-bottom:2rem}.ms{margin-inline-start:1rem}.inline{display:inline}.block{display:block}.inline-block{display:inline-block}.hidden{display:none}.h2{height:.5rem}.flex{display:flex}.inline-flex{display:inline-flex}.shrink-0{flex-shrink:0}.grow-1{flex-grow:1}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.items-center{align-items:center}.justify-center{justify-content:center}.justify-around{justify-content:space-around}.gap-1{gap:.25rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-4{column-gap:1rem}.gap-y-2{row-gap:.5rem}.overflow-hidden{overflow:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b,.border{border-width:1px}.px{padding-left:1rem;padding-right:1rem}.pl-8{padding-left:2rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.shadow{--un-shadow:var(--un-shadow-inset) 0 1px 3px 0 var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 1px 2px -1px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.outline{outline-style:solid}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}