Menghuan1918
162c16ec32
feat(file-icon-theme): 可选彩色图标主题接线(懒加载 chunk + 设置开关 + i18n)
- 新 chunk `file-icons`(`lib/client-file-icons.js`,255 kB / gzip 90 kB):把数据表
注册成 `registerFileIcon` 描述符——按 glyph+color 归并,563 条规则 → 约 250 条注册;
目录规则只走 `folderNames`(只认领列出的目录,未列出的仍用内置 glyph)。
- `src/client/file-icon-theme.ts`:pref → loadChunk → 注册/注销,generation 守卫
丢弃「切换中途落地」的加载;chunk 拉取失败只 log,保持内置 glyph。
- pref `fileIconTheme`(默认 `'builtin'`,未知值按 builtin 处理)+ 设置页
「文件 → 文件图标」下拉(内置单色 / 彩色品牌图标)。
- chunk 名同步四处(chunk-loader / bundle-route / tsdown / manifest-consistency)+
`bundle-route.spec`;tsdown 为该 chunk 加 react-icons ESM alias——否则整包打进
6.4 MB,alias 后 255 kB。
- i18n:6 个新 key 镜像到全部 19 份词典(zh/en 之外),locale 键集守护通过。
- 皮肤契约:指南 §12 增豁免条款(品牌色是内容非 chrome,仅限该懒加载 chunk),
AGENTS §5 同步;`tests/theme.spec.ts` 新增边界用例(核心图标模块零颜色字面量、
核心不静态 import 该 chunk)。
- 测试:`tests/file-icon-theme.spec.tsx` 7 例(loader 六态 + 真实数据三表注册);
prefs 新增默认值/解析用例;builtins / prefs / plugin-shape / smoke 夹具补字段。
- 全量 `pnpm test` 失败集与 main 基线逐条一致(5 文件 / 26 例预存环境失败),
新增用例全绿;typecheck / lint / build / check:consumer-types 全通过。
2026-09-08 21:43:28 +08:00
..
2026-09-04 20:28:35 +08:00
2026-08-18 20:29:14 +08:00
2026-09-03 20:29:50 +08:00
2026-08-27 21:44:04 +08:00
2026-09-03 20:00:08 +08:00
2026-08-26 18:33:52 +08:00
2026-08-15 00:28:59 +08:00
2026-09-03 12:04:35 +08:00
2026-08-21 23:49:13 +08:00
2026-08-12 18:27:28 +08:00
2026-08-20 02:09:36 +08:00
2026-08-11 19:28:48 +08:00
2026-08-11 19:28:48 +08:00
2026-09-08 21:43:28 +08:00
2026-09-08 21:43:28 +08:00
2026-08-29 15:31:05 +08:00
2026-09-01 18:23:28 +08:00
2026-09-04 14:13:34 +08:00
2026-09-03 20:00:08 +08:00
2026-09-03 20:29:59 +08:00
2026-09-08 21:24:03 +08:00
2026-08-29 15:31:13 +08:00
2026-08-21 01:28:17 +08:00
2026-09-03 12:04:35 +08:00
2026-09-07 23:51:10 +08:00
2026-09-01 23:05:26 +08:00
2026-09-07 23:51:06 +08:00
2026-09-03 17:32:04 +08:00
2026-09-03 20:00:08 +08:00
2026-08-11 11:16:36 +08:00
2026-09-03 12:04:35 +08:00
2026-09-08 21:43:28 +08:00
2026-09-08 21:24:03 +08:00
2026-09-03 12:04:35 +08:00
2026-09-04 20:28:35 +08:00
2026-09-02 10:55:03 +08:00
2026-09-04 22:08:02 +08:00
2026-09-03 12:04:35 +08:00
2026-08-18 18:05:01 +08:00
2026-08-22 22:50:13 +08:00
2026-08-29 15:31:16 +08:00
2026-09-03 12:04:35 +08:00
2026-09-04 22:08:02 +08:00
2026-08-23 02:50:37 +08:00
2026-08-16 23:35:57 +08:00
2026-08-16 23:35:57 +08:00
2026-08-29 15:31:08 +08:00
2026-09-03 12:04:35 +08:00
2026-09-03 10:42:56 +08:00
2026-09-03 10:42:56 +08:00
2026-08-16 23:35:57 +08:00
2026-08-12 01:16:20 +08:00
2026-08-24 17:54:33 +08:00
2026-09-02 21:43:34 +08:00
2026-09-01 16:01:34 +08:00
2026-08-21 23:41:33 +08:00
2026-09-03 12:04:35 +08:00
2026-08-15 15:05:06 +08:00
2026-09-01 16:01:34 +08:00
2026-09-08 21:43:28 +08:00
2026-08-13 10:26:57 +08:00
2026-09-02 23:15:19 +08:00
2026-09-06 21:53:49 +08:00
2026-08-24 12:05:14 +08:00
2026-08-23 22:02:47 +08:00
2026-09-03 20:00:08 +08:00
2026-09-03 10:42:56 +08:00
2026-09-03 12:04:35 +08:00
2026-09-04 22:08:02 +08:00
2026-08-18 01:22:28 +08:00
2026-09-03 12:04:35 +08:00
2026-08-18 01:22:28 +08:00
2026-09-03 19:59:00 +08:00
2026-09-03 10:32:34 +08:00
2026-09-02 10:27:43 +08:00
2026-08-14 14:53:03 +08:00
2026-09-03 12:04:35 +08:00
2026-08-22 23:19:17 +08:00
2026-09-02 23:13:57 +08:00
2026-08-11 11:22:28 +08:00
2026-09-03 20:00:08 +08:00
2026-08-16 23:35:57 +08:00
2026-08-26 21:40:32 +08:00
2026-08-16 23:35:57 +08:00
2026-09-03 19:59:00 +08:00
2026-09-08 21:43:28 +08:00
2026-09-08 21:43:28 +08:00
2026-08-16 23:06:44 +08:00
2026-08-21 00:48:16 +08:00
2026-09-03 20:00:08 +08:00
2026-09-06 23:46:46 +08:00
2026-09-03 10:00:13 +08:00
2026-09-06 10:37:53 +08:00
2026-08-13 01:39:59 +08:00
2026-09-03 12:04:35 +08:00
2026-08-23 23:44:18 +08:00
2026-09-02 23:20:17 +08:00
2026-08-16 16:24:28 +08:00
2026-09-03 19:59:00 +08:00
2026-09-03 12:04:35 +08:00
2026-08-24 01:19:43 +08:00
2026-09-03 12:04:35 +08:00
2026-09-03 12:04:35 +08:00
2026-08-22 00:15:06 +08:00
2026-09-03 20:00:08 +08:00
2026-09-06 00:59:03 +08:00
2026-09-06 00:59:03 +08:00
2026-09-01 16:01:34 +08:00
2026-09-03 20:00:08 +08:00
2026-09-08 21:43:28 +08:00
2026-09-02 23:26:04 +08:00
2026-08-21 18:15:49 +08:00
2026-08-22 15:34:05 +08:00
2026-09-03 12:04:35 +08:00
2026-08-13 09:06:55 +08:00
2026-09-03 12:04:35 +08:00
2026-09-02 21:43:34 +08:00
2026-09-04 20:28:35 +08:00
2026-09-03 12:04:35 +08:00
2026-09-03 12:04:35 +08:00
2026-08-26 21:40:32 +08:00
2026-09-03 12:04:35 +08:00
2026-08-29 15:49:35 +08:00
2026-08-27 21:44:32 +08:00
2026-09-03 12:04:24 +08:00
2026-09-08 21:43:28 +08:00
2026-08-21 01:28:17 +08:00
2026-08-27 21:44:04 +08:00
2026-08-18 23:23:17 +08:00
2026-08-24 01:36:29 +08:00
2026-08-20 18:28:57 +08:00
2026-08-21 01:28:17 +08:00