Skip to content

v0.4.0

Latest

Choose a tag to compare

@jcoder-stack jcoder-stack released this 12 Sep 07:13
· 7 commits to main since this release

设计系统换回 shadcn 原版,只保留自家的蓝;SheetForm 重做;修掉一个让 vite dev 下所有管理页停在骨架屏的老问题。

修复

vite dev 管理页不水合#21)。tls-trust.tsproxy 子路径顶层静态 import "node:fs";starter 的 @/auth 桶文件把路由守卫和服务端 runtime 放在一起导出,于是每个页面都把 proxy 拖进客户端模块图,浏览器里整棵 @/auth 求值失败,根组件永远水合不了。自 0.1.2 起就是这样,SSR 骨架屏掩盖了它。

现在 node 内建模块在调用时经 process.getBuiltinModule 取——installExtraCa 只在服务端被调,没有该 API 的运行时(Node < 22.3)本来也没有 CA API,照旧返回 "unsupported"CULTURE_COOKIE 挪到 auth 子路径(proxy 继续 re-export,公共 API 不变)。examples/starter 客户端构建的四条 "externalized for browser compatibility" 警告随之清零。

主题:退回 shadcn 原版 + 自家的蓝

app-theme.css 381 → 300 行。shadcn blue preset 原样采用,相对原版每主题只差三个 token--primary--primary-foreground--ring。自家这支蓝在暗色下变亮(0.55 → 0.57),一个值同时能当填充、链接与焦点环,两个主题都过 WCAG AA;preset 那支在暗色下压在近黑页底上只有 2.24:1。

保留的只有原版没覆盖的东西:CJK 字体回退栈、--text-sm 13px(唯一的密度杠杆)、status-* / brand-* 语义色、降低动效偏好块。删掉的:自定义刻度、510/590 字重、逐档负字距、四级 surface 阶梯、五层模态阴影、整个 :lang(zh) 覆盖——它们修的都是自定义排版自己造出来的问题。账在 docs/theme-spike.md

SheetForm

  • 标题领衔记录:新建态给宾语(「新建图书」),编辑/查看态以记录本身为标题、次级标识(邮箱、作者 · 日期)放副标题。useAbpSheet 新增 title / subtitle 解析器。
  • 四条关闭路径(Esc、右上角 ×、遮罩、取消)收敛到一道闸门:有未保存改动先问「放弃未保存的修改?」。useAbpSheet 上报 dirty
  • 标「选填」而非红星,由表单层决定(OptionalMarks context):录入表单多数必填、标少数派;查询表单全是选填、不标。红色留给错误。
  • 查看态渲染成定义列表(divide-y rounded-lg border bg-card、值右对齐、行高与表格同源),不再是一排禁用输入框。每个字段给出自己的 display;未接的字段回退到禁用控件,不会碎。
  • 说明文字放标签下、控件上;控件下方永远留给错误。底栏单行右对齐,取消用 ghost。

表格

  • 行高改为声明值(h-10 / 紧凑 h-8),此前由行尾操作按钮撑出,同一档里带菜单的行比纯文本行高 12px。
  • col.bool 默认渲染普通文字(否为 muted),只有传了 trueStatus 才出徽章。徽章的含义是「处于某状态」,isDefault / isPublic 是属性——此前同一个「是」在角色页是蓝色、在用户页是绿色。用户页 isActive 仍显式传 success

文档

DESIGN.md 785 → 236 行。token 数值只在主题文件里,文档讲「相对 shadcn 原版改了什么、为什么」、原版没覆盖的产品约定、以及每条定制层规则的一行理由。四份分析文档随行:docs/design-review.mdsheetform-review.mdsheetform-design.mdtheme-spike.md

升级注意

  • useAbpSheettitle / subtitle 可选,不传维持「新增 / 编辑 / 查看」。
  • col.bool 的默认观感变了:想保留徽章,显式传 trueStatus
  • required-mark.tsx 改名 optional-mark.tsxform 块新增 alert-dialog 依赖,jc-abp add form 会自动带上。
  • 若你覆盖过 app-theme.css 里的自定义刻度类(text-2xs 之外的自定义档)或 :lang(zh) 规则,它们已不存在。