Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package asciinema for openSUSE:Factory 
checked in at 2023-10-31 20:26:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/asciinema (Old)
 and      /work/SRC/openSUSE:Factory/.asciinema.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "asciinema"

Tue Oct 31 20:26:23 2023 rev:11 rq:1121415 version:2.4.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/asciinema/asciinema.changes      2023-08-30 
10:23:33.482732907 +0200
+++ /work/SRC/openSUSE:Factory/.asciinema.new.17445/asciinema.changes   
2023-10-31 20:26:44.352230776 +0100
@@ -1,0 +2,14 @@
+Tue Oct 24 19:16:22 UTC 2023 - Andreas Stieger <andreas.stie...@gmx.de>
+
+- update to 2.4.0:
+  * When recording without file arg we now ask whether to save,
+    upload or discard the recording
+  * Added capture of terminal resize events
+  * Fixed blocking write error when PTY master is not ready
+  * Fixed "broken pipe" errors when piping certain commands during
+    recording
+  * Fixed crash during playback of cast files with trailing blank
+    line
+- Requires Python >= 3.7
+
+-------------------------------------------------------------------

Old:
----
  asciinema-2.3.0.tar.gz

New:
----
  asciinema-2.4.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ asciinema.spec ++++++
--- /var/tmp/diff_new_pack.2Mx9Jj/_old  2023-10-31 20:26:44.960253109 +0100
+++ /var/tmp/diff_new_pack.2Mx9Jj/_new  2023-10-31 20:26:44.960253109 +0100
@@ -18,25 +18,27 @@
 
 %global pythons python3
 Name:           asciinema
-Version:        2.3.0
+Version:        2.4.0
 Release:        0
 Summary:        Terminal session recorder
 License:        GPL-3.0-or-later
 Group:          Productivity/Networking/Other
 URL:            https://asciinema.org
 Source:         
https://github.com/asciinema/asciinema/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
+BuildRequires:  %{python_module pip}
+BuildRequires:  %{python_module pytest}
+BuildRequires:  %{python_module setuptools}
+BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
-BuildRequires:  python3-pip
-BuildRequires:  python3-setuptools
-BuildRequires:  python3-wheel
+BuildRequires:  python3-base >= 3.7
 BuildArch:      noarch
 
 %description
 Record of terminal sessions and sharing them on the web.
 
 %prep
-%setup -q
+%autosetup -p1
 
 %build
 %pyproject_wheel
@@ -49,6 +51,9 @@
 
 rm -R %{buildroot}%{_datadir}/doc/%{name}
 
+%check
+%pytest -v
+
 %files
 %license LICENSE
 %doc CHANGELOG.md CODE_OF_CONDUCT.md CONTRIBUTING.md README.md

++++++ asciinema-2.3.0.tar.gz -> asciinema-2.4.0.tar.gz ++++++
Binary files old/asciinema-2.3.0/.github/sponsor-logos/dashcam/logo-on-dark.png 
and new/asciinema-2.4.0/.github/sponsor-logos/dashcam/logo-on-dark.png differ
Binary files 
old/asciinema-2.3.0/.github/sponsor-logos/dashcam/logo-on-light.png and 
new/asciinema-2.4.0/.github/sponsor-logos/dashcam/logo-on-light.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/.github/workflows/asciinema.yml 
new/asciinema-2.4.0/.github/workflows/asciinema.yml
--- old/asciinema-2.3.0/.github/workflows/asciinema.yml 2023-07-05 
15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/.github/workflows/asciinema.yml 2023-10-23 
16:06:50.000000000 +0200
@@ -10,7 +10,7 @@
     runs-on: ubuntu-latest
     steps:
       - name: checkout asciinema
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - name: setup Python
         uses: actions/setup-python@v4
         with:
@@ -42,7 +42,7 @@
       TERM: dumb
     steps:
       - name: checkout Asciinema
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - name: setup Python
         uses: actions/setup-python@v4
         with:
@@ -58,7 +58,6 @@
         distros:
           - alpine
           - arch
-          - centos
           - debian
           - fedora
           - ubuntu
@@ -66,15 +65,15 @@
     steps:
       - name: Set up Docker buildx
         id: buildx
-        uses: docker/setup-buildx-action@v2
+        uses: docker/setup-buildx-action@v3
       - name: Authenticate to GHCR
