Commit Graph

66 Commits

Author SHA1 Message Date
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
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
4eea833f20 feat: 调整字体 2025-12-28 19:28:04 +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
rbetree
704e895773 feat: 首页由 navigation 首项决定
- 移除 navigation.active 配置项,默认页以 navigation[0] 为准(生成端/前端一致)
- 注入 homePageId;首页渲染用 profile.title/profile.subtitle 覆盖 title/subtitle
- 模板按 homePageId 切换首页/非首页标题 DOM 与 data-editable,避免样式错位
- 更新默认配置与文档;书签导入不再写入 active 字段
- 新增/更新单测覆盖首页规则与 profile 覆盖

BREAKING CHANGE: 不再支持 navigation[].active;通过调整 navigation 顺序设置默认页/首页
2025-12-26 11:04:40 +08:00
rbetree
ac14586845 fix: 修复移动端完整可视 2025-12-23 14:56:45 +08:00
rbetree
ba78c8e564 feat: 微调ui布局 2025-12-23 02:04:55 +08:00
rbetree
03b743e337 refactor: 修改社交链接样式布局 2025-12-22 22:28:28 +08:00
rbetree
7d44930b59 feat: 移除首页顶部欢迎区的 description 2025-12-22 20:34:04 +08:00
rbetree
2b366ae7ca feat: 优化调整卡片样式布局
- 站点卡片改为紧凑布局并统一动态渲染
- 搜索框玻璃拟态与 Ctrl/Cmd+K 聚焦
2025-12-22 19:56:03 +08:00
rbetree
670e73e93c fix: 补齐书签 subgroups 渲染并对齐 README
- 修复 subgroups 生成但不展示的问题(模板渲染 + 前端结构导出)
- 更新 README:配置示例/完全替换策略/多层级说明与 helper 文档,减少重复说明
2025-12-22 02:16:01 +08:00
rbetree
47e4369b09 chore: 安全升级并完善 CI/测试
- 升级 js-yaml 修复生产依赖漏洞
- 新增 CI:lint/test/build
- 增加书签处理单测与可测性导出"- 生成器补充 config/user 缺失提示
- 增加 lint/format/check 脚本与 Prettier 配置
- 统一行尾策略并支持书签确定性输出"
2025-12-22 00:44:51 +08:00
rbetree
7a7bf361e3 fix: 对齐配置策略并加固书签导入
1) src/bookmark-processor.js:加固书签导入
- config/user/ 不存在时先从 config/_default/ 初始化一套完整用户配置(符合“完全替换”策略)
- 优先更新 config/user/site.yml 的 navigation,确保包含 id: bookmarks;失败再兼容旧 navigation.yml
- 无 .html 书签文件时由报错改为警告并跳过,不阻塞流程
- 导航更新日志按结果输出,不再无条件“已更新”

2) config/README.md:修正文档
- 明确配置加载为“完全替换、不合并”
- 补充首次使用建议:复制 config/_default/ 到 config/user/

3) package.json:许可证对齐
- license 从 MIT 改为 AGPL-3.0-only(与 LICENSE/README 对齐)

4) .gitignore:忽略工具目录
- 新增忽略 .serena/
2025-12-22 00:19:44 +08:00
rbetree
cc35e3e7c9 refactor: 修改项目logo 2025-11-09 21:50:31 +08:00
rbetree
3ae40b23d5 feat: 优化书签转换逻辑和分类嵌套结构 2025-11-01 00:19:30 +08:00
rbetree
dd6e688005 fix: 修复书签转换脚本 2025-10-31 00:53:08 +08:00
rbetree
886bc464d1 feat: 新增'分类展开/收起'按钮 2025-10-27 15:01:17 +08:00
coolzr
da1e3fedd6 docs: 更新文档 2025-10-24 01:28:37 +08:00
coolzr
6359829298 fix: 去除 migrate-config.js 久配置迁移工具的支持 2025-10-24 01:26:32 +08:00
coolzr
ad3cba549b feat: 所有页面支持1到4层级的嵌套结构 2025-10-24 00:40:43 +08:00
coolzr
cceb83f9a5 feat: 将导航配置合并到站点配置中
- 将导航配置从独立的 navigation.yml 合并到 site.yml 中
- 更新 generator.js 以优先使用 site.yml 中的导航配置
- 添加回退机制,当 site.yml 中无导航配置时仍支持独立的 navigation.yml
2025-10-23 02:01:46 +08:00
coolzr
139c21ebe4 feat: 优化搜索框样式 2025-10-19 01:49:15 +08:00
coolzr
9e2a8b0da4 feat(readme): 更新文档和配置注释 2025-10-19 01:12:44 +08:00
coolzr
aa264cc727 feat(icons): 添加favicon模式,自动匹配图标
- 新增配置 icons.mode(manual | favicon),默认 favicon,未配置场景下自动生效
- 模板调用 t3.gstatic.com/faviconV2 获取站点图标;加载中显示旋转占位,失败回退至 Font Awesome 图标
- 新增 ifHttpUrl 与 encodeURIComponent,提升模板安全性与可读性
- 搜索索引优先读取 .icon-fallback,保证 favicon 模式下图标类名一致
- 样式新增 .favicon-icon 与 hover 效果,维持卡片观感一致性
2025-10-18 23:50:53 +08:00
coolzr
95398e074a fix: 修复主题偶发渲染错误与闪烁
1. CSS 主题预加载: 浅色变量同时应用到 html.theme-preload,避免首帧读取到暗色变量导致的错色与闪烁
2. transition:
	- 移除会引起首帧抖动的相关transition:侧边栏的 width/transform 和 .content 的 transition
	- 新增作用域类 .with-anim,仅在交互(点击折叠按钮)时启用侧边栏transition,首屏不加载动画
