scrawl

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Scrawl captures

Scrawl 录制内容

Scrawl records someone's screen, voice, clicks and red ink, then packs the result into a
.scrawl
folder (a bundle). They send it to show you a problem instead of describing it, so the capture is the bug report. Read it closely before you answer, and don't ask them to explain again what the capture already shows. If something is unclear, look closer with
scrawl zoom
first.
Scrawl 会记录某人的屏幕、声音、点击和红色墨迹,然后将结果打包到一个
.scrawl
文件夹(bundle)中。他们会把它发给你来展示问题,而不是描述问题,因此该录制内容就是 bug report。回答前请仔细阅读;如果录制内容已经展示了相关信息,不要再让对方解释一遍。如果有不清楚的地方,先用
scrawl zoom
仔细查看。

What a paste looks like

粘贴内容的样子

text
[scrawl 0:33 · OpenCode “Settings” · /Users/me/Library/Application Support/scrawl/captures/scrawl-1792432139176.scrawl]
Cropped to: the activity in OpenCode (full frames in frames-full/)
- #1 (0:04) [clicked “New tab”] “Command T makes a new session, but here it should make a tab.”
- #2 (0:07) “No, it doesn't.”
- #3 (0:10) ⚑ “It says command shift B makes a new tab.”
- #4 (0:18) clicked (x 0.51, y 0.93)
  • The first line has the length, the app and window recorded, and the bundle path.
  • Each
    #N (M:SS)
    line is a keyframe: what they did at that moment in brackets, then what they said while it was on screen. A line with no quote has the action alone.
  • ⚑
    means they flagged the moment on purpose.
    ⟨Name⟩
    means the app reported a new screen. Lines starting
    ·
    are events or values the app logged.
  • Optional lines near the top:
    For session:
    (where Scrawl sent it),
    Screen:
    with app context,
    Note:
    , and
    Cropped to:
    .
  • Coordinates are fractions of the captured area, from the top left (x 0.51 is just right of centre).
When you answer, refer to moments the same way, as in "#3 (0:10)", so the person can find them on the contact sheet.
text
[scrawl 0:33 · OpenCode “Settings” · /Users/me/Library/Application Support/scrawl/captures/scrawl-1792432139176.scrawl]
Cropped to: the activity in OpenCode (full frames in frames-full/)
- #1 (0:04) [clicked “New tab”] “Command T makes a new session, but here it should make a tab.”
- #2 (0:07) “No, it doesn't.”
- #3 (0:10) ⚑ “It says command shift B makes a new tab.”
- #4 (0:18) clicked (x 0.51, y 0.93)
  • 第一行包含录制时长、所录制的 app 和窗口,以及 bundle 路径。
  • 每个
    #N (M:SS)
    行都是一个关键帧:方括号中表示对方在该时刻做了什么,后面则是画面停留期间说的话。没有引号的行只包含操作。
  • ⚑
    表示对方有意标记了该时刻。
    ⟨Name⟩
    表示 app 报告了一个新屏幕。以
    ·
    开头的行是 app 记录的事件或值。
  • 顶部附近可能有以下可选行:
    For session:
    (Scrawl 将其发送到了哪里)、
    Screen:
    (附带的 app 上下文)、
    Note:
    和
    Cropped to:
    。
  • 坐标是录制区域的分数,以左上角为原点(x 0.51 表示略靠右于中心的位置)。
回答时,请用相同方式引用各个时刻,例如“#3 (0:10)”,以便对方能在 contact sheet 上找到它们。

Reading a bundle

