AI Directory Platform
|
86d0d9c7ed
|
fix: /en/* 显式规范化重定向进 proxy(底座契约,不依赖 next-intl 内部行为)
- proxy 显式拦截 /en 与 /en/* → 307 到去前缀形式(带 query 保留),
历史或外部 /en/* 链接永远落到规范 URL
- 实测:用户报告的 /en/login 404 在当前部署无法复现(五站均 307→200),
推断为早前构建残缺窗口期的缓存;显式规则使该行为永固可测
|
2026-09-10 06:34:59 +00:00 |
|
AI Directory Platform
|
c00600b9a7
|
fix: 全站 229 个 /en/ 重定向链接清零(SEO 重定向链 + 交互修复)
- 根因 1:LocaleLink 手动拼 ${locale} 前缀,英文站产生 /en/... 链接,
再被 middleware 307 打回无前缀形式(每页最多 60+ 个重定向链)
- 根因 2:next-intl 的 Link 在 locale prop === 当前 locale 时透传 href
不做前缀化(4.14 行为),无法作为修复载体
- 修复:
· LocaleLink 重写为确定性实现(原生 Link + 显式 as-needed 前缀规则:
en 无前缀 / zh 带 /zh)
· ThemeHeader/ThemeFooter/Section 同样确定性前缀
· 12 个文件的 router.push/replace(${locale}/...) 全部迁移 next-intl
useRouter(zh 下 push /tools 自动变 /zh/tools,不再丢 locale)
· Link→LocaleLink 批量转换(admin/导航/工具表等 15 文件)
· 修复衍生 bug:16 处模板字符串 href 被转成字面量(href="...\${...}")
- 回归:五站×13 页 0 个 /en/ 链接、0 个字面量 href;zh 页 30 链接全部带
/zh 前缀;点击链路 0 次 /en/ 请求
|
2026-09-10 04:35:57 +00:00 |
|
AI Directory Platform
|
442ce3a003
|
fix: 五站双模式色彩系统(浅/深各 10 组合全部可读)+ 硬编码色清零
- 五站各定义完整浅色+深色两套 token(background/foreground/card/secondary/
muted/border/input/primary/ring),data-theme 挂 <html>(覆盖全部路由),
.dark 由 next-themes 切换按钮驱动;devai-tools 默认深色(env 可配)
- 根因修复:data-theme 双重挂载(html + AuthLayout/ThemeChrome)导致
auth 子树被浅色 token 覆盖、深色不可读 —— 只保留 html 一处
- FormShell 硬编码色清零:gradient 白卡片→bg-card、minimal 白底/灰输入/
紫按钮→token、editorial 纸白/neutral→token、terminal 深色内联→token
(深浅自动适配,形态保持)
- FormLabel 硬编码 #9393A3 → text-muted-foreground
- 修复 data-theme double-mount 后 label 深字深底不可读(用户报告的问题)
- 回归:10 组合(5 站×浅深)label 对比度全部达标;五站 mock 登录全部 OK
|
2026-09-10 03:39:19 +00:00 |
|
AI Directory Platform
|
3fddde470b
|
feat: 五站五种登录页设计(去 shadcn 默认味)+ 语言路由确认
- FormShell 重写为六种布局变体,五站各用一种:
· AI Stack = glass 深蓝渐变全屏 + 玻璃拟态浮动卡片
· LaunchAI = gradient 橙色渐变全屏 + 白色大圆角卡片
· The AI Ledger = editorial 报纸头版:双细线报头(日期/品牌/标语衬线居中)
+ 下划线输入 + 方角大写 tracking 黑按钮
· DevAI.tools = terminal 深色终端窗口(三色标题栏 + $ devai.tools auth --login)
+ 等宽输入 + 绿底黑字命令按钮
· findai = minimal 纯白居中 + 大圆角浅灰输入 + 紫色按钮
- 输入框/标签/社交按钮按 data-theme 形态变化(auth 路由注入 data-theme)
- 修复 FormShell 各变体根元素缺 w-full(被 auth flex 容器挤压成 1/3 宽)
- 回归:五站构建 OK / mock 登录 OK
|
2026-09-09 20:06:10 +00:00 |
|
AI Directory Platform
|
6baf0246d2
|
feat: 深度设计五站视觉语言 + 语言路由修复
- 语言路由:localeDetection 关闭,/ 固定英文、/zh 固定中文,URL 决定语言
(不再按 cookie/Accept-Language 自动跳转;语言切换器显式切换不受影响)
- 五站独立视觉语言(data-theme 驱动的设计系统层):
· AI Stack:深蓝渐变 Hero + 统计条 + 卡片左色条 hover(专业 SaaS)
· LaunchAI:橙色渐变 Banner + 斜切底边 + 暖白底(活力社区)
· The AI Ledger:黑色报头日期条 + 衬线字体 + 直角 + 双细线 + 报纸排版(媒体)
· DevAI.tools:全站深色 + 等宽字体 + 终端 Hero + 扫描线纹理 + 系统状态条(终端)
· findai:纯白极简 + 紫色聚焦光圈 + 无界卡片(搜索引擎)
- 修复 :first-of-type 误伤(hero 样式收敛到专用 class)
|
2026-09-09 19:22:58 +00:00 |
|
AI Directory Platform
|
5cc4195d68
|
fix: 语言切换全面修复 —— 品牌层/主题首页/详情区块/404 全量 i18n(zh 矩阵 13/13)
- 站点品牌双语:每站 brandZh(品牌名/标语/hero/导航/页脚/搜索占位)由生成器写入
站点 messages 的 zh 覆盖;SiteChrome 改为 async getTranslations 按语言渲染
- 五套主题首页接线 siteHome/hero 命名空间(新增 wire-theme-i18n.py 一次性接线脚本,
仅处理组件函数体、hook 自动插入、hero 用 th 命名空间)
- 详情页 Use cases/Good for/FAQ/reviewCta、用例与合集索引与详情、提交页、
对比页、Alternatives 表头与 FAQ 全部走 next-intl
- 404 双语言:locale 内走 next-intl,根级按 Accept-Language
- 修复 zh.json 中 84 处 zhXxx 旁挂键归位 + en.json 残留清理(i18n 694 键一致)
- 回归:/zh 下 13 页全中文无英文残留、无横向溢出;五站 /zh lang=zh 全部正确
|
2026-09-09 16:59:52 +00:00 |
|
AI Directory Platform
|
f4f48f7293
|
fix: 评论流程两个断点(mock 登录 cookie 透传 + 评论后 ISR 缓存失效)
- mock-social 500:route handler 里 headers() 不可写,session cookie 无法落浏览器。
改为 auth.api.signInEmail({ asResponse: true }) 并把 Set-Cookie 显式透传给响应。
浏览器验证:mock 登录后有 session cookie,get-session 返回演示用户。
- 评论提交后详情页仍显示旧评分(ISR 1h):submitReview/deleteMyReview/setReviewStatus
增加 revalidatePath(tools/[slug] + rankings + 首页)。
浏览器验证:提交评论后 'Based on N reviews' 即时 2→3。
- 全链路回归:登录→写评论(星级/正文/优缺点)→提交出现→聚合更新→Helpful 计数 全部 PASS
|
2026-09-09 09:24:28 +00:00 |
|
AI Directory Platform
|
14af0aaa3a
|
feat: 四项体验修复(字号/品牌登录模板/第三方登录/免邮箱验证)
① 全局字号提升一档:body 基准 16.8px,14 个核心组件 99 处 text-xs/text-sm 放大
② 五站五套登录模板:FormShell 品牌分栏布局(左品牌色侧栏+右表单),
每站独立 accent(近黑/橙红/纸墨棕/终端绿/紫),站点字标替换 Toolso.AI Logo;
AuthLayout 简化为容器,布局职责下沉 FormShell
③ 第三方登录按钮:未配置 OAuth 凭据时显示 Google/GitHub 按钮,
走 /api/auth/mock-social 一键创建演示 session(生产配置凭据后自动 403 切真实流程);
按钮重设计为全宽方形(替换胶囊 Button)
④ 开发阶段免邮箱验证:better-auth databaseHooks 注册即 emailVerified=true,
sendOnSignUp 仅生产开启;注册成功直接回跳原页面(跳过 check-email)
回归验证:字号 16.8px / 五站品牌色各异 / mock 登录闭环(投票→登录→回原页)/
注册免验证直接进站(emailVerified=t + 跳首页)全部 PASS
|
2026-09-09 06:02:16 +00:00 |
|
AI Directory Platform
|
3a2adbec76
|
feat: 交互体验专项优化(7 项)
- 登录回跳贯通:邮箱登录成功后按 ?redirect= 回到原页面(投票/收藏/评论的登录拦截闭环)
- 收藏按钮的登录跳转补上 redirect 参数
- 营销路由组 loading.tsx 骨架屏(客户端导航即时反馈)
- 投票按钮/收藏爱心按下缩放微交互
- 移动端抽屉滑入动画(keyframes + animate-drawer-in)
- 工具列表空状态加'清除搜索与筛选'按钮(en/zh)
- 品牌 404 页(图标 + Back to home / Browse tools 双入口)
|
2026-09-08 20:17:11 +00:00 |
|
AI Directory Platform
|
ed64eb9e76
|
fix: 浏览器体验验收发现的两个问题
- 移动端 (<640px) header 横向溢出 84px:语言切换器在 sm 以下隐藏,三站溢出归零
- 工具详情页 meta description 过短(36ch):改为 tagline+description 组合截断 155ch
|
2026-09-08 20:05:39 +00:00 |
|
AI Directory Platform
|
4a1a034386
|
refactor: 主题系统 → monorepo 五个独立网站
- packages/core: @aidir/core 底座库(src/pages 页面组件体 1:1 镜像路由树 / kit 站点外壳工厂 / content/blog / scripts)
- sites/: 5 个独立 Next.js 网站(ai-stack / launchai / the-ai-ledger / devai-tools / findai)
- 每站独立 package.json / next.config / tailwind / messages / .env / 构建
- src/app 约 56 个薄路由文件(re-export 底座页面 + 内联路由段配置 revalidate/dynamic)
- src/site/brand.tsx 站点配置 + src/site/home.tsx 站点首页(createMarketingLayout / createHomePage 工厂)
- generate-site.mjs: 站点生成器(新增网站 = SITES 加条目,零 Core 修改)
- start-all-sites.sh: 一键启动 3001-3005
- next-config.mjs: 底座统一 Next 配置工厂(next-intl + MDX + standalone)
- 五站共享同一套 PostgreSQL / Better Auth / Admin(设计文档 §42)
- 验证: 5 站 build OK / typecheck OK / 55 路由冒烟 200 / 品牌-内容-截图 差异确认 / 登录-投票-重复检测 e2e PASS
|
2026-09-08 19:19:33 +00:00 |
|