切换外观
Fold Time Machine visual language
以下视觉规范记录原版。A/B/C 三种后续实验分别探索空间、时间和液体表达,具体假设与边界见 EXPLORATIONS.md,不受原版矩形布局与材质选择限制。
Scene and theme
早晨自然光下的桌面,用户拿着咖啡回看两周里发生的事情。采用温暖纸白与墨绿文字,像一本可操作的时间笔记。Product register;中性色为主,数据颜色有明确语义。
Palette
使用 OKLCH。底色 oklch(0.97 0.008 95),表面 oklch(0.99 0.005 95),文字 oklch(0.28 0.025 155),次级文字 oklch(0.49 0.018 150)。主操作墨绿,当前时间与差异用陶土色。Pinboard 分别用灰绿、暖杏、灰蓝、灰紫区分内容类别;相同条目的色彩跨时间稳定。
Typography
系统 sans,中文使用 PingFang SC fallback。正文14px、说明12px、段落标题16px、日期24px;数字与 JSON 用系统 monospace。标题克制,不把工具做成海报。
标题是首层信息,读完应能判断是否需要继续看。优先写对象与一项关键事实,例如「API本月预算5200元已批准」「旧机筛选与导出验证通过」。不把修复后的事项继续写成故障,不混淆预测、建议和已批准金额。时间节点同样直接交代本批变化;标题不承担讲故事、制造悬念的作用。
Layout
顶部轻量品牌与故事入口;主体为输入记录、份额画布、检查器。底部固定感的时间轴与播放控制。详情不使用弹窗。画布使用完整矩形,事项沿 state 的排序从左上开始排列,留白排在最后,不参与事项的优先顺序。子层独立预算,超出卡片可容纳的文字在右侧显示。
Components and motion
统一小圆角按钮、朴素 tabs、细线分隔、轻量标签。不使用卡片侧彩条、渐变字或玻璃效果。
注意力转移是这份原型的核心动效。同一 ID 跨帧保持空间连续,位置与份额通过 transform 移动缩放,文字与状态在同一位置交接。合并只连接数据中明确的来源与去向;倒放合并时沿原路径分开,不据此增加业务上的 split 操作。进入子层时,以所选父项为视窗向内放大;返回时收回该父项,在上一层重新定位。子层仍是独立的 64 份预算。
帧间过渡约1400ms,下探与返回约1600ms;慢动作将时长乘以1.8。使用 cubic-bezier(.42,0,.28,1) 平缓起步,中段移动,接近终点时柔和收住;旧标题保留到来源已被辨认,再与新标题交接。自动播放在落定后至少留2200ms阅读,不让加速播放挤掉理解终态的时间。其他文案仅作200ms轻淡入,份额数字直接呈现真实终值,不滚动虚构中间值。只使用 transform / opacity,不动画 width、height、top、left。过渡可被下一次操作打断,不排队;滚动、窗口变化时清理视觉副本。尊重 prefers-reduced-motion,以直接呈现终态替代空间运动。
Prototype scope
保留已经可以回放的原版,并按用户的新要求探索三种结构不同的表达:中央松散纸片、沿时间展开的份额轨迹、Three.js 液体形态。三版共用原故事与状态;切换时保留时刻和层级。数据为内存中的作者编排故事,可直接查看所有状态,尚未连接真实 Agent。
实验以 Agent 向人传递信息的效率与准确性为标准。布局、动效和留白是视觉编码,不是新的判断依据;不以排得整齐、填满屏幕或特效数量作为成功信号。液体体量只辅助感知相对关注,精确份额另由完整预算带与 JSON 表达,不把液滴轮廓伪装成精确面积测量。