Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/cloudflare-deploy.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: WanMi Cloudflare
name: UnUseDomain Cloudflare

on:
pull_request:
Expand Down
32 changes: 20 additions & 12 deletions DESIGN.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# DESIGN.md — WanMi / 玩米
# DESIGN.md — UnUseDomain

> 域名展示与管理系统 · Warm Craft 拟物暖色主题 · v3.0(2026-07-18,配色对齐拟物化风格指南参考图)

Expand Down Expand Up @@ -229,16 +229,22 @@ background: radial-gradient(circle at 0% 0%, color-mix(in oklab, var(--brand) 16

### Brand Mark & Iconography

**品牌 Logo「一线成域」**:藏青线条(#22355E)+ 珊瑚红节点(#FF5C38),固定配色,**不**随 `accent_color` 改色。米白底上藏青 10:1 直接裸放;**深棕侧栏上需奶油底板**
**品牌 Logo(对分圆环)**:圆环沿竖轴对分,左半石墨灰(#3B3E47)+ 右半靛蓝(#233393),固定配色,**不**随 `accent_color` 改色。暖白底上直接裸放;深色侧栏上需奶油底板(`admin.css` 为 `.admin-brand` 提供 `var(--surface)` 底板 + 3px 内边距)

| 场景 | 尺寸 | 说明 |
|------|------|------|
| Header Logo(.brand-icon)| 32×32px | 裸放 |
| Header Logo(.brand-icon)| 32×32px(≤720px 为 28×28)| 裸放 |
| 后台侧栏/登录(.brand-mark-img)| 28×28px | 侧栏加 `var(--surface)` 底板 |
| 加载态(.brand-mark-img)| 34×34px | 裸放 |
| Favicon | 32×32px | 居中优化版 viewBox |
| 页脚(.footer-logo)| 30×30px(≤720px 为 28×28)| 裸放 |
| Favicon | 16/32/48px | 透明底 PNG,另有 6 档 ICO |

资源:`/public/logo.svg` 与 `/public/favicon.svg` 均为**居中 viewBox 版**(`viewBox="98 100 200 200"`),小尺寸下图形饱满居中。`settings.logo_url` 优先,未配置回退 `/logo.svg`。卡片内 `<Star>` = 精品标记,**非**收藏。
资源:全部图标由 `UnUseDomain-svg.png`(1092×1092 透明原图)确定性生成,分两组——

- **透明底**(`unusedomain-logo.png` 512、`favicon-16/32/48.png`、`favicon.ico` 含 16/32/48/64/128/256 六档 PNG 条目):标志裁到包围盒后按 94%(favicon 96%)占比居中,因为 `.brand-icon`/`.footer-logo` 用 `object-fit: contain` 且无底色,原图 16.6% 的留白会让 30px 容器里的标志缩到 20px。
- **白底**(`apple-touch-icon.png` 180、`icon-192/512.png`):iOS 会把透明合成为黑色,PWA `purpose: "any maskable"` 的安全区是 80% 直径圆,故内容分别压到 78% 与 68% 并合成到 #FFFFFF。

缩放在预乘 Alpha 空间做面积平均,避免直通 Alpha 降采样从全透明像素渗出黑边。`settings.logo_url` 优先,未配置回退 `/unusedomain-logo.png`。卡片内 `<Star>` = 精品标记,**非**收藏。

**UI 图标**:lucide 全局 `stroke-width 1.75` 圆头;手写图标补全 `fill="none" stroke="currentColor"`;普通图标禁用珊瑚红。

Expand Down Expand Up @@ -307,7 +313,7 @@ background: radial-gradient(circle at 0% 0%, color-mix(in oklab, var(--brand) 16

### Quick Reference

> WanMi 是部署在 Cloudflare Workers 上的中文域名展示与管理系统。**单一浅色拟物暖调主题(Warm Craft)**:米白纸感底(#f5e9d6)、奶油卡片(#fbf5ea)、皮革深棕主操作(#5a3e2b 实底配白字,前景直接可用)、金色精品(#d4af37,浅底文字用 #7d641c)、深棕墨文字(#2e1e13)。后台侧栏深棕皮革渐变 + 金色 active。字体:Manrope + Cormorant Garamond + Noto Sans SC + IBM Plex Mono。圆角 8pt 网格,动效 ≤300ms 只用 transform/opacity。产品边界:只有域名展示和到期提醒,不含售卖/报价/求购/收藏。
> UnUseDomain 是部署在 Cloudflare Workers 上的中文域名展示与管理系统。**单一浅色拟物暖调主题(Warm Craft)**:米白纸感底(#f5e9d6)、奶油卡片(#fbf5ea)、皮革深棕主操作(#5a3e2b 实底配白字,前景直接可用)、金色精品(#d4af37,浅底文字用 #7d641c)、深棕墨文字(#2e1e13)。后台侧栏深棕皮革渐变 + 金色 active。字体:Manrope + Cormorant Garamond + Noto Sans SC + IBM Plex Mono。圆角 8pt 网格,动效 ≤300ms 只用 transform/opacity。产品边界:只有域名展示和到期提醒,不含售卖/报价/求购/收藏。

### 组件生成提示词速查

Expand All @@ -333,17 +339,19 @@ background: radial-gradient(circle at 0% 0%, color-mix(in oklab, var(--brand) 16

## 附录 A:品牌图标规范

**「一线成域」SVG**:圆弧(域/globe)+ 折线(一线/连接)+ 珊瑚红节点(活力)
**对分圆环**:整圆沿竖轴一分为二,两半各留一道内缺口,合为「UD」的抽象骨架

```
viewBox="98 100 200 200"(居中优化版,logo 与 favicon 统一)
线条: stroke="#22355E" stroke-width="7"(favicon 8)round cap/join
节点: fill="#FF5C38" r="8"(favicon 9)
左半: #3B3E47(石墨灰)
右半: #233393(靛蓝)
权威原图: UnUseDomain-svg.png 1092×1092 透明底,标志包围盒 730×730(占画布 66.8%)
```

- 固定配色,不随 `accent_color`/主题变色
- 米白底裸放;深棕侧栏上加 `var(--surface)` 奶油底板
- `PublicPage` 头部 `settings?.logo_url || "/logo.svg"`;`FeaturedDomainPage` 加载态与后台品牌标统一用 `.brand-mark-img`
- 暖白底裸放;深色侧栏上加 `var(--surface)` 奶油底板
- 无 SVG 版本:标志为栅格原图,全站一律引用 `public/` 下的 PNG/ICO,不要手工描摹 SVG 复刻
- 该标志本身是深色的,深色背景上对比度会下降;站点为单一浅色主题,仅浏览器深色标签栏会受影响
- `PublicPage` 头部 `settings?.logo_url || "/unusedomain-logo.png"`;`FeaturedDomainPage` 加载态与后台品牌标统一用 `.brand-mark-img`

**动态品牌色注入**(`PublicPage.tsx`):`accent_color` 合法 6 位 hex 且**不在旧默认集** `{#2fbf9a, #c4a242, #b89530, #d4b252}` 时才注入 `--brand`;否则回退 CSS 深棕。

Expand Down
10 changes: 5 additions & 5 deletions HANDOFF.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# WanMi HANDOFF
# UnUseDomain HANDOFF

## 最新进度(2026-07-20 · Elegant Green Gold 雅致绿金主题)

Expand All @@ -8,10 +8,10 @@
- 后台:登录页重做为深墨绿场景 + 左右分栏白卡(左品牌介绍区深绿 + 金点缀、右白表单,手机自动单栏);侧栏深墨绿渐变(从 `--brand` color-mix 派生,accent 覆盖时整体跟随),active 为白 10% 底 + 左侧 3px 香槟金短条 + 金图标;概览统计卡白卡 + 顶部语义细线(总数墨绿/展示绿/隐藏灰/精品金)+ 语义数值色;表头米白 `--background-soft`、行悬停 `--surface-hover`。admin.css 的黑金基础层与浅色覆盖层合并为单层。
- 概览 PV/UV 图修复既有 bug:UV 线原用 `var(--ink)`(浅色主题下=白色,白卡上不可见),改香槟金 `--gold-deep` 作第二数据线。
- accent_color 机制重做:新增 `src/client/lib/accent-color.ts`,历史默认色(含黑金 `#d8b638`、暖金 `#c4a242` 等 5 个)视为「未定制」清除覆盖;真自定义色整套派生 brand/strong/hover/bg/bg-strong/border/ring,配 5 项单测。新增迁移 `0022_elegant_green_accent.sql` 把历史默认值归一为 `#133429`(沿 0014 惯例,不动真自定义色)。**远程执行该迁移会把生产 accent_color 从 `#c4a242` 更新为 `#133429`,属主题配套变更。**
- 品牌资产同步:`favicon.svg` 墨绿底白菱金芯;`manifest.webmanifest` theme_color `#133429`;`index.html` theme-color `#f6f5f0`;精品 OG 图由黑底金字改墨绿底金字
- 品牌资产同步:附件已生成 `unusedomain-logo.png`、多尺寸 PNG、`favicon.ico`、Apple Touch Icon 与 PWA 图标;`manifest.webmanifest` theme_color `#133429`;`index.html` theme-color `#f6f5f0`;精品 OG 图使用 UnUseDomain 品牌文字
- CSS 清理:删除 hero-*、header-discover、premium-corner、copy-button、group-tabs、section-kicker、mobile-stats、domain-featured-dot、keyword-pill/domain-keywords、copy-filter-link、contact-modal/contact-list/qr-code、domain-list-head、catalogue-intro、row-details、integration-details、bulk-keywords、status-list、highlighted 等确认死类(TSX 全量交叉验证,含动态拼接 `density-${…}`/`badge-…` 检查后保留活类);棕色系历史阴影(rgba(64,42,20) 等 6 处)与纯黑阴影全部换绿倾向令牌;`--cream-*`、`--glow-gold`、`--gold-muted`、`--premium-fg`、`--ink`、`--foreground` 等死令牌删除;`--fg-3` 补定义(原引用 8 处但从未定义)。app.css 2110→1936 行,前台 CSS 产物 100.63→90.00KB(gzip 17.68→15.85)。
- 已知限制:管理员在站点设置输入过浅的自定义强调色仍可能破坏主按钮白字对比度(schema 仅校验 hex 格式);`--gold-bg`/`--gold-soft`/`--brand-secondary` 等主题 API 令牌暂无 CSS 引用,保留作设计系统接口。
- 生产数据核验(经 Cloudflare MCP 只读查询)发现两处生产侧问题并已随本轮修复:① `site_settings.site_name` 仍是历史品牌 `DOMAIN HUNTER`(copyright 同),新增 `0023_unify_brand_names.sql` 精确匹配修正为 `WanMi` / `© WanMi · 玩米`;② 生产 `/logo.svg`(藏蓝橙点图形)不在 git 中——是上次部署时构建机上未跟踪的本地文件被打进产物,下次从 git 构建部署必然 404 导致页首 Logo 死链,已新增绿金品牌 `public/logo.svg`(与 favicon 同构)补位
- 生产品牌已由 `0026_unusedomain_rebrand.sql` 统一为 `UnUseDomain`,并将 Logo、Favicon 与版权指向仓库内的附件衍生静态资源;旧品牌迁移只作为兼容历史保留
- 部署前备份:本地 wrangler OAuth 过期无法跑 `pnpm db:backup`,改经 Cloudflare MCP 完成增量逻辑备份 `backups/wanmi-20260720-mcp-pre-green-gold.sql`——以 7-17 全量备份为基线,全表 `updated_at` 核验后仅 3 行变更(mx.ooo、site_settings、notification_settings),两份文件合并即完整现状;敏感表(sessions/密码哈希/渠道密文)本次部署零触碰,由 D1 Time Travel 30 天兜底。

## 前序进度(2026-07-18 · Dark Vault 改版 + 国内访问卡顿修复)
Expand Down Expand Up @@ -60,7 +60,7 @@
- 品牌声明句修正:`862 个精选域名` 改为 `N 个域名,覆盖 M 个后缀,其中 K 个精选`(862 是全部,87 才是精选)。
- 生产 `site_settings.accent_color` 已是 `#c4a242` 与 `--gold` 一致,无需变更;`pnpm check` 全绿;桌面/手机/暗色/速览/详情页截图人工复核通过。

## 前序进度(2026-07-17 · wanmi-final-prompt 方案落地)
## 前序进度(2026-07-17 · unusedomain-final-prompt 方案落地)

- 依用户提供的最终优化方案执行,先逐项核实再实施;两项方案内容已过时(列表页 ItemList JSON-LD 与卡片 hover 位移均已存在),一项明确拒绝:LXGW WenKai(楷体风格与目录信息密度矛盾,3MB + font-display:optional 意味着慢网用户白下载还看不到;保持系统中文字体回退)。
- 字体替换:display 字体 Instrument Serif → Cormorant Garamond(tokens/--font-display、fonts.css 由 fetch-fonts 重新生成、og.ts 的 TTF 与 font-family、api.test.ts 同步、旧文件删除、OFL 补齐)。fetch-fonts.ts 新增 EXTRA_TTF:用旧版 UA 请求 css2 拿 gstatic 静态 Regular TTF(290KB,google/fonts 仓库只有 1.1MB 变量字体,resvg 吃静态更稳)。
Expand Down Expand Up @@ -155,7 +155,7 @@
- SEO 已包含详情页 canonical、Open Graph、Twitter Card 和 Product JSON-LD;动态 OG 接口 `/api/public/og/:domain` 返回 1200×630 PNG,并缓存 1 小时。
- `sitemap.xml` 当前包含首页与 87 个精品详情页,共 88 条 URL;速览弹窗仅为精品域名显示“查看详情页”链接。
- 桌面与 390px 手机视口已核验;长域名会换行且没有横向溢出,页脚内容保持居中。
- `pnpm check` 通过:13 个 Vitest 文件、78 项测试全部成功;新增公开链路 Playwright E2E 在本地和 `https://wanmi.org` 均通过。
- `pnpm check` 通过:13 个 Vitest 文件、78 项测试全部成功;新增公开链路 Playwright E2E 在本地和 `https://unusedomain.com` 均通过。
- GitHub `main` 功能提交为 `a82418e`;本次功能验收时的 Cloudflare 生产版本为 `ca31cbfb-9be2-471a-b921-f9ed8d6bf6e7`,生产验收脚本已通过。

## 前序背景
Expand Down
30 changes: 20 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
# 玩米(WanMi)
# UnUseDomain

玩米是部署在 Cloudflare Workers 上的中文域名展示与管理系统。公开站点用于检索、收藏、速览和访问已上架域名;管理后台负责域名、分类、CSV、站点设置、到期提醒、通知、安全与审计日志。前端、Worker API、Cloudflare D1 与 R2 同源部署。
UnUseDomain 是部署在 Cloudflare Workers 上的中文域名展示与管理系统。公开站点用于检索、收藏、速览和访问已上架域名;管理后台负责域名、分类、CSV、站点设置、到期提醒、通知、安全与审计日志。前端、Worker API、Cloudflare D1 与 R2 同源部署。

## 线上环境

- 生产站点:<https://wanmi.org>
- 管理后台:<https://wanmi.org/admin>
- Worker:`wanmi`
- D1:`wanmi-db`(绑定 `DB`)
- R2:`wanmi-assets`(绑定 `UPLOADS`)
- 生产站点:<https://unusedomain.com>
- 管理后台:<https://unusedomain.com/admin>
- Worker:`wanmi`(为避免新建 Worker 后丢失现有 Secrets 与自定义域名绑定,保留此历史生产资源 ID)
- D1:`wanmi-db`(绑定 `DB`,保留现有生产数据
- R2:`wanmi-assets`(绑定 `UPLOADS`,保留现有上传文件
- Cron:每天 `01:00 UTC`,即 `Asia/Shanghai 09:00`
- 当前设计基线:Elegant Green Gold 雅致绿金主题(2026-07-20,由浅色暖金改版)——墨绿为主、暖白为底、香槟金点缀;域名简介为纯手动维护(AI 生成已于 2026-07-17 移除)

权威业务源为 `data/source/WanMi.csv`:859 条有效唯一记录。生产库还保留 3 条历史人工域名,因此线上合计 862 条;本次迁移与发布不得覆盖或归档这 3 条记录。
权威业务源为 `data/source/UnUseDomain.csv`:859 条有效唯一记录。生产库还保留 3 条历史人工域名,因此线上合计 862 条;迁移与发布不得覆盖或归档这 3 条记录。

## 品牌与图标

- 对外品牌、网页标题、管理后台、通知和下载文件名统一使用 `UnUseDomain`;生产域名统一为 `unusedomain.com`。
- 版权文字统一为 `© 2026 UnUseDomain. All rights reserved.`。
- 品牌标志为「对分圆环」:圆环沿竖轴对分,左半石墨灰 `#3B3E47`、右半靛蓝 `#233393`,固定配色,不随 `accent_color` 变化。
- `public/` 下全部图标由同一张 1092×1092 透明原图确定性生成,分两组:`unusedomain-logo.png`(512)、`favicon-16/32/48.png` 与含 6 档条目的 `favicon.ico` 为**透明底**,供页内品牌标与浏览器标签使用;`apple-touch-icon.png`(180)、`icon-192.png`、`icon-512.png` 为**白底**,因为 iOS 会把透明合成为黑色、PWA `purpose: "any maskable"` 需要不透明底并把内容收进 80% 直径的安全区。
- 站点设置通过品牌迁移指向这些静态资源;后台上传的 `logo_url`/`favicon_url` 优先级高于静态默认值。
- Cookie、浏览器存储键、缓存标记与诊断 Header 使用 `unusedomain` 命名;品牌迁移会使旧管理会话失效一次,需要重新登录。

## 产品边界

Expand All @@ -31,7 +40,7 @@
- 暖白背景 `#f6f5f0`、奶油白卡片 `#fefdfa`,品牌主色为深墨绿 `#133429`(hover `#1e6b59`),香槟金 `#c89848` 仅表达精品与重点资产(占比 ≤2%),浅底金色小字一律 `--gold-text #79551f`。
- 主、次、三级文字依次使用 `#1f2a24`、`#5d675f`、`#7e877f`;卡片阴影统一为绿倾向低透明度令牌,禁止纯黑阴影。
- 站点设置 `accent_color` 由 `applyAccentColor` 整套派生(主色/hover/bg/border/ring 同步),历史默认值视为未定制。
- 保留 `prefers-reduced-motion` 与 `prefers-reduced-transparency` 退化;完整规范见 [`design.md`](design.md)。
- 保留 `prefers-reduced-motion` 与 `prefers-reduced-transparency` 退化;完整规范见 [`DESIGN.md`](DESIGN.md)。

## 公开站点

Expand Down Expand Up @@ -116,6 +125,7 @@ pnpm verify:production
- `0015_restore_domain_management_schema.sql`:仅作为历史列名兼容桥,为全新安装准备临时文字列并回填权威 CSV;不会恢复被移除的业务表。
- `0016_remove_registrar_dns_leads.sql`:兼容历史线上和全新安装两种 schema,规范化 `registrar_name`,重建导入暂存表,删除注册商账户、DNS 和求购线索表,并保护分类与通知历史。
- `0017_domain_keywords_field.sql`:为域名和导入暂存记录增加逗号分隔关键词,按中英文逗号与顿号迁移有效简介,同时完整保留原 `description`。
- `0026_unusedomain_rebrand.sql`:统一生产站点名称、Slogan、版权、Logo 与 Favicon,同时保留联系方式、主题色、展示密度和其他管理员设置。

所有远程 Token 只能通过环境变量、CI Secret 或交互式输入提供。不得写入 README、`.dev.vars.example`、Wrangler 配置、构建产物、Issue 或日志;聊天中暴露过的长期凭据应在发布后轮换。

Expand All @@ -132,4 +142,4 @@ tests/ 单元、集成与 Playwright E2E(含 22 张视觉基
docs/ 部署、导入与安全文档
```

详细说明见 [Cloudflare 部署](docs/CLOUDFLARE_DEPLOY.md)、[域名导入](docs/DOMAIN_IMPORT.md)、[安全设计](docs/SECURITY.md)、[设计规范](design.md) 与 [HANDOFF](HANDOFF.md)。
详细说明见 [Cloudflare 部署](docs/CLOUDFLARE_DEPLOY.md)、[域名导入](docs/DOMAIN_IMPORT.md)、[安全设计](docs/SECURITY.md)、[设计规范](DESIGN.md) 与 [HANDOFF](HANDOFF.md)。
Loading