Commit Graph

205 Commits

Author SHA1 Message Date
rbetree
f270bbd685 feat: stage sidebar submenu panel visibility 2026-03-28 15:29:33 +08:00
rbetree
0bd2090d74 fix: hide submenu when sidebar is collapsed 2026-03-28 14:32:21 +08:00
rbetree
f45df870d7 refactor(docker): simplify to single compose + dynamic build default 2026-02-20 00:52:23 +08:00
rbetree
b2aeb0b355 docs: move changelog out of README 2026-02-19 19:27:30 +08:00
rbetree
ebf7ebf14a ci(docker): publish ghcr latest and release tags only 2026-02-19 19:09:54 +08:00
rbetree
eea801bef3 feat(docker): add production-ready container deployment 2026-02-19 17:53:48 +08:00
rbetree
cc48a02676 refactor: 对原本的过长style.css进行拆分 2026-01-24 23:20:05 +08:00
rbetree
ca09df835d fix: 修复githubactions的书签文件选择逻辑 2026-01-24 23:00:14 +08:00
rbetree
50a416ef8e feat: 微调样式和配色 2026-01-24 22:02:13 +08:00
rbetree
b457b26c04 feat: 首页添加时间和todo模块 2026-01-22 15:08:33 +08:00
rbetree
e7a4547027 fix: 给侧边栏submenu-header添加一致的过渡动画 2026-01-21 19:48:05 +08:00
rbetree
1625f7342c feat: 调整页面顶部区域&重构项目页热力图&优化markdown内容页 2026-01-21 19:21:51 +08:00
rbetree
280d376bac feat(templates):新增 Markdown 内容页支持
新增 template: content:构建期使用 markdown-it 将本地Markdown 渲染为 HTML(禁用 raw HTML/图片),并按MeNav的URLscheme白名单策略对链接做安全降级
2026-01-20 18:23:32 +08:00
rbetree
f773b9e290 feat: 收紧 gap/padding 2026-01-19 22:34:11 +08:00
rbetree
58f1f16a7c refactor(ci): 去除ci工作流的prettier格式检查 2026-01-17 22:24:41 +08:00
rbetree
c6937429b8 feat(ci): 支持禁用 GitHub Pages 部署
为 GitHub Pages 部署步骤添加条件判断,通过 ENABLE_GITHUB_PAGES 变量控制
2026-01-17 21:10:02 +08:00
rbetree
06bbf3336c chore: 排除文档文件的格式检查 2026-01-17 02:35:07 +08:00
rbetree
0c6b3a68e1 refactor: 重构侧边栏布局,新增独立子菜单面板
Fixes: #36
2026-01-17 02:01:50 +08:00
rbetree
1049566937 feat(theme): 新增主题模式配置,支持跟随系统
- 新增 site.theme.mode 配置(dark/light/system)
- 支持 prefers-color-scheme 系统主题跟随
- 用户手动切换后停止跟随并持久化