读取 bundle

  1. Look at
    contact-sheet.png
    in the bundle first (it's often attached already). It shows every keyframe in time order, left to right and top to bottom, each with a
    #N M:SS
    badge.
  2. Read the transcript lines next to it. Speech recognition mishears names and code terms, so trust the screen when the two disagree.
  3. Open
    frames/frame-NN.png
    for any keyframe you need at full size (
    frame-03.png
    is #3). When the summary says
    Cropped to:
    , the uncropped screens are in
    frames-full/
    .
What the drawings mean:
  • Red strokes, circles, underlines and arrows are the person's marks, and they point at the problem. Marks drawn on the same screen all show on one keyframe.
  • A ripple around the cursor shows a click or tap, and a finger trail shows a swipe.
  • A glowing red trail that tapers off is the laser pointer, used to point without leaving a mark.
Other files:
scrawl.json
is the full manifest (keyframes,
marks
with shape and box,
events
,
transcript.words
with times, app
context
, and
autocrop
).
recording.mp4
or
recording.mov
and
audio.wav
are the source media. A
.media-pending
file means the video is still being copied from another Mac.
  1. 首先查看 bundle 中的
    contact-sheet.png
    (通常已经作为附件提供)。它按时间顺序、从左到右且从上到下显示每个关键帧,每个关键帧都带有
    #N M:SS
    标记。
  2. 接着阅读旁边的转录行。语音识别可能会误听姓名和代码术语,因此两者不一致时,应以屏幕内容为准。
  3. 如需以全尺寸查看某个关键帧,请打开
    frames/frame-NN.png
    (
    frame-03.png
    对应 #3)。当摘要显示
    Cropped to:
    时,未裁剪的屏幕画面位于
    frames-full/
    中。
这些绘制的含义:
  • 红色笔触、圆圈、下划线和箭头是对方添加的标记,用来指出问题。绘制在同一屏幕上的所有标记都会显示在一个关键帧中。
  • 光标周围的波纹表示点击或轻触,手指轨迹表示滑动。
  • 逐渐变细并带有光晕的红色轨迹是激光指针,用于指向某处而不留下标记。
其他文件:
scrawl.json
是完整 manifest(包含关键帧、带形状和边界框的
marks
、
events
、带时间信息的
transcript.words
、app
context
以及
autocrop
)。
recording.mp4
或
recording.mov
以及
audio.wav
是源媒体文件。存在
.media-pending
文件表示视频仍在从另一台 Mac 复制。

The scrawl CLI

scrawl
CLI

scrawl
is the Scrawl app's own binary. If
command -v scrawl
finds nothing, use
/Applications/Scrawl.app/Contents/MacOS/scrawl
(or the same path under
~/Applications
), and tell the person they can put it on PATH with Install in Scrawl's Settings › Agents. It runs only on the Mac with Scrawl installed. Anywhere else, read
contact-sheet.png
,
frames/
and
scrawl.json
directly. Every command takes a bundle path, and most default to
latest
, the newest capture. Quote the path, because it usually contains
Application Support
.
scrawl
是 Scrawl app 自带的可执行文件。如果
command -v scrawl
没有找到任何结果,请使用
/Applications/Scrawl.app/Contents/MacOS/scrawl
(或
~/Applications
下的相同路径),并告知对方:可以在 Scrawl 的 Settings › Agents 中使用 Install 将其添加到 PATH。它只能在安装了 Scrawl 的 Mac 上运行。在其他位置,直接读取
contact-sheet.png
、
frames/
和
scrawl.json
。每条命令都接受一个 bundle 路径,大多数命令默认使用
latest
,即最新的录制内容。请使用引号括住路径,因为路径通常包含
Application Support
。

Look closer at a moment

更仔细地查看某个时刻

Use
zoom
when the problem is motion (an animation, a jump, a flicker) or happens between keyframes, or when you can't tell what a mark points at:
sh
scrawl zoom <bundle> --at 0:21                 # a time, M:SS or seconds
scrawl zoom <bundle> --at "the width changes"  # or a phrase they said
scrawl zoom <bundle> --at 0:21 --span 1 --frames 16 --full
It prints the path of a PNG sheet of frames around that moment, the time of each cell, and what was said. Open the PNG and look at it before you act on the feedback.
--span
is the seconds covered (default 2, a quarter of it before the moment),
--frames
the number of cells (default 12), and
--full
shows the whole screen instead of the crop. The cells are numbered from #1 within the sheet, so those numbers aren't keyframe numbers.
当问题涉及运动变化(动画、跳转、闪烁)、发生在关键帧之间,或者你无法判断某个标记指向何处时,使用
zoom
:
sh
scrawl zoom <bundle> --at 0:21                 # a time, M:SS or seconds
scrawl zoom <bundle> --at "the width changes"  # or a phrase they said
scrawl zoom <bundle> --at 0:21 --span 1 --frames 16 --full
它会输出该时刻周围一组帧组成的 PNG sheet 的路径、每个单元格的时间以及当时的说话内容。对反馈采取行动前,请先打开 PNG 并进行查看。
--span
表示覆盖的秒数(默认为 2,其中四分之一位于该时刻之前),
--frames
表示单元格数量(默认为 12),
--full
会显示完整屏幕,而不是裁剪画面。sheet 中的单元格从 #1 开始编号,因此这些编号不是关键帧编号。

Other commands

其他命令

sh
scrawl inspect <bundle>               # summary.md, the text above
scrawl inspect <bundle> --json        # scrawl.json
scrawl frames <bundle> --from 0:04 --to 0:06 [--fps 4]   # plain PNGs of a range; prints their paths
scrawl send <bundle> --session ses_…  # queue the capture into an OpenCode session
scrawl send <bundle> --clipboard      # copy the summary text to the clipboard
scrawl export <bundle> [--out demo.mp4] [--zoom] [--crop auto|full|x,y,w,h] [--size 1920]
  • zoom
    and
    frames
    write into
    <bundle>/zoom/
    . Leave the rest of the bundle as it is, because Scrawl manages those files and cleans them up.
  • send
    without
    --session
    goes to the session the capture was addressed to (the
    For session:
    line), and otherwise to the most recently active session. With a recorded destination it refuses a different
    --session
    unless you pass
    --reroute
    , so check with the person before rerouting.
  • export
    writes one
    .mp4
    with the ink and clicks burned in and the audio in sync (default
    ~/Movies/Scrawl/<bundle>.mp4
    ).
    --zoom
    eases in toward the activity.
    --no-ink
    ,
    --no-clicks
    ,
    --hevc
    and
    --fps
    are also available.
  • Video and audio go to the Trash 7 days after a capture unless the person changed that in Settings. After that
    zoom
    ,
    frames
    and
    export
    can't read the video, but
    frames/
    , the contact sheet and
    scrawl.json
    remain.
  • scrawl <command> --help
    lists every flag, and
    scrawl skill
    prints this guide as the installed version knows it.
sh
scrawl inspect <bundle>               # summary.md, the text above
scrawl inspect <bundle> --json        # scrawl.json
scrawl frames <bundle> --from 0:04 --to 0:06 [--fps 4]   # plain PNGs of a range; prints their paths
scrawl send <bundle> --session ses_…  # queue the capture into an OpenCode session
scrawl send <bundle> --clipboard      # copy the summary text to the clipboard
scrawl export <bundle> [--out demo.mp4] [--zoom] [--crop auto|full|x,y,w,h] [--size 1920]
  • zoom
    和
    frames
    会写入
    <bundle>/zoom/
    。请保持 bundle 的其余内容不变,因为 Scrawl 会管理并清理这些文件。
  • 不带
    --session
    使用
    send
    时,它会发送到录制内容所指定的 session(
    For session:
    行);如果没有指定目标,则发送到最近活跃的 session。已记录目标后,除非传入
    --reroute
    ,否则
    send
    会拒绝使用其他
    --session
    ,因此改道前应先与对方确认。
  • export
    会写入一个
    .mp4
    ,将墨迹和点击操作烧录到画面中,并使音频保持同步(默认路径为
    ~/Movies/Scrawl/<bundle>.mp4
    )。
    --zoom
    会逐渐拉近操作区域。还可使用
    --no-ink
    、
    --no-clicks
    、
    --hevc
    和
    --fps
    。
  • 录制完成后 7 天,视频和音频会移入废纸篓,除非对方在 Settings 中更改了该设置。此后,
    zoom
    、
    frames
    和
    export
    将无法读取视频,但
    frames/
    、contact sheet 和
    scrawl.json
    仍会保留。
  • scrawl <command> --help
    会列出所有 flag,而
    scrawl skill
    会输出当前安装版本中的本指南。