karin-plugin-kkk 2.27.4 → 2.27.5

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.
Files changed (91) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/lib/apps/__ready.js +1 -1
  3. package/lib/apps/admin.js +1 -1
  4. package/lib/apps/help.js +1 -1
  5. package/lib/apps/push.js +1 -1
  6. package/lib/apps/qrlogin.js +1 -1
  7. package/lib/apps/statistics.js +1 -1
  8. package/lib/apps/tools.js +1 -1
  9. package/lib/apps/update.js +1 -1
  10. package/lib/build-metadata.json +5 -5
  11. package/lib/core_chunk/ArticleWork-DAUu405n.js +2 -0
  12. package/lib/core_chunk/Comment-C4O4BGki.js +2 -0
  13. package/lib/core_chunk/{Comment-3FcCu8BO.js → Comment-CvirQFYw.js} +1 -1
  14. package/lib/core_chunk/Comment-DRZJbKCo.js +2 -0
  15. package/lib/core_chunk/Comment-OVXVG_tK.js +2 -0
  16. package/lib/core_chunk/{DYNAMIC_TYPE_ARTICLE-DIZ4FpfS.js → DYNAMIC_TYPE_ARTICLE-BWmq2izT.js} +1 -1
  17. package/lib/core_chunk/{DYNAMIC_TYPE_AV-5WXLprJ7.js → DYNAMIC_TYPE_AV-DEXvSz0s.js} +1 -1
  18. package/lib/core_chunk/{DYNAMIC_TYPE_DRAW-CA3dYbCJ.js → DYNAMIC_TYPE_DRAW-BAoyJ_xj.js} +1 -1
  19. package/lib/core_chunk/{DYNAMIC_TYPE_FORWARD-DEna4cpV.js → DYNAMIC_TYPE_FORWARD-BI22-GqJ.js} +1 -1
  20. package/lib/core_chunk/{DYNAMIC_TYPE_LIVE_RCMD-BpDR7WHh.js → DYNAMIC_TYPE_LIVE_RCMD-6e6Nxtk5.js} +1 -1
  21. package/lib/core_chunk/{DYNAMIC_TYPE_WORD-uj6LDApK.js → DYNAMIC_TYPE_WORD-BTU9phya.js} +1 -1
  22. package/lib/core_chunk/Dynamic-hjZ0BWR-.js +2 -0
  23. package/lib/core_chunk/FavoriteList-DUfIRclT.js +2 -0
  24. package/lib/core_chunk/GlobalStatistics-B3CAQ44M.js +2 -0
  25. package/lib/core_chunk/GroupStatistics-D4gbZHi3.js +2 -0
  26. package/lib/core_chunk/Help-Dsw5G3Do.js +2 -0
  27. package/lib/core_chunk/ImageWork-B9FSN_iw.js +2 -0
  28. package/lib/core_chunk/Live-KEnoE0UO.js +2 -0
  29. package/lib/core_chunk/MusicInfo-Ddrg14eN.js +2 -0
  30. package/lib/core_chunk/RecommendList-D1l_s0TC.js +2 -0
  31. package/lib/core_chunk/UserList-BApDU1lF.js +2 -0
  32. package/lib/core_chunk/UserList-H1AY3_uj.js +2 -0
  33. package/lib/core_chunk/UserVideoList-CMMgbIYt.js +2 -0
  34. package/lib/core_chunk/VersionWarning-BW24eFU4.js +2 -0
  35. package/lib/core_chunk/VideoWork-BiIIbFeI.js +2 -0
  36. package/lib/core_chunk/amagiClient-ZfZHbiuk.js +2 -0
  37. package/lib/core_chunk/bangumi-Dp7MOjzD.js +2 -0
  38. package/lib/core_chunk/changelog-C8dAS9l4.js +2 -0
  39. package/lib/core_chunk/db-BejzAO0s.js +2 -0
  40. package/lib/core_chunk/dist-BAaLyQpB.js +2 -0
  41. package/lib/core_chunk/handlerError-BOPnE0Gh.js +2 -0
  42. package/lib/core_chunk/{main-6Y7nyjx4.js → main-DmN-B2b6.js} +620 -357
  43. package/lib/core_chunk/{noteInfo-ceSqTSrs.js → noteInfo-srWUKzIA.js} +1 -1
  44. package/lib/core_chunk/qrcodeImg-DSrE-i8P.js +2 -0
  45. package/lib/core_chunk/qrcodeImg-p3e0i2PO.js +2 -0
  46. package/lib/core_chunk/qrlogin-B_Yo4Job.js +2 -0
  47. package/lib/core_chunk/setup-B-ut9uDP.js +2 -0
  48. package/lib/core_chunk/template.d.mts +351 -15
  49. package/lib/core_chunk/template.js +1 -1
  50. package/lib/core_chunk/{vendor-C2bazYnS.js → vendor-BVonRw7I.js} +6444 -180
  51. package/lib/core_chunk/videoInfo-Bhn9Z9tk.js +2 -0
  52. package/lib/core_chunk/videoInfo-DQEHVJxc.js +2 -0
  53. package/lib/index.js +1 -1
  54. package/lib/karin-plugin-kkk.css +41 -2
  55. package/lib/root.js +1 -1
  56. package/lib/web.config.js +1 -1
  57. package/package.json +2 -2
  58. package/resources/image/other/handlerError/Milky.png +0 -0
  59. package/resources/image/other/handlerError/onebot.png +0 -0
  60. package/resources/image/other/handlerError/satori.png +0 -0
  61. package/lib/core_chunk/ArticleWork-B_N5AkIO.js +0 -2
  62. package/lib/core_chunk/Comment-B114EV7_.js +0 -2
  63. package/lib/core_chunk/Comment-DnBi7suz.js +0 -2
  64. package/lib/core_chunk/Comment-jN3Jrbqy.js +0 -2
  65. package/lib/core_chunk/Dynamic-CjBqyS5b.js +0 -2
  66. package/lib/core_chunk/FavoriteList-DqEIdIRs.js +0 -2
  67. package/lib/core_chunk/GlobalStatistics-CjRmAre5.js +0 -2
  68. package/lib/core_chunk/GroupStatistics-B1KiWL8O.js +0 -2
  69. package/lib/core_chunk/Help-cUrYFfcV.js +0 -2
  70. package/lib/core_chunk/ImageWork-Q04TjdP2.js +0 -2
  71. package/lib/core_chunk/Live-9Ap-uSUG.js +0 -2
  72. package/lib/core_chunk/MusicInfo-DTgkPZdV.js +0 -2
  73. package/lib/core_chunk/RecommendList-zmL3tGkI.js +0 -2
  74. package/lib/core_chunk/UserList-DXZAtRSu.js +0 -2
  75. package/lib/core_chunk/UserList-DpZY5fHU.js +0 -2
  76. package/lib/core_chunk/UserVideoList-BjL0jy7v.js +0 -2
  77. package/lib/core_chunk/VersionWarning-Brat9oYa.js +0 -2
  78. package/lib/core_chunk/VideoWork-BNvQCKg2.js +0 -2
  79. package/lib/core_chunk/amagiClient-ATxzS7iY.js +0 -2
  80. package/lib/core_chunk/bangumi-Dn8bqGCx.js +0 -2
  81. package/lib/core_chunk/changelog-BEPsRL3p.js +0 -2
  82. package/lib/core_chunk/db-UHhoG96T.js +0 -2
  83. package/lib/core_chunk/dist-BN09jDjE.js +0 -2
  84. package/lib/core_chunk/handlerError-BdKMBVs1.js +0 -2
  85. package/lib/core_chunk/qrcodeImg-8IjCL_dz.js +0 -2
  86. package/lib/core_chunk/qrcodeImg-DYsRwngE.js +0 -2
  87. package/lib/core_chunk/qrlogin-zLF4JsCE.js +0 -2
  88. package/lib/core_chunk/setup-9JCJqKat.js +0 -2
  89. package/lib/core_chunk/videoInfo-C6b97ZWx.js +0 -2
  90. package/lib/core_chunk/videoInfo-JeaHNtaa.js +0 -2
  91. package/resources/image/other/handlerError/cxk.png +0 -0
@@ -1,11 +1,11 @@
1
1
  import { o as __toESM } from "./rolldown-runtime-8i3BgXHp.js";
2
- import { $ as RiTrophyFill, $t as require_qr_code_styling, A as RiBellFill, At as Eye, B as RiLoginCircleFill, Bt as ChartColumn, C as AiOutlineVideoCamera, Ct as MapPin, D as LuFullscreen, Dt as Gift, E as SiBilibili, Et as Hash, F as RiHeart3Line, Ft as Clock, G as RiRobot2Fill, Gt as require_dist, H as RiPieChart2Fill, Ht as Bookmark, I as RiLineChartFill, It as CircleFadingArrowUp, J as RiSparkling2Fill, Jt as zhCN, K as RiSendPlaneFill, Kt as require_lib, L as RiLinkM, Lt as CircleEllipsis, M as RiHashtag, Mt as Crown, N as RiHeart2Line, Nt as CornerDownLeft, O as RiArrowRightFill, Ot as Gamepad2, P as RiHeart3Fill, Pt as Coins, Q as RiTiktokFill, Qt as differenceInSeconds, R as RiListCheck2, Rt as CircleCheckBig, S as AiFillStar, St as MessageCircle, T as Markdown, Tt as Heart, U as RiQuestionFill, Ut as BookOpen, V as RiMessage3Fill, Vt as Calendar, W as RiRefreshLine, Wt as Bell, X as RiStarLine, Xt as formatDistanceToNow, Y as RiStarFill, Yt as fromUnixTime, Z as RiThumbUpFill, Zt as format, _ as FaTiktok, _n as AxiosError$1, _t as Quote, a as VictoryChart, an as button_default, at as User, b as AiFillHeart, bn as zod_default, bt as Play, c as VictoryTheme, cn as clsx, ct as ThumbsUp, d as MdAccessTime, dn as require_jsQR, dt as Smartphone, en as Window, et as RiUserFollowLine, f as MdLocationOn, fn as require_jpeg_js, ft as Shield, g as FaMusic, gn as Chalk, gt as Radio, h as FaCommentDots, hn as require_protobufjs, ht as ScanLine, i as VictoryLine, in as chip_default, it as Users, j as RiGroupLine, jt as ExternalLink, k as RiBarChartFill, kt as FileText, l as TbScan, ln as require_react, lt as Terminal, m as FaCodeBranch, mn as require_express, mt as Share2, n as VictoryScatter, nn as require_server_node, nt as RiVideoLine, o as VictoryAxis, on as HeroUIProvider, ot as UserPlus, p as MdOutlineLightbulb, pn as require_heic_decode, pt as ShieldCheck, q as RiShareForwardFill, r as VictoryPie, rn as code_default, rt as Zap, s as VictoryLabel, sn as require_jsx_runtime, st as TriangleAlert, t as rehypeHighlight, tn as purify, tt as RiVerifiedBadgeFill, u as HiOutlineMenuAlt2, un as require_png, ut as Star, v as FaUserGroup, vn as axios$1, vt as QrCode, w as IoSearch, wt as Info, x as AiFillPushpin, xt as Music, y as BsImage, yn as Xhshow, yt as Plug2, z as RiLiveLine, zt as CircleAlert } from "./vendor-C2bazYnS.js";
2
+ import { $ as RiThumbUpFill, $t as format, A as RiArrowRightFill, At as FileText, B as RiListCheck2, Bt as CircleAlert, C as AiFillStar, Ct as MessageCircle, D as Markdown, Dt as Hash, E as IoSearch, Et as Heart, F as RiHeart2Line, Ft as Coins, G as RiQuestionFill, Gt as Bell, H as RiLoginCircleFill, Ht as Calendar, I as RiHeart3Fill, It as Clock, J as RiSendPlaneFill, K as RiRefreshLine, Kt as require_dist, L as RiHeart3Line, Lt as CircleFadingArrowUp, M as RiBellFill, Mt as ExternalLink, N as RiGroupLine, Nt as Crown, O as SiBilibili, Ot as Gift, P as RiHashtag, Pt as CornerDownLeft, Q as RiStarLine, Qt as formatDistanceToNow, R as RiLineChartFill, Rt as CircleEllipsis, S as AiFillPushpin, Sn as zod_default, St as Music, T as IoExtensionPuzzleOutline, Tt as Info, U as RiMessage3Fill, Ut as Bookmark, V as RiLiveLine, Vt as ChartColumn, W as RiPieChart2Fill, Wt as BookOpen, X as RiSparkling2Fill, Xt as parse, Y as RiShareForwardFill, Yt as zhCN, Z as RiStarFill, Zt as fromUnixTime, _ as FaMusic, _n as require_protobufjs, _t as ScanLine, a as VictoryLine, an as code_default, at as Zap, b as BsImage, bn as axios$1, bt as QrCode, c as VictoryLabel, cn as HeroUIProvider, ct as UserPlus, d as HiOutlineMenuAlt2, dn as require_react, dt as Terminal, en as differenceInSeconds, et as RiTiktokFill, f as MdAccessTime, fn as require_png, ft as Star, g as FaCommentDots, gn as require_express, gt as Share2, h as FaCodeBranch, hn as require_heic_decode, ht as ShieldCheck, i as VictoryPie, in as require_server_node, it as RiVideoLine, j as RiBarChartFill, jt as Eye, k as LuFullscreen, kt as Gamepad2, l as VictoryTheme, ln as require_jsx_runtime, lt as TriangleAlert, m as MdOutlineLightbulb, mn as require_jpeg_js, mt as Shield, n as rehypeHighlight, nn as Window, nt as RiUserFollowLine, o as VictoryChart, on as chip_default, ot as Users, p as MdLocationOn, pn as require_jsQR, pt as Smartphone, q as RiRobot2Fill, qt as require_lib, r as VictoryScatter, rn as purify, rt as RiVerifiedBadgeFill, s as VictoryAxis, sn as button_default, st as User, t as require_lodash, tn as require_qr_code_styling, tt as RiTrophyFill, u as TbScan, un as clsx, ut as ThumbsUp, v as FaTiktok, vn as Chalk, vt as Radio, w as AiOutlineVideoCamera, wt as MapPin, x as AiFillHeart, xn as Xhshow, xt as Play, y as FaUserGroup, yn as AxiosError$1, yt as Quote, z as RiLinkM, zt as CircleCheckBig } from "./vendor-BVonRw7I.js";
3
3
  import "node:module";
