From 52ad7497e877bb6eb86a9dc0f98815b40635db3d Mon Sep 17 00:00:00 2001 From: toom1996 Date: Sun, 23 Aug 2026 22:26:37 +0800 Subject: [PATCH] update --- .workbuddy/memory/2026-08-23.md | 53 ++++++++++++++++ .workbuddy/memory/MEMORY.md | 7 +++ src/components/ComingSoon.astro | 6 +- src/components/Index.astro | 19 +++--- src/components/Item.astro | 10 +-- src/components/RunwayLooks.astro | 89 ++++++++++++++++++--------- src/components/pages/articles.astro | 6 +- src/components/pages/brands.astro | 4 +- src/i18n/config.ts | 14 +++-- src/i18n/dictionary.ts | 19 +++++- src/i18n/utils.ts | 4 +- src/layouts/Layout.astro | 72 ++++++++++++++-------- src/lib/routes.ts | 18 +++--- src/pages/cn/shows.astro | 94 ++++++++++++++++++++--------- src/pages/shows.astro | 14 +++-- 15 files changed, 301 insertions(+), 128 deletions(-) create mode 100644 .workbuddy/memory/2026-08-23.md diff --git a/.workbuddy/memory/2026-08-23.md b/.workbuddy/memory/2026-08-23.md new file mode 100644 index 0000000..f353fbe --- /dev/null +++ b/.workbuddy/memory/2026-08-23.md @@ -0,0 +1,53 @@ +# 2026-08-23 工作日志 + +## routes.ts 命名优化:PATH → ROUTES +- 用户觉得 `PATH` 命名不合适(问该叫 `router` 还是 `route`)。 +- 决策:`router` 语义错误(无路由匹配/分发能力);`route` 单数不准(它是路由集合);最终改为 **`ROUTES`**(复数,最准确,且契合 `routes.ts` 文件名)。 +- 落地:大小写敏感地把全站大写 `PATH` 改为 `ROUTES`(共 10 个文件、~28 处),**未触碰** `` SVG 标签(小写)。另把 `routes.ts` 内 `href`/`clientHref` 的参数 `path` → `route`,注释"路径"措辞统一为"路由"。 +- 涉及文件:src/lib/routes.ts、src/layouts/Layout.astro、src/components/{ComingSoon,Index,Item,RunwayLooks}.astro、src/components/pages/{brands,articles}.astro、src/pages/{shows,cn/shows}.astro。 +- 验证:`npm run build` 通过(BUILD_EXIT=0);全站 `\bPATH\b` 残留 0。 + +## ⚠️ 重要:上一轮"ArticleArchive 重构"在磁盘上未落地 +- 本会话核对发现:`src/components/ArticleArchive.astro`、`src/components/pages/BrandIntro.astro`、`src/pages/en/brands/[name].astro` 均**不存在**;`src/pages/en/runway-looks/index.astro` 仍用 ``,`RunwayLooks.astro` 仍在。 +- git status 仅 `src/components/Item.astro` 为未提交修改,无上述新文件(untracked 应出现却无)。 +- 结论:上轮对话的重构改动(含记忆写入)都未持久化到磁盘,疑似会话沙箱重置。后续若要继续品牌页重构,需从现状(`RunwayLooks` 仍为主组件)重新执行,不能假设 ArticleArchive 已存在。 +- **用户已手动删除**上一轮品牌页相关尝试,原话"感觉设计的不太好"。**结论:放弃 ArticleArchive 那套重构方向,不再主动重做。** 若日后重提品牌页,需先明确用户想要的设计方向(旧方案已被否定),不要默认沿用 ArticleArchive 方案。 + +## 「All Shows」改为「全部的 runway」+ 品牌筛选弹窗改语言切换器风格 +- 用户给的截图是白底小三角箭头朝上的下拉列表(类语言切换器),要求: + 1. 把 "All Shows" 改成 "全部的 runway"(中英混排,按用户原话,en/cn 都用同一句)。 + 2. 弹窗按图里风格重做。 +- **文本改动**(共 6 处): + - `src/i18n/dictionary.ts` key 从 `'All Shows': { cn: '全部走秀' }` 改成 `'全部的 runway': { cn: '全部的 runway' }`(en/cn 都显示同一文案)。 + - `src/i18n/utils.ts` 注释里的示例 key 同步。 + - `src/layouts/Layout.astro` 导航链接 `t('All Shows')` → `t('全部的 runway')`。 + - `src/pages/shows.astro` / `src/pages/cn/shows.astro`:`` → `title="全部的 runway — Portfolio Studio"`,h1 同步。 + - `src/components/RunwayLooks.astro` h1 同步。 +- **弹窗重做**(`.showsmodal` 块): + - 范围:`src/pages/cn/shows.astro` 与 `src/components/RunwayLooks.astro`(**注意:`src/pages/shows.astro` 没有弹窗**,是内联展开列表,不动)。 + - 视觉:从「重型居中弹窗 + 黑边 + 黑底 mask」改成「轻量顶部下拉(pt-[14vh] 居中靠上)+ 透明 mask(仍保留点击关闭)+ 浅边框(border-black/10)+ 顶部小三角箭头(`::before` + `rotate(45deg)`)+ 软投影」。 + - 输入框/A-Z 按钮/列表行统一更轻量(移除重边框、改 hover 灰色背景 `hover:bg-black/5`)。 + - footer 改为 `justify-between`:左小灰字「已选 X / 最多 5 个」+ 右确认按钮。 + - 保留 `max-w-[460px]`、`max-h-[72vh]`、`pointer-events-none/auto` 控制层级(mask 和 panel 可点击,root 透传)。 +- **弹窗功能(未改)**:搜索、A-Z、多选 5 个、确认按钮逻辑全部保留。 +- 验证:`npm run build` BUILD_EXIT=0;curl 页面验证包含新文案与 `rotate(45deg)` 编译进 CSS。 +- **重要陷阱**:PowerShell `.Contains()` 对 UTF-8 中文匹配会返回 False(假阴性),以后验收 HTML 含中文应改用 `curl | Select-String` 或 `Select-Object -First 1 -ExpandProperty Matches`。 + +## 「全部的 runway」header 导航下拉菜单(占位假数据,仅预览) +- 用户最初说"加个下拉菜单看效果",我误加在了页面 h1 大标题上;**用户纠正:是要加在 header 导航栏的「全部的 runway」链接上**。 +- 改动: + - `src/layouts/Layout.astro`:把 header 导航里的 ``「全部的 runway」包成 `relative` 容器 + Alpine `x-data="{open,current,menu}"`(menu 8 条假 runway 季:全部的 runway / Spring-Summer 2026 / Fall-Winter 2025 / Resort 2026 / Pre-Fall 2025 / Couture FW25 / Menswear SS26 / Menswear FW25)。**触发方式为 hover**(用户对齐语言切换器要求改的):外层容器 `@mouseenter/@mouseleave` 控制显隐、按钮只保留 `:aria-expanded`;并给菜单加 `before:` 透明桥接层(`before:-top-2` 覆盖 `mt-2` 缝隙)避免 hover 在箭头与菜单间断开;`@click.outside`/`@keydown.escape.window` 仍保留关闭。caret 旋转 180°,选中项 `font-bold`。菜单项目前 ``(占位,点了只跳 /shows,不筛选)。 + - 三处 h1 下拉(之前误加的)已全部撤销并删除 `.runwaydd*` 样式:`src/pages/cn/shows.astro`、`src/pages/shows.astro`、`src/components/RunwayLooks.astro`。 +- 依赖:header 下拉用 Alpine,靠 `@astrojs/alpinejs` 集成全局自动 start(语言切换器同机制),故全站页面都能用。 +- 验证:`npm run build` BUILD_EXIT=0;产物 `dist/client/cn/shows/index.html` 含 `展开 runway 列表` 与 `Menswear`(假数据),`runwaydd` 为 0(h1 下拉已干净移除)。预览服务器指向 `dist/client`(`python -m http.server 8090 --directory dist/client`)。 +- **注意**:用户明确"先假数据看效果",所以下拉**尚未接通真实筛选**。下一步若生效,需把 menu 接到真实季/年份维度或直接调 `loadPage`。 + +## Layout.astro 用 getI18n(t) 补全 footer / 脚本翻译 +- 用户要求"看看 layout 里有没有能用 getI18n 优化的地方"。排查发现 header 导航已全用 `t()`,但 footer 与一处脚本大量硬编码英文未走翻译。 +- 字典 `src/i18n/dictionary.ts` 新增:`Color Studio Tools / AI Color Trend Generator / Photo Swatch Extractor / Upload / Reset B&W Theme / Default`、manifesto 长文(key=英文原文)、`Hi / Logout / Language`。 +- Layout.astro 改动: + - footer 模板区包 `t()`:Color Studio Tools、AI Color Trend Generator、Photo Swatch Extractor、Upload、Reset B&W Theme、Default、manifesto 长文、重复版权行(line 219,与 line 246 的 `t()` 一致化)、语言切换器 `aria-label={t('Language')}`。 + - **脚本区** `Hi`/`Logout`:最初误用 `{t('Hi')}` 写进打包型 `