Skip to content

Releases

v0.7.3 — 表面明度统一

Choose a tag to compare

@suzike suzike released this 21 Oct 04:04

左侧栏与顶部偏浅的根因是明度分布:侧栏 L0.976、画布 0.955、卡片 0.988,越接近纯白越装不下彩度。现所有浅色表面收进 L0.90–0.966 一条带(画布≤0.952、卡片≤0.966、侧栏≤0.961),四套预设实测彩度差 ≤0.003。74/74 测试通过。

v0.7.2 — 表面着色统一

Choose a tag to compare

@suzike suzike released this 21 Oct 03:55

所有表面改为统一绝对彩度(0.026×深浅系数),仅在色域上限处让位;浅色卡片降一档获得真彩。12 预设×2 模式:画布/卡片/浮层色相偏差 ≤7°、彩度差 ≤0.009。74/74 测试通过。

v0.7.1 — 深浅可调

Choose a tag to compare

@suzike suzike released this 21 Oct 03:44

配色深浅改为可调滑块(30%–160%),默认 85%;表面着色改为跟随品牌彩度,换配色终于看得出颜色;侧栏顶部常驻该控件。72/72 测试通过。

v0.6.7

Choose a tag to compare

@suzike suzike released this 21 Oct 03:10

桌面端不再覆盖窗口按钮条:工作室整体下移到按钮条下方,40px 完整交还宿主(0.6.5/0.6.6 的自绘标题栏方案作废,它会与宿主标题栏压字、与系统不透明填充撞色)。浏览器端仍整窗贴边。67 条测试 / tsc / 119 令牌全绿。

v0.6.6 — 桌面端窗口控制条不再遮挡工作室工具栏

Choose a tag to compare

@suzike suzike released this 21 Oct 03:02

0.6.5 修方向对了,但桌面端仍然没生效:它靠 User-Agent 里有 Electron 才认出桌面壳,而打包版把 UA 改掉了;同时用 env(titlebar-area-height, -1px) 探测控制条高度——-1px 是非法 padding,浏览器直接丢弃该声明,于是永远读到 0。

修复

  • 换成不可能认错的信号:桌面端 preload 里有 markDocumentPlatform(),会把 process.platform 写到 html[data-platform];网页端从不设置这个属性。检测顺序改为:显式覆盖 → env(titlebar-area-height)(覆盖层存在时 Chromium 才给出真实值)→ data-platform(桌面壳 40px)→ 0。
  • 探测改成双探针:分别用 0px 与 1px 兜底读一次,两次一致才算覆盖层存在,否则判为无覆盖层。非法兜底值导致「看起来像 0」的坑被测试锁住。
  • 检测逻辑从 studio.tsx 抽到 src/client/chrome.ts(detectChromeTop / chromeTopFrom / isViewportAnchored / DESKTOP_STRIP),可以脱离 DOM 单测。
  • isViewportAnchored 会跳过正在播放动画的祖先:宿主弹窗的入场动画带 transform,不能据此判定浮层被收成了面板。

验证

  • 新增 4 条 chrome 单测(浏览器 0 / 桌面 40 / 覆盖层变量优先 / 显式覆盖优先),共 67 条全绿。
  • harness 两个变体各截一张:data-platform=win32 → 40px 标题栏 + 按钮下移;无该属性 → 贴边、无空带。
  • npx tsc --noEmit 通过。

v0.6.4 — 开关看得懂,点得动

Choose a tag to compare

@suzike suzike released this 21 Oct 02:40

预览里的「动效」开关有三份互相打架的 CSS:轨道已经画成品牌色,圆钮却钉在右边,开启态又把它再推 11px,直接跑出 30px 轨道——所以开和关长得一模一样。现在重写成一份定义:34×20 轨道、圆钮左侧起步、开启态在轨道内平移 14px,关闭态是中性轨道。新增 3 条样式测试锁死这个回归,62/62 通过。

v0.6.3 — 不再拖挂 DSH 启动

Choose a tag to compare

@suzike suzike released this 21 Oct 02:36

0.6.3

修「装上这一版以后 DSH 起不来」——根因是 0.6.x 的客户端入口在宿主服务还没就绪时读服务,cordis 4 直接抛错,整个 web boot 被这个插件拖挂;顺带修掉设置行在实机上根本没注册上的问题。

