528 Commits
Author SHA1 Message Date
dushixiang f391cb15a6 更新默认主题 2026-09-06 18:16:07 +08:00
dushixiang 217da343a0 fix: 防止监控任务重复调度 2026-08-31 23:06:08 +08:00
dushixiang 78006a7120 fix: 避免在线探针离线告警抖动 2026-08-31 22:44:38 +08:00
dushixiang 0fa920e972 refactor: 重构 WebSocket 可靠投递会话模型 2026-08-31 21:52:03 +08:00
dushixiang 787fa6918d feat: WebSocket 消息可靠投递(纯内存事件队列)
- agent 数据写入增加 10s 超时,写失败立即断连重连,消除无超时写卡死期间快照被覆盖的静默丢失
- 事件类消息(SSH登录/防篡改/指令响应/监控检测)改走内存 outbox:seq + 服务端累计 ack + 断线重放,上限 1024 条溢出丢最旧,重启清空(可接受)
- 注册请求携带 BootID 会话标识:探针重启后 seq 从 1 重新分配,服务端据此重置确认位点,避免新消息被旧位点误判为重复而丢弃
- server 读循环与处理解耦(per-agent 有序队列 + 串行 worker),慢处理不再阻塞 TCP 读取,队列满断连由探针重放兜底
- 修复探针快速重连时旧连接误注销新连接的竞态(此前会闪断新连接)
- IsAgentEnabled 加 3s TTL 缓存,禁用立即失效;pong 在线状态写库去抖(首次 + 5 分钟心跳刷新)
- VM 写超时默认 30s -> 10s,快速失败配合重放兜底

新旧版本双向兼容:注册响应 Reliable 字段协商,旧 server 下探针自动降级直发
2026-08-30 22:30:41 +08:00
dushixiang cf053cb720 更新默认主题 2026-08-27 21:47:27 +08:00
dushixiang efa505f378 feat(web): support batch traffic stats configuration 2026-08-27 21:24:19 +08:00
dushixiang 3efa6852ed fix: filter disabled agents from authenticated API 2026-08-26 20:46:45 +08:00
dushixiang d700d595ab fix: hide disabled agents from public list 2026-08-26 20:37:55 +08:00
dushixiang 58da45eba8 更新 pg 版本到 18 2026-08-26 20:34:21 +08:00
dushixiang 14a48f81a4 feat: support disabling agents 2026-08-26 20:24:17 +08:00
dushixiang a4ec00b47e 支持 agent 拖动排序 2026-08-26 20:06:20 +08:00
root df5685535e docs: remove Telegram/WeChat from Community — point to website
Community channels now live only on https://pika.termark.app per policy.
2026-08-26 13:35:29 +08:00
dushixiang 22e93ecf2b fix doc 2026-08-25 11:28:35 +08:00
dushixiang f9f3466b4a fix: 修复跨平台服务自动重启配置 2026-08-25 11:21:07 +08:00
dushixiang eaa2977847 fix(ci): publish Docker image to dushixiang/pika 2026-08-24 10:44:12 +08:00
root 952e83eac9 docs: make README English-first, keep Chinese as README.zh-CN.md
- README.md: English default with shields, overview, features, table
  screenshots, quick start (pika-monitor/pika), docs links, community
