陈银军
|
603e51f73b
|
fix(app): 登录成功后自动加载数据,无需手动重新扫描
App.vue 的 onMounted 只在根组件首次挂载时执行一次:首次打开落在
登录页时跳过数据加载,登录成功跳转后也不会重跑,导致初次部署打开
面板为空,必须手工点「重新扫描」才有数据。新增 route.path 监听:
从 /login 跳转到真实页面时触发 refreshAll(后端会懒触发首扫并自动
轮询进度)。已用 puppeteer 端到端验证:登录后数据自动出现。
|
2026-09-19 23:51:19 +08:00 |
|
陈银军
|
02ac744e13
|
feat(auth): 内置账号密码登录,Docker 部署可通过环境变量覆盖
- 后端读取 VCM_USERNAME/VCM_PASSWORD(默认 admin/admin123),新增 /api/login、/api/logout,Bearer token 中间件保护全部 /api/*(登录/登出除外)
- 前端登录接真实接口,token 存 localStorage(记住我)/ sessionStorage;401 自动清除会话跳登录页
- 修复 App.vue 初始路由未就绪导致登录页误触发数据加载;退出登录先清会话再跳转
- docker-compose 增加 VCM_USERNAME/VCM_PASSWORD 环境变量(可用宿主机 .env 覆盖)
|
2026-09-19 22:49:32 +08:00 |
|
陈银军
|
735eaa7bf4
|
fix(mobile): 修复底部 Tabbar 被软键盘顶到屏幕中部
iOS Safari 在 input 聚焦弹出软键盘时会把 fixed 底部导航重定位到视口中部。
监听 focusin/focusout:输入框聚焦时 Tabbar 平滑滑出视口(pointer-events 关闭),
失焦恢复;同时补充 env(safe-area-inset-bottom) 适配 iPhone 底部安全区。
|
2026-09-19 22:27:38 +08:00 |
|
陈银军
|
6e220a04a1
|
feat(search): 检索列表新增「描述」列
包名后展示 description(超出 230px 省略号,悬停 title 显示全文),
无描述显示 —。移动端表格 min-width 调整为 880px。
|
2026-09-19 22:23:36 +08:00 |
|
陈银军
|
c379454ca6
|
refactor(topbar): 扁平化设置操作路径
头像下拉菜单去掉「⚙️ 设置」中间层,设置抽屉里的可操作项直接平铺
与「退出登录」同级:🌙/☀️ 主题切换(即时生效,菜单保持打开便于对比)、
⚙️ 预警设置(直达 /thresholds)、📦 版本信息 v1.0.0(只读分隔行)。
移动端 ☰ 设置抽屉保持不变。
|
2026-09-19 22:19:15 +08:00 |
|
陈银军
|
dd05764806
|
feat(search): 筛选/排序改为图标下拉 + 结果数左对齐 + 最近搜索历史
1) 快捷筛选与排序由横向标签改为 🎚️/↕️ 图标按钮(表格右上角靠右),
点击弹出下拉菜单,选中项高亮带 ✓;2) 「共找到 N 个包」移入表格工具栏
最左侧,与表格左对齐;3) 搜索框下方展示最近 5 条搜索历史
(localStorage 持久化),回车/点搜索按钮记录,点历史 chip 直接检索,
可一键清除。点击外部自动关闭下拉。
|
2026-09-19 22:11:55 +08:00 |
|
陈银军
|
a7dc1b7a17
|
fix(size): 修复轻量包占用显示为 0 MB 的精度问题
后端 fmtMb 用 toFixed(1) 保留 1 位小数,<0.05MB 的包(几 KB~几十 KB
的轻量组件)被截断为 0。改为保留 KB 级精度;前端统一使用 store 的
fmtSize/fmtBytes(新增 KB 档位),所有包大小显示点(检索/忽略/概览/
卡片/抽屉/清理对话框/Top20)统一替换,消除各组件重复的本地格式化。
|
2026-09-19 22:04:14 +08:00 |
|
陈银军
|
1793888900
|
feat(search): 检索页包列表加包 logo
复用 PkgLogo 组件(GitHub 组织头像 / 站点 favicon / 首字母降级),
包名单元格改为 logo + 包名横向排列。
|
2026-09-19 22:00:15 +08:00 |
|
陈银军
|
a0f0c27c44
|
fix(logs): 忽略/取消忽略操作写入操作日志
原 /api/ignore 与 /api/ignore/:pkgName 只写 ignored_packages 表不记日志,
导致操作日志页查不到忽略记录。logs 表新增 action 列区分操作类型
(clean/ignore/unignore,旧库运行时 ALTER TABLE 迁移),忽略与取消忽略
接口补写 addLog;日志页按操作类型展示徽标与详情,删除数量/释放空间对
非清理操作显示占位符。
|
2026-09-19 21:58:44 +08:00 |
|
陈银军
|
c44dd8a195
|
fix: GitHub 系包 logo 改用组织头像,替代全站相同的章鱼猫 favicon
- 实测 vuejs.org/favicon.ico 返回 404(vue 回退字母,本就不是章鱼猫)
- 章鱼猫仅出现在 homepage 指向 github.com 仓库的包(github 全站 favicon 唯一)
- 改进:github.com/{owner}/{repo} 主页 → 加载 github.com/{owner}.png 组织/用户头像
(vuejs 组织头像即 Vue logo、antvis 即 antv 图标),失败仍回退首字母
|
2026-09-19 21:45:52 +08:00 |
|
陈银军
|
764022dcbf
|
feat: 列表 logo 尝试加载主页 favicon,失败回退首字母
- 列表接口补充 homepage 字段
- Top30Panel / PackageCard 的 PkgLogo 传入 homepage,优先尝试加载 {域名}/favicon.ico
- 加载失败或离线时自动回退首字母徽标(抽屉此前已支持)
|
2026-09-19 21:32:28 +08:00 |
|
陈银军
|
0925c8fb62
|
feat: Top20 排行增加描述列,列表接口携带 description
- 列表接口 buildPackages 补充 description 字段(仍不含 versionsDetail 保持瘦身)
- Top30Panel 新增「描述」列,超长省略号截断,悬停显示完整描述;移动端隐藏该列
- 详情抽屉 description/homepage/repository/license/author 字段已具备,随本次镜像生效
|
2026-09-19 21:28:38 +08:00 |
|
陈银军
|
c9bc6adf85
|
fix: 确认清理对话框永远提示无需清理
根因: 列表接口瘦身后不再返回 versionsDetail,CleanDialog 的「将删除」计算依赖 versionsDetail 为空 → 预览恒为 0
修复: 打开对话框时按需调用详情接口加载版本明细,加载期间显示「⏳ 正在加载版本信息…」
|
2026-09-19 21:24:47 +08:00 |
|
陈银军
|
922d4b3a12
|
fix: 扫描遮罩毛玻璃模糊不生效
- 根因1: backdrop-filter 加在进度卡片上,卡片背后是深色遮罩层,模糊作用在被压暗内容上不可见 → 移到遮罩层本身
- 根因2: 标准 backdrop-filter 与 -webkit- 前缀双写时被 Vite8 CSS 压缩链去重,只保留前缀属性,标准属性丢失 → 只写标准属性(压缩器自动补前缀)
- 验证: puppeteer-core 实测 computed backdrop-filter = blur(14px) saturate(1.3),背景内容完全模糊
|
2026-09-19 21:22:07 +08:00 |
|
陈银军
|
8a54fb2d5c
|
feat: 包信息展示与扫描数据修正
- scanner: 版本数只统计实际存在的 .tgz(修复 playwright-core 5113 版本虚高),解析 description/homepage/repository/author/license 元数据字段
- 前端: 新增 PkgLogo 首字母徽标组件,详情抽屉展示包 logo(主页 favicon 加载失败自动回退)、介绍与主页/仓库/许可胶囊,优化抽屉头部布局
- 全量 UI 改进: 毛玻璃扫描遮罩与进度、头像菜单重新扫描、主题切换、移动端 Tabbar/StatMini/Top30Panel 响应式、列表瘦身与详情按需加载
- compose: TZ=Asia/Shanghai + 命名卷 vcm-data 解决 SQLite 权限
- 更新 amd64 镜像 tar
|
2026-09-19 21:07:27 +08:00 |
|
陈银军
|
f84f21574f
|
fix: 扫描缓存与真实大小计算,解决页面加载慢与数据虚增
- scanner: 大小改为统计实际 .tgz 文件(兼容 {version}.tgz 与 {pkg}-{version}.tgz 命名),
不再用 unpackedSize 兜底虚增数倍
- server: 扫描结果内存缓存(首次懒扫描,后续请求秒回),新增 POST /api/scan 手动重扫,
/api/packages 返回 scannedAt 时间戳,clean/删版本后自动失效缓存
- 前端: 概览页新增「重新扫描」按钮 + 「基于 xxx 扫描」时间展示;Top30 在真实环境
(无访问统计)降级为「缓存占用 Top 30」按大小排序
- compose: 数据卷改 named volume,修复非 root 容器 SQLITE_CANTOPEN
|
2026-09-19 17:57:58 +08:00 |
|
陈银军
|
c236df3e49
|
fix: 生产构建强制走真实后端 API(.env.production=VITE_USE_MOCK=false),避免镜像内前端用 mock 假数据
|
2026-09-19 16:11:52 +08:00 |
|
陈银军
|
54f3b681d6
|
feat: 概览页包列表仅展示需关注项(预警+异常),加「查看全部」跳检索页
|
2026-09-19 15:42:32 +08:00 |
|
陈银军
|
a87b26417f
|
chore: 概览页「你的缓存」栏目标题改为「缓存包列表」
|
2026-09-19 15:35:57 +08:00 |
|
陈银军
|
14526ccec1
|
Revert "chore: 品牌名「你的缓存」改为「Verdaccio 缓存管家 / 缓存可视化管理」"
This reverts commit 97b8521ead.
|
2026-09-19 15:35:13 +08:00 |
|
陈银军
|
97b8521ead
|
chore: 品牌名「你的缓存」改为「Verdaccio 缓存管家 / 缓存可视化管理」
|
2026-09-19 15:34:41 +08:00 |
|
陈银军
|
cf9680bac7
|
chore: 导航菜单文案调整(动态→操作日志,忽略→已忽略的包)
|
2026-09-19 15:31:59 +08:00 |
|
陈银军
|
c267c8f38f
|
fix: 顶部导航切换后内容区空白
<transition mode="out-in"> 包裹 router-view 时,首次导航后新视图
无法挂载(概览页首次加载正常、切换后所有页面含返回首页均空白,
且无 JS 报错)。改为默认过渡模式 + :key="route.path" 强制按路由
重挂载 + appear 首屏动画;路由改为同步导入简化实现。dev 与生产
构建均验证通过。
|
2026-09-19 15:29:20 +08:00 |
|
陈银军
|
57510af6e8
|
fix: 包详情抽屉无法关闭(关闭事件与 v-model 契约不匹配)
父组件用 v-model:visible 绑定抽屉可见性(监听 update:visible),
组件内关闭却 emit 'close',父组件从未监听,导致点 ✕ 与遮罩均
无法关闭。改为 emit 'update:visible', false,与 v-model 对齐。
|
2026-09-19 15:13:18 +08:00 |
|
陈银军
|
8cbe918e37
|
fix: 顶栏布局被 App.vue 的 display:block 覆盖导致元素垂直堆叠
App.vue 的 .desktop-topbar{display:block} 与 AppTopbar.vue 的
.topbar{display:flex} 特异性相同,且前者后注入胜出,使品牌/导航/
用户区垂直堆叠成三行。移除冗余规则,恢复单行 flex 布局。
|
2026-09-19 15:10:39 +08:00 |
|
陈银军
|
92635ec5dd
|
chore: 移除脚手架残留的未引用 style.css
|
2026-09-19 15:00:18 +08:00 |
|
陈银军
|
0a9ca8894a
|
feat: Verdaccio 缓存可视化管理面板(前端 + 后端 + Docker)
- 前端 Vue3+Vite+Element Plus 按需引入,双主题(bright/dark)CSS 变量
- 三端响应式(桌面/平板/手机),登录/概览/检索/阈值/忽略/动态 6 页面
- 后端 Express + better-sqlite3,目录扫描 + demo 模式,清理原子写入
- Dockerfile 多阶段构建 + docker-compose(storage 只读挂载)
|
2026-09-19 15:00:04 +08:00 |
|