Your Name
7cbddf5d48
refactor(files): P1 split composables, Pinia store, directory cache
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 05:05:26 +08:00
Your Name
cb738a8e9a
fix: file manager double browse from v-select init and stale chunks
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 04:36:46 +08:00
Your Name
5393252036
fix: eliminate double browse requests in file manager
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 04:29:11 +08:00
Your Name
3bc2843642
fix: browse序号保护防止token刷新重试导致的双刷新
2026-06-02 03:48:01 +08:00
Your Name
1d6d26d612
fix: 加载中隐藏空状态提示,消除进目录时的视觉双刷新
2026-06-02 03:19:27 +08:00
Your Name
c65e3ea2a7
fix: 目录双击导致双刷新(e.detail守卫),横幅仅在实际权限错误时显示
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 03:07:51 +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
57d67c494b
fix: 警告横幅关闭后进子目录不再重新出现,文案简化
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 01:51:13 +08:00
Your Name
928e3c5fdb
fix: 登录白名单 IP 绕过防暴破锁定
...
白名单内 IP 跳过失败次数锁定;失败仅审计不计数;成功登录清除该用户历史失败记录。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 01:37:22 +08:00
Your Name
832e34fd98
fix: 修复 6 个 MEDIUM 级 Bug (锁定/重试/调度/分页/SSH池/token_version)
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 01:29:06 +08:00
Your Name
19cfb7caaa
fix: 系统全扫描修复 7 个 HIGH 级 Bug
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 01:22:00 +08:00
Your Name
ea3046f635
fix: unix_ls parse_ls_la_line 兼容 long-iso 8字段格式
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-02 01:09:39 +08:00
Your Name
39a8cf16cf
fix(ui): 调度与重试队列路由导航及前端资源一致性
...
侧栏可滚动与显式导航;懒加载失败提示;getList 兼容分页响应;生产 prune 清理 1065 个过期 chunk。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 22:36:08 +08:00
Your Name
b62d4f6f9f
fix(audit): 审计日志操作与目标类型全面中文化
...
补全 action/target 映射表与词段兜底;审计页筛选下拉使用中文标签。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 22:18:42 +08:00
Your Name
44c19f329a
fix(terminal): Ctrl+D 快捷键文案改为退出
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 22:13:54 +08:00
Your Name
9e924562d2
fix(terminal): 右下角快捷键与右键菜单中文化并放大
...
快捷键区改为中文大按钮;工具栏字号/回滚/全屏中文化;右键菜单加大并在命令栏拦截英文系统菜单。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 22:00:49 +08:00
Your Name
e3eb0e65a5
fix(ui): 仪表盘/审计/调度/重试修复与终端快捷命令改版
...
统一终端页与全局侧栏菜单;快捷命令仅在终端执行,增删改排序迁入系统设置;命令输入区加高与 Enter/Shift+Enter 行为;后端自定义命令优先与 reorder API。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 21:56:07 +08:00
Your Name
fc056059f9
docs: production deploy changelog for files/POSIX release
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 20:45:14 +08:00
Your Name
bd6467dff9
docs: master plan execution progress and changelog
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 19:58:50 +08:00
Your Name
e704b01093
fix(deploy): restore pre_deploy_check.sh content
...
Nexus CI/CD / test (push) Waiting to run
Nexus CI/CD / deploy (push) Blocked by required conditions
Nexus Pre-commit Checks / quick-check (push) Waiting to run
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 19:57:06 +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
1cfac23c01
feat: terminal ANSI colors and enhanced shell syntax highlighting
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 15:49:27 +08:00
Your Name
799140f6c4
feat: terminal SPA layout, route sync, and WebSocket URL helper
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 15:41:59 +08:00
Your Name
8935081ac5
feat: full-site acceptance automation and health/detail fix
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 15:22:42 +08:00
Your Name
ab431028c1
fix: 服务器页批量选择绑定 Vuetify4 modelValue
...
v-model:selected 无法同步勾选状态;生产已部署 ServersPage-CGp8DUVa.js 并验证「已选择 2 台服务器」。
2026-06-01 14:54:39 +08:00
Your Name
cc2dad7f31
docs: 生产浏览器验收 — SPA/WebSSH/health_monitor
...
详见 docs/reports/2026-06-01-browser-verification.md;批量条与 Telegram/Push/kill 留维护窗口或人工确认。
2026-06-01 14:20:45 +08:00
Your Name
24b4439b2b
docs: 单负责人执行计划 — handoff 对齐、生产验收、prune 加固
...
计划见 docs/design/plans/2026-06-01-single-owner-execution.md;生产 health/app/Redis/MySQL 已通过。
2026-06-01 14:09:17 +08:00
Your Name
b8af1fc418
chore: 移除 superpowers 工作流 Skill,改为单 Agent 协作
...
停用 .cursor/skills 与虚拟部门分派,新增 no-department-agents 规则并更新文档索引与验收标准。
2026-06-01 14:04:50 +08:00
Your Name
b77a314b36
chore: remove virtual department agent docs (team/skills)
...
Delete docs/skills/, docs/team/, and TEAM_ROLES.md. Update docs/README and mem_key_files. Standards and .cursor/skills workflows unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 13:52:55 +08:00
Your Name
d519113734
fix: Gate3 health plain text, refresh empty body, prune underscore chunks
...
test_api: assert /health returns plain text ok instead of JSON parse.
auth: RefreshRequest.refresh_token optional so SPA POST {} is not 422.
prune: allow leading underscore in asset names to avoid deleting _plugin-vue_export-helper.
Add run_test_api_on_server.sh and deployment follow-up changelog.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 13:41:28 +08:00
Your Name
65c77155d8
fix: 修复前端 assets 清理脚本以支持 Rolldown 产物
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 12:31:55 +08:00
Your Name
2deb89b49c
deploy: 前端部署后自动清理孤儿 assets + 冒烟脚本
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 12:29:57 +08:00
Your Name
b76295aaec
docs: 记录 2026-06-01 生产部署验证结果
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-01 12:23:44 +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
73fdcafb81
docs: 完整交接文件 (15章节 + Cursor提示词 + 部署问题)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-01 11:58:11 +08:00
Your Name
91d0d4104e
docs: 添加 .cursorrules 供 Cursor 接管
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-01 11:54:11 +08:00
Your Name
7fa4bd6dff
docs: Cursor交接文件 2026-06-01
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-01 11:49:12 +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
6183047fd6
fix: 全站 bug 审查修复 (前端9项 + 后端5项)
...
Nexus CI/CD / test (push) Waiting to run
Nexus CI/CD / deploy (push) Blocked by required conditions
Nexus Pre-commit Checks / quick-check (push) Waiting to run
前端修复:
- P0: App.vue http 未导入导致全局搜索崩溃
- P1: TOTP 登录流程断裂 (TotpRequiredError 非 ApiError 子类)
- P1: ServersPage 编辑服务器 domain 被端口字符串污染
- P1: PushPage Set[0] 无效 → values().next().value
- P1: SettingsPage API 返回字符串未转数字
- P2: api/index.ts getList 重复定义移除
- P2: LoginPage 锁定倒计时 now ref + watch 更新
- P2: TerminalPage 路径验证正则放松 (允许空格/中文)
- P2: useWebSocket CONNECTING/CLOSING 状态关闭旧连接
后端修复:
- P1: websocket.py redis.keys() → scan_iter() 避免阻塞
- P1: auth_service.py TTL 仅在 key 无 TTL 时设置
- P1: servers.py 批量操作加 asyncio.Lock 避免并发 session commit
- P2: settings.py asyncio.get_event_loop() → get_running_loop()
- P2: settings.py datetime.utcfromtimestamp() → datetime.fromtimestamp(tz=utc)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-01 11:24:55 +08:00
Your Name
df2c188f5d
docs: Cursor 交接文件
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 23:32:10 +08:00
Your Name
2d00d6a8eb
fix: 登录页居中布局 + 删除Logo区域
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 23:30:12 +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
facc1e8ae4
feat: TerminalPage全面迭代 + 快捷命令MySQL持久化
...
P0: Ctrl+L清屏、命令历史恢复、重连per-session、onopen不忽略、ping per-session
P1: 空catch处理、termRefs用session.id、错误透传、剪贴板权限、webssh-token错误
P2: 全选菜单、指数退避重连、快捷命令编辑、uptime per-session
新功能: quick_commands MySQL表 + CRUD API、Shell语法高亮输入栏
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 23:12:18 +08:00
Your Name
1ecd8e4542
fix: move wallpaper routes before /{key} catch-all to fix 404
...
Bing wallpaper endpoint (/bing-wallpapers) was returning 404 from HTTP
because FastAPI matched it against the /{key} catch-all route at position
2 before the specific route at position 13 ever got reached.
- Moved wallpaper routes (bing-wallpapers, bing-wallpaper) and helper code
before the /{key} wildcard route
- Removed dead guard code in get_setting() that was never effective —
FastAPI route matching happens before the handler body executes
- Removed duplicate wallpaper code block at end of file
Root cause: FastAPI matches routes in registration order. /{key} at
position 2 matched 'bing-wallpapers' as the key parameter, returning
'Setting not found' instead of routing to the wallpaper endpoint.
2026-05-31 22:00:33 +08:00
Your Name
c6485168b6
fix: bing-wallpapers route was being caught by /{key} catch-all
...
FastAPI matches routes in order: /{key} registered before bing-wallpapers
because routes are sorted by path. /{key} matches 'bing-wallpapers' as a
key name, returning 404 'Setting not found' instead of hitting the actual
bing_wallpapers handler.
Fixed by adding a guard in get_setting() to skip these fixed path names,
and crucially by ensuring bing-wallpaper(s) routes are registered BEFORE
the /{key} catch-all in the router.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 20:59:26 +08:00
Your Name
e9af02dd22
fix: add bing-wallpapers (plural) to PUBLIC_PREFIXES for JWT bypass
2026-05-31 20:53:49 +08:00
Your Name
c9baecfdfa
feat: Bing wallpaper slideshow — 12 images, hourly rotation, weekly cleanup
...
- Frontend: fullscreen wallpaper background with 1.5s crossfade transition,
login card centered with glass effect, images rotate every hour
- Backend: new /api/settings/bing-wallpapers endpoint fetches 8 recent images
from Bing HPImageArchive, caches to web/app/wallpapers/, returns all URLs
- Auto-cleanup: removes files older than 7 days, keeps max 12 newest
- Old /bing-wallpaper endpoint kept for backward compatibility
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 20:51:50 +08:00
Your Name
3d5870b404
fix: correct wallpaper dir to 3 levels up (server/api/settings.py -> Nexus/web/app/wallpapers)
...
Path breakdown: __file__ is server/api/settings.py
.parent → server/api/
.parent.parent → server/
.parent.parent.parent → Nexus/ (repo root)
Then append web/app/wallpapers
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 20:38:35 +08:00
Your Name
afd32118b2
fix: correct wallpaper directory path in settings.py
...
- Path(__file__) is server/api/settings.py, so:
.parent → api/ .parent → server/ .parent → Nexus/ (ROOT)
.parent → (above ROOT — wrong!)
- Changed from .parent.parent.parent to .parent.parent.parent.parent
to reach the project root, then into web/app/wallpapers/
- Moved _WALLPAPER_DIR.mkdir into the async function body
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 20:34:27 +08:00