-        uses: docker/login-action@v2
+        uses: docker/login-action@v3
         with:
           registry: ghcr.io
           username: "${{ github.actor }}"
           password: "${{ secrets.GITHUB_TOKEN }}"
       - name: "Build ${{ matrix.distros }} image"
-        uses: docker/build-push-action@v4
+        uses: docker/build-push-action@v5
         with:
           file: "tests/distros/Dockerfile.${{ matrix.distros }}"
           tags: |
@@ -88,7 +87,6 @@
         distros:
           - alpine
           - arch
-          - centos
           - debian
           - fedora
           - ubuntu
@@ -102,7 +100,7 @@
       options: "--interactive --tty --user=1001:121"
     steps:
       - name: checkout Asciinema
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - name: run integration tests
         env:
           TERM: dumb
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/.github/workflows/pre-commit.yml 
new/asciinema-2.4.0/.github/workflows/pre-commit.yml
--- old/asciinema-2.3.0/.github/workflows/pre-commit.yml        2023-07-05 
15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/.github/workflows/pre-commit.yml        2023-10-23 
16:06:50.000000000 +0200
@@ -7,7 +7,7 @@
   pre-commit:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: actions/setup-python@v4
         with:
           python-version: "3.10"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/CHANGELOG.md 
new/asciinema-2.4.0/CHANGELOG.md
--- old/asciinema-2.3.0/CHANGELOG.md    2023-07-05 15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/CHANGELOG.md    2023-10-23 16:06:50.000000000 +0200
@@ -1,5 +1,13 @@
 # asciinema changelog
 