- README.zh-CN.md: preserve original Chinese README verbatim
- Fix curl URLs from dushixiang/pika to pika-monitor/pika
- Aligns with next-terminal org convention (English default + zh-CN link)
2026-08-24 00:53:52 +08:00
dushixiang b00a9097a6 test build 4 2026-08-24 00:16:08 +08:00
dushixiang 29582f9124 feat: 支持 Telegram 代理和自定义反代 2026-08-24 00:14:07 +08:00
dushixiang 1634225e31 test build 3 2026-08-24 00:05:19 +08:00
dushixiang d0a5f304a0 feat: 增加每日计划维护免告警时段 2026-08-24 00:04:32 +08:00
dushixiang f2c5eb6e2e test build 2 2026-08-23 23:36:56 +08:00
dushixiang 4687cf7fc5 feat: 增加机器到期分级提醒 2026-08-23 23:24:33 +08:00
dushixiang 6a29286fb5 test build 2026-08-23 23:06:40 +08:00
dushixiang 080579d0e6 refactor: decouple public monitor sparklines 2026-08-23 23:05:41 +08:00
dushixiang 2a5c19079f feat: add public monitor sparklines 2026-08-23 22:41:35 +08:00
dushixiang 5210f91eef fix(auth): make OIDC discovery resilient 2026-08-23 21:33:28 +08:00
dushixiang 7603906c36 refactor: 优化探针详情页与流量统计页
- 探针详情: /admin/agents 前缀匹配宽屏布局;状态并入页头,返回列表改为名称旁小字链接,编辑探针移至页头右侧;基本信息/流量/防篡改/SSH 配置去卡片嵌套,内容扁平化
- 流量统计: 重构页面布局,配置与使用情况分栏;流量限额支持 GB/TB 单位切换与自动适配(后端字节存储无需改动);限额输入与单位下拉组合;使用情况改为卡片呈现
2026-08-23 20:32:56 +08:00
dushixiang 6c8d2f13d3 feat: 告警规则实体化与服务监控按标签选探针
- 告警规则:独立实体(alert_rules 表),按优先级命中第一条生效;支持三种主机目标(全部/按主机/按标签)、7 类阈值、事件通知开关、IP 打码、推送渠道选择;未命中规则的主机不产生告警;列表支持外置启停
- 服务监控:新增按标签选择探针,与指定探针取并集,均为空时全部探针执行
- 公网 IP 采集:范围支持全部探针/按探针/按标签,兼容历史 custom 取值
- 告警历史:新增规则归属列;评估链路(指标/证书/服务下线/探针离线/到期提醒/事件通知)全部按主机命中规则驱动
- 设置页:左侧菜单改为浅色卡片容器并优化对比度,通知渠道移至公网 IP 采集之后;主菜单宽度调整为 240px
2026-08-23 19:53:35 +08:00
dushixiang c730873be3 refactor: 优化设置页面布局与样式
- 设置页全宽对齐其他页面,左侧分类导航去卡片化并支持桌面端吸顶
- 通知渠道改为「渠道列表 + 配置区」布局,支持未保存提醒与校验失败自动跳转
- 系统配置/公网IP采集/告警规则页去嵌套卡片,改为平铺分区(SettingsSection)
- 主题管理页上传按钮与警告提示合并为一行
- 调整全部页面的小布局问题
2026-08-23 16:35:19 +08:00
dushixiang 45284d31c6 优化重构管理页面 2026-08-12 22:55:45 +08:00
dushixiang 435245d639 优化重构管理页面 2026-08-12 22:55:36 +08:00
dushixiang ef34036bc0 fix: proxy public pages in admin dev server 2026-08-12 20:49:40 +08:00
dushixiang 33920265e0 refactor: improve theme settings layout 2026-08-12 20:35:10 +08:00
dushixiang acf3b6b57f refactor: split default theme into standalone repository 2026-08-12 20:00:48 +08:00
dushixiang d7cdbd7a91 移除过时文档 2026-08-12 19:04:01 +08:00
dushixiang a4f7c82de6 更新包路径 2026-08-12 18:59:29 +08:00
dushixiang 6ab1876899 refactor(admin): remove window globals, move AdminLayout to layouts/
运行时配置不再通过 window.PikaRuntime/window.SystemConfig 全局变量传递:
- 删除 global.d.ts 和 main.tsx 的预加载逻辑,直接渲染
- 新增 api/runtime.ts:useRuntimeConfig hook 通过 React Query 从 /api/config 获取
- Header/Sider/Login 改用 useRuntimeConfig 替代 window.SystemConfig
- ColorModeContext 改用 useRuntimeConfig 替代 window.PikaRuntime
- SystemConfig 保存后 invalidate runtime-config 缓存

AdminLayout 从 pages/ 移到 layouts/(布局框架不是页面)。
删除 components/index.ts(多余的 barrel export),PageHeader 改为直接导入。
2026-08-09 23:40:04 +08:00
dushixiang cda2585f1a refactor(admin): inline bootstrap.tsx into main.tsx
bootstrap.tsx 只有 3 个小函数,不值得单独文件。
合并到 main.tsx:运行时配置加载 + fallback + createRoot 全在一个文件里。
2026-08-09 23:26:55 +08:00
dushixiang ab95b57139 refactor(admin): remove redundant src/admin/ directory layer
src/ 下全是管理后台代码,不需要再套一层 admin/。
将 admin/{pages,components,assets} 提升到 src/ 下:
- src/admin/pages/ → src/pages/
- src/admin/components/ → src/components/
- src/admin/assets/ → src/assets/