4
4
  import fs from "node:fs";
5
5
  import path, { resolve } from "node:path";
6
6
  import URL$1, { fileURLToPath } from "node:url";
7
7
  import os, { platform } from "node:os";
8
- import karin$1, { BOT_CONNECT, app, authMiddleware, checkPkgUpdate, checkPort, common, components, config, copyConfigSync, createBadRequestResponse, createNotFoundResponse, createServerErrorResponse, createSuccessResponse, db, defineConfig, ffmpeg, ffprobe, filesByExt, getBot, hooks, karin, karinPathHtml, karinPathTemp, logger, logger as logger$1, logs, mkdirSync, range, render, requireFileSync, restart, segment, updatePkg, watch } from "node-karin";
8
+ import karin$1, { BOT_CONNECT, app, authMiddleware, checkPkgUpdate, checkPort, common, components, config, copyConfigSync, createBadRequestResponse, createNotFoundResponse, createServerErrorResponse, createSuccessResponse, db, defineConfig, ffmpeg, ffprobe, filesByExt, getBot, hooks, karin, karinPathHtml, karinPathTemp, logger, logger as logger$1, logs, mkdirSync, parseChangelog, range, render, requireFileSync, restart, segment, updatePkg, watch } from "node-karin";
9
9
  import _ from "node-karin/lodash";
10
10
  import { EventEmitter } from "node:events";
11
11
  import crypto from "node:crypto";
@@ -21,7 +21,7 @@ import { snapka } from "@snapka/puppeteer";
21
21
  import { newInjectedPage } from "fingerprint-injector";
22
22
  import express from "node-karin/express";
23
23
  globalThis.__kkkLoadStart ??= process.hrtime.bigint();
