Nexus Agent
08a0157c95
feat: 调度表单重构、登录门控、批量任务与页面缓存对齐
...
调度页执行周期可视化/单次执行/分类选机/推送源对齐;登录 IP 门控与无缝导航;
服务器批量后台任务、执行记录、凭据合并、各页激活刷新与错误提示修复。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 11:17:21 +08:00
Nexus Agent
b8425cc059
fix(servers): 状态/心跳/Agent 列 overlay 后排序
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:38:28 +08:00
Nexus Agent
b220a5a762
fix(terminal): 移除命令栏冗余按钮,断开遮罩仅覆盖 SSH 区
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:30:31 +08:00
Nexus Agent
b011b60f9c
feat(ui): 服务器/脚本/重试队列页面自动刷新
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:27:46 +08:00
Nexus Agent
442e005d27
docs(audit): 终端修复审计补 index.html
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:24:44 +08:00
Nexus Agent
908ae938b5
fix(terminal): 深链 server_id 下命令输入框可用
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:24:32 +08:00
Nexus Agent
b12fb4770b
docs(audit): Gate 7 vite assets 跳过门控审计
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:21:31 +08:00
Nexus Agent
6150a39889
fix(deploy): Gate 7 跳过 web/app/assets 哈希产物
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:21:20 +08:00
Nexus Agent
06af90d35e
feat(scripts): 执行详情服务器名与顶栏居中提示
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:20:37 +08:00
Nexus Agent
9723e0f528
docs(audit): Gate 7 diff 修复门控审计
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:09:59 +08:00
Nexus Agent
3d76c4a447
docs(audit): 补齐脚本看板部署门控所需审计段落
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:08:28 +08:00
Nexus Agent
0b2d7ac50d
feat(scripts): 异步执行、全局进度看板与完成提示音设置
...
脚本 exec 立即返回 running 并在后台跑批次;/ws/alerts 推送 script_progress/complete;
新增 ScriptRunsPage、Telegram 汇总通知与可配置的浏览器完成提示音。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 07:07:02 +08:00
Nexus Agent
df95a2429f
feat(frontend): 全选筛选结果与脚本失败分组复制
...
服务器列表支持跨页全选当前筛选/分类本组;脚本执行详情按错误类型分组(去动态 IP)并复制失败清单,不做 CSV 导出。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 05:51:11 +08:00
Nexus Agent
5f63fb0a3f
fix(scripts): 执行进度按成功台数计算,失败项快速定位与面板清理
...
progress 改为 success/total(失败不计入分子);脚本库执行详情中文化、失败筛选与终态任务移出批量状态面板。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 05:11:39 +08:00
Nexus Agent
c435413563
feat(servers): 分类筛选/批量改分类、分页中文与列排序,脚本库按分类选机
...
支持 300+ 台服务器按分类浏览与批量管理,修复分页「全部」与排序;门控 Gate3 强制本地 API。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-08 04:30:24 +08:00
Nexus Agent
e5a3f2524e
fix(auth): change_password 改密路径 audit_repo 定义顺序
...
部署前补齐门控审计与 Layer3 演练终验记录,消除 ruff F821。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 23:11:28 +08:00
Nexus Agent
05006cb5df
feat(auth): refresh token 先 Redis 后 MySQL 双写
...
登录 30 天会话 hash 持久化到 admin_refresh_tokens;启动从 MySQL 回填 Redis,
Redis 重启后会话仍可 refresh。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 21:56:56 +08:00
Nexus Agent
69087988b1
fix(auth): 反代后登录白名单读取真实客户端 IP
...
Docker/1Panel 反代时 request.client.host 为 172.18.0.1;可信内网跳读取 X-Real-IP/X-Forwarded-For。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 21:50:39 +08:00
Nexus Agent
a14fbb3df3
fix(ssh): 快速添加跳过主机密钥校验并中文化错误
...
凭据轮询在 SSH_STRICT 默认 true 时因 HostKeyNotVerifiable 在认证前失败;
探测始终 known_hosts=None,默认 strict 改为 false,错误信息统一中文。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 21:31:38 +08:00
Nexus Agent
ea2507dbc0
feat(telegram): 全部通知改为中文详细说明
...
统一告警/恢复/系统/Layer3/测试消息格式,含来源、影响与建议操作。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 21:01:47 +08:00
Nexus Agent
f60a5ea5bc
fix(deploy): health_monitor 剥离 .env 引号以修复 Telegram 404
...
容器 .env 带引号的 Token 导致 sendMessage URL 无效;增加 normalize_env_value
与失败日志。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 20:58:02 +08:00
Nexus Agent
764703d401
fix(deploy): health_monitor flock 失败计数回传
...
flock 子 shell 递增后未回传 FAIL,导致 Layer 3 永不触发重启与 Telegram。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 20:53:14 +08:00
Nexus Agent
f9934bd4f1
feat(ops-patrol): Layer 3 巡检与 Telegram 配置打通
...
保存 Telegram 时同步至 .env,health_monitor 支持 MySQL 回退,
设置页展示巡检状态,部署时自动安装 cron。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 20:17:24 +08:00
Nexus Agent
540a7fce05
fix(settings): Telegram 检测/测试闭环与 8 项告警开关恢复
...
检测与测试前自动持久化 Token/Chat ID;getUpdates 清除 Webhook 并返回具体 API 错误;恢复 NOTIFY 分项开关与免密 reveal。
2026-06-07 19:45:07 +08:00
Nexus Agent
2e911dcca7
fix(frontend): 设置页恢复 IP 白名单订阅 URL 与解析预览
...
补回代理订阅配置 UI,修正 ip-allowlist 保存 payload 为 manual_ips + subscription_url。
2026-06-07 19:34:24 +08:00
Nexus Agent
a5d5518054
fix(frontend): 设置页恢复 Telegram Chat ID 自动检测
...
Vue SPA 迁移遗漏 getUpdates 检测按钮;对接 GET /settings/telegram/chats,并修正 cron 脚本 bash 调用。
2026-06-07 19:31:13 +08:00
Nexus Agent
d0be2fdcf1
fix(deploy): SSH secrets 加载、Docker 运行时检测与外网探测脚本修复
...
使 deploy-production.sh 可读本机 secrets 并在非 docker 组用户下用 sudo 识别 1Panel 栈;修复 security_probe_external.sh 的 curl shift 误用与 WebSocket 自动 venv。
2026-06-07 17:34:27 +08:00
Nexus Agent
72d82d737b
fix(security): BL-07 WS 403 澄清与 code-review 跟进加固
...
外网无 token WebSocket 的 HTTP 403 为应用层拒绝而非反代故障;边端 agent
在中心 401 时停止心跳重试;install 锁定路由级 404 且归档失败 fail-closed。
同步安全规范与 BL-06 一致,门控 7/7 PASS。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 12:12:49 +08:00
Nexus Agent
eab35a35be
fix(security): BL-06 强制 Agent per-server key 并合并心跳单次查库
...
移除 Agent 认证与安装链路的 global API_KEY 回退,收口 risk-acceptance 接受项 2;巡检补修心跳重复 get_server 并加 assert_called_once 回归测试。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-07 11:17:41 +08:00
Nexus Deploy
811eb97fbf
chore: Ubuntu local dev scripts, deploy gate, and audit changelogs
...
Rename WSL helpers to Linux-native scripts, expose Redis in docker-compose,
prefer .venv tools in pre_deploy_check, and record 2026-06-04 audit waves.
2026-06-04 23:02:21 +08:00
Nexus Deploy
0100ab2582
docs: consolidate archive, SSOT guide, and agent entry stubs
...
Move line-walk/delta/phase2/frontend audits and legacy memory into
docs/archive/, add functional development SSOT, thin AGENTS/CLAUDE stubs,
and regenerate changelog/audit indexes via consolidate_docs.py.
2026-06-04 23:01:03 +08:00
Nexus Deploy
b866e944ab
fix: Code Review P0/P1 batches 1-3 and single-operator risk acceptance
...
Apply sync/install/auth/schedule/retry/agent/settings fixes from full
code review; document accepted WS and Agent legacy risks for solo ops.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-04 15:57:49 +08:00
Nexus Deploy
a2ae74d582
release: BUG fixes batch 1-6, full bug scan docs, Ubuntu/Linux dev
...
- Backend: auth refresh reuse, schedule/retry/sync/agent/files fixes
- Frontend: push WS, files ETag browse, vite build assets
- Docs: audit/changelog, production deploy gate, bug scan registry B7-77
- Deploy: deploy-production.sh, prune assets, gate logs
2026-06-04 14:01:14 +08:00
Your Name
3cec226b89
feat(docker): add Compose stack for MySQL, Redis and Nexus API
...
- Dockerfile with healthcheck and entrypoint for deps + .env persistence
- generate_env.py for local secrets; design docs and changelog
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-03 00:58:46 +08:00
Your Name
4b5602a719
feat(files): fix editor freeze, EOL gates, server form and session UX
...
- FilesPage storeToRefs + remotePath coercion; Monaco preload; list action buttons
- text_io for UTF-8/LF; install/sync EOL; check_shell_eol + check_text_eol gates
- ServerFormDialog, hash login redirect, AppAuth keep-session; design docs and audits
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-03 00:42:55 +08:00
Your Name
78798e3630
feat(push): refactor B0-B6, /ws/sync channel, staging cleanup
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 08:14:09 +08:00
Your Name
67dac0168f
feat: 文件管理器复制粘贴守卫、2MB编辑限制、一键配置sudoers、编辑器外观重构
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 02:20:22 +08:00
Your Name
246070e599
fix(deploy): pre_deploy gate uses repo root and newest audit
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 19:56:36 +08:00
Your Name
d93c518a14
feat(files): POSIX paths, elevation, recursive chmod, access hints and docs
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 19:54:18 +08:00
Your Name
8311821590
fix: 全量修复批量选择、JWT 60min、script-callback 认证与心跳数据流
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 12:17:47 +08:00
Your Name
a20cefcfbd
docs: 审计+changelog 全站bug审查修复
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-01 11:40:23 +08:00
Your Name
080c1158d4
docs: 审计文档 + changelog (TerminalPage迭代)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 23:24:53 +08:00
Your Name
0d056a45e9
feat: Vuetify 4 frontend — complete rebuild with audit fix
...
Vue 3 + Vuetify 4 + TypeScript + Vue Router 4 + Pinia frontend,
replacing the old Tailwind+Alpine.js static pages.
Infrastructure (8 new files):
- composables/useSnackbar.ts — centralized notifications
- composables/useServerList.ts — server dropdown data
- composables/useServerPagination.ts — paginated server table
- types/api.ts — 14 typed API response interfaces
- types/global.d.ts — Window augmentation
- utils/status.ts — server status display helpers
- utils/validation.ts — 8 form validation rules
- components/MonacoEditor.vue — fullscreen code editor
14 pages rebuilt:
- LoginPage, DashboardPage, ServersPage, TerminalPage
- FilesPage, PushPage, ScriptsPage, CredentialsPage
- SchedulesPage, RetriesPage, CommandsPage
- AlertsPage, AuditPage, SettingsPage
Critical fixes (from audit):
- Files upload JWT auth (was missing Authorization header)
- API Key reveal password verification dialog
- 6 silent catch blocks → snackbar error feedback
- 33 as any → 0 (typed interfaces + global.d.ts)
- Dashboard: alerts/summary/categories/audit data loading
- WebSocket reconnect timer cleanup + auth failure handling
- Terminal ResizeObserver leak fix
- PushPage timer cleanup on unmount
- FilesPage path double-slash fix (joinPath helper)
- Filter changes reset pagination to page 1
Features added:
- Servers: batch operations, CSV export/import, detail panel
- Push: sync modes, ZIP upload, WebSocket real-time progress, cancel
- Scripts: quick execute panel, execution status tracking
- Files: Monaco editor, context menu, batch delete, rename, chmod
- Terminal: right-click menu, server sidebar, tab persistence
- Settings: batch save, TOTP manual key, password TOTP verification
- Dashboard: category distribution, recent audit, WS refresh
Quality:
- vue-tsc --noEmit zero errors
- vite build passes (1613 modules)
- Formal 8-step security audit passed (0 FINDING)
- .gitignore: dist/ → **/dist/ to cover web/app/dist/
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 12:56:12 +08:00
Your Name
c70424a224
docs: Monaco IDE编辑器 changelog + 审计报告
2026-05-31 02:08:31 +08:00
Your Name
557c8d28c1
docs: files迭代审计报告
2026-05-30 23:46:12 +08:00
Your Name
463841a740
docs: settings安全加固审计报告
2026-05-30 22:35:40 +08:00
Your Name
4c4d41b8f5
docs: add changelog and audit for ruff cleanup
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 20:10:28 +08:00
Your Name
ebe276ea29
docs: add changelog and audit for servers iteration
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 19:50:07 +08:00
Your Name
de8d860244
fix: handle legacy agent heartbeat without server_id + migrate on_event to lifespan
...
- AgentHeartbeat.server_id changed to Optional[int] — missing server_id
now returns 200 (discarded) instead of 422, stopping retry loops
- web/agent/agent.py: on_event("startup") → FastAPI lifespan pattern
- Added exponential backoff on consecutive heartbeat failures (cap 5min)
- Agent stops heartbeat loop on "discarded" response from central
- main.py: promoted temporary debug 422 handler to production-grade
- uninstall.sh: added legacy agent cleanup (pkill patterns, crontab,
/opt/multisync-agent path)
- Confirmed servers.html batch buttons work correctly (disabled state
is correct when no agents installed)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 18:20:14 +08:00
Your Name
993a234152
docs: 审计 + changelog — health纯文本/sha256/AppAuth
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-30 02:37:15 +08:00