[GH-ISSUE #257] RFC asciicast v2: On-screen annotations #181

Closed
opened 2026-02-25 20:32:59 +03:00 by kerem · 2 comments
Owner

Originally created by @pfalcon on GitHub (Jan 16, 2018).
Original GitHub issue: https://github.com/asciinema/asciinema/issues/257

Why: Oftentimes, the purpose of screencast are teaching/tutorials. Just showing typed stuff and output is not enough.

Usecases:

  1. Give a "title"/generic description of what happens on the screen. This is essentially a closed caption.
  2. Pinpoint/explain a particular element on the screen.

While these are different usecases, they could be addressed by the same player UI element (though ideally CC-style annotations would be rendered in a way to note obscure screen content).

Proposed format:

{
  "duration": 10.0,
...
  "version": 1,
  "height": 24,
  "width": 80,
  "annotations": [
    {at:0.5, dur: 1, relx: 0.1, rely: 0.1, text: "annotation asciinema/asciinema-server#1"},
    {at:3.0, dur: 3, relx: 0.8, rely: 0.8, text: "annotation\n#2"}
  ],
  "stdout": [
...

As can be seen, annotations blend well with v1 too.

An alternative format would be:

  "annotations": [
    [0.5, 1, 0.1, 0.1, "annotation asciinema/asciinema-server#1", props: {}],
  ],

It's mandatory to support arbitrary annotation properties for extension and alternative players. relx/rely specify relative position of left top annotation corner, taking 1.0 as full terminal width/height.

FAQ:

Q: How are annotations shown at ascii terminal playback?
A: Generally, in no way. It's webcast feature. But interested parties may develop alternative players if they wish.

Q: How annotations being authored?
A: Manually. Though asciinema.org could offer an UI for that: during pause at needed place, press "Add ann" button, draw a rectangle over playback window, fill in text, set duration of annotation.

Simple reference implementation was posted as https://github.com/dhobsd/castty/pull/30

Originally created by @pfalcon on GitHub (Jan 16, 2018). Original GitHub issue: https://github.com/asciinema/asciinema/issues/257 Why: Oftentimes, the purpose of screencast are teaching/tutorials. Just showing typed stuff and output is not enough. Usecases: 1. Give a "title"/generic description of what happens on the screen. This is essentially a closed caption. 2. Pinpoint/explain a particular element on the screen. While these are different usecases, they could be addressed by the same player UI element (though ideally CC-style annotations would be rendered in a way to note obscure screen content). Proposed format: ~~~ { "duration": 10.0, ... "version": 1, "height": 24, "width": 80, "annotations": [ {at:0.5, dur: 1, relx: 0.1, rely: 0.1, text: "annotation asciinema/asciinema-server#1"}, {at:3.0, dur: 3, relx: 0.8, rely: 0.8, text: "annotation\n#2"} ], "stdout": [ ... ~~~ As can be seen, annotations blend well with v1 too. An alternative format would be: ~~~ "annotations": [ [0.5, 1, 0.1, 0.1, "annotation asciinema/asciinema-server#1", props: {}], ], ~~~ It's mandatory to support arbitrary annotation properties for extension and alternative players. `relx`/`rely` specify relative position of left top annotation corner, taking 1.0 as full terminal width/height. FAQ: Q: How are annotations shown at ascii terminal playback? A: Generally, in no way. It's webcast feature. But interested parties may develop alternative players if they wish. Q: How annotations being authored? A: Manually. Though asciinema.org could offer an UI for that: during pause at needed place, press "Add ann" button, draw a rectangle over playback window, fill in text, set duration of annotation. Simple reference implementation was posted as https://github.com/dhobsd/castty/pull/30
kerem closed this issue 2026-02-25 20:32:59 +03:00
Author
Owner

@beekhof commented on GitHub (Feb 19, 2019):

Sad to see this closed without comment, its exactly what I'm looking for

<!-- gh-comment-id:465347492 --> @beekhof commented on GitHub (Feb 19, 2019): Sad to see this closed without comment, its exactly what I'm looking for
Author
Owner

@jpellman commented on GitHub (Jun 24, 2019):

See asciinema/asciinema-server#256 for the reason for why this was closed. While the feature requests are legitimate, the OP was communicating with the project leads in an excessively condescending and adversarial tone for a product that he was paying absolutely nothing for. Additionally, this request is a possible duplicate of https://github.com/asciinema/discussions/issues/189.

<!-- gh-comment-id:505153730 --> @jpellman commented on GitHub (Jun 24, 2019): See asciinema/asciinema-server#256 for the reason for why this was closed. While the feature requests are legitimate, the OP was communicating with the project leads in an excessively condescending and adversarial tone for a product that he was paying absolutely nothing for. Additionally, this request is a possible duplicate of https://github.com/asciinema/discussions/issues/189.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/asciinema#181
No description provided.