3. 页面与分类卡片动画:
	- 移除 .page.active 的位移动画,保留透明度过渡
	- 移除 .category 的进入动画(opacity:0 + fadeIn),避免分类卡片在切页时产生浮动效果

脚本调整: 在 toggleSidebarCollapse 时添加 documentElement.with-anim,使布局过渡仅在用户交互时生效

Fixes #17
2025-10-18 17:16:15 +08:00
coolzr
354a069cd6 Merge branch 'main' of https://github.com/rbetree/menav 2025-10-14 19:34:51 +08:00
coolzr
6447abef3a feat: 完善MeNav浏览器扩展API规范实现 2025-10-14 19:34:47 +08:00
nsnans
338d0304d1 feat(search): 引入拼音搜索
* add pinyin search

* style(highlight): keep theme-aware background

- restore theme-aware .highlight with --highlight-bg

- add highlight vars for light/dark

chore: load pinyin lib before script.js

- ensure pinyin-match.js loads before script.js to avoid runtime dependency issues

docs: add third-party notice for pinyin-match

- add placeholder notice; replace with upstream license after verification

---------

Co-authored-by: neo <neo@example.com>
Co-authored-by: Maintainer (PR Edit) <maintainer@local>
2025-10-14 03:49:17 +08:00
coolzr
391be05a08 fix: 统一链接打开行为为新标签页打开
- 扩展ensureConfigDefaults函数处理所有页面站点数据
- 修复configJSON数据传递问题
- 确保所有站点默认设置external: true

Closes #14
2025-07-30 00:57:43 +08:00
Zuoling Rong
4c7a5e6a60 feat: 完善MeNav浏览器扩展API规范实现 2025-07-06 23:20:50 +08:00
Zuoling Rong
c72f7fd9f5 feat: 实现MeNav浏览器扩展支持接口
为支持浏览器扩展的HTML替换方案,对原仓库进行以下修改:
- 在generator.js中添加配置数据序列化和嵌入功能
- 在default.hbs中添加配置数据存储元素
- 在site-card.hbs和category.hbs中添加数据属性标识符
- 在script.js中添加全局MeNav对象和API方法
2025-05-22 22:58:02 +08:00
Zuoling Rong
4a5f44bc71 fix: 解决重构后自定义页面问题
1. 添加模板回退机制,当找不到指定模板时自动使用page.hbs通用模板
2. 支持在页面配置中通过template字段指定使用的模板文件
3. 更新配置文件和文档,添加template字段使用说明

Closes #10
2025-05-09 16:14:15 +08:00
Zuoling Rong
fb32f06f19 feat(search): 集成多搜索引擎功能
添加Google、Bing、百度外部搜索引擎集成,支持用户通过搜索框右侧图标选择搜索引擎
2025-05-09 15:06:59 +08:00
Zuoling Rong
c8174012a2 fix: 修复卡片description处理逻辑
- 书签导入时保持description为空
- 所有页面站点卡片的空description显示为URL
2025-05-09 13:35:44 +08:00
Zuoling Rong
6924ce1c51 docs: 添加或修改各目录README文档 2025-05-09 01:09:55 +08:00
Zuoling Rong
4c3c5d23fa refactor: 优化重构后的系统并添加文档 2025-05-09 00:14:28 +08:00
Zuoling Rong
9ea6cb1f09 refactor: 完成Handlebars模板组件化 2025-05-09 00:13:50 +08:00
Zuoling Rong
6474fa3635 refactor: 完成Handlebars模板系统基础集成 2025-05-09 00:12:24 +08:00
Zuoling Rong
7e378c229c feat(scrollbar): 隐藏侧边栏和内容区域滚动条并添加顶部滚动进度条 2025-05-05 23:48:09 +08:00
Zuoling Rong
10ce3e215c fix(bookmarks): 分离书签处理与清理职责,修复清理问题
- 将书签HTML文件的删除操作从 `bookmark-processor.js` 移至Actions工作流。
- `bookmark-processor.js` 现在仅负责解析书签并生成YAML配置。
2025-05-05 22:53:57 +08:00
Zuoling Rong
f3da13035f refactor: 移除旧式双文件配置支持
- 简化配置加载逻辑,仅支持模块化配置
- 移除所有处理旧式配置文件的代码
- 创建配置迁移脚本,便于用户从旧版本迁移
2025-05-05 03:30:13 +08:00
Zuoling Rong
297890315b fix(generator): 修复自定义页面配置不生效问题
- src/generator.js:
    - 修改 `generateHTML` 和 `processTemplate` 函数,根据 `navigation` 配置动态生成所有页面 HTML,不再硬编码特定页面。
    - 修改 `generateNavigation` 函数,添加通用子菜单处理逻辑,支持为任意包含 `categories` 的页面生成子菜单。
- templates/index.html:
    - 移除硬编码的页面 `div` 结构。
    - 使用 `{{ALL_PAGES}}` 占位符动态注入所有页面内容。
- README.md:
    - 更新文档配置说明

Closes #6
2025-05-04 20:23:23 +08:00
Zuoling Rong
dc8f97439e feat: 移除自动添加书签页导航入口的逻辑 closes #5
- 修改了src/generator.js中的loadConfig函数
- 删除了自动向导航添加书签页面入口的代码
2025-05-04 14:41:50 +08:00
Zuoling Rong
e055ea26e5 fix: 侧边栏子菜单默认收起状态
- 删除了自动展开当前活动页面子菜单的代码
- 当用户首次访问网站时,所有子菜单现在默认保持收起状态
2025-05-04 01:53:29 +08:00