bigcode
|
3f87153ce3
|
feat: PC 端容器宽度统一 80rem(1280px),五站均超 1200px
- 五主题 --container 令牌统一为 80rem(原 launchai 72 / ledger·devai 64 / findai 56)
- loading 骨架、alternatives/comparison 视图页容器同步放宽
- 新增 verify-widths.ts 实测脚本(1440 视口下断言容器 1280px)
|
2026-09-16 02:35:12 +08:00 |
|
bigcode
|
05440ffb5b
|
feat: 服务器迁移后的全量演进(依赖升级/安全审计/设计统一/截图/SEO 底座化)
在原仓库历史之上同步本服务器上的全部演进:
- 迁移至新服务器并重建 PG 数据库 + ddnc 开发域名绑定
- 全部依赖升级至最新(Next 16.3.5 / React 19.3 / better-auth 1.7.5 / Drizzle 0.45 / TS 7),
overrides 消除已知 CVE,安全审计 19 项发现全部修复闭环
- 设计统一:各站宽度 token(--container + site-container)、classic hero 重设计、
头部换行修复、页面过渡与 View Transitions
- 截图功能:api.adx9.com 截图服务接入(ow=800 本地化 webp、cf=1、去重/限流/占位图)
- SEO 底座化:canonical/hreflang/sitemap/JSON-LD/robots 全部收进 core,新站自动继承
- 加载体验:五站五形态路由骨架(data-theme 切换、shimmer 微光、延迟淡入)+
过滤 useTransition 交叉淡入淡出(card-enter 错峰入场)
- 构建:experimental.cpus 限流防 PG 连接打满;清理死组件链
|
2026-09-15 18:19:53 +08:00 |
|
AI Directory Platform
|
0eed5183b2
|
feat: 本地 codex 为五站生成品牌 logo 与 favicon
- 每站独立的 SVG 品牌资产(public/icon.svg favicon + public/logo.svg 横版
lockup),由本地 codex CLI 按各站设计语言手工矢量绘制:
· AI Stack:海军蓝渐变 + 层叠方块(SaaS)
· LaunchAI:橙渐变 + 上升火箭(社区)
· The AI Ledger:墨黑方形 + 衬线 L + 双细线(报纸)
· DevAI.tools:深底绿色 >_ 终端提示符(CLI)
· findai:紫底放大镜 + 光点(极简搜索)
- header 品牌区:字母方块 → 生成的 icon.svg 图标(img)
- 生成器:public 目录纳入重建保留清单(codex 品牌资产不再被清空),
favicon 改为已存在则不覆盖
- 验证:10 个 SVG XML 有效、五站 header 图标全部加载、favicon 200
|
2026-09-10 12:09:41 +00:00 |
|
AI Directory Platform
|
e382f2d4c4
|
fix: header 控件区布局抖动清零(CLS 修复)
- ModeToggle:旧实现在 isClient 前完全不渲染(SSR 无按钮 → hydrate 后
凭空多出 40px)。改为恒渲染固定 40px 按钮:挂载前显示 Sun 占位图标,
挂载后切换当前主题图标(动画保留)
- UserMenu:isPending 时渲染 24px 小圆(与终态 135px 差距大)。改为
与未登录终态同尺寸骨架:Sign in 透明文字(带 muted 底色块)+
Sign Up 半透明胶囊,右缘与终态精确对齐,占位色跟随各站主题
- SSR HTML 验证:首帧即含 Toggle theme 占位按钮 / Select language /
UserMenu aria-hidden 骨架(curl 实证)
- 逐帧截图验收:commit 时刻与 hydrate 后 header 右上角布局一致;
Language/Toggle x 坐标全程稳定
|
2026-09-10 09:29:17 +00:00 |
|
AI Directory Platform
|
c50b5a6c5e
|
fix: 进度条触发时机提前到点击瞬间(覆盖全部导航)
- 根因:此前靠 history.pushState 触发,但 App Router 在导航提交期
(数据加载完成后)才调用它——点击到提交之间的加载期进度条不出现;
View Transitions 的旧页快照还会遮住提交后的一闪
- 修复:document 级 click 捕获(站内 <a> 点击瞬间触发,先于框架逻辑
与 VT 快照)+ history API 兜底(popstate/程序化导航)+ 4s 超时保护
- 回归:顶部导航/footer 链接/语言切换(程序化导航)三类全部触发
|
2026-09-10 08:47:03 +00:00 |
|
AI Directory Platform
|
935062393c
|
feat: 导航体验——顶部进度条 + 页面切换过渡
- NavigationProgress:顶部 3px 主题色进度条(拦截 history API 触发,
pathname 变化后冲刺 100% 并淡出;跟随深浅主题)
- PageTransition:页面内容容器以 pathname 为 key 重挂载,播放
page-enter 进入动画(淡入 + 轻微上移 0.3s),消除切换生硬感
- 站内链接(LocaleLink/Header/Footer/Section)切换到 next-view-transitions
的 Link,支持 VT 的浏览器叠加原生整页淡入淡出(不支持时自动降级)
- prefers-reduced-motion 用户禁用全部动效
- 回归:进度条出现/隐藏、page-enter 动画、VT CSS 注入、zh 站生效、
多页导航 0 pageerror
|
2026-09-10 08:27:05 +00:00 |
|
AI Directory Platform
|
55f7ea5a04
|
feat: /en/* 改为直接 404(URL 即语言,无默认语言别名)
- 设计契约变更:/ 与 /* 英文站、/zh 与 /zh/* 中文站、/en 与 /en/* 非法路径
直接 404(品牌 404 页),不再 307 规范化到无前缀形式
- proxy rewrite 到内部不存在路径渲染 not-found(404),URL 保持原样
- LanguageSwitcher 同步修复:切英文生成无前缀路径(此前产生 /en/ 会撞 404)
- 回归:/en/* 全部 404;/、/login、/zh/* 全部 200;语言切换双向闭环正常;
mock 登录正常
|
2026-09-10 07:39:16 +00:00 |
|
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 |
|