所有 @admin/ import 改为 @/,删除 @admin alias 和 tsconfig 路径映射。
2026-08-09 23:25:36 +08:00
dushixiang 88224e3a8c chore: remove tracked yarn.lock 2026-08-09 23:20:42 +08:00
dushixiang 9a98f0a228 chore: ignore yarn.lock (project uses npm) 2026-08-09 23:20:28 +08:00
dushixiang b1a3d3d938 refactor(admin): remove shadcn/radix, split AdminLayout
移除 shadcn/ui 残留,统一到 antd 单一 UI 栈:

- 删除 components/ui/button.tsx 和 scroll-area.tsx(死代码,零引用)
- 删除 components.json(shadcn 配置)
- package.json 移除 @radix-ui/react-scroll-area、@radix-ui/react-slot、
  class-variance-authority 三个依赖
- AdminLayout 的 Radix ScrollArea 替换为 CSS overflow + thin-scrollbar 样式

拆分 AdminLayout(380行单文件 → 6个文件):
- menu.tsx: 菜单配置数据
- useThemeToggle.ts: 主题切换 + View Transition 动画
- Header.tsx: 顶部栏(logo/系统名/公共页面/主题切换/用户菜单)
- Sider.tsx: PC 侧边栏(菜单导航 + 版本信息)
- MobileNav.tsx: 移动端底部导航(修复 grid-cols-5 截断 7 项的 bug → 横向滚动)
- index.tsx: 布局壳

修复:useEffect 不再依赖 location(避免每次路由切换都重新请求版本接口)
删除遗留的 App.css
2026-08-09 23:18:11 +08:00
dushixiang 62a0f28b21 refactor: remove assemble scripts, build directly to final dirs
去掉 .dist 中间层和组装脚本,admin 和 portal 各自直接构建到最终目录:

- admin 构建到 web/dist/admin/(后端直接读取)
- portal 构建到 portal/dist/(后端默认主题从此目录读取)
- 删除 web/scripts/(assemble-web.mjs + verify-dist.mjs)
- Makefile build-web 不再调用组装/校验脚本
- 后端 defaultThemeDir 从 web/dist/default-theme 改为 portal
2026-08-09 23:05:07 +08:00
dushixiang 1dd07117a3 refactor: move portal to repo root, merge admin into web/
目录结构调整,为 portal 搬迁到独立仓库做准备:

- portal/ 从 web/portal/ 移到仓库根目录,完全自包含
- web/admin/ 内容合并到 web/ 根目录(admin 就是主仓库的前端)
- web/scripts/ 保留在主仓库(负责发布时组装 admin + portal 产物)
- admin 构建产物改为输出到 web/.dist,避免与最终 web/dist 冲突
- 更新 Makefile、assemble-web.mjs、paths.go、README 中的路径引用
2026-08-09 22:56:16 +08:00
dushixiang 1af64eccd9 refactor: simplify theme system to filesystem-only with self-contained portal
主题系统从带数据库/事务/repo 层/远程下载/配置管理/主题市场的重型架构,
彻底简化为纯文件系统操作:

后端:
- 主题数据全部存放在 data/themes/ 目录,不经过数据库
- 删除主题配置功能(managed/raw/redirect schema、配置存取 API、
  ThemeConfiguration model、theme_configurations 表、repo 层)
- 删除远程下载(URL 安装、GitHub Release 更新、SSRF 防护、SHA-256)
- 删除版本范围检查(semver 解析/比较/匹配、pikaVersion 校验)
- 删除主题市场
- ThemeService 不再持有 db,合并为 theme.go + theme_util.go 两个文件
- 主题类型从 models 包移到 service 包(非数据库模型)
- 保留:ZIP 上传解压(含目录穿越防护)、目录扫描列表、启用/删除、
  覆盖安装、默认主题回退、启动恢复、入口 HTML 渲染缓存

前端 portal(官方默认主题):
- 从 47 个碎片文件精简到 15 个,按标准目录组织
- 删除 theme-sdk 包,API 客户端和类型内联回 portal,完全自包含
- 按职责拆分:types.ts / api.ts / constants.ts / lib/utils.ts /
  contexts/ColorMode.tsx / hooks/index.ts / components.tsx / pages/
- 每个页面一个文件,图表和子组件内联,fork 二开只需看一个文件
2026-08-09 22:45:43 +08:00
dushixiang 4bc998c77a 升级依赖 2026-08-01 12:51:49 +08:00
dushixiang be4919508a 升级前端依赖 2026-07-12 21:54:16 +08:00
dushixiang 07bce71bbe fix: clean up agent data on uninstall 2026-07-12 21:38:47 +08:00
dushixiang a510cf3be7 fix: correct traffic stats period display 2026-07-12 21:04:11 +08:00