+## 2.4.0 (2023-10-23)
+
+* When recording without file arg we now ask whether to save, upload or 
discard the recording (#576)
+* Added capture of terminal resize events (#565)
+* Fixed blocking write error when PTY master is not ready (#569) (thanks 
@Low-power!)
+* Fixed "broken pipe" errors when piping certain commands during recording 
(#369) (thanks @Low-power!)
+* Fixed crash during playback of cast files with trailing blank line (#577)
+
 ## 2.3.0 (2023-07-05)
 
 * Added official support for Python 3.11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/CODE_OF_CONDUCT.md 
new/asciinema-2.4.0/CODE_OF_CONDUCT.md
--- old/asciinema-2.3.0/CODE_OF_CONDUCT.md      2023-07-05 15:51:16.000000000 
+0200
+++ new/asciinema-2.4.0/CODE_OF_CONDUCT.md      2023-10-23 16:06:50.000000000 
+0200
@@ -55,7 +55,7 @@
 ## Enforcement
 
 Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the project team at supp...@asciinema.org. All
+reported by contacting the project team at ad...@asciinema.org. All
 complaints will be reviewed and investigated and will result in a response that
 is deemed necessary and appropriate to the circumstances. The project team is
 obligated to maintain confidentiality with regard to the reporter of an 
incident.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/CONTRIBUTING.md 
new/asciinema-2.4.0/CONTRIBUTING.md
--- old/asciinema-2.3.0/CONTRIBUTING.md 2023-07-05 15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/CONTRIBUTING.md 2023-10-23 16:06:50.000000000 +0200
@@ -42,21 +42,14 @@
 can simply open a separate issue for a discussion or join #asciinema IRC
 channel on Libera.Chat.
 
-## Asking for help
-
-GitHub issue tracker is not a support forum.
-
-If you need help then either join #asciinema IRC channel on Libera.Chat or
-drop us an email at <supp...@asciinema.org>.
-
 ## Reporting security issues
 
 If you found a security issue in asciinema please contact us at
-supp...@asciinema.org. For the benefit of all asciinema users please **do
+ad...@asciinema.org. For the benefit of all asciinema users please **do
 not** publish details of the vulnerability in a GitHub issue.
 
 The PGP key below (1eb33a8760dec34b) can be used when sending encrypted email
-to or verifying responses from supp...@asciinema.org.
+to or verifying responses from ad...@asciinema.org.
 
 ```Public Key
 -----BEGIN PGP PUBLIC KEY BLOCK-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/Makefile new/asciinema-2.4.0/Makefile
--- old/asciinema-2.3.0/Makefile        2023-07-05 15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/Makefile        2023-10-23 16:06:50.000000000 +0200
@@ -55,11 +55,13 @@
 
 .PHONY: push
 push: .pip build
-       python3 -m twine upload dist/*
+       . $(VIRTUAL_ENV)/bin/activate \
+           && python3 -m twine upload dist/*
 
 .PHONY: push.test
 push.test: .pip build
-       python3 -m twine upload --repository testpypi dist/*
+       . $(VIRTUAL_ENV)/bin/activate \
+           && python3 -m twine upload --repository testpypi dist/*
 
 
 .PHONY: clean
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/README.md 
new/asciinema-2.4.0/README.md
--- old/asciinema-2.3.0/README.md       2023-07-05 15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/README.md       2023-10-23 16:06:50.000000000 +0200
@@ -9,6 +9,14 @@
 
 
[![demo](https://asciinema.org/a/335480.svg)](https://asciinema.org/a/335480?autoplay=1)
 
+asciinema _[as-kee-nuh-muh]_ is a free and open source solution for recording
+terminal sessions and sharing them on the web.
+
+Shout-out to our Platinum [sponsors](https://github.com/sponsors/ku1ik), whose
+financial support helps keep the project alive:
+
+[<img src="./.github/sponsor-logos/dashcam/logo-on-light.png" width="200" 
/>](https://dashcam.io?utm_source=asciinemagithub)
+
 ## Quick intro
 
 asciinema lets you easily record terminal sessions and replay
@@ -70,7 +78,8 @@
 sent anywhere without your consent.
 
 These are the basics, but there's much more you can do. The following sections
-cover installation, usage and hosting of the recordings in more detail.
+cover installation, usage and hosting of the recordings in more detail. Also,
+checkout [agg](https://github.com/asciinema/agg) if you're interested in GIF 
generation.
 
 ## Installation
 
@@ -502,6 +511,13 @@
 > asciinema versions prior to 1.1 used `$HOME/.asciinema`. If you have it
 > there you should `mv $HOME/.asciinema $HOME/.config/asciinema`.
 
+## Sponsors
+
+asciinema is sponsored by:
+
+- [**Dashcam**](https://dashcam.io?utm_source=asciinemagithub)
+- [Brightbox](https://www.brightbox.com/)
+
 ## Consulting
 
 I offer consulting services for asciinema project. See 
https://asciinema.org/consulting for more information.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/asciinema/__init__.py 
new/asciinema-2.4.0/asciinema/__init__.py
--- old/asciinema-2.3.0/asciinema/__init__.py   2023-07-05 15:51:16.000000000 
+0200
+++ new/asciinema-2.4.0/asciinema/__init__.py   2023-10-23 16:06:50.000000000 
+0200
@@ -1,10 +1,10 @@
 import sys
 
 __author__ = "Marcin Kulik"
-__version__ = "2.3.0"
+__version__ = "2.4.0"
 
-if sys.version_info < (3, 6):
-    raise ImportError("Python < 3.6 is unsupported.")
+if sys.version_info < (3, 7):
+    raise ImportError("Python < 3.7 is unsupported.")
 
 # pylint: disable=wrong-import-position
 from typing import Any, Optional
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/asciinema/asciicast/raw.py 
new/asciinema-2.4.0/asciinema/asciicast/raw.py
--- old/asciinema-2.3.0/asciinema/asciicast/raw.py      2023-07-05 
15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/asciinema/asciicast/raw.py      2023-10-23 
16:06:50.000000000 +0200
@@ -1,7 +1,7 @@
 import os
 import sys
 from os import path
-from typing import Any, Callable, Optional
+from typing import Any, Callable, Optional, Tuple
 
 from ..file_writer import file_writer
 
@@ -44,13 +44,16 @@
     def write_stdout(self, _ts: float, data: Any) -> None:
         self._write(data)
 
-    # pylint: disable=no-self-use
     def write_stdin(self, ts: float, data: Any) -> None:
         pass
 
     def write_marker(self, ts: float) -> None:
         pass
 
+    def write_resize(self, ts: float, size: Tuple[int, int]) -> None:
+        cols, rows = size
+        self._write(f"\x1b[8;{rows};{cols}t".encode("utf-8"))
+
     # pylint: disable=consider-using-with
     def _open_file(self) -> None:
         if self.path == "-":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/asciinema/asciicast/v2.py 
new/asciinema-2.4.0/asciinema/asciicast/v2.py
--- old/asciinema-2.3.0/asciinema/asciicast/v2.py       2023-07-05 
15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/asciinema/asciicast/v2.py       2023-10-23 
16:06:50.000000000 +0200
@@ -12,6 +12,7 @@
     List,
     Optional,
     TextIO,
+    Tuple,
     Union,
 )
 
@@ -36,9 +37,13 @@
     ) -> Generator[List[Any], None, None]:
         if type_ is None:
             for line in self.__file:
+                if line == "\n":
+                    break
                 yield json.loads(line)
         else:
             for line in self.__file:
+                if line == "\n":
+                    break
                 event = json.loads(line)
                 if event[1] == type_:
                     yield event
@@ -148,6 +153,10 @@
     def write_marker(self, ts: float) -> None:
         self.__write_event(ts, "m", "")
 
+    def write_resize(self, ts: float, size: Tuple[int, int]) -> None:
+        cols, rows = size
+        self.__write_event(ts, "r", f"{cols}x{rows}")
+
     # pylint: disable=consider-using-with
     def _open_file(self) -> None:
         if self.path == "-":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/asciinema/commands/command.py 
new/asciinema-2.4.0/asciinema/commands/command.py
--- old/asciinema-2.3.0/asciinema/commands/command.py   2023-07-05 
15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/asciinema/commands/command.py   2023-10-23 
16:06:50.000000000 +0200
@@ -17,6 +17,7 @@
         end: str = "\r\n",
         color: Optional[int] = None,
         force: bool = False,
+        flush: bool = False,
     ) -> None:
         if not self.quiet or force:
             if color is not None and os.isatty(sys.stderr.fileno()):
@@ -24,6 +25,9 @@
 
             print(text, file=sys.stderr, end=end)
 
+            if flush:
+                sys.stderr.flush()
+
     def print_info(self, text: str) -> None:
         self.print(f"asciinema: {text}", color=2)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/asciinema/commands/record.py 
new/asciinema-2.4.0/asciinema/commands/record.py
--- old/asciinema-2.3.0/asciinema/commands/record.py    2023-07-05 
15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/asciinema/commands/record.py    2023-10-23 
16:06:50.000000000 +0200
@@ -41,7 +41,7 @@
     # pylint: disable=too-many-return-statements
     # pylint: disable=too-many-statements
     def execute(self) -> int:
-        upload = False
+        interactive = False
         append = self.append
 
         if self.filename == "":
@@ -51,7 +51,7 @@
                 )
                 return 1
             self.filename = _tmp_path()
-            upload = True
+            interactive = True
 
         if self.filename == "-":
             if sys.stdout.isatty():
@@ -150,18 +150,33 @@
 
         self.print_info("recording finished")
 
-        if upload:
+        if interactive:
             if not self.assume_yes:
-                self.print_info(
-                    f"press <enter> to upload to {self.api.hostname()}"
-                    ", <ctrl-c> to save locally"
-                )
-                try:
-                    sys.stdin.readline()
-                except KeyboardInterrupt:
-                    self.print("\r", end="")
-                    self.print_info(f"asciicast saved to {self.filename}")
-                    return 0
+                while True:
+                    self.print(
+                        f"(\x1b[1ms\x1b[0m)ave locally, (\x1b[1mu\x1b[0m)pload 
to {self.api.hostname()}, (\x1b[1md\x1b[0m)iscard\r\n[s,u,d]? ",
+                        end="",
+                        force=True,
+                        flush=True,
+                    )
+
+                    try:
+                        answer = sys.stdin.readline().strip().lower()
+                    except KeyboardInterrupt:
+                        self.print("")
+                        answer = "s"
+
+                    if answer == "s" or answer == "save":
+                        self.print_info(f"asciicast saved to {self.filename}")
+                        return 0
+
+                    elif answer == "u" or answer == "upload":
+                        break
+
+                    elif answer == "d" or answer == "discard":
+                        os.remove(self.filename)
+                        self.print_info(f"asciicast discarded")
+                        return 0
 
             try:
                 result, warn = self.api.upload_asciicast(self.filename)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/asciinema/pty_.py 
new/asciinema-2.4.0/asciinema/pty_.py
--- old/asciinema-2.3.0/asciinema/pty_.py       2023-07-05 15:51:16.000000000 
+0200
+++ new/asciinema-2.4.0/asciinema/pty_.py       2023-10-23 16:06:50.000000000 
+0200
@@ -41,8 +41,14 @@
     add_marker_key = key_bindings.get("add_marker")
     input_data = bytes()
 
-    def set_pty_size() -> None:
-        cols, rows = get_tty_size()
+    def handle_resize() -> None:
+        size = get_tty_size()
+        set_pty_size(size)
+        assert start_time is not None
+        writer.write_resize(time.perf_counter() - start_time, size)
+
+    def set_pty_size(size: Tuple[int, int]) -> None:
+        cols, rows = size
         buf = array.array("h", [rows, cols, 0, 0])
         fcntl.ioctl(pty_fd, termios.TIOCSWINSZ, buf)
 
@@ -149,22 +155,26 @@
                         if sig in EXIT_SIGNALS:
                             crfds.remove(signal_fd)
                         if sig == signal.SIGWINCH:
-                            set_pty_size()
+                            handle_resize()
 
             if pty_fd in wfds:
-                n = os.write(pty_fd, input_data)
-                input_data = input_data[n:]
+                try:
+                    n = os.write(pty_fd, input_data)
+                    input_data = input_data[n:]
+                except BlockingIOError:
+                    pass
 
     pid, pty_fd = pty.fork()
 
     if pid == pty.CHILD:
+        signal.signal(signal.SIGPIPE, signal.SIG_DFL)
         os.execvpe(command[0], command, env)
 
     flags = fcntl.fcntl(pty_fd, fcntl.F_GETFL, 0) | os.O_NONBLOCK
     fcntl.fcntl(pty_fd, fcntl.F_SETFL, flags)
 
     start_time = time.perf_counter()
-    set_pty_size()
+    set_pty_size(get_tty_size())
 
     with SignalFD(EXIT_SIGNALS + [signal.SIGWINCH]) as sig_fd:
         with raw(tty_stdin_fd):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/asciinema/recorder.py 
new/asciinema-2.4.0/asciinema/recorder.py
--- old/asciinema-2.3.0/asciinema/recorder.py   2023-07-05 15:51:16.000000000 
+0200
+++ new/asciinema-2.4.0/asciinema/recorder.py   2023-10-23 16:06:50.000000000 
+0200
@@ -134,6 +134,9 @@
     def write_marker(self, ts: float) -> None:
         self.enqueue([ts, "m", None])
 
+    def write_resize(self, ts: float, size: Tuple[int, int]) -> None:
+        self.enqueue([ts, "r", size])
+
     def run(self) -> None:
         try:
             with self.writer as w:
@@ -148,6 +151,8 @@
                         w.write_stdin(self.time_offset + ts, data)
                     elif etype == "m":
                         w.write_marker(self.time_offset + ts)
+                    elif etype == "r":
+                        w.write_resize(self.time_offset + ts, data)
         except IOError:
             for event in iter(self.queue.get, None):
                 pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/doc/asciicast-v2.md 
new/asciinema-2.4.0/doc/asciicast-v2.md
--- old/asciinema-2.3.0/doc/asciicast-v2.md     2023-07-05 15:51:16.000000000 
+0200
+++ new/asciinema-2.4.0/doc/asciicast-v2.md     2023-10-23 16:06:50.000000000 
+0200
@@ -15,6 +15,7 @@
 [1.001376, "o", "That was ok\rThis is better."]
 [1.500000, "m", ""]
 [2.143733, "o", "Now... "]
+[4.050000, "r", "80x24"]
 [6.541828, "o", "Bye!"]
 ```
 
@@ -109,73 +110,82 @@
 
 Each element of the event stream is a 3-tuple encoded as JSON array:
 
-    [time, event-type, event-data]
+    [time, code, data]
 
 Where:
 
-* `time` (float) - indicates when this event happened, represented as the 
number
+* `time` (float) - indicates when the event happened, represented as the number
   of seconds since the beginning of the recording session,
-* `event-type` (string) - one of: `"o"`, `"i"`, `"m"`
-* `event-data` (any) - event specific data, described separately for each event
-  type.
+* `code` (string) - specifies type of event, one of: `"o"`, `"i"`, `"m"`, `"r"`
+* `data` (any) - event specific data, described separately for each event
+  code.
 
 For example, let's look at the following line:
 
     [1.001376, "o", "Hello world"]
 
-It represents the event which:
+It represents:
 
-* happened 1.001376 sec after the start of the recording session,
-* is of type `"o"` (output, write to a terminal, see below),
-* has data `"Hello world"`.
+* output (code `o`),
+* of text `Hello world`,
+* which happened `1.001376` sec after the start of the recording session.
 
-### Supported event types
+### Supported event codes
 
-This section describes the event types supported in asciicast v2 format.
+This section describes the event codes supported in asciicast v2 format.
 
-The list is open to extension, and new event types may be added in both the
+The list is open to extension, and new event codes may be added in both the
 current and future versions of the format. For example, we may add new event
-type for text overlay (subtitles display).
+code for text overlay (subtitles display).
 
 A tool which interprets the event stream (web/cli player, post-processor) 
should
-ignore (or pass through) event types it doesn't understand or doesn't care
+ignore (or pass through) event codes it doesn't understand or doesn't care
 about.
 
-#### "o" - output, data written to the terminal
+#### "o" - output, data written to a terminal
 
-Event of type `"o"` represents printing new data to terminal's stdout.
+Event of code `"o"` represents printing new data to a terminal.
 
-`event-data` is a string containing the data that was printed. It must be 
valid,
-UTF-8 encoded JSON string as described in [JSON RFC section
+`data` is a string containing the data that was printed. It must be valid, 
UTF-8
+encoded JSON string as described in [JSON RFC section
 2.5](http://www.ietf.org/rfc/rfc4627.txt), with any non-printable Unicode
 codepoints encoded as `\uXXXX`.
 
-#### "i" - input, data read from the terminal
+#### "i" - input, data read from a terminal
 
-Event of type `"i"` represents character typed in by the user, or more
+Event of code `"i"` represents character typed in by the user, or more
 specifically, raw data sent from a terminal emulator to stdin of the recorded
 program (usually shell).
 
-`event-data` is a string containing captured ASCII character representing a 
key,
-or a control character like `"\r"` (enter), `"\u0001"` (ctrl-a), `"\u0003"`
-(ctrl-c), etc. Like with `"o"` event, it's UTF-8 encoded JSON string, with any
+`data` is a string containing captured ASCII character representing a key, or a
+control character like `"\r"` (enter), `"\u0001"` (ctrl-a), `"\u0003"` 
(ctrl-c),
+etc. Like with `"o"` event, it's UTF-8 encoded JSON string, with any
 non-printable Unicode codepoints encoded as `\uXXXX`.
 
 > Official asciinema recorder doesn't capture keyboard input by default. All
 > implementations of asciicast-compatible terminal recorder should not capture
-> it either unless explicitly permitted by the user.
+> it either unless explicitly requested by the user.
 
 #### "m" - marker
 
-Event of type `"m"` represents a marker.
+Event of code `"m"` represents a marker.
 
 When marker is encountered in the event stream and "pause on markers"
 functionality of the player is enabled, the playback should pause, and wait for
 the user to resume.
 
-`event-data` can be used to annotate a marker. Annotations may be used to e.g.
+`data` can be used to annotate a marker. Annotations may be used to e.g.
 show a list of named "chapters".
 
+#### "r" - resize
+
+Event of code `"r"` represents terminal resize.
+
+Those are captured in response to `SIGWINCH` signal.
+
+`data` contains new terminal size (columns + rows) formatted as
+`"{COLS}x{ROWS}"`, e.g. `"80x24"`.
+
 ## Notes on compatibility
 
 Version 2 of asciicast file format solves several problems which couldn't be
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciinema-2.3.0/setup.cfg 
new/asciinema-2.4.0/setup.cfg
--- old/asciinema-2.3.0/setup.cfg       2023-07-05 15:51:16.000000000 +0200
+++ new/asciinema-2.4.0/setup.cfg       2023-10-23 16:06:50.000000000 +0200
@@ -1,6 +1,6 @@
 [metadata]
 name = asciinema
-version = 2.3.0
+version = 2.4.0
 author = Marcin Kulik
 author_email = m...@ku1ik.com
 url = https://asciinema.org

Reply via email to