24
- import("./setup-9JCJqKat.js");
24
+ import("./setup-B-ut9uDP.js");
25
25
  var resolvePluginRoot = (startUrl) => {
26
26
  let dir = path.dirname(startUrl);
27
27
  for (let i = 0; i < 8; i++) {
@@ -5213,7 +5213,7 @@ var Cfg = class {
5213
5213
  const fileName = path.basename(file, ".yaml");
5214
5214
  if (fileName === "cookies" || fileName === "request") {
5215
5215
  logger.debug(`[Config] 检测到 ${fileName} 配置变化,正在重载 Amagi Client...`);
5216
- import("./amagiClient-ATxzS7iY.js").then(({ reloadAmagiConfig }) => {
5216
+ import("./amagiClient-ZfZHbiuk.js").then(({ reloadAmagiConfig }) => {
5217
5217
  reloadAmagiConfig();
5218
5218
  }).catch((error) => {
5219
5219
  logger.error(`[Config] 重载 Amagi Client 失败: ${error}`);
@@ -5232,7 +5232,7 @@ var Cfg = class {
5232
5232
  };
5233
5233
  }
5234
5234
  async All() {
5235
- const { getDouyinDB, getBilibiliDB } = await import("./db-UHhoG96T.js");
5235
+ const { getDouyinDB, getBilibiliDB } = await import("./db-BejzAO0s.js");
5236
5236
  const douyinDB = await getDouyinDB();
5237
5237
  const bilibiliDB = await getBilibiliDB();
5238
5238
  const allConfig = {};
@@ -5274,7 +5274,7 @@ var Cfg = class {
5274
5274
  fs.writeFileSync(path, yamlData.toString({ lineWidth: -1 }), "utf8");
5275
5275
  }
5276
5276
  async ModifyPro(name, config, type = "config") {
5277
- const { getDouyinDB, getBilibiliDB } = await import("./db-UHhoG96T.js");
5277
+ const { getDouyinDB, getBilibiliDB } = await import("./db-BejzAO0s.js");
5278
5278
  const douyinDB = await getDouyinDB();
5279
5279
  const bilibiliDB = await getBilibiliDB();
5280
5280
  const filePath = type === "config" ? `${this.dirCfgPath}/${name}.yaml` : `${this.defCfgPath}/${name}.yaml`;
@@ -5379,7 +5379,7 @@ var Cfg = class {
5379
5379
  }
5380
5380
  async syncConfigToDatabase() {
5381
5381
  try {
5382
- const { getDouyinDB, getBilibiliDB } = await import("./db-UHhoG96T.js");
5382
+ const { getDouyinDB, getBilibiliDB } = await import("./db-BejzAO0s.js");
5383
5383
  const douyinDB = await getDouyinDB();
5384
5384
  const bilibiliDB = await getBilibiliDB();
5385
5385
  const pushCfg = this.getYaml("config", "pushlist");
@@ -8030,47 +8030,47 @@ var componentConfigs = baseComponentConfigs.map((basePlatform) => {
8030
8030
  switch (baseComponent.id) {
8031
8031
  case "comment": return createComponentConfig(baseComponent, {
8032
8032
  validateData: (data) => data && typeof data.share_url === "string",
8033
- lazyComponent: () => import("./Comment-jN3Jrbqy.js").then((module) => ({ default: module.DouyinComment }))
8033
+ lazyComponent: () => import("./Comment-C4O4BGki.js").then((module) => ({ default: module.DouyinComment }))
8034
8034
  });
8035
8035
  case "dynamic": return createComponentConfig(baseComponent, {
8036
8036
  validateData: (data) => data && typeof data.share_url === "string",
8037
- lazyComponent: () => import("./Dynamic-CjBqyS5b.js").then((module) => ({ default: module.DouyinDynamic }))
8037
+ lazyComponent: () => import("./Dynamic-hjZ0BWR-.js").then((module) => ({ default: module.DouyinDynamic }))
8038
8038
  });
8039
8039
  case "video-work": return createComponentConfig(baseComponent, {
8040
8040
  validateData: (data) => data && typeof data.share_url === "string",
8041
- lazyComponent: () => import("./VideoWork-BNvQCKg2.js").then((module) => ({ default: module.DouyinVideoWork }))
8041
+ lazyComponent: () => import("./VideoWork-BiIIbFeI.js").then((module) => ({ default: module.DouyinVideoWork }))
8042
8042
  });
8043
8043
  case "image-work": return createComponentConfig(baseComponent, {
8044
8044
  validateData: (data) => data && typeof data.share_url === "string",
8045
- lazyComponent: () => import("./ImageWork-Q04TjdP2.js").then((module) => ({ default: module.DouyinImageWork }))
8045
+ lazyComponent: () => import("./ImageWork-B9FSN_iw.js").then((module) => ({ default: module.DouyinImageWork }))
8046
8046
  });
8047
8047
  case "article-work": return createComponentConfig(baseComponent, {
8048
8048
  validateData: (data) => data && typeof data.share_url === "string",
8049
- lazyComponent: () => import("./ArticleWork-B_N5AkIO.js").then((module) => ({ default: module.DouyinArticleWork }))
8049
+ lazyComponent: () => import("./ArticleWork-DAUu405n.js").then((module) => ({ default: module.DouyinArticleWork }))
8050
8050
  });
8051
8051
  case "favorite-list": return createComponentConfig(baseComponent, {
8052
8052
  validateData: (data) => data && typeof data.share_url === "string",
8053
- lazyComponent: () => import("./FavoriteList-DqEIdIRs.js").then((module) => ({ default: module.DouyinFavoriteList }))
8053
+ lazyComponent: () => import("./FavoriteList-DUfIRclT.js").then((module) => ({ default: module.DouyinFavoriteList }))
8054
8054
  });
8055
8055
  case "recommend-list": return createComponentConfig(baseComponent, {
8056
8056
  validateData: (data) => data && typeof data.share_url === "string",
8057
- lazyComponent: () => import("./RecommendList-zmL3tGkI.js").then((module) => ({ default: module.DouyinRecommendList }))
8057
+ lazyComponent: () => import("./RecommendList-D1l_s0TC.js").then((module) => ({ default: module.DouyinRecommendList }))
8058
8058
  });
8059
8059
  case "live": return createComponentConfig(baseComponent, {
8060
8060
  validateData: (data) => data && typeof data.share_url === "string",
8061
- lazyComponent: () => import("./Live-9Ap-uSUG.js").then((module) => ({ default: module.DouyinLive }))
8061
+ lazyComponent: () => import("./Live-KEnoE0UO.js").then((module) => ({ default: module.DouyinLive }))
8062
8062
  });
8063
8063
  case "musicinfo": return createComponentConfig(baseComponent, {
8064
8064
  validateData: (data) => data && typeof data.share_url === "string",
8065
- lazyComponent: () => import("./MusicInfo-DTgkPZdV.js").then((module) => ({ default: module.DouyinMusicInfo }))
8065
+ lazyComponent: () => import("./MusicInfo-Ddrg14eN.js").then((module) => ({ default: module.DouyinMusicInfo }))
8066
8066
  });
8067
- case "user_profile": return createComponentConfig(baseComponent, { lazyComponent: () => import("./UserVideoList-BjL0jy7v.js").then((module) => ({ default: module.DouyinUserVideoList })) });
8067
+ case "user_profile": return createComponentConfig(baseComponent, { lazyComponent: () => import("./UserVideoList-CMMgbIYt.js").then((module) => ({ default: module.DouyinUserVideoList })) });
8068
8068
  case "userlist": return createComponentConfig(baseComponent, {
8069
8069
  validateData: (data) => data && Array.isArray(data.renderOpt),
8070
- lazyComponent: () => import("./UserList-DpZY5fHU.js").then((module) => ({ default: module.default }))
8070
+ lazyComponent: () => import("./UserList-BApDU1lF.js").then((module) => ({ default: module.default }))
8071
8071
  });
8072
- case "videoInfo": return createComponentConfig(baseComponent, { lazyComponent: () => import("./videoInfo-JeaHNtaa.js").then((module) => ({ default: module.DouyinVideoInfo })) });
8073
- case "qrcodeImg": return createComponentConfig(baseComponent, { lazyComponent: () => import("./qrcodeImg-DYsRwngE.js").then((module) => ({ default: module.DouyinQrcodeImg })) });
8072
+ case "videoInfo": return createComponentConfig(baseComponent, { lazyComponent: () => import("./videoInfo-Bhn9Z9tk.js").then((module) => ({ default: module.DouyinVideoInfo })) });
8073
+ case "qrcodeImg": return createComponentConfig(baseComponent, { lazyComponent: () => import("./qrcodeImg-p3e0i2PO.js").then((module) => ({ default: module.DouyinQrcodeImg })) });
8074
8074
  default: return createComponentConfig(baseComponent);
8075
8075
  }
8076
8076
  });
@@ -8080,42 +8080,42 @@ var componentConfigs = baseComponentConfigs.map((basePlatform) => {
8080
8080
  switch (baseComponent.id) {
8081
8081
  case "comment": return createComponentConfig(baseComponent, {
8082
8082
  validateData: (data) => data && typeof data.share_url === "string",
8083
- lazyComponent: () => import("./Comment-DnBi7suz.js").then((module) => ({ default: module.BilibiliComment }))
8083
+ lazyComponent: () => import("./Comment-OVXVG_tK.js").then((module) => ({ default: module.BilibiliComment }))
8084
8084
  });
8085
8085
  case "userlist": return createComponentConfig(baseComponent, {
8086
8086
  validateData: (data) => data && Array.isArray(data.renderOpt),
8087
- lazyComponent: () => import("./UserList-DXZAtRSu.js").then((module) => ({ default: module.default }))
8087
+ lazyComponent: () => import("./UserList-H1AY3_uj.js").then((module) => ({ default: module.default }))
8088
8088
  });
8089
- case "bangumi": return createComponentConfig(baseComponent, { lazyComponent: () => import("./bangumi-Dn8bqGCx.js").then((module) => ({ default: module.default })) });
8089
+ case "bangumi": return createComponentConfig(baseComponent, { lazyComponent: () => import("./bangumi-Dp7MOjzD.js").then((module) => ({ default: module.default })) });
8090
8090
  case "dynamic/DYNAMIC_TYPE_DRAW": return createComponentConfig(baseComponent, {
8091
8091
  validateData: (data) => data && typeof data.share_url === "string",
8092
- lazyComponent: () => import("./DYNAMIC_TYPE_DRAW-CA3dYbCJ.js").then((module) => ({ default: module.BilibiliDrawDynamic }))
8092
+ lazyComponent: () => import("./DYNAMIC_TYPE_DRAW-BAoyJ_xj.js").then((module) => ({ default: module.BilibiliDrawDynamic }))
8093
8093
  });
8094
8094
  case "dynamic/DYNAMIC_TYPE_WORD": return createComponentConfig(baseComponent, {
8095
8095
  validateData: (data) => data && typeof data.share_url === "string",
8096
- lazyComponent: () => import("./DYNAMIC_TYPE_WORD-uj6LDApK.js").then((module) => ({ default: module.BilibiliWordDynamic }))
8096
+ lazyComponent: () => import("./DYNAMIC_TYPE_WORD-BTU9phya.js").then((module) => ({ default: module.BilibiliWordDynamic }))
8097
8097
  });
8098
8098
  case "dynamic/DYNAMIC_TYPE_AV": return createComponentConfig(baseComponent, {
8099
8099
  validateData: (data) => data && typeof data.share_url === "string",
8100
- lazyComponent: () => import("./DYNAMIC_TYPE_AV-5WXLprJ7.js").then((module) => ({ default: module.BilibiliVideoDynamic }))
8100
+ lazyComponent: () => import("./DYNAMIC_TYPE_AV-DEXvSz0s.js").then((module) => ({ default: module.BilibiliVideoDynamic }))
8101
8101
  });
8102
8102
  case "dynamic/DYNAMIC_TYPE_FORWARD": return createComponentConfig(baseComponent, {
8103
8103
  validateData: (data) => data && typeof data.share_url === "string",
8104
- lazyComponent: () => import("./DYNAMIC_TYPE_FORWARD-DEna4cpV.js").then((module) => ({ default: module.BilibiliForwardDynamic }))
8104
+ lazyComponent: () => import("./DYNAMIC_TYPE_FORWARD-BI22-GqJ.js").then((module) => ({ default: module.BilibiliForwardDynamic }))
8105
8105
  });
8106
8106
  case "dynamic/DYNAMIC_TYPE_LIVE_RCMD": return createComponentConfig(baseComponent, {
8107
8107
  validateData: (data) => data && typeof data.share_url === "string",
8108
- lazyComponent: () => import("./DYNAMIC_TYPE_LIVE_RCMD-BpDR7WHh.js").then((module) => ({ default: module.BilibiliLiveDynamic }))
8108
+ lazyComponent: () => import("./DYNAMIC_TYPE_LIVE_RCMD-6e6Nxtk5.js").then((module) => ({ default: module.BilibiliLiveDynamic }))
8109
8109
  });
8110
8110
  case "dynamic/DYNAMIC_TYPE_WORD": return createComponentConfig(baseComponent, { validateData: (data) => data && typeof data.share_url === "string" });
8111
- case "dynamic/DYNAMIC_TYPE_ARTICLE": return createComponentConfig(baseComponent, { lazyComponent: () => import("./DYNAMIC_TYPE_ARTICLE-DIZ4FpfS.js").then((module) => ({ default: module.BilibiliArticleDynamic })) });
8111
+ case "dynamic/DYNAMIC_TYPE_ARTICLE": return createComponentConfig(baseComponent, { lazyComponent: () => import("./DYNAMIC_TYPE_ARTICLE-BWmq2izT.js").then((module) => ({ default: module.BilibiliArticleDynamic })) });
8112
8112
  case "videoInfo": return createComponentConfig(baseComponent, {
8113
8113
  validateData: (data) => data && typeof data.share_url === "string",
8114
- lazyComponent: () => import("./videoInfo-C6b97ZWx.js").then((module) => ({ default: module.BilibiliVideoInfo }))
8114
+ lazyComponent: () => import("./videoInfo-DQEHVJxc.js").then((module) => ({ default: module.BilibiliVideoInfo }))
8115
8115
  });
8116
8116
  case "qrcodeImg": return createComponentConfig(baseComponent, {
8117
8117
  validateData: (data) => data && typeof data.share_url === "string",
8118
- lazyComponent: () => import("./qrcodeImg-8IjCL_dz.js").then((module) => ({ default: module.BilibiliQrcodeImg }))
8118
+ lazyComponent: () => import("./qrcodeImg-DSrE-i8P.js").then((module) => ({ default: module.BilibiliQrcodeImg }))
8119
8119
  });
8120
8120
  default: return createComponentConfig(baseComponent);
8121
8121
  }
@@ -8126,7 +8126,7 @@ var componentConfigs = baseComponentConfigs.map((basePlatform) => {
8126
8126
  switch (baseComponent.id) {
8127
8127
  case "comment": return createComponentConfig(baseComponent, {
8128
8128
  validateData: (data) => data && typeof data.share_url === "string",
8129
- lazyComponent: () => import("./Comment-B114EV7_.js").then((module) => ({ default: module.KuaishouComment }))
8129
+ lazyComponent: () => import("./Comment-DRZJbKCo.js").then((module) => ({ default: module.KuaishouComment }))
8130
8130
  });
8131
8131
  default: return createComponentConfig(baseComponent);
8132
8132
  }
@@ -8135,8 +8135,8 @@ var componentConfigs = baseComponentConfigs.map((basePlatform) => {
8135
8135
  case PlatformType.XIAOHONGSHU:
8136
8136
  platform.components = basePlatform.components.map((baseComponent) => {
8137
8137
  switch (baseComponent.id) {
8138
- case "noteInfo": return createComponentConfig(baseComponent, { lazyComponent: () => import("./noteInfo-ceSqTSrs.js").then((module) => ({ default: module.XiaohongshuNoteInfo })) });
8139
- case "comment": return createComponentConfig(baseComponent, { lazyComponent: () => import("./Comment-3FcCu8BO.js").then((module) => ({ default: module.XiaohongshuComment })) });
8138
+ case "noteInfo": return createComponentConfig(baseComponent, { lazyComponent: () => import("./noteInfo-srWUKzIA.js").then((module) => ({ default: module.XiaohongshuNoteInfo })) });
8139
+ case "comment": return createComponentConfig(baseComponent, { lazyComponent: () => import("./Comment-CvirQFYw.js").then((module) => ({ default: module.XiaohongshuComment })) });
8140
8140
  default: return createComponentConfig(baseComponent);
8141
8141
  }
8142
8142
  });
@@ -8144,11 +8144,11 @@ var componentConfigs = baseComponentConfigs.map((basePlatform) => {
8144
8144
  case PlatformType.OTHER:
8145
8145
  platform.components = basePlatform.components.map((baseComponent) => {
8146
8146
  switch (baseComponent.id) {
8147
- case "help": return createComponentConfig(baseComponent, { lazyComponent: () => import("./Help-cUrYFfcV.js").then((module) => ({ default: module.default })) });
8148
- case "handlerError": return createComponentConfig(baseComponent, { lazyComponent: () => import("./handlerError-BdKMBVs1.js").then((module) => ({ default: module.handlerError })) });
8149
- case "changelog": return createComponentConfig(baseComponent, { lazyComponent: () => import("./changelog-BEPsRL3p.js").then((module) => ({ default: module.Changelog })) });
8150
- case "version_warning": return createComponentConfig(baseComponent, { lazyComponent: () => import("./VersionWarning-Brat9oYa.js").then((module) => ({ default: module.VersionWarning })) });
8151
- case "qrlogin": return createComponentConfig(baseComponent, { lazyComponent: () => import("./qrlogin-zLF4JsCE.js").then((module) => ({ default: module.QrLogin })) });
8147
+ case "help": return createComponentConfig(baseComponent, { lazyComponent: () => import("./Help-Dsw5G3Do.js").then((module) => ({ default: module.default })) });
8148
+ case "handlerError": return createComponentConfig(baseComponent, { lazyComponent: () => import("./handlerError-BOPnE0Gh.js").then((module) => ({ default: module.handlerError })) });
8149
+ case "changelog": return createComponentConfig(baseComponent, { lazyComponent: () => import("./changelog-C8dAS9l4.js").then((module) => ({ default: module.Changelog })) });
8150
+ case "version_warning": return createComponentConfig(baseComponent, { lazyComponent: () => import("./VersionWarning-BW24eFU4.js").then((module) => ({ default: module.VersionWarning })) });
8151
+ case "qrlogin": return createComponentConfig(baseComponent, { lazyComponent: () => import("./qrlogin-B_Yo4Job.js").then((module) => ({ default: module.QrLogin })) });
8152
8152
  default: return createComponentConfig(baseComponent);
8153
8153
  }
8154
8154
  });
@@ -8156,8 +8156,8 @@ var componentConfigs = baseComponentConfigs.map((basePlatform) => {
8156
8156
  case PlatformType.STATISTICS:
8157
8157
  platform.components = basePlatform.components.map((baseComponent) => {
8158
8158
  switch (baseComponent.id) {
8159
- case "group": return createComponentConfig(baseComponent, { lazyComponent: () => import("./GroupStatistics-B1KiWL8O.js").then((module) => ({ default: module.GroupStatistics })) });
8160
- case "global": return createComponentConfig(baseComponent, { lazyComponent: () => import("./GlobalStatistics-CjRmAre5.js").then((module) => ({ default: module.GlobalStatistics })) });
8159
+ case "group": return createComponentConfig(baseComponent, { lazyComponent: () => import("./GroupStatistics-D4gbZHi3.js").then((module) => ({ default: module.GroupStatistics })) });
8160
+ case "global": return createComponentConfig(baseComponent, { lazyComponent: () => import("./GlobalStatistics-B3CAQ44M.js").then((module) => ({ default: module.GlobalStatistics })) });
8161
8161
  default: return createComponentConfig(baseComponent);
8162
8162
  }
8163
8163
  });
@@ -12421,7 +12421,6 @@ var renderErrorImage = async (ctx, opts = {}) => {
12421
12421
  buildTime: buildMetadata?.buildTime ? formatBuildTime(buildMetadata.buildTime) : void 0,
12422
12422
  commitHash: buildMetadata?.commitHash,
12423
12423
  adapterInfo,
12424
- amagiVersion: Client.version,
12425
12424
  isVerification: opts.isVerification,
12426
12425
  verificationUrl: opts.verificationUrl,
12427
12426
  share_url: opts.share_url
@@ -12601,13 +12600,7 @@ var handleBusinessError = async (error, options, logs, event) => {
12601
12600
  logs,
12602
12601
  event,
12603
12602
  buildMetadata: getBuildMetadata(),
12604
- adapterInfo: event.bot?.adapter ? {
12605
- name: event.bot.adapter.name,
12606
- version: event.bot.adapter.version,
12607
- platform: event.bot.adapter.platform,
12608
- protocol: event.bot.adapter.protocol,
12609
- standard: event.bot.adapter.standard
12610
- } : void 0
12603
+ adapterInfo: event.bot?.adapter ? event.bot.adapter : void 0
12611
12604
  };
12612
12605
  for (const strategy of getStrategies()) if (strategy.match(ctx)) {
12613
12606
  logger.debug(`[ErrorHandler] 匹配策略: ${strategy.name}`);
@@ -15523,6 +15516,7 @@ registerErrorStrategy({
15523
15516
  await sendErrorToMaster(ctx, img);
15524
15517
  await sendErrorToAllMasters(ctx, img);
15525
15518
  const resultCtx = await karin$1.ctx(event);
15519
+ if (!resultCtx) return "continue";
15526
15520
  const params = new URLSearchParams(resultCtx.msg);
15527
15521
  const validate = params.get("validate");
15528
15522
  const seccode = params.get("seccode");
@@ -19758,6 +19752,17 @@ var versionCore = (v) => {
19758
19752
  const [core] = preBuild.split("-", 2);
19759
19753
  return core;
19760
19754
  };
19755
+ var getLagVersionCount = (changelog, localVersion, remoteVersion) => {
19756
+ const local = versionCore(localVersion);
19757
+ const remote = versionCore(remoteVersion);
19758
+ if (!local || !remote || !isSemverGreater(remote, local)) return 0;
19759
+ const versions = Object.keys(parseChangelog(changelog)).map(versionCore).filter(Boolean);
19760
+ return [...new Set(versions)].filter((version) => {
19761
+ const afterLocal = isSemverGreater(version, local);
19762
+ const notAfterRemote = !isSemverGreater(version, remote);
19763
+ return afterLocal && notAfterRemote;
19764
+ }).length;
19765
+ };
19761
19766
  var getRemoteBuildMetadata = async (version) => {
19762
19767
  const requests = [
19763
19768
  `https://jsd.onmicrosoft.cn/npm/${Root.pluginName}@${version}/lib/build-metadata.json`,
@@ -19781,6 +19786,7 @@ var getRemoteBuildMetadata = async (version) => {
19781
19786
  var getChangelogImage = async (ctx, props) => {
19782
19787
  let changelog = "";
19783
19788
  let buildTime;
19789
+ let lagVersionCount = 0;
19784
19790
  const event = "bot" in ctx ? ctx : { bot: ctx };
19785
19791
  if (props.Tip || props.isRemote) {
19786
19792
  const requests = [
@@ -19814,6 +19820,7 @@ var getChangelogImage = async (ctx, props) => {
19814
19820
  return null;
19815
19821
  }
19816
19822
  if (!changelog) return null;
19823
+ lagVersionCount = getLagVersionCount(changelog, props.localVersion, props.remoteVersion);
19817
19824
  const remoteMeta = await getRemoteBuildMetadata(props.remoteVersion);
19818
19825
  if (remoteMeta?.buildTime) buildTime = formatBuildTime(remoteMeta.buildTime);
19819
19826
  changelog = range({
@@ -19825,6 +19832,7 @@ var getChangelogImage = async (ctx, props) => {
19825
19832
  } else {
19826
19833
  try {
19827
19834
  changelog = fs.readFileSync(Root.pluginPath + "/CHANGELOG.md", "utf8");
19835
+ lagVersionCount = getLagVersionCount(changelog, props.localVersion, props.remoteVersion);
19828
19836
  changelog = range({
19829
19837
  data: changelog,
19830
19838
  startVersion: props.localVersion,
@@ -19842,6 +19850,7 @@ var getChangelogImage = async (ctx, props) => {
19842
19850
  Tip: props.Tip,
19843
19851
  localVersion: props.localVersion,
19844
19852
  remoteVersion: props.remoteVersion,
19853
+ lagVersionCount,
19845
19854
  buildTime
19846
19855
  }) || null;
19847
19856
  };
@@ -33433,148 +33442,237 @@ var VersionWarning = (props) => {
33433
33442
  }),
33434
33443
  (0, import_jsx_runtime.jsxs)("div", {
33435
33444
  className: "space-y-20",
33436
- children: [(0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsxs)("div", {
33437
- className: "flex items-center space-x-4 mb-6",
33438
- children: [
33439
- (0, import_jsx_runtime.jsx)("div", {
33440
- className: "flex items-center justify-center w-10 h-10 rounded-lg",
33441
- style: { backgroundColor: isDark ? "rgba(251,146,60,0.15)" : "rgba(194,65,12,0.1)" },
33442
- children: (0, import_jsx_runtime.jsx)("span", {
33443
- className: "text-[28px] font-black",
33444
- style: { color: accentColor },
33445
- children: "1"
33445
+ children: [
33446
+ (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsxs)("div", {
33447
+ className: "flex items-center space-x-4 mb-6",
33448
+ children: [
33449
+ (0, import_jsx_runtime.jsx)("div", {
33450
+ className: "flex items-center justify-center w-10 h-10 rounded-lg",
33451
+ style: { backgroundColor: isDark ? "rgba(251,146,60,0.15)" : "rgba(194,65,12,0.1)" },
33452
+ children: (0, import_jsx_runtime.jsx)("span", {
33453
+ className: "text-[28px] font-black",
33454
+ style: { color: accentColor },
33455
+ children: "1"
33456
+ })
33457
+ }),
33458
+ (0, import_jsx_runtime.jsxs)("svg", {
33459
+ className: "w-8 h-8",
33460
+ viewBox: "0 0 24 24",
33461
+ fill: "none",
33462
+ stroke: mutedColor,
33463
+ strokeWidth: "2",
33464
+ children: [(0, import_jsx_runtime.jsx)("rect", {
33465
+ x: "3",
33466
+ y: "3",
33467
+ width: "18",
33468
+ height: "18",
33469
+ rx: "2",
33470
+ strokeLinecap: "round",
33471
+ strokeLinejoin: "round"
33472
+ }), (0, import_jsx_runtime.jsx)("path", {
33473
+ d: "M9 3v18M3 9h18M3 15h18",
33474
+ strokeLinecap: "round",
33475
+ strokeLinejoin: "round"
33476
+ })]
33477
+ }),
33478
+ (0, import_jsx_runtime.jsx)("span", {
33479
+ className: "text-[32px] font-bold",
33480
+ style: { color: mutedColor },
33481
+ children: "Web 控制台更新"
33482
+ }),
33483
+ (0, import_jsx_runtime.jsx)(chip_default, {
33484
+ className: "text-[20px] font-semibold px-4",
33485
+ style: {
33486
+ backgroundColor: isDark ? "rgba(251,146,60,0.2)" : "rgba(194,65,12,0.15)",
33487
+ color: accentColor
33488
+ },
33489
+ size: "lg",
33490
+ children: "推荐"
33446
33491
  })
33447
- }),
33448
- (0, import_jsx_runtime.jsxs)("svg", {
33449
- className: "w-8 h-8",
33450
- viewBox: "0 0 24 24",
33451
- fill: "none",
33452
- stroke: mutedColor,
33453
- strokeWidth: "2",
33454
- children: [(0, import_jsx_runtime.jsx)("rect", {
33455
- x: "3",
33456
- y: "3",
33457
- width: "18",
33458
- height: "18",
33459
- rx: "2",
33460
- strokeLinecap: "round",
33461
- strokeLinejoin: "round"
33462
- }), (0, import_jsx_runtime.jsx)("path", {
33463
- d: "M9 3v18M3 9h18M3 15h18",
33464
- strokeLinecap: "round",
33465
- strokeLinejoin: "round"
33466
- })]
33467
- }),
33468
- (0, import_jsx_runtime.jsx)("span", {
33469
- className: "text-[32px] font-bold",
33470
- style: { color: mutedColor },
33471
- children: "Web 控制台更新"
33472
- }),
33473
- (0, import_jsx_runtime.jsx)(chip_default, {
33474
- className: "text-[20px] font-semibold px-4",
33475
- style: {
33476
- backgroundColor: isDark ? "rgba(251,146,60,0.2)" : "rgba(194,65,12,0.15)",
33477
- color: accentColor
33478
- },
33479
- size: "lg",
33480
- children: "推荐"
33481
- })
33482
- ]
33483
- }), (0, import_jsx_runtime.jsxs)("div", {
33484
- className: "ml-14 space-y-4",
33485
- children: [
33486
- (0, import_jsx_runtime.jsxs)("div", {
33487
- className: "flex items-start space-x-4",
33488
- children: [(0, import_jsx_runtime.jsx)("div", {
33489
- className: "w-3 h-3 rounded-full mt-3 flex-shrink-0",
33490
- style: { backgroundColor: mutedColor }
33491
- }), (0, import_jsx_runtime.jsx)("span", {
33492
- className: "text-[28px] leading-relaxed",
33493
- style: { color: secondaryColor },
33494
- children: "访问 Karin Web 控制台首页,查看 Karin 版本信息"
33495
- })]
33496
- }),
33497
- (0, import_jsx_runtime.jsxs)("div", {
33498
- className: "flex items-start space-x-4",
33499
- children: [(0, import_jsx_runtime.jsx)("div", {
33500
- className: "w-3 h-3 rounded-full mt-3 flex-shrink-0",
33501
- style: { backgroundColor: mutedColor }
33502
- }), (0, import_jsx_runtime.jsx)("span", {
33503
- className: "text-[28px] leading-relaxed",
33504
- style: { color: secondaryColor },
33505
- children: "当有新版本时会高亮提示,点击查看更新日志"
33506
- })]
33507
- }),
33508
- (0, import_jsx_runtime.jsxs)("div", {
33509
- className: "flex items-start space-x-4",
33510
- children: [(0, import_jsx_runtime.jsx)("div", {
33511
- className: "w-3 h-3 rounded-full mt-3 flex-shrink-0",
33512
- style: { backgroundColor: mutedColor }
33513
- }), (0, import_jsx_runtime.jsx)("span", {
33514
- className: "text-[28px] leading-relaxed",
33515
- style: { color: secondaryColor },
33516
- children: "点击「更新」按钮,系统将自动完成更新并重启"
33517
- })]
33518
- })
33519
- ]
33520
- })] }), (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsxs)("div", {
33521
- className: "flex items-center space-x-4 mb-6",
33522
- children: [
33523
- (0, import_jsx_runtime.jsx)("div", {
33524
- className: "flex items-center justify-center w-10 h-10 rounded-lg",
33525
- style: { backgroundColor: isDark ? "rgba(251,146,60,0.15)" : "rgba(194,65,12,0.1)" },
33526
- children: (0, import_jsx_runtime.jsx)("span", {
33527
- className: "text-[28px] font-black",
33528
- style: { color: accentColor },
33529
- children: "2"
33492
+ ]
33493
+ }), (0, import_jsx_runtime.jsxs)("div", {
33494
+ className: "ml-14 space-y-4",
33495
+ children: [
33496
+ (0, import_jsx_runtime.jsxs)("div", {
33497
+ className: "flex items-start space-x-4",
33498
+ children: [(0, import_jsx_runtime.jsx)("div", {
33499
+ className: "w-3 h-3 rounded-full mt-3 shrink-0",
33500
+ style: { backgroundColor: mutedColor }
33501
+ }), (0, import_jsx_runtime.jsx)("span", {
33502
+ className: "text-[28px] leading-relaxed",
33503
+ style: { color: secondaryColor },
33504
+ children: "访问 Karin Web 控制台首页,查看 Karin 版本信息"
33505
+ })]
33506
+ }),
33507
+ (0, import_jsx_runtime.jsxs)("div", {
33508
+ className: "flex items-start space-x-4",
33509
+ children: [(0, import_jsx_runtime.jsx)("div", {
33510
+ className: "w-3 h-3 rounded-full mt-3 shrink-0",
33511
+ style: { backgroundColor: mutedColor }
33512
+ }), (0, import_jsx_runtime.jsx)("span", {
33513
+ className: "text-[28px] leading-relaxed",
33514
+ style: { color: secondaryColor },
33515
+ children: "当有新版本时会高亮提示,点击查看更新日志"
33516
+ })]
33517
+ }),
33518
+ (0, import_jsx_runtime.jsxs)("div", {
33519
+ className: "flex items-start space-x-4",
33520
+ children: [(0, import_jsx_runtime.jsx)("div", {
33521
+ className: "w-3 h-3 rounded-full mt-3 shrink-0",
33522
+ style: { backgroundColor: mutedColor }
33523
+ }), (0, import_jsx_runtime.jsxs)("span", {
33524
+ className: "text-[28px] leading-relaxed",
33525
+ style: { color: secondaryColor },
33526
+ children: [
33527
+ "点击",
33528
+ (0, import_jsx_runtime.jsx)("span", {
33529
+ className: "font-mono font-black",
33530
+ children: "「更新」"
33531
+ }),
33532
+ "按钮,系统将自动完成更新并重启"
33533
+ ]
33534
+ })]
33530
33535
  })
33531
- }),
33532
- (0, import_jsx_runtime.jsx)("svg", {
33533
- className: "w-8 h-8",
33534
- viewBox: "0 0 24 24",
33535
- fill: "none",
33536
- stroke: mutedColor,
33537
- strokeWidth: "2",
33538
- children: (0, import_jsx_runtime.jsx)("path", {
33539
- d: "M4 17l6-6-6-6M12 19h8",
33540
- strokeLinecap: "round",
33541
- strokeLinejoin: "round"
33536
+ ]
33537
+ })] }),
33538
+ (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsxs)("div", {
33539
+ className: "flex items-center space-x-4 mb-6",
33540
+ children: [
33541
+ (0, import_jsx_runtime.jsx)("div", {
33542
+ className: "flex items-center justify-center w-10 h-10 rounded-lg",
33543
+ style: { backgroundColor: isDark ? "rgba(251,146,60,0.15)" : "rgba(194,65,12,0.1)" },
33544
+ children: (0, import_jsx_runtime.jsx)("span", {
33545
+ className: "text-[28px] font-black",
33546
+ style: { color: accentColor },
33547
+ children: "2"
33548
+ })
33549
+ }),
33550
+ (0, import_jsx_runtime.jsx)(IoExtensionPuzzleOutline, {
33551
+ className: clsx("w-10 h-auto"),
33552
+ style: { color: mutedColor }
33553
+ }),
33554
+ (0, import_jsx_runtime.jsx)("span", {
33555
+ className: "text-[32px] font-bold",
33556
+ style: { color: mutedColor },
33557
+ children: "使用 basic 插件命令更新"
33558
+ }),
33559
+ (0, import_jsx_runtime.jsx)(chip_default, {
33560
+ className: "text-[20px] font-semibold px-4",
33561
+ style: {
33562
+ backgroundColor: isDark ? "rgba(251,146,60,0.2)" : "rgba(194,65,12,0.15)",
33563
+ color: accentColor
33564
+ },
33565
+ size: "lg",
33566
+ children: "推荐"
33542
33567
  })
33543
- }),
33544
- (0, import_jsx_runtime.jsx)("span", {
33545
- className: "text-[32px] font-bold",
33546
- style: { color: mutedColor },
33547
- children: "命令行更新"
33548
- })
33549
- ]
33550
- }), (0, import_jsx_runtime.jsxs)("div", {
33551
- className: "ml-14 space-y-4",
33552
- children: [
33553
- (0, import_jsx_runtime.jsx)("p", {
33554
- className: "text-[28px]",
33555
- style: { color: secondaryColor },
33556
- children: "在 Karin 根目录下执行以下命令"
33557
- }),
33558
- (0, import_jsx_runtime.jsx)("div", {
33559
- className: "rounded-xl p-6",
33560
- style: { backgroundColor: isDark ? "rgba(0,0,0,0.4)" : "rgba(255,255,255,0.7)" },
33561
- children: (0, import_jsx_runtime.jsxs)("code", {
33562
- className: "text-[40px] font-mono font-bold block",
33563
- style: { color: accentColor },
33564
- children: [
33565
- "pnpm add node-karin@",
33566
- props.data.requireVersion,
33567
- " -w"
33568
- ]
33568
+ ]
33569
+ }), (0, import_jsx_runtime.jsxs)("div", {
33570
+ className: "ml-14 space-y-4",
33571
+ children: [
33572
+ (0, import_jsx_runtime.jsxs)("div", {
33573
+ className: "flex items-start space-x-4",
33574
+ children: [(0, import_jsx_runtime.jsx)("div", {
33575
+ className: "w-3 h-3 rounded-full mt-3 shrink-0",
33576
+ style: { backgroundColor: mutedColor }
33577
+ }), (0, import_jsx_runtime.jsxs)("span", {
33578
+ className: "text-[28px] leading-relaxed",
33579
+ style: { color: secondaryColor },
33580
+ children: [
33581
+ "插件市场搜索",
33582
+ (0, import_jsx_runtime.jsx)("span", {
33583
+ className: "font-mono font-black",
33584
+ children: "「karin-plugin-basic」"
33585
+ }),
33586
+ "插件并安装"
33587
+ ]
33588
+ })]
33589
+ }),
33590
+ (0, import_jsx_runtime.jsxs)("div", {
33591
+ className: "flex items-start space-x-4",
33592
+ children: [(0, import_jsx_runtime.jsx)("div", {
33593
+ className: "w-3 h-3 rounded-full mt-3 shrink-0",
33594
+ style: { backgroundColor: mutedColor }
33595
+ }), (0, import_jsx_runtime.jsxs)("span", {
33596
+ className: "text-[28px] leading-relaxed",
33597
+ style: { color: secondaryColor },
33598
+ children: ["安装完成后发送 ", (0, import_jsx_runtime.jsx)("span", {
33599
+ className: "font-mono font-black",
33600
+ children: "「#更新」"
33601
+ })]
33602
+ })]
33603
+ }),
33604
+ (0, import_jsx_runtime.jsxs)("div", {
33605
+ className: "flex items-start space-x-4",
33606
+ children: [(0, import_jsx_runtime.jsx)("div", {
33607
+ className: "w-3 h-3 rounded-full mt-3 shrink-0",
33608
+ style: { backgroundColor: mutedColor }
33609
+ }), (0, import_jsx_runtime.jsx)("span", {
33610
+ className: "text-[28px] leading-relaxed",
33611
+ style: { color: secondaryColor },
33612
+ children: "插件会自动执行更新流程"
33613
+ })]
33569
33614
  })
33570
- }),
33571
- (0, import_jsx_runtime.jsx)("p", {
33572
- className: "text-[28px] opacity-80",
33573
- style: { color: secondaryColor },
33574
- children: "更新完成后手动重启 Karin 即可"
33575
- })
33576
- ]
33577
- })] })]
33615
+ ]
33616
+ })] }),
33617
+ (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsxs)("div", {
33618
+ className: "flex items-center space-x-4 mb-6",
33619
+ children: [
33620
+ (0, import_jsx_runtime.jsx)("div", {
33621
+ className: "flex items-center justify-center w-10 h-10 rounded-lg",
33622
+ style: { backgroundColor: isDark ? "rgba(251,146,60,0.15)" : "rgba(194,65,12,0.1)" },
33623
+ children: (0, import_jsx_runtime.jsx)("span", {
33624
+ className: "text-[28px] font-black",
33625
+ style: { color: accentColor },
33626
+ children: "3"
33627
+ })
33628
+ }),
33629
+ (0, import_jsx_runtime.jsx)("svg", {
33630
+ className: "w-8 h-8",
33631
+ viewBox: "0 0 24 24",
33632
+ fill: "none",
33633
+ stroke: mutedColor,
33634
+ strokeWidth: "2",
33635
+ children: (0, import_jsx_runtime.jsx)("path", {
33636
+ d: "M4 17l6-6-6-6M12 19h8",
33637
+ strokeLinecap: "round",
33638
+ strokeLinejoin: "round"
33639
+ })
33640
+ }),
33641
+ (0, import_jsx_runtime.jsx)("span", {
33642
+ className: "text-[32px] font-bold",
33643
+ style: { color: mutedColor },
33644
+ children: "命令行手动更新"
33645
+ })
33646
+ ]
33647
+ }), (0, import_jsx_runtime.jsxs)("div", {
33648
+ className: "ml-14 space-y-4",
33649
+ children: [
33650
+ (0, import_jsx_runtime.jsx)("p", {
33651
+ className: "text-[28px]",
33652
+ style: { color: secondaryColor },
33653
+ children: "在 Karin 根目录下执行以下命令"
33654
+ }),
33655
+ (0, import_jsx_runtime.jsx)("div", {
33656
+ className: "rounded-xl p-6",
33657
+ style: { backgroundColor: isDark ? "rgba(0,0,0,0.4)" : "rgba(255,255,255,0.7)" },
33658
+ children: (0, import_jsx_runtime.jsxs)("code", {
33659
+ className: "text-[40px] font-mono font-bold block",
33660
+ style: { color: accentColor },
33661
+ children: [
33662
+ "pnpm add node-karin@",
33663
+ props.data.requireVersion,
33664
+ " -w"
33665
+ ]
33666
+ })
33667
+ }),
33668
+ (0, import_jsx_runtime.jsx)("p", {
33669
+ className: "text-[28px] opacity-80",
33670
+ style: { color: secondaryColor },
33671
+ children: "更新完成后手动重启 Karin 即可"
33672
+ })
33673
+ ]
33674
+ })] })
33675
+ ]
33578
33676
  }),
33579
33677
  (0, import_jsx_runtime.jsx)("div", {
33580
33678
  className: "h-0.5 rounded-full my-10",
@@ -33584,7 +33682,7 @@ var VersionWarning = (props) => {
33584
33682
  className: "rounded-2xl p-6 flex items-start space-x-5",
33585
33683
  style: { backgroundColor: isDark ? "rgba(251,146,60,0.08)" : "rgba(194,65,12,0.08)" },
33586
33684
  children: [(0, import_jsx_runtime.jsxs)("svg", {
33587
- className: "w-10 h-10 mt-1 flex-shrink-0",
33685
+ className: "w-10 h-10 mt-1 shrink-0",
33588
33686
  viewBox: "0 0 24 24",
33589
33687
  fill: accentColor,
33590
33688
  children: [(0, import_jsx_runtime.jsx)("path", { d: "M12 2L22 20H2L12 2Z" }), (0, import_jsx_runtime.jsx)("path", {
@@ -33817,81 +33915,97 @@ var Changelog = import_react.memo((props) => {
33817
33915
  children: [
33818
33916
  props.data.Tip === true ? (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: (0, import_jsx_runtime.jsxs)("div", {
33819
33917
  className: "pt-32",
33820
- children: [(0, import_jsx_runtime.jsx)("div", {
33821
- className: "text-5xl leading-relaxed text-center mb-8 opacity-50 text-default-600",
33822
- children: "以下任意方式均可更新"
33823
- }), (0, import_jsx_runtime.jsxs)("div", {
33824
- className: "flex flex-col gap-6 text-[2.8em] leading-relaxed text-default-700",
33825
- children: [
33826
- (0, import_jsx_runtime.jsxs)("div", {
33827
- className: "flex items-center gap-5",
33828
- children: [
33829
- (0, import_jsx_runtime.jsx)("span", {
33830
- className: "text-default-500 text-[1.2em]",
33831
- children: "•"
33832
- }),
33833
- (0, import_jsx_runtime.jsx)("span", { children: "回复" }),
33834
- (0, import_jsx_runtime.jsx)("span", {
33835
- className: "inline-block text-[1.15em] font-bold text-default-900",
33836
- children: "更新"
33837
- }),
33838
- (0, import_jsx_runtime.jsx)("span", { children: "立刻开始" })
33839
- ]
33840
- }),
33841
- (0, import_jsx_runtime.jsxs)("div", {
33842
- className: "flex items-center gap-5",
33843
- children: [
33844
- (0, import_jsx_runtime.jsx)("span", {
33845
- className: "text-default-500 text-[1.2em]",
33846
- children: "•"
33847
- }),
33848
- (0, import_jsx_runtime.jsx)("span", { children: "进入" }),
33849
- (0, import_jsx_runtime.jsx)(code_default, {
33850
- radius: "lg",
33851
- color: "success",
33852
- className: "text-[0.9em]",
33853
- children: "Karin WebUI"
33854
- }),
33855
- (0, import_jsx_runtime.jsx)("span", { children: "→" }),
33856
- (0, import_jsx_runtime.jsx)(code_default, {
33857
- radius: "lg",
33858
- color: "success",
33859
- className: "text-[0.9em]",
33860
- children: "插件管理"
33861
- }),
33862
- (0, import_jsx_runtime.jsx)("span", { children: "→" }),
33863
- (0, import_jsx_runtime.jsx)(code_default, {
33864
- radius: "lg",
33865
- color: "success",
33866
- className: "text-[0.9em]",
33867
- children: "已安装"
33868
- }),
33869
- (0, import_jsx_runtime.jsx)("span", { children: "→" }),
33870
- (0, import_jsx_runtime.jsx)("span", { children: "一览更新" })
33871
- ]
33872
- }),
33873
- (0, import_jsx_runtime.jsxs)("div", {
33874
- className: "flex items-center gap-5",
33875
- children: [
33876
- (0, import_jsx_runtime.jsx)("span", {
33877
- className: "text-default-500 text-[1.2em]",
33878
- children: "•"
33879
- }),
33880
- (0, import_jsx_runtime.jsx)("span", { children: "Karin 根目录运行" }),
33881
- (0, import_jsx_runtime.jsxs)(code_default, {
33882
- radius: "lg",
33883
- color: "success",
33884
- className: "text-[0.85em] whitespace-nowrap",
33885
- children: [
33886
- "pnpm add karin-plugin-kkk@",
33887
- props.data.remoteVersion,
33888
- " -w"
33889
- ]
33890
- })
33891
- ]
33892
- })
33893
- ]
33894
- })]
33918
+ children: [
33919
+ (0, import_jsx_runtime.jsx)("div", {
33920
+ className: "text-5xl leading-relaxed text-center mb-8 opacity-50 text-default-600",
33921
+ children: "以下任意方式均可更新"
33922
+ }),
33923
+ (0, import_jsx_runtime.jsxs)("div", {
33924
+ className: "mb-10 px-8 py-5 rounded-2xl border border-default-300/70 bg-default-50/50 text-default-700 text-[2.2em] flex items-center justify-center gap-6",
33925
+ children: [
33926
+ (0, import_jsx_runtime.jsxs)("span", { children: ["当前版本: v", props.data.localVersion] }),
33927
+ (0, import_jsx_runtime.jsx)("span", { children: "→" }),
33928
+ (0, import_jsx_runtime.jsxs)("span", { children: ["最新版本: v", props.data.remoteVersion] }),
33929
+ (0, import_jsx_runtime.jsxs)("span", { children: [
33930
+ ",共落后 ",
33931
+ props.data.lagVersionCount ?? 0,
33932
+ " 个版本"
33933
+ ] })
33934
+ ]
33935
+ }),
33936
+ (0, import_jsx_runtime.jsxs)("div", {
33937
+ className: "flex flex-col gap-6 text-[2.8em] leading-relaxed text-default-700",
33938
+ children: [
33939
+ (0, import_jsx_runtime.jsxs)("div", {
33940
+ className: "flex items-center gap-5",
33941
+ children: [
33942
+ (0, import_jsx_runtime.jsx)("span", {
33943
+ className: "text-default-500 text-[1.2em]",
33944
+ children: "•"
33945
+ }),
33946
+ (0, import_jsx_runtime.jsx)("span", { children: "回复" }),
33947
+ (0, import_jsx_runtime.jsx)("span", {
33948
+ className: "inline-block text-[1.15em] font-bold text-default-900",
33949
+ children: "更新"
33950
+ }),
33951
+ (0, import_jsx_runtime.jsx)("span", { children: "立刻开始" })
33952
+ ]
33953
+ }),
33954
+ (0, import_jsx_runtime.jsxs)("div", {
33955
+ className: "flex items-center gap-5",
33956
+ children: [
33957
+ (0, import_jsx_runtime.jsx)("span", {
33958
+ className: "text-default-500 text-[1.2em]",
33959
+ children: "•"
33960
+ }),
33961
+ (0, import_jsx_runtime.jsx)("span", { children: "进入" }),
33962
+ (0, import_jsx_runtime.jsx)(code_default, {
33963
+ radius: "lg",
33964
+ color: "success",
33965
+ className: "text-[0.9em]",
33966
+ children: "Karin WebUI"
33967
+ }),
33968
+ (0, import_jsx_runtime.jsx)("span", { children: "" }),
33969
+ (0, import_jsx_runtime.jsx)(code_default, {
33970
+ radius: "lg",
33971
+ color: "success",
33972
+ className: "text-[0.9em]",
33973
+ children: "插件管理"
33974
+ }),
33975
+ (0, import_jsx_runtime.jsx)("span", { children: "→" }),
33976
+ (0, import_jsx_runtime.jsx)(code_default, {
33977
+ radius: "lg",
33978
+ color: "success",
33979
+ className: "text-[0.9em]",
33980
+ children: "已安装"
33981
+ }),
33982
+ (0, import_jsx_runtime.jsx)("span", { children: "→" }),
33983
+ (0, import_jsx_runtime.jsx)("span", { children: "一览更新" })
33984
+ ]
33985
+ }),
33986
+ (0, import_jsx_runtime.jsxs)("div", {
33987
+ className: "flex items-center gap-5",
33988
+ children: [
33989
+ (0, import_jsx_runtime.jsx)("span", {
33990
+ className: "text-default-500 text-[1.2em]",
33991
+ children: "•"
33992
+ }),
33993
+ (0, import_jsx_runtime.jsx)("span", { children: "Karin 根目录运行" }),
33994
+ (0, import_jsx_runtime.jsxs)(code_default, {
33995
+ radius: "lg",
33996
+ color: "success",
33997
+ className: "text-[0.85em] whitespace-nowrap",
33998
+ children: [
33999
+ "pnpm add karin-plugin-kkk@",
34000
+ props.data.remoteVersion,
34001
+ " -w"
34002
+ ]
34003
+ })
34004
+ ]
34005
+ })
34006
+ ]
34007
+ })
34008
+ ]
33895
34009
  }) }) : null,
33896
34010
  (0, import_jsx_runtime.jsx)("div", {
33897
34011
  className: "changelog-content",
@@ -34226,6 +34340,7 @@ var ERROR_TITLES = [
34226
34340
  "猝不及防"
34227
34341
  ];
34228
34342
  var getRandomErrorTitle = () => ERROR_TITLES[Math.floor(Math.random() * ERROR_TITLES.length)];
34343
+ var import_lodash = __toESM(require_lodash(), 1);
34229
34344
  var ansiColorMap = {
34230
34345
  30: "text-default-900",
34231
34346
  31: "text-danger",
@@ -34380,11 +34495,26 @@ var getAdapterLogo = (adapterName) => {
34380
34495
  const nameLower = adapterName.toLowerCase();
34381
34496
  for (const [key, logoPath] of Object.entries(ADAPTER_LOGO_MAP)) if (nameLower.includes(key)) return (0, import_jsx_runtime.jsx)("img", {
34382
34497
  src: logoPath,
34383
- className: "h-16 w-auto",
34498
+ className: "h-20 w-auto",
34384
34499
  alt: adapterName
34385
34500
  });
34386
- return (0, import_jsx_runtime.jsx)(Plug2, { className: "w-14 h-14 text-default-400" });
34387
- };
34501
+ return (0, import_jsx_runtime.jsx)(IoExtensionPuzzleOutline, { className: "w-16 h-auto text-danger-700/80" });
34502
+ };
34503
+ var SectionTitle = ({ icon, en, zh, color }) => (0, import_jsx_runtime.jsxs)("div", {
34504
+ className: "flex items-center gap-5 mb-6",
34505
+ children: [icon, (0, import_jsx_runtime.jsxs)("div", {
34506
+ className: "flex flex-col leading-tight",
34507
+ children: [(0, import_jsx_runtime.jsx)("span", {
34508
+ className: "text-xl font-semibold tracking-[0.2em] uppercase",
34509
+ style: { color },
34510
+ children: en
34511
+ }), (0, import_jsx_runtime.jsx)("span", {
34512
+ className: "text-base font-medium tracking-[0.08em] opacity-80",
34513
+ style: { color },
34514
+ children: zh
34515
+ })]
34516
+ })]
34517
+ });
34388
34518
  var handlerError = (props) => {
34389
34519
  const { data, qrCodeDataUrl } = props;
34390
34520
  const isDark = data.useDarkTheme === true;
@@ -34398,7 +34528,6 @@ var handlerError = (props) => {
34398
34528
  const accentColor = isDark ? "#fecaca" : "#7f1d1d";
34399
34529
  return (0, import_jsx_runtime.jsxs)(DefaultLayout, {
34400
34530
  ...props,
34401
- version: void 0,
34402
34531
  className: "relative overflow-hidden",
34403
34532
  style: {
34404
34533
  backgroundColor: bgColor,
@@ -34638,12 +34767,13 @@ var handlerError = (props) => {
34638
34767
  style: { color: mutedColor },
34639
34768
  children: "Date"
34640
34769
  }), (0, import_jsx_runtime.jsx)("div", {
34641
- className: "font-mono text-3xl font-bold tracking-widest",
34770
+ className: "font-mono text-3xl font-bold tracking-[0.2em]",
34642
34771
  style: { color: secondaryColor },
34643
- children: new Date(data.timestamp).toLocaleDateString("en-GB", {
34644
- day: "2-digit",
34645
- month: "2-digit"
34646
- }).replace("/", ".")
34772
+ children: new Date(data.timestamp).toLocaleDateString("zh-CN", {
34773
+ year: "numeric",
34774
+ month: "2-digit",
34775
+ day: "2-digit"
34776
+ }).replaceAll("/", "-")
34647
34777
  })]
34648
34778
  })
34649
34779
  ]
@@ -34705,16 +34835,14 @@ var handlerError = (props) => {
34705
34835
  }),
34706
34836
  data.triggerCommand && (0, import_jsx_runtime.jsxs)("div", {
34707
34837
  className: "mb-14",
34708
- children: [(0, import_jsx_runtime.jsxs)("div", {
34709
- className: "flex items-center gap-5 mb-6",
34710
- children: [(0, import_jsx_runtime.jsx)(Terminal, {
34838
+ children: [(0, import_jsx_runtime.jsx)(SectionTitle, {
34839
+ icon: (0, import_jsx_runtime.jsx)(Terminal, {
34711
34840
  className: "w-9 h-9",
34712
34841
  style: { color: mutedColor }
34713
- }), (0, import_jsx_runtime.jsx)("span", {
34714
- className: "text-xl font-semibold tracking-[0.2em] uppercase",
34715
- style: { color: mutedColor },
34716
- children: "Trigger Command"
34717
- })]
34842
+ }),
34843
+ en: "Trigger Command",
34844
+ zh: "触发命令",
34845
+ color: mutedColor
34718
34846
  }), (0, import_jsx_runtime.jsx)("div", {
34719
34847
  className: "p-10 rounded-[36px]",
34720
34848
  style: { backgroundColor: isDark ? "rgba(0,0,0,0.2)" : "rgba(255,255,255,0.5)" },
@@ -34727,16 +34855,14 @@ var handlerError = (props) => {
34727
34855
  }),
34728
34856
  (0, import_jsx_runtime.jsxs)("div", {
34729
34857
  className: "mb-14",
34730
- children: [(0, import_jsx_runtime.jsxs)("div", {
34731
- className: "flex items-center gap-5 mb-6",
34732
- children: [(0, import_jsx_runtime.jsx)(CircleAlert, {
34858
+ children: [(0, import_jsx_runtime.jsx)(SectionTitle, {
34859
+ icon: (0, import_jsx_runtime.jsx)(CircleAlert, {
34733
34860
  className: "w-9 h-9",
34734
34861
  style: { color: primaryColor }
34735
- }), (0, import_jsx_runtime.jsx)("span", {
34736
- className: "text-xl font-semibold tracking-[0.2em] uppercase",
34737
- style: { color: mutedColor },
34738
- children: "Stack Trace"
34739
- })]
34862
+ }),
34863
+ en: "Stack Trace",
34864
+ zh: "错误堆栈",
34865
+ color: mutedColor
34740
34866
  }), (0, import_jsx_runtime.jsx)("div", {
34741
34867
  className: "p-10 rounded-[36px]",
34742
34868
  style: {
@@ -34752,16 +34878,14 @@ var handlerError = (props) => {
34752
34878
  }),
34753
34879
  data.logs && data.logs.length > 0 && (0, import_jsx_runtime.jsxs)("div", {
34754
34880
  className: "mb-14",
34755
- children: [(0, import_jsx_runtime.jsxs)("div", {
34756
- className: "flex items-center gap-5 mb-6",
34757
- children: [(0, import_jsx_runtime.jsx)(FileText, {
34881
+ children: [(0, import_jsx_runtime.jsx)(SectionTitle, {
34882
+ icon: (0, import_jsx_runtime.jsx)(FileText, {
34758
34883
  className: "w-9 h-9",
34759
34884
  style: { color: mutedColor }
34760
- }), (0, import_jsx_runtime.jsx)("span", {
34761
- className: "text-xl font-semibold tracking-[0.2em] uppercase",
34762
- style: { color: mutedColor },
34763
- children: "Execution Logs"
34764
- })]
34885
+ }),
34886
+ en: "Execution Logs",
34887
+ zh: "执行日志",
34888
+ color: mutedColor
34765
34889
  }), (0, import_jsx_runtime.jsx)("div", {
34766
34890
  className: "space-y-6",
34767
34891
  children: data.logs.map((log, index) => {
@@ -34829,7 +34953,7 @@ var handlerError = (props) => {
34829
34953
  }), (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsx)("p", {
34830
34954
  className: "text-xl",
34831
34955
  style: { color: mutedColor },
34832
- children: "Framework"
34956
+ children: "Framework / 框架版本"
34833
34957
  }), (0, import_jsx_runtime.jsx)("p", {
34834
34958
  className: "text-3xl font-bold",
34835
34959
  style: { color: accentColor },
@@ -34860,48 +34984,141 @@ var handlerError = (props) => {
34860
34984
  }), (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsx)("p", {
34861
34985
  className: "text-xl",
34862
34986
  style: { color: mutedColor },
34863
- children: "Plugin"
34987
+ children: "Plugin / 插件版本"
34864
34988
  }), (0, import_jsx_runtime.jsx)("p", {
34865
34989
  className: "text-3xl font-bold",
34866
34990
  style: { color: accentColor },
34867
34991
  children: data.pluginVersion
34868
34992
  })] })]
34869
34993
  }),
34870
- data.amagiVersion && (0, import_jsx_runtime.jsxs)("div", {
34871
- className: "flex items-center gap-6",
34872
- children: [(0, import_jsx_runtime.jsx)("img", {
34873
- src: "/image/other/handlerError/cxk.png",
34874
- alt: "Amagi",
34875
- className: "w-16 h-16"
34876
- }), (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsx)("p", {
34877
- className: "text-xl",
34878
- style: { color: mutedColor },
34879
- children: "API Library"
34880
- }), (0, import_jsx_runtime.jsx)("p", {
34881
- className: "text-3xl font-bold",
34882
- style: { color: accentColor },
34883
- children: data.amagiVersion
34884
- })] })]
34885
- }),
34886
34994
  data.adapterInfo && (0, import_jsx_runtime.jsxs)("div", {
34887
- className: "flex items-center gap-6",
34888
- children: [getAdapterLogo(data.adapterInfo.name), (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsx)("p", {
34889
- className: "text-xl",
34890
- style: { color: mutedColor },
34891
- children: "Adapter"
34892
- }), (0, import_jsx_runtime.jsxs)("div", {
34893
- className: "flex items-center gap-4",
34894
- children: [(0, import_jsx_runtime.jsx)("p", {
34895
- className: "text-3xl font-bold",
34896
- style: { color: accentColor },
34897
- children: data.adapterInfo.name
34898
- }), (0, import_jsx_runtime.jsx)(chip_default, {
34899
- size: "lg",
34900
- variant: "flat",
34901
- className: "h-8 text-lg",
34902
- children: data.adapterInfo.version.startsWith("v") ? data.adapterInfo.version : `v${data.adapterInfo.version}`
34995
+ className: "col-span-2 p-8 rounded-3xl",
34996
+ style: {
34997
+ backgroundColor: isDark ? "rgba(0,0,0,0.18)" : "rgba(255,255,255,0.52)",
34998
+ border: `1px solid ${isDark ? "rgba(248,113,113,0.22)" : "rgba(220,38,38,0.14)"}`
34999
+ },
35000
+ children: [(0, import_jsx_runtime.jsxs)("div", {
35001
+ className: "flex items-start justify-between gap-8 mb-6",
35002
+ children: [(0, import_jsx_runtime.jsxs)("div", {
35003
+ className: "flex items-center gap-6 min-w-0",
35004
+ children: [getAdapterLogo(data.adapterInfo.name), (0, import_jsx_runtime.jsxs)("div", {
35005
+ className: "min-w-0",
35006
+ children: [(0, import_jsx_runtime.jsx)("p", {
35007
+ className: "text-xl mb-1",
35008
+ style: { color: mutedColor },
35009
+ children: "Adapter / 适配器"
35010
+ }), (0, import_jsx_runtime.jsxs)("div", {
35011
+ className: "flex items-center gap-4 flex-wrap",
35012
+ children: [(0, import_jsx_runtime.jsx)("p", {
35013
+ className: "text-3xl font-bold truncate",
35014
+ style: { color: accentColor },
35015
+ children: data.adapterInfo.name
35016
+ }), (0, import_jsx_runtime.jsx)(chip_default, {
35017
+ size: "lg",
35018
+ variant: "flat",
35019
+ color: "danger",
35020
+ className: "h-8 text-lg",
35021
+ children: data.adapterInfo.version.startsWith("v") ? data.adapterInfo.version : `v${data.adapterInfo.version}`
35022
+ })]
35023
+ })]
35024
+ })]
35025
+ }), (0, import_jsx_runtime.jsx)("p", {
35026
+ className: "text-xl font-medium mb-4",
35027
+ style: { color: mutedColor },
35028
+ children: "事件信息来源"
34903
35029
  })]
34904
- })] })]
35030
+ }), (0, import_jsx_runtime.jsxs)("div", {
35031
+ className: "grid grid-cols-4 gap-4 text-lg",
35032
+ style: { color: secondaryColor },
35033
+ children: [
35034
+ (0, import_jsx_runtime.jsxs)("div", {
35035
+ className: "rounded-2xl px-4 py-3",
35036
+ style: { backgroundColor: isDark ? "rgba(248,113,113,0.08)" : "rgba(220,38,38,0.05)" },
35037
+ children: [(0, import_jsx_runtime.jsx)("p", {
35038
+ className: "text-sm mb-1 opacity-75",
35039
+ children: "Platform / 对接平台"
35040
+ }), (0, import_jsx_runtime.jsx)("p", {
35041
+ className: "font-semibold break-all text-2xl",
35042
+ children: String(data.adapterInfo.platform)
35043
+ })]
35044
+ }),
35045
+ (0, import_jsx_runtime.jsxs)("div", {
35046
+ className: "rounded-2xl px-4 py-3 relative overflow-hidden",
35047
+ style: { backgroundColor: isDark ? "rgba(248,113,113,0.08)" : "rgba(220,38,38,0.05)" },
35048
+ children: [
35049
+ (0, import_jsx_runtime.jsx)("p", {
35050
+ className: "text-sm mb-1 opacity-75",
35051
+ children: "Standard / 协议标准"
35052
+ }),
35053
+ (0, import_jsx_runtime.jsx)("p", {
35054
+ className: "font-semibold break-all text-2xl",
35055
+ children: import_lodash.default.upperFirst(import_lodash.default.camelCase(String(data.adapterInfo.standard)))
35056
+ }),
35057
+ String(data.adapterInfo.standard).toLowerCase() === "milky" && (0, import_jsx_runtime.jsx)("div", {
35058
+ className: "absolute inset-0 pointer-events-none",
35059
+ children: (0, import_jsx_runtime.jsx)("img", {
35060
+ src: "/image/other/handlerError/Milky.png",
35061
+ alt: "Milky",
35062
+ className: "absolute -right-2 -bottom-3 w-24 h-24 object-contain",
35063
+ style: {
35064
+ WebkitMaskImage: "linear-gradient(to top left, transparent 0%, rgba(0,0,0,1) 60%)",
35065
+ maskImage: "linear-gradient(to top left, transparent 0%, rgba(0,0,0,1) 60%)",
35066
+ opacity: 1
35067
+ }
35068
+ })
35069
+ }),
35070
+ String(data.adapterInfo.standard).toLowerCase() === "satori" && (0, import_jsx_runtime.jsx)("div", {
35071
+ className: "absolute inset-0 pointer-events-none",
35072
+ children: (0, import_jsx_runtime.jsx)("img", {
35073
+ src: "/image/other/handlerError/satori.png",
35074
+ alt: "Satori",
35075
+ className: "absolute -right-2 -bottom-3 w-24 h-24 object-contain",
35076
+ style: {
35077
+ WebkitMaskImage: "linear-gradient(to top left, transparent 0%, rgba(0,0,0,1) 60%)",
35078
+ maskImage: "linear-gradient(to top left, transparent 0%, rgba(0,0,0,1) 60%)",
35079
+ opacity: 1
35080
+ }
35081
+ })
35082
+ }),
35083
+ String(data.adapterInfo.standard).includes("onebot") && (0, import_jsx_runtime.jsx)("div", {
35084
+ className: "absolute inset-0 pointer-events-none",
35085
+ children: (0, import_jsx_runtime.jsx)("img", {
35086
+ src: "/image/other/handlerError/onebot.png",
35087
+ alt: "OneBot",
35088
+ className: "absolute -right-2 -bottom-3 w-24 h-24 object-contain",
35089
+ style: {
35090
+ WebkitMaskImage: "linear-gradient(to top left, transparent 0%, rgba(0,0,0,1) 60%)",
35091
+ maskImage: "linear-gradient(to top left, transparent 0%, rgba(0,0,0,1) 60%)",
35092
+ opacity: 1
35093
+ }
35094
+ })
35095
+ })
35096
+ ]
35097
+ }),
35098
+ (0, import_jsx_runtime.jsxs)("div", {
35099
+ className: "rounded-2xl px-4 py-3",
35100
+ style: { backgroundColor: isDark ? "rgba(248,113,113,0.08)" : "rgba(220,38,38,0.05)" },
35101
+ children: [(0, import_jsx_runtime.jsx)("p", {
35102
+ className: "text-sm mb-1 opacity-75",
35103
+ children: "Protocol / 协议实现"
35104
+ }), (0, import_jsx_runtime.jsx)("p", {
35105
+ className: "font-semibold break-all text-2xl",
35106
+ children: String(data.adapterInfo.protocol)
35107
+ })]
35108
+ }),
35109
+ (0, import_jsx_runtime.jsxs)("div", {
35110
+ className: "rounded-2xl px-4 py-3",
35111
+ style: { backgroundColor: isDark ? "rgba(248,113,113,0.08)" : "rgba(220,38,38,0.05)" },
35112
+ children: [(0, import_jsx_runtime.jsx)("p", {
35113
+ className: "text-sm mb-1 opacity-75",
35114
+ children: "Communication / 通信方式"
35115
+ }), (0, import_jsx_runtime.jsx)("p", {
35116
+ className: "font-semibold break-all text-2xl",
35117
+ children: String(data.adapterInfo.communication)
35118
+ })]
35119
+ })
35120
+ ]
35121
+ })]
34905
35122
  })
34906
35123
  ]
34907
35124
  }),
@@ -34910,46 +35127,92 @@ var handlerError = (props) => {
34910
35127
  style: { color: mutedColor },
34911
35128
  children: [data.buildTime && (0, import_jsx_runtime.jsxs)("div", {
34912
35129
  className: "flex items-center gap-3",
34913
- children: [(0, import_jsx_runtime.jsx)(MdAccessTime, { className: "w-6 h-6" }), (0, import_jsx_runtime.jsxs)("span", { children: ["Built ", data.buildTime] })]
35130
+ children: [(0, import_jsx_runtime.jsx)(MdAccessTime, { className: "w-6 h-6" }), (0, import_jsx_runtime.jsxs)("span", { children: [
35131
+ "Built Time: ",
35132
+ data.buildTime,
35133
+ " 距离 ",
35134
+ formatDistanceToNow(parse(data.buildTime, "yyyy年MM月dd日 HH:mm", /* @__PURE__ */ new Date()), { locale: zhCN })
35135
+ ] })]
34914
35136
  }), data.commitHash && (0, import_jsx_runtime.jsxs)("div", {
34915
35137
  className: "flex items-center gap-3",
34916
- children: [(0, import_jsx_runtime.jsx)(FaCodeBranch, { className: "w-6 h-6" }), (0, import_jsx_runtime.jsxs)("span", { children: ["Commit ", data.commitHash] })]
35138
+ children: [(0, import_jsx_runtime.jsx)(FaCodeBranch, { className: "w-6 h-6" }), (0, import_jsx_runtime.jsxs)("span", { children: ["Commit Hash: ", data.commitHash] })]
34917
35139
  })]
34918
35140
  }),
34919
35141
  (0, import_jsx_runtime.jsxs)("div", {
34920
35142
  className: "p-10 rounded-[36px]",
34921
35143
  style: { backgroundColor: isDark ? "rgba(0,0,0,0.2)" : "rgba(255,255,255,0.5)" },
34922
35144
  children: [
34923
- (0, import_jsx_runtime.jsx)("p", {
34924
- className: "text-3xl font-semibold mb-5",
34925
- style: { color: accentColor },
34926
- children: "需要帮助?"
34927
- }),
34928
- (0, import_jsx_runtime.jsx)("p", {
34929
- className: "text-2xl mb-8",
34930
- style: { color: secondaryColor },
34931
- children: "请提供完整的错误截图和问题复现步骤"
35145
+ (0, import_jsx_runtime.jsxs)("div", {
35146
+ className: "flex items-end justify-between mb-6",
35147
+ children: [(0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsx)("p", {
35148
+ className: "text-3xl font-semibold mb-2",
35149
+ style: { color: accentColor },
35150
+ children: "Need Help? / 需要帮助?"
35151
+ }), (0, import_jsx_runtime.jsx)("p", {
35152
+ className: "text-2xl",
35153
+ style: { color: secondaryColor },
35154
+ children: "提交问题时请附上完整报错截图、复现步骤和环境版本信息。"
35155
+ })] }), (0, import_jsx_runtime.jsx)("span", {
35156
+ className: "text-xs font-black tracking-[0.2em] uppercase px-3 py-1 rounded-full",
35157
+ style: {
35158
+ color: primaryColor,
35159
+ backgroundColor: isDark ? "rgba(248,113,113,0.12)" : "rgba(220,38,38,0.08)"
35160
+ },
35161
+ children: "Support"
35162
+ })]
34932
35163
  }),
34933
35164
  (0, import_jsx_runtime.jsxs)("div", {
34934
- className: "flex items-center gap-10 text-2xl",
35165
+ className: "grid grid-cols-2 gap-x-6 gap-y-6 text-2xl leading-relaxed py-6",
35166
+ style: {
35167
+ borderTop: `1px solid ${isDark ? "rgba(248,113,113,0.2)" : "rgba(220,38,38,0.12)"}`,
35168
+ borderBottom: `1px solid ${isDark ? "rgba(248,113,113,0.2)" : "rgba(220,38,38,0.12)"}`
35169
+ },
34935
35170
  children: [
34936
- (0, import_jsx_runtime.jsx)("span", {
35171
+ (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsx)("p", {
35172
+ className: "font-semibold mb-1",
35173
+ style: { color: accentColor },
35174
+ children: "GitHub Issue"
35175
+ }), (0, import_jsx_runtime.jsx)("p", {
35176
+ className: "text-xl break-all",
34937
35177
  style: { color: secondaryColor },
34938
- children: "GitHub Issues"
34939
- }),
34940
- (0, import_jsx_runtime.jsx)("span", {
34941
- style: { color: mutedColor },
34942
- children: "·"
34943
- }),
34944
- (0, import_jsx_runtime.jsxs)("span", {
35178
+ children: "https://github.com/ikenxuan/karin-plugin-kkk/issues/new/choose"
35179
+ })] }),
35180
+ (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsx)("p", {
35181
+ className: "font-semibold mb-1",
35182
+ style: { color: accentColor },
35183
+ children: "GitHub Repository"
35184
+ }), (0, import_jsx_runtime.jsx)("p", {
35185
+ className: "text-xl break-all",
34945
35186
  style: { color: secondaryColor },
34946
- children: ["QQ 群: ", (0, import_jsx_runtime.jsx)("span", {
34947
- className: "font-bold",
34948
- style: { color: primaryColor },
34949
- children: "795874649"
34950
- })]
34951
- })
35187
+ children: "https://github.com/ikenxuan/karin-plugin-kkk"
35188
+ })] }),
35189
+ (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsx)("p", {
35190
+ className: "font-semibold mb-1",
35191
+ style: { color: accentColor },
35192
+ children: "QQ 群"
35193
+ }), (0, import_jsx_runtime.jsx)("p", {
35194
+ className: "text-xl",
35195
+ style: { color: secondaryColor },
35196
+ children: "795874649"
35197
+ })] }),
35198
+ (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsx)("p", {
35199
+ className: "font-semibold mb-1",
35200
+ style: { color: accentColor },
35201
+ children: "附带信息"
35202
+ }), (0, import_jsx_runtime.jsx)("p", {
35203
+ className: "text-xl",
35204
+ style: { color: secondaryColor },
35205
+ children: "此图片 + 触发命令"
35206
+ })] })
34952
35207
  ]
35208
+ }),
35209
+ (0, import_jsx_runtime.jsxs)("div", {
35210
+ className: "flex items-center gap-4 mt-6 text-xl",
35211
+ style: { color: mutedColor },
35212
+ children: [(0, import_jsx_runtime.jsx)("span", {
35213
+ className: "font-mono",
35214
+ children: "Tips:"
35215
+ }), (0, import_jsx_runtime.jsx)("span", { children: "信息越完整,定位越快。" })]
34953
35216
  })
34954
35217
  ]
34955
35218
  })