diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..d38aa906b0614a2716ee5838778a1378304f2c10 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,21 @@ +.git +.github +.husky +.vscode +.idea + +node_modules +dist +dev +coverage +.nyc_output + +docs +*.log +npm-debug.log* + +.specstory +.spec-workflow +.serena +.claude + diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..1014ba78880c899e842b397cb89a878be4671f7d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..19b8fe80cf349f546c54624861a1951e6f34c00d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,35 +1,21 @@ -*.7z filter=lfs diff=lfs merge=lfs -text -*.arrow filter=lfs diff=lfs merge=lfs -text -*.bin filter=lfs diff=lfs merge=lfs -text -*.bz2 filter=lfs diff=lfs merge=lfs -text -*.ckpt filter=lfs diff=lfs merge=lfs -text -*.ftz filter=lfs diff=lfs merge=lfs -text -*.gz filter=lfs diff=lfs merge=lfs -text -*.h5 filter=lfs diff=lfs merge=lfs -text -*.joblib filter=lfs diff=lfs merge=lfs -text -*.lfs.* filter=lfs diff=lfs merge=lfs -text -*.mlmodel filter=lfs diff=lfs merge=lfs -text -*.model filter=lfs diff=lfs merge=lfs -text -*.msgpack filter=lfs diff=lfs merge=lfs -text -*.npy filter=lfs diff=lfs merge=lfs -text -*.npz filter=lfs diff=lfs merge=lfs -text -*.onnx filter=lfs diff=lfs merge=lfs -text -*.ot filter=lfs diff=lfs merge=lfs -text -*.parquet filter=lfs diff=lfs merge=lfs -text -*.pb filter=lfs diff=lfs merge=lfs -text -*.pickle filter=lfs diff=lfs merge=lfs -text -*.pkl filter=lfs diff=lfs merge=lfs -text -*.pt filter=lfs diff=lfs merge=lfs -text -*.pth filter=lfs diff=lfs merge=lfs -text -*.rar filter=lfs diff=lfs merge=lfs -text -*.safetensors filter=lfs diff=lfs merge=lfs -text -saved_model/**/* filter=lfs diff=lfs merge=lfs -text -*.tar.* filter=lfs diff=lfs merge=lfs -text -*.tar filter=lfs diff=lfs merge=lfs -text -*.tflite filter=lfs diff=lfs merge=lfs -text -*.tgz filter=lfs diff=lfs merge=lfs -text -*.wasm filter=lfs diff=lfs merge=lfs -text -*.xz filter=lfs diff=lfs merge=lfs -text -*.zip filter=lfs diff=lfs merge=lfs -text -*.zst filter=lfs diff=lfs merge=lfs -text -*tfevents* filter=lfs diff=lfs merge=lfs -text +* text=auto + +*.js text eol=lf +*.json text eol=lf +*.md text eol=lf +*.yml text eol=lf +*.yaml text eol=lf +*.css text eol=lf +*.html text eol=lf +*.sh text eol=lf + +# Husky hooks 必须使用 LF +.husky/* text eol=lf + +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +assets/preview_dark.png filter=lfs diff=lfs merge=lfs -text +assets/preview_light.png filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..887c75fcec7c0fbf915e8ebca2b9b52b701fbfb0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# 依赖相关 +node_modules/ +npm-debug.log* + +# 构建输出 +dist/ + +# IDE/编辑器配置 +.vscode/ +.idea/ +.specstory +.cursorindexingignore +.cursor +.spec-workflow/ +.serena/ + +# 系统文件 +.DS_Store +Thumbs.db + + +# 个人笔记 +docs/ + +# 测试相关文件 +dev/ +jest.config.js +tests/ +coverage/ +.nyc_output/ +jest-*.json +jest.results.json +.eslintcache +tests/screenshots/ +tests/fixtures/ +*.test.js +*.spec.js + +# SpecStory explanation file +.specstory/.what-is-this.md +AGENTS.md +/.claude +/discord-style-navstation diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000000000000000000000000000000000000..3d9b75819cc01fe79923ae3e2a21a87f59071897 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + +# 进入仓库根目录,避免在子目录执行 git commit 时找不到脚本/依赖 +cd "$(dirname "$0")/.." || exit 1 + +# Windows Git Bash 下如果需要中文输出不乱码,可在个人环境中设置终端编码/locale +# 这里不强制设置 LANG/LC_ALL,避免在 Linux/macOS 上因 locale 不存在而产生警告 + +# 优先使用项目内的 lint-staged,避免依赖全局 PATH +./node_modules/.bin/lint-staged diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000000000000000000000000000000000..851a24fce79c8102bdb103535dfe6437e9357925 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,29 @@ +# 依赖和构建产物 +node_modules/ +dist/ +dev/ + +# npm lockfile(避免提交时产生大面积格式化 diff) +package-lock.json + +# Git 配置文件 +.gitattributes +.gitignore + +# Husky hooks(shell 脚本,不需要 Prettier 格式化) +.husky/ + +# 缓存文件 +*.cache +.cache/ + +# 日志文件 +*.log + +# 临时文件 +*.tmp +*.temp + +# 文档文件(保留排版灵活性,避免代码示例被格式化) +**/README.md +src/**/*.md diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000000000000000000000000000000000000..132f5de69bf995ec8a392b12d0d5d2ddb583b080 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "printWidth": 100, + "singleQuote": true, + "trailingComma": "es5", + "tabWidth": 2, + "useTabs": false +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..19eaf541e0277240ee4bb3fb4697211af7a2942f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,252 @@ +# 更新记录 + +> 本文件维护 MeNav 历史更新记录。README 不再维护"更新记录"章节。 + +### 2026/01/04 + +**1. 首屏性能优化** + +- 移除首页副标题固定 Quicksand 外链字体,改为跟随全站字体 +- 字体外链 CSS 支持 `fonts.preload: true`(`preload + onload` 非阻塞加载,含 `