修复

  • 启动失败(阻断级):apply() 里不再裸读 ctx.theme / ctx.locale,改成 ctx.inject(['theme','locale'], …),并给 service() 的属性式兜底加了 try/catch;apply() 整体包一层 try/catch 且只 console.warn,插件再坏也不会带走宿主。此前 Error: cannot get property "locale" without inject 会让 dsh-freestyle-theme 这条 entry 激活失败。
  • 设置行不出现:slots.inject('settings.general.item', …) 必须在插件自己的 apply 作用域里调用;放在 ctx.inject 的嵌套作用域里注册会静默不生效。现在注册在 apply 作用域,主题/语言改为渲染时按需取。
  • ctx.effect(cb) 用法是反的:它立刻执行 cb 并把返回值当 disposer,原先 ctx.effect(() => dispose) 在注册前就把行销毁了。改为监听 dispose 事件。
  • 去掉调试用的 window.__fstDebug 埋点。

验证

  • 实机:rev 重载后 dsh-freestyle-theme 激活、无 “did not activate” 提示;设置 → 通用设置 出现「FreeStyle 主题」行,工作室可打开、预设/模式/中国传统色面板可点。
  • npx tsc --noEmit 通过;node --test "tests/*.test.mjs" 59/59;check:tokens 119 令牌齐全。

v0.6.2 — 对话框可输入、主题可命名

Choose a tag to compare

@suzike suzike released this 21 Oct 02:00

修复两处实机问题:工作室不再落在宿主弹窗的焦点陷阱之外(输入框能正常打字);空名字时不再静默保存成「未命名主题」,并在主题库里支持重命名已保存的主题。

v0.6.1 — 全深色工作室,应用即收起

Choose a tag to compare

@suzike suzike released this 21 Oct 01:56

0.6.1

两处按实机反馈的修正,都在 src/client/studio.tsx。

  • 深色要全深:工作室根节点带上当前配色的 119 个变量,顶栏、图标轨、列表、画布、检查器随预览一起进入深色;切浅色同样整体回浅。
  • 应用后不再挡屏:点「应用到 DSH」后 220ms 自动收起工作室(先看到「已应用到 DSH」),回到设置页即可继续操作,不再留一层全窗浮层。

验证:应用后宿主覆盖变量 120 项仍在、.ft-studio 节点为 0、设置行按钮中心点命中自身;pnpm test 59/59。

v0.6.0 — 可点的工作室

Choose a tag to compare

@suzike suzike released this 21 Oct 01:52

0.6.0

这一版把「看上去能点」改成「真的能点」,并修掉三个会让人以为插件坏了的布局问题。

修了什么

  • 工作室铺满窗口:createPortal 到 document.body,不再被设置行的层叠上下文裁切,也不再透出背后的设置页。
  • 面板可滚到底:检查器原本高 2009px、把页面撑到 1347px,底部的对比度与「一键修复」根本点不到;现在列表/检查器/画布各自内部滚动。
  • 整壳一起换色:119 个令牌的浅/深两套值解析为具体颜色后一次写入 120 项,宿主界面、菜单、弹窗同步变色;切浅色/深色会重算明度骨架。
  • 预览可交互:侧栏切视图、表单开关(真按钮)、输入框可输入、对比分割线可拖(--ft-split)、检查模式逐元素报令牌。
  • 模型徽标取真实值:新增 GET /api/dsh-freestyle-theme/model,取不到才显示「当前模型」。
  • 删除按钮不再被卡片主体盖住:两段确认可正常操作。
  • 窄屏自动收起检查器:≤1080px 变 340px 抽屉,轨道按钮可再打开。
  • 顶栏「保存当前」改成图标按钮。

证据

  • 脚本化点击 12 组场景全部通过(模式、预设、撤销、三视图、预览点击、对比拖拽、检查、缩放、色相、锁、保存、删除、分享、生成→应用、应用、窄屏、修复、Esc)。
  • pnpm test 59/59;pnpm check:tokens:119 令牌、12×2×21 对、分享码无损。

升级注意:包名即加载器 id,已有安装请替换 ~/.dsh/plugins/dsh-freestyle-theme 后重启 DSH。