ref #36
2026-01-17 00:59:05 +08:00
rbetree
d19c4da51d fix(icons): faviconV2 加入 drop_404_icon=true 参数避免404占位图以触发回退
- helpers:faviconV2Url / faviconFallbackUrl 统一追加 drop_404_icon=true
- runtime:新增站点的 faviconV2 com/cn URL 同步追加该参数
- docs:更新模板与 helper 文档示例
- test:新增用例防止参数回归
2026-01-16 22:52:39 +08:00
rbetree
0e154bc43e fix(cli): dev/dev:offline Ctrl-C 退出防重入并支持二次强制退出 2026-01-16 20:51:10 +08:00
rbetree
87d1f0244c chore: 引入统一日志模块,统一 cli 输出 2026-01-16 20:36:24 +08:00
rbetree
f2f59108a0 chore: 提交时自动格式化代码
- 安装 husky (^9.1.7) 和 lint-staged (^16.2.7)
- 配置 pre-commit hook 自动运行 Prettier
- 创建 .prettierignore 排除不需要格式化的文件
2026-01-16 16:34:47 +08:00
rbetree
89c1c0330b refactor: 统一错误处理机制
- 引入 ConfigError/TemplateError/BuildError/FileError 与 wrapAsyncError,统一错误输出
- generator 入口接入 wrapAsyncError,确保命令行执行路径一致
- 兜底逻辑使用 instanceof,保留 BuildError/TemplateError 上下文信息
- 合并格式化提交(仅缩进/换行调整)
2026-01-16 16:34:46 +08:00
rbetree
1a90f8fbe3 refactor: 模块化重构 generator 和 runtime 2026-01-15 22:12:52 +08:00
rbetree
bcfa6e6316 feat: 优化书签工作流步骤 2026-01-07 21:42:00 +08:00
rbetree
8f81b430b9 feat(extension): 缩减配置注入并输出 menav-config.json
- 构建:生成 dist/menav-config.json 供扩展按需加载
- 页面:menav-config-data 仅注入扩展元信息(configUrl/pageTemplates/icons/homePageId/allowedSchemes)
- 运行时:模板判定优先 pageTemplates,兼容旧 cfg.data[pageId].template
- 文档:更新 README 的扩展接口说明
2026-01-07 19:35:20 +08:00
rbetree
a3465fe4a1 fix: 模板/组件扫描显式排序以保证构建确定性
- loadHandlebarsTemplates:对 templates/layouts 与 templates/components 的 .hbs 列表先 filter+sort 再注册 partial
- 避免 fs.readdirSync 在不同文件系统/平台下返回顺序不一致导致的潜在产物漂移
2026-01-07 17:48:57 +08:00
rbetree
efd1683e2b feat(router): 支持?page=深链接&错误路由回退
- 导航/子菜单 href 统一为 ?page=<id>[#<slug>],支持复制/新开直达
- 启动时解析 ?page= 并同步导航高亮;子菜单跳转可组合 hash 定位分类
- 输入无效 pageId 时自动纠正 URL 到首页(replaceState,避免“内容回退但地址栏仍错误”)
- 构建生成 dist/404.html:将 /<id>(或 /<repo>/<id>)回跳到 /?page=<id> 并保留 hash
2026-01-07 17:29:48 +08:00
rbetree
1d158aabd7 feat: 将卡片悬浮提示固定在卡片下方或上方 2026-01-05 23:16:28 +08:00
rbetree
3e78332b54 style: 优化移动端ui逻辑与交互一致性
- 移动端布局:站点卡片统一两列;卡片改为横排左对齐,标题/描述省略防溢出
- 移动端留白:缩短分类卡片与页面边缘的左右间距,扩大可用宽度
- 搜索交互:搜索框常驻置顶;搜索按钮未删除仅隐藏;移除“搜索面板”切换/遮罩逻辑,按钮点击仅聚焦输入框
- 顶部栏:搜索框与菜单按钮同排;菜单按钮磁贴与搜索框风格/高度更契合;加入 safe-area 适配并修复横向溢出
- 侧边栏:移动端限制宽度并隐藏横向溢出,避免撑出右侧
- 磁贴统一:右下角主题/分类按钮在移动端与桌面端统一为同款磨砂卡片风格(含 safe-area 偏移)
2026-01-05 22:40:02 +08:00
rbetree
ccd18f5ac5 feat: 移除移动端的站点卡片悬停提示功能 2026-01-05 15:56:21 +08:00
rbetree
8a1b6a2d90 refactor: 去除顶部进度条&恢复滚动条 2026-01-04 22:44:16 +08:00
rbetree
a9275ffc6d feat: 搜索框聚焦时发光 2026-01-04 22:21:21 +08:00
rbetree
82d6341c00 chore: 使用 Prettier 统一代码风格 2026-01-04 21:07:07 +08:00
rbetree
5ae8e99795 fix(ci): format-check-changed 兼容缺失 revision range
- diff range 缺失时自动补全 git 历史(unshallow/depth fetch)
- range 仍不可用时回退为 HEAD 变更文件列表,避免 CI 因浅克隆直接失败
2026-01-04 20:52:30 +08:00
rbetree
48609b86de feat: 分类锚点&质量检查&依赖治理
- 分类生成唯一 slug,模板/子菜单/滚动/扩展定位统一使用 data-id
- lint 覆盖 src/scripts/test,CI 增量格式检查
- 清理冗余依赖,升级 esbuild,overrides 修复审计项
- 补充单测并更新修复清单
2026-01-04 20:39:42 +08:00
rbetree
3d9363a550 fix: 重命名 favicon helper 避免与 sites.faviconUrl 同名冲突
将 Handlebars helper `faviconUrl(url)` 更名为 `faviconV2Url(url)`,解决自定义字段 `sites[].faviconUrl`
在模板中被误解析为 helper(无参调用)导致的渲染崩溃。

- helper:faviconUrl -> faviconV2Url
- 模板:site-card 中调用同步更新

BREAKING CHANGE:
自定义模板如使用 `{{faviconUrl url}}` 生成 faviconV2 地址,需要改为 `{{faviconV2Url url}}`。

Fixes: #32
2026-01-04 19:18:14 +08:00
rbetree
9929f60170 fix: 加固链接/图标安全与版本一致性;sync-articles 对齐 best-effort
- 模板与运行时统一做 URL scheme 白名单校验(不安全降级为 #),并清洗 icon class;分类标题/新增分类改用 DOM API 避免 innerHTML 注入
- sync-articles 主入口异常不再返回非 0 退出码,避免阻断 build/deploy
- window.MeNav.version 改为从 meta menav-version/配置自动读取,避免写死版本
- 文档/配置:新增 security.allowedSchemes 配置说明
2026-01-04 18:24:01 +08:00
rbetree
4cc10dd2b2 feat: 减少渲染阻塞并压缩静态资源
- 移除首页副标题固定 Quicksand 外链字体,改为跟随全站字体变量
- 字体配置新增 fonts.preload(preload+onload 非阻塞加载,含 noscript 回退)
- Font Awesome CSS 改为 preload+onload 非阻塞加载,降低 render-blocking
- 构建阶段使用 esbuild 压缩 dist 的 style/script/pinyin-match(无 esbuild 时回退为直接复制)
- 同步更新文档说明与更新日志
2026-01-04 17:03:16 +08:00
rbetree
2bebefbfe8 feat: 添加站点卡片悬停提示功能
- 为所有站点卡片添加 data-tooltip 属性,包含完整的标题和描述信息
- tooltip 显示逻辑:
  * 鼠标悬停在整个卡片上即可触发(触发区域大,操作自然)
  * 跟随鼠标移动,实时更新位置
  * 智能边界检测,避免 tooltip 超出视口范围
  * 鼠标移出时自动隐藏
- 解决文本截断问题,用户可通过悬停查看完整内容

实现:
- 模板层:在 site-card.hbs 中为卡片添加 data-tooltip 属性
- 交互层:在 script.js 中实现 tooltip 的创建、显示、移动和隐藏逻辑
- 样式层:通过 CSS 类控制 tooltip 的可见性和位置

Issue: #31
2026-01-03 18:03:50 +08:00
rbetree
3473aaebd7 feat: 新增 icons.region 配置项&修改 favicon 加载超时机制&修复去除硬编码
- 新增 icons.region: com | cn 配置项,允许用户选择优先使用国内源或国外源
  - com: 优先 gstatic.com,失败回退 gstatic.cn
  - cn: 优先 gstatic.cn,失败回退 gstatic.com
- 修改 favicon 加载超时判断机制
  - 自定义 faviconUrl: 5秒超时后显示回退图标
  - 自动 favicon: 每次尝试3秒超时,最多等待6秒
- 更新配置文档和默认配置示例
- 去除卡片模板中的url硬编码
Issue: #31
2026-01-03 17:03:45 +08:00
rbetree
87b4cea290 feat: 重构搜索框样式 2026-01-02 23:02:02 +08:00
rbetree
0e151156df feat: 优化各层级折叠与标题样式
- 优化完善各层级下的折叠样式;桌面端隐藏,悬浮动画等
- 优化各层级标题;固定标题前的图标宽度,对齐标题
2026-01-02 20:16:18 +08:00
rbetree
30d50ebcd7 fix: 修复外部资源、图标模式与嵌套交互(#30)
Fixes: https://github.com/rbetree/menav/issues/30

- Font Awesome:bootcdn→Cloudflare cdnjs
- favicon:gstatic `.com` 失败自动回退 `.cn`
- `icons.mode`:修复 `site.yml` 配置未生效(提升到顶层)
- 站点级图标覆盖:支持 `faviconUrl` / `forceIconMode`(优先级:`faviconUrl` > `forceIconMode` > `icons.mode`)
- 折叠交互:恢复二级分组折叠按钮(桌面端悬停显示)
- 新标签页:递归补齐多级 `sites.external` 默认值
2026-01-02 18:09:20 +08:00
rbetree
d2ceeb674f refactor: 调整文章页卡片并排数 2025-12-28 19:40:38 +08:00
rbetree
4eea833f20 feat: 调整字体 2025-12-28 19:28:04 +08:00
rbetree
0f0c0a6163 docs: 更新文档 2025-12-28 14:36:28 +08:00
rbetree
387cd2492e feat: 页面模板差异化改进 + 配置优化 + 兼容清理 (#29)
- 首页判定:navigation 第一项
- 模板:page/projects/articles/bookmarks/search-results
- bookmarks:update: YYYY-MM-DD | from: git|mtime
- articles:RSS 聚合只读条目 + 分类聚合 + 影子写回结构
- projects:repo 卡片 + 可选热力图 + 自动抓取元信息
- 工作流:构建前 sync + schedule 定时刷新
- 移除兼容:config.yml/config.yaml、navigation.yml、home 特例
- 迁移说明:config/update-instructions.md
2025-12-28 00:22:54 +08:00
rbetree
1475a8a0d3 fix: 加固扩展配置注入并缓存 getConfig
- configJSON 注入转义 </script,避免脚本块被提前终止(潜在注入)
- getConfig 解析结果缓存,避免重复 JSON.parse;支持 getConfig({ clone: true }) 返回副本
2025-12-26 15:23:44 +08:00